| import os |
|
|
| import pytest |
|
|
| from unlimited_ocr_rdna4.errors import InferenceError |
| from unlimited_ocr_rdna4.infer import _publish_text, _validated_output_path |
|
|
|
|
| def test_output_must_not_alias_input(tmp_path) -> None: |
| source = tmp_path / "page.png" |
| source.write_bytes(b"source") |
| alias = tmp_path / "alias.md" |
| os.link(source, alias) |
| with pytest.raises(InferenceError, match="same file"): |
| _validated_output_path(source.resolve(), alias, force=True) |
|
|
|
|
| def test_output_symlink_is_rejected_even_with_force(tmp_path) -> None: |
| source = tmp_path / "page.png" |
| source.write_bytes(b"source") |
| output = tmp_path / "output.md" |
| output.symlink_to(source) |
| with pytest.raises(InferenceError, match="symlink"): |
| _validated_output_path(source.resolve(), output, force=True) |
| assert source.read_bytes() == b"source" |
|
|
|
|
| def test_non_force_publish_never_overwrites(tmp_path) -> None: |
| output = tmp_path / "output.md" |
| output.write_text("existing\n", encoding="utf-8") |
| with pytest.raises(InferenceError, match="created while inference"): |
| _publish_text(output, "new", force=False) |
| assert output.read_text(encoding="utf-8") == "existing\n" |
|
|
|
|
| def test_force_publish_replaces_regular_file(tmp_path) -> None: |
| output = tmp_path / "output.md" |
| output.write_text("old\n", encoding="utf-8") |
| _publish_text(output, "new", force=True) |
| assert output.read_text(encoding="utf-8") == "new\n" |
|
|