test: 新增 YamlCliRunner 错误分支测试使覆盖率达标 95%
CI / Lint, Typecheck & Test (push) Has been cancelled

This commit is contained in:
2026-07-05 22:25:15 +08:00
parent 960b8672f4
commit c55a37173a
3 changed files with 28 additions and 19 deletions
+6 -4
View File
@@ -80,10 +80,12 @@ IGNORE_PATTERNS = [
PACKAGE_DIR = "packages"
REQUIREMENTS_FILE = "requirements.txt"
_PROTECTED_PACKAGES: frozenset[str] = frozenset({
"pyflowx",
"bitool",
})
_PROTECTED_PACKAGES: frozenset[str] = frozenset(
{
"pyflowx",
"bitool",
}
)
# ============================================================================
+9 -7
View File
@@ -137,13 +137,15 @@ _ENV_VAR_EQUALS_RE = re.compile(r"^env\.(\w+)\s*==\s*['\"]([^'\"]*)['\"]$")
_ENV_VAR_NOT_EQUALS_RE = re.compile(r"^env\.(\w+)\s*!=\s*['\"]([^'\"]*)['\"]$")
# 支持的 job 字段名(连字符形式)
_JOB_FIELDS_HYPHEN = frozenset({
"continue-on-error",
"skip-if-missing",
"allow-upstream-skip",
"concurrency-key",
"runs-on",
})
_JOB_FIELDS_HYPHEN = frozenset(
{
"continue-on-error",
"skip-if-missing",
"allow-upstream-skip",
"concurrency-key",
"runs-on",
}
)
class YamlLoadError(px.PyFlowXError):
+13 -8
View File
@@ -1812,15 +1812,20 @@ jobs:
assert rc == 1
assert "错误" in capsys.readouterr().err
def test_load_yaml_os_error(self, tmp_path: Path) -> None:
"""load_yaml 读取文件失败应抛出 YamlLoadError."""
def test_load_yaml_os_error(self, tmp_path: Path, monkeypatch: pytest.MonkeyPatch) -> None:
"""load_yaml 读取文件失败应抛出 YamlLoadError.
Windows 上 chmod(0o000) 不可靠, 改用 monkeypatch 模拟 OSError 覆盖该分支.
"""
from pyflowx.yaml_loader import YamlLoadError, load_yaml
yaml_file = tmp_path / "unreadable.yaml"
yaml_file.write_text("jobs:\n a:\n cmd: [echo]\n", encoding="utf-8")
yaml_file.chmod(0o000)
try:
with pytest.raises(YamlLoadError, match="读取文件失败"):
load_yaml(yaml_file)
finally:
yaml_file.chmod(0o644)
def _raise_oserror(self: Path, *args: object, **kwargs: object) -> str:
raise OSError("permission denied")
monkeypatch.setattr(Path, "read_text", _raise_oserror)
with pytest.raises(YamlLoadError, match="读取文件失败"):
load_yaml(yaml_file)