Skip to content

Commit dc15e04

Browse files
committed
feat: add a commandline flag to disable verifications
Bug: 1980436
1 parent 2fb1e7c commit dc15e04

File tree

5 files changed

+34
-7
lines changed

5 files changed

+34
-7
lines changed

packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/gen.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,8 @@ def parameters():
166166

167167
@pytest.fixture
168168
def maketgg(monkeypatch, parameters):
169-
def inner(target_tasks=None, kinds=[("_fake", [])], params=None):
169+
def inner(target_tasks=None, kinds=None, params=None, enable_verifications=True):
170+
kinds = kinds or [("_fake", [])]
170171
params = params or {}
171172
FakeKind.loaded_kinds = []
172173
target_tasks = target_tasks or []
@@ -186,7 +187,9 @@ def target_tasks_method(full_task_graph, parameters, graph_config):
186187

187188
monkeypatch.setattr(generator, "load_graph_config", fake_load_graph_config)
188189

189-
return WithFakeKind("/root", parameters)
190+
return WithFakeKind(
191+
"/root", parameters, enable_verifications=enable_verifications
192+
)
190193

191194
return inner
192195

src/taskgraph/decision.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ def taskgraph_decision(options, parameters=None):
110110
parameters=parameters,
111111
decision_task_id=decision_task_id,
112112
write_artifacts=True,
113+
enable_verifications=options.get("verify", True),
113114
)
114115

115116
# write out the parameters used to generate this graph

src/taskgraph/generator.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ def __init__(
123123
parameters: Union[Parameters, Callable[[GraphConfig], Parameters]],
124124
decision_task_id: str = "DECISION-TASK",
125125
write_artifacts: bool = False,
126+
enable_verifications: bool = True,
126127
):
127128
"""
128129
@param root_dir: root directory containing the Taskgraph config.yml file
@@ -136,6 +137,7 @@ def __init__(
136137
self._parameters = parameters
137138
self._decision_task_id = decision_task_id
138139
self._write_artifacts = write_artifacts
140+
self._enable_verifications = enable_verifications
139141

140142
# start the generator
141143
self._run = self._run() # type: ignore
@@ -258,7 +260,7 @@ def _run(self):
258260
graph_config.register()
259261

260262
# Initial verifications that don't depend on any generation state.
261-
verifications("initial")
263+
self.verify("initial")
262264

263265
if callable(self._parameters):
264266
parameters = self._parameters(graph_config)
@@ -289,7 +291,7 @@ def _run(self):
289291
kinds = {
290292
kind.name: kind for kind in self._load_kinds(graph_config, target_kinds)
291293
}
292-
verifications("kinds", kinds)
294+
self.verify("kinds", kinds)
293295

294296
edges = set()
295297
for kind in kinds.values():
@@ -437,9 +439,11 @@ def _run_until(self, name):
437439
self._run_results[k] = v
438440
return self._run_results[name]
439441

440-
def verify(self, name, obj, *args, **kwargs):
441-
verifications(name, obj, *args, **kwargs)
442-
return name, obj
442+
def verify(self, name, *args, **kwargs):
443+
if self._enable_verifications:
444+
verifications(name, *args, **kwargs)
445+
if args:
446+
return name, args[0]
443447

444448

445449
def load_tasks_for_kind(parameters, kind, root_dir=None):

src/taskgraph/main.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -740,6 +740,13 @@ def load_task(args):
740740
"--tasks-for", required=True, help="the tasks_for value used to generate this task"
741741
)
742742
@argument("--try-task-config-file", help="path to try task configuration file")
743+
@argument(
744+
"--no-verify",
745+
dest="verify",
746+
default=True,
747+
action="store_false",
748+
help="Skip graph verifications",
749+
)
743750
@argument(
744751
"--verbose", "-v", action="store_true", help="include debug-level logging output"
745752
)

test/test_generator.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,18 @@ def test_optimized_task_graph(maketgg):
160160
)
161161

162162

163+
def test_verifications(mocker, maketgg):
164+
m = mocker.patch.object(generator, "verifications")
165+
tgg = maketgg(["_fake-t-2"], enable_verifications=True)
166+
tgg.morphed_task_graph
167+
assert m.call_count == 9
168+
169+
m = mocker.patch.object(generator, "verifications")
170+
tgg = maketgg(["_fake-t-2"], enable_verifications=False)
171+
tgg.morphed_task_graph
172+
m.assert_not_called()
173+
174+
163175
def test_load_tasks_for_kind(monkeypatch):
164176
"""
165177
`load_tasks_for_kinds` will load the tasks for the provided kind

0 commit comments

Comments
 (0)