from pathlib import Path from file_ops import ( copy_with_unique_name, move_with_unique_name, resolve_unique_path, wait_until_stable, ) def test_resolve_unique_path_no_collision(tmp_path): result = resolve_unique_path(tmp_path, "氏名A_20260101", ".pdf") assert result == tmp_path / "氏名A_20260101.pdf" def test_resolve_unique_path_with_collision(tmp_path): (tmp_path / "氏名A_20260101.pdf").write_bytes(b"x") result = resolve_unique_path(tmp_path, "氏名A_20260101", ".pdf") assert result == tmp_path / "氏名A_20260101(2).pdf" def test_resolve_unique_path_with_multiple_collisions(tmp_path): (tmp_path / "氏名A_20260101.pdf").write_bytes(b"x") (tmp_path / "氏名A_20260101(2).pdf").write_bytes(b"x") result = resolve_unique_path(tmp_path, "氏名A_20260101", ".pdf") assert result == tmp_path / "氏名A_20260101(3).pdf" def test_copy_with_unique_name_creates_dest_dir(tmp_path): src = tmp_path / "src.pdf" src.write_bytes(b"content") dest_dir = tmp_path / "output" / "氏名A" result = copy_with_unique_name(src, dest_dir, "氏名A_20260101", ".pdf") assert result == dest_dir / "氏名A_20260101.pdf" assert result.read_bytes() == b"content" assert src.exists() # コピーなので元ファイルは残る def test_move_with_unique_name_moves_source(tmp_path): src = tmp_path / "src.pdf" src.write_bytes(b"content") dest_dir = tmp_path / "success" result = move_with_unique_name(src, dest_dir, "src", ".pdf") assert result == dest_dir / "src.pdf" assert result.read_bytes() == b"content" assert not src.exists() # 移動なので元ファイルは消える def test_wait_until_stable_missing_file_returns_false(tmp_path): missing = tmp_path / "missing.pdf" result = wait_until_stable(missing, interval_sec=0, retries=3, sleep_func=lambda s: None) assert result is False def test_wait_until_stable_stable_file_returns_true(tmp_path): path = tmp_path / "stable.pdf" path.write_bytes(b"1234") result = wait_until_stable(path, interval_sec=0, retries=3, sleep_func=lambda s: None) assert result is True def test_wait_until_stable_growing_file_returns_false(tmp_path): path = tmp_path / "growing.pdf" path.write_bytes(b"1") call_count = {"n": 0} def fake_sleep(_seconds): call_count["n"] += 1 path.write_bytes(b"1" * (call_count["n"] + 1)) result = wait_until_stable(path, interval_sec=0, retries=3, sleep_func=fake_sleep) assert result is False