import shutil import tempfile from typing import Dict, List from pathlib import Path from dataclasses import dataclass import pytest @dataclass class StubCall: func: str args: List kargs: Dict class StubShell: STDOUT = "STDOUT" def __init__(self): self.stack = [] def _add(self, func, args, kargs): sc = StubCall(func, args, kargs) self.stack.append(sc) def check_call(self, args, **kargs): self._add("check_call", args, kargs) @pytest.fixture def stub_handler(): return StubShell() def temporary_data_file(src_data_dir, file_name): source = src_data_dir / file_name with tempfile.TemporaryDirectory() as tmpdirname: destination = Path(tmpdirname) / file_name shutil.copy(source, destination) yield destination @pytest.fixture def example_data_dir(): this_file = Path(__file__).absolute() src_dir = this_file.parent.parent return src_dir / "test-data" @pytest.fixture def example_authz(example_data_dir): yield from temporary_data_file(example_data_dir, "authz") @pytest.fixture def example_htpasswd(example_data_dir): yield from temporary_data_file(example_data_dir, "htpasswd") @pytest.fixture def example_empty_file(): with tempfile.TemporaryDirectory() as tmpdirname: destination = Path(tmpdirname) / "empty" yield destination