File size: 1,442 Bytes
f340984 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | 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"
|