import shutil import subprocess from pathlib import Path import pytest from pytest_abra import DirManager from pytest_abra.utils import load_json_to_environ @pytest.fixture(scope="session") def tmp_recipes(tmp_path_factory: pytest.TempPathFactory) -> Path: tmp_recipes_target = tmp_path_factory.mktemp("recipes") recipes_dir_source = Path("recipes") shutil.copytree(recipes_dir_source, tmp_recipes_target, dirs_exist_ok=True) return tmp_recipes_target @pytest.fixture(scope="session") def tmp_output(tmp_path_factory: pytest.TempPathFactory) -> Path: return tmp_path_factory.mktemp("output") @pytest.mark.slow def test_abratest_cli_full_integration(tmp_output: Path, tmp_recipes: Path): """run abratest against the dev instance""" # --------------------- load credentials to env variables -------------------- # cred_file = Path("credentials.json") load_json_to_environ(cred_file) # --------------------------------- env files -------------------------------- # ENV_FILES_ROOT = Path("./envfiles").resolve() ENV_FILES = [ ENV_FILES_ROOT / "login.test.dev.local-it.cloud.env", # authentik ENV_FILES_ROOT / "blog.test.dev.local-it.cloud.env", # wordpress ENV_FILES_ROOT / "files.test.dev.local-it.cloud.env", # nextcloud ] ENV_PATHS = ";".join([x.as_posix() for x in ENV_FILES]) # ----------------------------------- dirs ----------------------------------- # RECIPES_DIR = tmp_recipes.resolve() OUTPUT_DIR = tmp_output.resolve() # ------------------------------------ run ----------------------------------- # result = subprocess.run( [ "abratest", "--env_paths", ENV_PATHS, "--recipes_dir", RECIPES_DIR, "--output_dir", OUTPUT_DIR, "--session_id", "abc", ] ) assert result.returncode == 0 @pytest.mark.slow def test_results_abra(tmp_output: Path): OUTPUT_DIR = tmp_output.resolve() DIR = DirManager(output_dir=OUTPUT_DIR, session_id="abc") all_files = [f.name for f in DIR.STATUS.rglob("*")] passed_files = [f.name for f in DIR.STATUS.rglob("passed-*")] failed_files = set(all_files) - set(passed_files) assert len(all_files) > 0 assert not failed_files, failed_files