use DirManager
This commit is contained in:
parent
c794d330ab
commit
9da2f2526d
1 changed files with 53 additions and 39 deletions
92
src/main.py
92
src/main.py
|
|
@ -11,12 +11,9 @@ TESTS_DIR = Path("../tests")
|
||||||
|
|
||||||
ENV_FILES = [
|
ENV_FILES = [
|
||||||
Path("../envfiles/login.test.dev.local-it.cloud.env"), # authentik
|
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):
|
class TestRunner(Protocol):
|
||||||
def __init__(self, dotenv_path: Path):
|
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:
|
class Wrapper:
|
||||||
def __init__(self, env_files: list[Path]):
|
def __init__(self, env_files: list[Path]):
|
||||||
self.env_files = env_files
|
self.env_files = env_files
|
||||||
|
|
||||||
self.setup_test_dir()
|
|
||||||
|
|
||||||
self.check_env_files(self.env_files)
|
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.runners: list[TestRunner] = self.load_runners(self.env_files)
|
||||||
self.run_tests(self.runners)
|
self.run_tests(self.runners)
|
||||||
|
|
||||||
|
|
@ -57,42 +66,47 @@ class Wrapper:
|
||||||
for env_file in env_files:
|
for env_file in env_files:
|
||||||
assert env_file.is_file()
|
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
|
@staticmethod
|
||||||
def get_session_id() -> str:
|
def get_session_id() -> str:
|
||||||
current_datetime = datetime.now()
|
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
|
@staticmethod
|
||||||
def create_test_dir(session_id: str) -> Path:
|
def create_dirs(dirs: Path | list[Path] | dict[str, Path], exist_ok=False):
|
||||||
TESTS_DIR.mkdir(exist_ok=True)
|
match dirs:
|
||||||
test_dir = TESTS_DIR / Path(f"test_{session_id}")
|
case Path():
|
||||||
test_dir.mkdir()
|
dirs.mkdir(exist_ok=exist_ok)
|
||||||
return test_dir
|
case list():
|
||||||
|
for d in dirs:
|
||||||
@staticmethod
|
d.mkdir(exist_ok=exist_ok)
|
||||||
def create_records_dir(test_dir: Path) -> Path:
|
case dict():
|
||||||
records = test_dir / Path("records")
|
for d in dirs.values():
|
||||||
records.mkdir()
|
d.mkdir(exist_ok=exist_ok)
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue