test: add tests for graph all_deps and defaults inheritance

- add test_all_deps_combines_hard_and_soft to verify all_deps returns correct hard+soft deps in order
- add multiple tests for GraphDefaults field inheritance, including normal inheritance and non-override of custom values
This commit is contained in:
2026-06-27 16:32:34 +08:00
parent 7463a60649
commit 83da5135d0
2 changed files with 70 additions and 0 deletions
+57
View File
@@ -338,6 +338,63 @@ class TestGraphDefaults:
assert report.success
assert calls["n"] == 3
def test_defaults_strategy_env_cwd(self) -> None:
"""测试strategy、env、cwd字段的继承。"""
defaults = px.GraphDefaults(
strategy="thread",
env={"VAR": "value"},
cwd="/tmp",
)
graph = px.Graph(defaults=defaults)
graph.add(px.TaskSpec("a", lambda: "ok"))
resolved = graph.resolved_spec("a")
assert resolved.strategy == "thread"
assert resolved.env == {"VAR": "value"}
assert resolved.cwd == "/tmp"
def test_defaults_continue_on_error_concurrency_key_verbose(self) -> None:
"""测试continue_on_error、concurrency_key、verbose字段的继承。"""
defaults = px.GraphDefaults(
continue_on_error=True,
concurrency_key="pool",
verbose=True,
)
graph = px.Graph(defaults=defaults)
graph.add(px.TaskSpec("a", lambda: "ok"))
resolved = graph.resolved_spec("a")
assert resolved.continue_on_error is True
assert resolved.concurrency_key == "pool"
assert resolved.verbose is True
def test_defaults_spec_excludes_non_default_values(self) -> None:
"""测试当spec已有非默认值时,不应被defaults覆盖。"""
defaults = px.GraphDefaults(
strategy="thread",
continue_on_error=True,
verbose=True,
priority=5,
)
graph = px.Graph(defaults=defaults)
graph.add(
px.TaskSpec(
"a",
lambda: "ok",
strategy="sequential",
continue_on_error=True, # True是非默认值,不会被覆盖
verbose=True, # True是非默认值,不会被覆盖
priority=10, # 非0值,不会被覆盖
)
)
resolved = graph.resolved_spec("a")
# strategy已有非默认值,不会被覆盖
assert resolved.strategy == "sequential"
# continue_on_error=True不会被defaults覆盖(只有False才会被覆盖)
assert resolved.continue_on_error is True
# verbose=True不会被defaults覆盖(只有False才会被覆盖)
assert resolved.verbose is True
# priority非0值不会被覆盖
assert resolved.priority == 10
# ---------------------------------------------------------------------- #
# 软依赖 soft_depends_on