aboutsummaryrefslogtreecommitdiff
path: root/conftest.py
diff options
context:
space:
mode:
authorWojtek Kosior <koszko@koszko.org>2022-06-13 11:06:49 +0200
committerWojtek Kosior <koszko@koszko.org>2022-07-16 16:31:44 +0200
commit52d12a4fa124daa1595529e3e7008276a7986d95 (patch)
tree9b56fe2d28ff0242f8511aca570be455112ad3df /conftest.py
parent9dcbfdfe8620cc417438d1727aa1e0c89846e9bf (diff)
downloadhaketilo-hydrilla-52d12a4fa124daa1595529e3e7008276a7986d95.tar.gz
haketilo-hydrilla-52d12a4fa124daa1595529e3e7008276a7986d95.zip
unfinished partial work
Diffstat (limited to 'conftest.py')
-rw-r--r--conftest.py58
1 files changed, 58 insertions, 0 deletions
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)