Easier setup by executing main from root working directory
This commit is contained in:
parent
a4bdb2e868
commit
2cb4a9d526
9 changed files with 23 additions and 21 deletions
78
src/main.py
78
src/main.py
|
|
@ -1,78 +0,0 @@
|
|||
from datetime import datetime
|
||||
from pathlib import Path
|
||||
from typing import Protocol
|
||||
|
||||
from dirmanager import DirManager
|
||||
from dotenv import dotenv_values
|
||||
from icecream import ic
|
||||
from tests_authentik.runner_authentik import RunnerAuthentik
|
||||
from tests_wordpress.runner_wordpress import RunnerWordpress
|
||||
|
||||
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
|
||||
]
|
||||
|
||||
|
||||
class TestRunner(Protocol):
|
||||
def __init__(self, dotenv_path: Path, tests_dir: Path, session_id: str):
|
||||
...
|
||||
|
||||
def run_setup(self):
|
||||
...
|
||||
|
||||
def run_tests(self):
|
||||
...
|
||||
|
||||
|
||||
# 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], session_id: str):
|
||||
self.env_files = env_files
|
||||
self.check_env_files(self.env_files)
|
||||
self.session_id = session_id
|
||||
|
||||
def setup_test(self):
|
||||
self.dir_manager = DirManager(tests_dir=TESTS_DIR, session_id=self.session_id)
|
||||
self.dir_manager.create_all_dirs()
|
||||
|
||||
def run_test(self):
|
||||
self.runners: list[TestRunner] = self._load_runners(self.env_files)
|
||||
for runner in self.runners:
|
||||
runner.run_setup()
|
||||
for runner in self.runners:
|
||||
runner.run_tests()
|
||||
|
||||
def _load_runners(self, env_files: list[Path]) -> list[TestRunner]:
|
||||
runners = []
|
||||
for env_file in env_files:
|
||||
config: dict[str, str] = dotenv_values(env_file)
|
||||
RunnerClass = RUNNER_DICT[config["TYPE"]]
|
||||
runners.append(RunnerClass(dotenv_path=env_file, tests_dir=TESTS_DIR, session_id=self.session_id))
|
||||
return runners
|
||||
|
||||
@staticmethod
|
||||
def check_env_files(env_files: list[Path]):
|
||||
"""checks if file exist for every file in list"""
|
||||
for env_file in env_files:
|
||||
assert env_file.is_file()
|
||||
|
||||
@staticmethod
|
||||
def get_session_id() -> str:
|
||||
current_datetime = datetime.now()
|
||||
return current_datetime.strftime("%Y-%m-%d-%H-%M-%S")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
session_id = Wrapper.get_session_id()
|
||||
wrapper = Wrapper(ENV_FILES, session_id=session_id)
|
||||
wrapper.setup_test()
|
||||
wrapper.run_test()
|
||||
Loading…
Add table
Add a link
Reference in a new issue