1# Any copyright is dedicated to the public domain.
2# http://creativecommons.org/publicdomain/zero/1.0/
3
4from __future__ import absolute_import
5
6import os
7
8import pytest
9from mach.logging import LoggingManager
10from responses import RequestsMock
11
12from taskgraph import GECKO
13from taskgraph.actions import render_actions_json
14from taskgraph.config import load_graph_config
15from taskgraph.parameters import Parameters
16
17
18@pytest.fixture
19def responses():
20    with RequestsMock() as rsps:
21        yield rsps
22
23
24@pytest.fixture(scope="session", autouse=True)
25def patch_prefherder(request):
26    from _pytest.monkeypatch import MonkeyPatch
27
28    m = MonkeyPatch()
29    m.setattr(
30        "taskgraph.util.bugbug._write_perfherder_data",
31        lambda lower_is_better: None,
32    )
33    yield
34    m.undo()
35
36
37@pytest.fixture(scope="session", autouse=True)
38def enable_logging():
39    """Ensure logs from taskgraph are displayed when a test fails."""
40    lm = LoggingManager()
41    lm.add_terminal_logging()
42
43
44@pytest.fixture(scope="session")
45def graph_config():
46    return load_graph_config(os.path.join(GECKO, "taskcluster", "ci"))
47
48
49@pytest.fixture(scope="session")
50def actions_json(graph_config):
51    decision_task_id = "abcdef"
52    return render_actions_json(Parameters(strict=False), graph_config, decision_task_id)
53