fix: 优化测试用例中的文件写入和读取错误处理逻辑

This commit is contained in:
晴猫
2026-03-15 04:02:28 +09:00
parent 210a811f23
commit e1a055b959

View File

@@ -686,17 +686,14 @@ def test_prompt_manager_save_prompts_io_error_on_write(tmp_path, monkeypatch):
p1 = Prompt(prompt_name="save_error", template="T")
manager.add_prompt(p1, need_save=True)
class FakeFile:
def __enter__(self):
original_write_text = Path.write_text
def fake_write_text(self, *args, **kwargs):
if self == custom_dir / f"save_error{SUFFIX_PROMPT}":
raise OSError("disk write error")
return original_write_text(self, *args, **kwargs)
def __exit__(self, exc_type, exc, tb):
return False
def fake_open(*_args, **_kwargs):
return FakeFile()
monkeypatch.setattr("builtins.open", fake_open)
monkeypatch.setattr(Path, "write_text", fake_write_text)
# Act / Assert
with pytest.raises(OSError) as exc_info:
@@ -721,21 +718,14 @@ def test_prompt_manager_load_prompts_io_error_from_default_dir(tmp_path, monkeyp
prompt_file = write_source_prompt(prompts_dir, "bad", "content")
class FakeFile:
def __enter__(self):
original_read_text = Path.read_text
def fake_read_text(self, *args, **kwargs):
if self == prompt_file:
raise OSError("read error")
return original_read_text(self, *args, **kwargs)
def __exit__(self, exc_type, exc, tb):
return False
def fake_open(*args, **kwargs):
# 只对 default 目录下的文件触发错误,其余正常(如果有)
file_path = Path(args[0])
if file_path == prompt_file:
return FakeFile()
return open(*args, **kwargs)
monkeypatch.setattr("builtins.open", fake_open)
monkeypatch.setattr(Path, "read_text", fake_read_text)
manager = PromptManager()
# Act / Assert
@@ -772,21 +762,14 @@ def test_prompt_manager_load_prompts_io_error_from_custom_dir(tmp_path, monkeypa
only_custom_file = custom_dir / f"only_custom{SUFFIX_PROMPT}"
only_custom_file.write_text("only", encoding="utf-8")
class FakeFile:
def __enter__(self):
original_read_text = Path.read_text
def fake_read_text(self, *args, **kwargs):
if self.parent == custom_dir:
raise OSError("custom read error")
return original_read_text(self, *args, **kwargs)
def __exit__(self, exc_type, exc, tb):
return False
def fake_open(*args, **kwargs):
file_path = Path(args[0])
# 对 custom 目录下的 prompt 文件统一触发错误
if file_path.parent == custom_dir:
return FakeFile()
return open(*args, **kwargs)
monkeypatch.setattr("builtins.open", fake_open)
monkeypatch.setattr(Path, "read_text", fake_read_text)
manager = PromptManager()
# Act / Assert