blob: cde023ad639306e0c0712f04ca1ee7b628158313 (
about) (
plain)
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
|
# SPDX-License-Identifier: CC0-1.0
# Copyright (C) 2022 Wojtek Kosior <koszko@koszko.org>
#
# Available under the terms of Creative Commons Zero v1.0 Universal.
import sys
from pathlib import Path
import pytest
import pkgutil
from tempfile import TemporaryDirectory
from typing import Iterable
here = Path(__file__).resolve().parent
sys.path.insert(0, str(here / 'src'))
from hydrilla import translations as hydrilla_translations
@pytest.fixture(autouse=True)
def no_requests(monkeypatch):
"""Remove requests.sessions.Session.request for all tests."""
monkeypatch.delattr('requests.sessions.Session.request')
@pytest.fixture
def mock_subprocess_run(monkeypatch, request):
"""
Temporarily replace subprocess.run() with a function supplied through pytest
marker 'subprocess_run'.
The marker excepts 2 arguments:
* the module inside which the subprocess attribute should be mocked and
* a run() function to use.
"""
where, mocked_run = request.node.get_closest_marker('subprocess_run').args
class MockedSubprocess:
"""Minimal mocked version of the subprocess module."""
run = mocked_run
monkeypatch.setattr(where, 'subprocess', MockedSubprocess)
@pytest.fixture(autouse=True)
def no_gettext(monkeypatch, request):
"""
Make gettext return all strings untranslated unless we request otherwise.
"""
if request.node.get_closest_marker('enable_gettext'):
return
class MockedTraslations:
"""Replacement for gettext.GNUTranslations."""
def __init__(self, dummy_locale):
"""Initialize this MockedTranslations."""
pass
def gettext(self, msg):
"""Return translated string unmodified."""
return msg
monkeypatch.setattr(hydrilla_translations, 'translation', MockedTraslations)
@pytest.fixture
def tmpdir() -> Iterable[Path]:
"""
Provide test case with a temporary directory that will be automatically
deleted after the test.
"""
with TemporaryDirectory() as tmpdir:
yield Path(tmpdir)
|