Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

# Any copyright is dedicated to the Public Domain.
import mozunit
from taskgraph.task import Task
from taskgraph.transforms import from_deps
from gecko_taskgraph.transforms import code_coverage
def test_add_dependencies_sets_if_dependencies(run_transform):
task = {
"label": "code-coverage-artifacts",
"dependencies": {
"a": "linux64-ccov/opt",
"b": "linux64-ccov/debug",
},
"if-dependencies": [],
}
transformed = list(run_transform(code_coverage.add_dependencies, task))
assert len(transformed) == 1
assert transformed[0]["if-dependencies"] == [
"linux64-ccov/opt",
"linux64-ccov/debug",
]
def test_add_dependencies_drops_tasks_without_dependencies(run_transform):
task = {
"label": "code-coverage-artifacts",
"dependencies": {},
"if-dependencies": [],
}
transformed = list(run_transform(code_coverage.add_dependencies, task))
assert transformed == []
def test_from_deps_and_code_coverage_integration(run_transform):
ccov_1 = Task(
kind="test",
label="linux64-ccov-opt",
attributes={"ccov": True},
task={},
)
ccov_2 = Task(
kind="test",
label="linux64-ccov-debug",
attributes={"ccov": True},
task={},
)
non_ccov = Task(
kind="test",
label="linux64-opt",
attributes={},
task={},
)
kind_dependencies_tasks = {
ccov_1.label: ccov_1,
ccov_2.label: ccov_2,
non_ccov.label: non_ccov,
}
task = {
"label": "code-coverage-artifacts",
"description": "Code coverage artifacts",
"attributes": {},
"from-deps": {
"group-by": "all",
"unique-kinds": False,
"set-name": False,
"with-attributes": {"ccov": [True]},
},
}
with_deps = list(
run_transform(
from_deps.from_deps,
task,
kind_dependencies_tasks=kind_dependencies_tasks,
config={"kind-dependencies": ["test"]},
)
)
transformed = list(run_transform(code_coverage.add_dependencies, with_deps))
assert len(transformed) == 1
assert set(transformed[0]["dependencies"].values()) == {
ccov_1.label,
ccov_2.label,
}
assert transformed[0]["if-dependencies"] == list(
transformed[0]["dependencies"].values()
)
if __name__ == "__main__":
mozunit.main()