Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

# Any copyright is dedicated to the public domain.
import os
import pytest
from gecko_taskgraph import GECKO
from mozunit import main
pytestmark = pytest.mark.slow
PARAMS_DIR = os.path.join(GECKO, "taskcluster", "test", "params")
@pytest.mark.parametrize(
"params_file",
[
"mc-to-beta-merge-automation",
"mc-nightly-all",
"mr-ship-firefox",
],
)
def test_full_task_graph_is_deterministic(create_tgg, params_file):
params_path = os.path.join(PARAMS_DIR, f"{params_file}.yml")
# generate the graph 3 times to increase the chances of catching non-determinism
graphs = [
create_tgg(parameters=params_path).full_task_graph.to_json() for _ in range(3)
]
reference = graphs[0]
for i, graph in enumerate(graphs[1:], start=2):
assert sorted(reference) == sorted(graph), (
f"Task sets differ on run {i} for params '{params_file}'"
)
for label in reference:
assert reference[label] == graph[label], (
f"Task '{label}' differs on run {i} for params '{params_file}'"
)
if __name__ == "__main__":
main()