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
|
# 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 six.moves import reload_module as reload
from tryselect import push
from tryselect.selectors import again
@pytest.fixture(autouse=True)
def patch_history_path(tmpdir, monkeypatch):
monkeypatch.setattr(push, "history_path", tmpdir.join("history.json").strpath)
reload(again)
def test_try_again(monkeypatch):
push.push_to_try(
"fuzzy",
"Fuzzy message",
try_task_config=push.generate_try_task_config(
"fuzzy",
["foo", "bar"],
{"try_task_config": {"use-artifact-builds": True}},
),
)
assert os.path.isfile(push.history_path)
with open(push.history_path, "r") as fh:
assert len(fh.readlines()) == 1
def fake_push_to_try(*args, **kwargs):
return args, kwargs
monkeypatch.setattr(push, "push_to_try", fake_push_to_try)
reload(again)
args, kwargs = again.run()
assert args[0] == "again"
assert args[1] == "Fuzzy message"
try_task_config = kwargs["try_task_config"]["parameters"].pop("try_task_config")
assert sorted(try_task_config.get("tasks")) == sorted(["foo", "bar"])
assert try_task_config.get("env") == {"TRY_SELECTOR": "fuzzy"}
assert try_task_config.get("use-artifact-builds")
with open(push.history_path, "r") as fh:
assert len(fh.readlines()) == 1
def test_no_push_does_not_generate_history(tmpdir):
assert not os.path.isfile(push.history_path)
push.push_to_try(
"fuzzy",
"Fuzzy",
try_task_config=push.generate_try_task_config(
"fuzzy",
["foo", "bar"],
{"use-artifact-builds": True},
),
dry_run=True,
)
assert not os.path.isfile(push.history_path)
assert again.run() == 1
if __name__ == "__main__":
mozunit.main()
|