1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import mozunit
import pytest
from tryselect.tasks import cache_key, filter_tasks_by_paths, resolve_tests_by_suite
def test_filter_tasks_by_paths(patch_resolver):
tasks = {"foobar/xpcshell-1": {}, "foobar/mochitest": {}, "foobar/xpcshell": {}}
patch_resolver(["xpcshell"], {})
assert list(filter_tasks_by_paths(tasks, "dummy")) == []
patch_resolver([], [{"flavor": "xpcshell"}])
assert list(filter_tasks_by_paths(tasks, "dummy")) == [
"foobar/xpcshell-1",
"foobar/xpcshell",
]
@pytest.mark.parametrize(
"input, tests, expected",
(
pytest.param(
["xpcshell.js"],
[{"flavor": "xpcshell", "srcdir_relpath": "xpcshell.js"}],
{"xpcshell": ["xpcshell.js"]},
id="single test",
),
pytest.param(
["xpcshell.ini"],
[
{
"flavor": "xpcshell",
"srcdir_relpath": "xpcshell.js",
"manifest_relpath": "xpcshell.ini",
},
],
{"xpcshell": ["xpcshell.ini"]},
id="single manifest",
),
pytest.param(
["xpcshell.js", "mochitest.js"],
[
{"flavor": "xpcshell", "srcdir_relpath": "xpcshell.js"},
{"flavor": "mochitest", "srcdir_relpath": "mochitest.js"},
],
{
"xpcshell": ["xpcshell.js"],
"mochitest-plain": ["mochitest.js"],
},
id="two tests",
),
pytest.param(
["test/xpcshell.ini"],
[
{
"flavor": "xpcshell",
"srcdir_relpath": "test/xpcshell.js",
"manifest_relpath": os.path.join("test", "xpcshell.ini"),
},
],
{"xpcshell": ["test/xpcshell.ini"]},
id="mismatched path separators",
),
),
)
def test_resolve_tests_by_suite(patch_resolver, input, tests, expected):
patch_resolver([], tests)
assert resolve_tests_by_suite(input) == expected
@pytest.mark.parametrize(
"attr,params,disable_target_task_filter,expected",
(
("target_task_set", None, False, "target_task_set"),
("target_task_set", {"project": "autoland"}, False, "target_task_set"),
("target_task_set", {"project": "mozilla-central"}, False, "target_task_set"),
("target_task_set", None, True, "target_task_set-uncommon"),
("full_task_set", {"project": "pine"}, False, "full_task_set-pine"),
("full_task_set", None, True, "full_task_set"),
),
)
def test_cache_key(attr, params, disable_target_task_filter, expected):
assert cache_key(attr, params, disable_target_task_filter) == expected
if __name__ == "__main__":
mozunit.main()
|