This commit is contained in:
@@ -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",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user