fune/taskcluster/test/test_mozilla_central.py
Andrew Halberstadt 70a9b5a848 Bug 1700774 - [taskgraph] Move almost all test transforms to an 'other.py' file, r=gbrown
Future commits will tease this apart a bit more, but for now this helps
crystallize the order in which transforms are applied. The flow of the overall
test transforms goes something like this:

1. Enter 'transforms/test/__init__.py'
2. Validate all tasks against the test_description_schema
3. Run sibling transforms (starting with 'variant.py' and ending with 'other.py' for now)
4. Make the job description

As we pull more transforms out of 'other.py' and into their own smaller
transform files, it will be clear that the order in which these smaller files
run is important. Adding new transforms will no longer involve picking some
random spot to insert it.

Differential Revision: https://phabricator.services.mozilla.com/D132409
2021-12-02 17:01:09 +00:00

71 lines
2.1 KiB
Python

# Any copyright is dedicated to the public domain.
# http://creativecommons.org/publicdomain/zero/1.0/
from __future__ import absolute_import, print_function, unicode_literals
import pytest
from mozunit import main
pytestmark = pytest.mark.slow
PARAMS = {
"head_repository": "https://hg.mozilla.org/mozilla-central",
"project": "central",
}
def test_generate_graph(optimized_task_graph):
"""Simply tests that generating the graph does not fail."""
assert len(optimized_task_graph.tasks) > 0
@pytest.mark.parametrize(
"func,min_expected",
(
pytest.param(
lambda t: t.kind == "build" and "fuzzing" in t.attributes["build_platform"],
5,
id="fuzzing builds",
),
),
)
def test_tasks_are_scheduled(optimized_task_graph, filter_tasks, func, min_expected):
"""Ensure the specified tasks are scheduled on mozilla-central."""
tasks = [t.label for t in filter_tasks(optimized_task_graph, func)]
print(tasks)
assert len(tasks) >= min_expected
def test_test_setting(full_task_graph, filter_tasks):
"""Verify that all test tasks' ``test-setting`` object conforms to the schema."""
from gecko_taskgraph.transforms.test.other import test_setting_description_schema
from gecko_taskgraph.util.schema import validate_schema
tasks = filter_tasks(full_task_graph, lambda t: t.kind == "test")
failures = []
for task in tasks:
try:
validate_schema(
test_setting_description_schema,
dict(task.task["extra"]["test-setting"]),
task.label,
)
except Exception as e:
failures.append(e)
if failures:
more = None
# Only display a few failures at once.
if len(failures) > 10:
more = len(failures) - 10
failures = failures[:10]
failstr = "\n\n" + "\n\n".join(str(e) for e in failures)
if more:
failstr += "\n\n" + f"... and {more} more"
pytest.fail(f"Task validation errors:{failstr}")
if __name__ == "__main__":
main()