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