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"