From 52d12a4fa124daa1595529e3e7008276a7986d95 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Mon, 13 Jun 2022 11:06:49 +0200 Subject: unfinished partial work --- conftest.py | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) (limited to 'conftest.py') diff --git a/conftest.py b/conftest.py index 1aef80a..cde023a 100644 --- a/conftest.py +++ b/conftest.py @@ -7,5 +7,63 @@ 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) -- cgit v1.2.3