From 9da2f2526d381737c19f91df56b1a409e112ea0a Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 22 Nov 2023 14:02:29 +0100 Subject: [PATCH] use DirManager --- src/main.py | 92 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 53 insertions(+), 39 deletions(-) diff --git a/src/main.py b/src/main.py index 6816c61..4ea53cf 100644 --- a/src/main.py +++ b/src/main.py @@ -11,12 +11,9 @@ TESTS_DIR = Path("../tests") ENV_FILES = [ Path("../envfiles/login.test.dev.local-it.cloud.env"), # authentik - Path("../envfiles/blog.test.dev.local-it.cloud.env"), # wordpress + # Path("../envfiles/blog.test.dev.local-it.cloud.env"), # wordpress ] -ic(ENV_FILES[0].is_file()) -ic(ENV_FILES[1].is_file()) - class TestRunner(Protocol): def __init__(self, dotenv_path: Path): @@ -26,16 +23,28 @@ class TestRunner(Protocol): ... -RUNNER_DICT: dict[str, type[TestRunner]] = {"wordpress": RunnerWordpress} +# Register all runners here. A .env file with TYPE=authentik will be ran with RunnerAuthentik +RUNNER_DICT: dict[str, type[TestRunner]] = { + "authentik": RunnerAuthentik, + "wordpress": RunnerWordpress, +} class Wrapper: def __init__(self, env_files: list[Path]): self.env_files = env_files - - self.setup_test_dir() - self.check_env_files(self.env_files) + + session_id = self.get_session_id() + self.setup_test(session_id) + + self.run_test() + + def setup_test(self, session_id: str): + self.dir_manager = DirManager(root_tests_dir=TESTS_DIR, session_id=session_id) + self.dir_manager.create_all_dirs() + + def run_test(self): self.runners: list[TestRunner] = self.load_runners(self.env_files) self.run_tests(self.runners) @@ -57,42 +66,47 @@ class Wrapper: for env_file in env_files: assert env_file.is_file() - def setup_test_dir(self): - session_id = self.get_session_id() - test_dir = self.create_test_dir(session_id) - self.create_records_dir(test_dir) - self.create_states_dir(test_dir) - self.create_results_dir(test_dir) - @staticmethod def get_session_id() -> str: current_datetime = datetime.now() - return current_datetime.strftime("%Y-%m-%d-%H-%M") + return current_datetime.strftime("%Y-%m-%d-%H-%M-%S") + + +class DirManager: + def __init__(self, root_tests_dir: Path, session_id: str): + # root test dir + self.root_tests_dir = root_tests_dir + self.session_id = session_id + + self.get_all_dirs() + + def get_all_dirs(self): + self.session_dir = self.root_tests_dir / f"test-{self.session_id}" + self.session_sub_dirs = self.get_subdirs(self.session_dir) + + def create_all_dirs(self): + self.create_dirs(self.root_tests_dir, exist_ok=True) + self.create_dirs(self.session_dir) + self.create_dirs(self.session_sub_dirs) + + def get_subdirs(self, session_dir: Path): + return { + "records": session_dir / Path("records"), + "states": session_dir / Path("states"), + "results": session_dir / Path("results"), + } @staticmethod - def create_test_dir(session_id: str) -> Path: - TESTS_DIR.mkdir(exist_ok=True) - test_dir = TESTS_DIR / Path(f"test_{session_id}") - test_dir.mkdir() - return test_dir - - @staticmethod - def create_records_dir(test_dir: Path) -> Path: - records = test_dir / Path("records") - records.mkdir() - return records - - @staticmethod - def create_states_dir(test_dir: Path) -> Path: - states = test_dir / Path("states") - states.mkdir() - return states - - @staticmethod - def create_results_dir(test_dir: Path) -> Path: - results = test_dir / Path("results") - results.mkdir() - return results + def create_dirs(dirs: Path | list[Path] | dict[str, Path], exist_ok=False): + match dirs: + case Path(): + dirs.mkdir(exist_ok=exist_ok) + case list(): + for d in dirs: + d.mkdir(exist_ok=exist_ok) + case dict(): + for d in dirs.values(): + d.mkdir(exist_ok=exist_ok) if __name__ == "__main__":