From ca976203bea1fb926e3c9a5a82022d0080547292 Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Mon, 6 Oct 2025 15:30:20 +0200 Subject: [PATCH] generator: add support for "graph_config" verifications --- src/taskgraph/generator.py | 1 + src/taskgraph/util/verify.py | 7 +++++++ test/test_generator.py | 2 +- test/test_util_verify.py | 10 ++++++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/taskgraph/generator.py b/src/taskgraph/generator.py index 898761687..d38b499cb 100644 --- a/src/taskgraph/generator.py +++ b/src/taskgraph/generator.py @@ -378,6 +378,7 @@ def _run(self): # Initial verifications that don't depend on any generation state. self.verify("initial") + self.verify("graph_config", graph_config) if callable(self._parameters): parameters = self._parameters(graph_config) diff --git a/src/taskgraph/util/verify.py b/src/taskgraph/util/verify.py index d7d60bacd..52daa008e 100644 --- a/src/taskgraph/util/verify.py +++ b/src/taskgraph/util/verify.py @@ -36,6 +36,12 @@ def verify(self): self.func() +@dataclass(frozen=True) +class GraphConfigVerification(Verification): + def verify(self, graph_config: GraphConfig): + self.func(graph_config) + + @dataclass(frozen=True) class GraphVerification(Verification): """Verification for a TaskGraph object.""" @@ -95,6 +101,7 @@ class VerificationSequence: _verifications: Dict = field(default_factory=dict) _verification_types = { "graph": GraphVerification, + "graph_config": GraphConfigVerification, "initial": InitialVerification, "kinds": KindsVerification, "parameters": ParametersVerification, diff --git a/test/test_generator.py b/test/test_generator.py index ca72ac214..58f47dbea 100644 --- a/test/test_generator.py +++ b/test/test_generator.py @@ -175,7 +175,7 @@ def test_verifications(mocker, maketgg): m = mocker.patch.object(generator, "verifications") tgg = maketgg(["_fake-t-2"], enable_verifications=True) tgg.morphed_task_graph - assert m.call_count == 9 + assert m.call_count == 10 m = mocker.patch.object(generator, "verifications") tgg = maketgg(["_fake-t-2"], enable_verifications=False) diff --git a/test/test_util_verify.py b/test/test_util_verify.py index 83cca3899..fc1c4714b 100644 --- a/test/test_util_verify.py +++ b/test/test_util_verify.py @@ -11,6 +11,7 @@ from taskgraph.task import Task from taskgraph.util.treeherder import split_symbol from taskgraph.util.verify import ( + GraphConfigVerification, GraphVerification, ParametersVerification, VerificationSequence, @@ -38,6 +39,8 @@ def inner(name, **kwargs): if isinstance(v, GraphVerification): assert "graph" in kwargs + + if isinstance(v, (GraphVerification, GraphConfigVerification)): kwargs.setdefault("graph_config", graph_config) if isinstance(v, (GraphVerification, ParametersVerification)): @@ -94,6 +97,13 @@ def assert_simple_verification(arg): 1, id="ParametersVerification", ), + pytest.param( + "graph_config", + ("passed-thru",), + assert_simple_verification, + 1, + id="GraphConfigVerification", + ), ), ) def test_verification_types(name, input, run_assertions, expected_called):