From 336e99b2a79a6ccb39864dbb8d7e65b60ac28e71 Mon Sep 17 00:00:00 2001 From: DavHau Date: Fri, 5 Jul 2024 16:10:55 +0700 Subject: [PATCH] clan-cli tests: remove dynamic inclusion of helpers module Dynamically extending the python path at runtime is bad for developer experience, as this is not understood by the text editor and therefore jump to definition etc. does not work. -> Better to remove the dynamic inclusion and force developers to specify the import correctly. --- pkgs/clan-app/shell.nix | 3 +++ pkgs/clan-app/tests/conftest.py | 4 ---- pkgs/clan-app/tests/helpers/__init__.py | 0 pkgs/clan-app/tests/test_cli.py | 2 +- pkgs/clan-cli/shell.nix | 3 +++ pkgs/clan-cli/tests/conftest.py | 6 ------ pkgs/clan-cli/tests/helpers/__init__.py | 0 pkgs/clan-cli/tests/test_backups.py | 2 +- pkgs/clan-cli/tests/test_cli.py | 2 +- pkgs/clan-cli/tests/test_config.py | 2 +- pkgs/clan-cli/tests/test_create_flake.py | 2 +- pkgs/clan-cli/tests/test_flakes_cli.py | 2 +- pkgs/clan-cli/tests/test_history_cli.py | 2 +- pkgs/clan-cli/tests/test_import_sops_cli.py | 2 +- pkgs/clan-cli/tests/test_machines_cli.py | 2 +- pkgs/clan-cli/tests/test_modules.py | 2 +- pkgs/clan-cli/tests/test_secrets_cli.py | 2 +- pkgs/clan-cli/tests/test_secrets_generate.py | 4 ++-- pkgs/clan-cli/tests/test_secrets_password_store.py | 4 ++-- pkgs/clan-cli/tests/test_secrets_upload.py | 2 +- pkgs/clan-cli/tests/test_vms_cli.py | 2 +- 21 files changed, 23 insertions(+), 27 deletions(-) create mode 100644 pkgs/clan-app/tests/helpers/__init__.py create mode 100644 pkgs/clan-cli/tests/helpers/__init__.py diff --git a/pkgs/clan-app/shell.nix b/pkgs/clan-app/shell.nix index 34f96b6b0..667f82e70 100644 --- a/pkgs/clan-app/shell.nix +++ b/pkgs/clan-app/shell.nix @@ -51,6 +51,9 @@ mkShell { export GIT_ROOT=$(git rev-parse --show-toplevel) export PKG_ROOT=$GIT_ROOT/pkgs/clan-app + # Add current package to PYTHONPATH + export PYTHONPATH="$PKG_ROOT''${PYTHONPATH:+:$PYTHONPATH:}" + # Add clan-app command to PATH export PATH="$PKG_ROOT/bin":"$PATH" diff --git a/pkgs/clan-app/tests/conftest.py b/pkgs/clan-app/tests/conftest.py index 244f5bfe8..9f107889f 100644 --- a/pkgs/clan-app/tests/conftest.py +++ b/pkgs/clan-app/tests/conftest.py @@ -1,14 +1,10 @@ import subprocess -import sys from pathlib import Path import pytest from clan_cli.custom_logger import setup_logging from clan_cli.nix import nix_shell -sys.path.append(str(Path(__file__).parent / "helpers")) -sys.path.append(str(Path(__file__).parent.parent)) # Also add clan app to PYTHONPATH - pytest_plugins = [ "temporary_dir", "root", diff --git a/pkgs/clan-app/tests/helpers/__init__.py b/pkgs/clan-app/tests/helpers/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/clan-app/tests/test_cli.py b/pkgs/clan-app/tests/test_cli.py index 182098859..64cc88919 100644 --- a/pkgs/clan-app/tests/test_cli.py +++ b/pkgs/clan-app/tests/test_cli.py @@ -1,5 +1,5 @@ import pytest -from cli import Cli +from helpers.cli import Cli def test_help(capfd: pytest.CaptureFixture) -> None: diff --git a/pkgs/clan-cli/shell.nix b/pkgs/clan-cli/shell.nix index 3949685d4..53f926021 100644 --- a/pkgs/clan-cli/shell.nix +++ b/pkgs/clan-cli/shell.nix @@ -31,6 +31,9 @@ mkShell { export GIT_ROOT="$(git rev-parse --show-toplevel)" export PKG_ROOT="$GIT_ROOT/pkgs/clan-cli" + # Add current package to PYTHONPATH + export PYTHONPATH="$PKG_ROOT''${PYTHONPATH:+:$PYTHONPATH:}" + # Add clan command to PATH export PATH="$PKG_ROOT/bin":"$PATH" diff --git a/pkgs/clan-cli/tests/conftest.py b/pkgs/clan-cli/tests/conftest.py index 5ec8735fc..a0374aeea 100644 --- a/pkgs/clan-cli/tests/conftest.py +++ b/pkgs/clan-cli/tests/conftest.py @@ -1,14 +1,8 @@ -import os import subprocess -import sys from pathlib import Path import pytest -sys.path.append(os.path.join(os.path.dirname(__file__), "helpers")) -sys.path.append(str(Path(__file__).parent.parent)) # Also add clan_cli to PYTHONPATH - - from clan_cli.custom_logger import setup_logging from clan_cli.nix import nix_shell diff --git a/pkgs/clan-cli/tests/helpers/__init__.py b/pkgs/clan-cli/tests/helpers/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/pkgs/clan-cli/tests/test_backups.py b/pkgs/clan-cli/tests/test_backups.py index 16ec42ac9..8ac99c39c 100644 --- a/pkgs/clan-cli/tests/test_backups.py +++ b/pkgs/clan-cli/tests/test_backups.py @@ -1,6 +1,6 @@ import pytest -from cli import Cli from fixtures_flakes import FlakeForTest +from helpers.cli import Cli @pytest.mark.impure diff --git a/pkgs/clan-cli/tests/test_cli.py b/pkgs/clan-cli/tests/test_cli.py index 24cbd5464..87a6eaac7 100644 --- a/pkgs/clan-cli/tests/test_cli.py +++ b/pkgs/clan-cli/tests/test_cli.py @@ -1,5 +1,5 @@ import pytest -from cli import Cli +from helpers.cli import Cli def test_help(capsys: pytest.CaptureFixture) -> None: diff --git a/pkgs/clan-cli/tests/test_config.py b/pkgs/clan-cli/tests/test_config.py index 985b15c16..508f361ae 100644 --- a/pkgs/clan-cli/tests/test_config.py +++ b/pkgs/clan-cli/tests/test_config.py @@ -1,8 +1,8 @@ from pathlib import Path import pytest -from cli import Cli from fixtures_flakes import FlakeForTest +from helpers.cli import Cli from clan_cli import config from clan_cli.config import parsing diff --git a/pkgs/clan-cli/tests/test_create_flake.py b/pkgs/clan-cli/tests/test_create_flake.py index dc5a6dc8e..2db3dae46 100644 --- a/pkgs/clan-cli/tests/test_create_flake.py +++ b/pkgs/clan-cli/tests/test_create_flake.py @@ -3,7 +3,7 @@ import subprocess from pathlib import Path import pytest -from cli import Cli +from helpers.cli import Cli @pytest.fixture diff --git a/pkgs/clan-cli/tests/test_flakes_cli.py b/pkgs/clan-cli/tests/test_flakes_cli.py index 34e4f3436..e6c6a4421 100644 --- a/pkgs/clan-cli/tests/test_flakes_cli.py +++ b/pkgs/clan-cli/tests/test_flakes_cli.py @@ -1,8 +1,8 @@ from typing import TYPE_CHECKING import pytest -from cli import Cli from fixtures_flakes import FlakeForTest +from helpers.cli import Cli if TYPE_CHECKING: pass diff --git a/pkgs/clan-cli/tests/test_history_cli.py b/pkgs/clan-cli/tests/test_history_cli.py index 20523889a..284c302e7 100644 --- a/pkgs/clan-cli/tests/test_history_cli.py +++ b/pkgs/clan-cli/tests/test_history_cli.py @@ -2,8 +2,8 @@ import json from typing import TYPE_CHECKING import pytest -from cli import Cli from fixtures_flakes import FlakeForTest +from helpers.cli import Cli from pytest import CaptureFixture from clan_cli.dirs import user_history_file diff --git a/pkgs/clan-cli/tests/test_import_sops_cli.py b/pkgs/clan-cli/tests/test_import_sops_cli.py index 17a9a5a69..52770dfba 100644 --- a/pkgs/clan-cli/tests/test_import_sops_cli.py +++ b/pkgs/clan-cli/tests/test_import_sops_cli.py @@ -2,8 +2,8 @@ from pathlib import Path from typing import TYPE_CHECKING import pytest -from cli import Cli from fixtures_flakes import FlakeForTest +from helpers.cli import Cli if TYPE_CHECKING: from age_keys import KeyPair diff --git a/pkgs/clan-cli/tests/test_machines_cli.py b/pkgs/clan-cli/tests/test_machines_cli.py index c4e483d42..399f0a3af 100644 --- a/pkgs/clan-cli/tests/test_machines_cli.py +++ b/pkgs/clan-cli/tests/test_machines_cli.py @@ -1,6 +1,6 @@ import pytest -from cli import Cli from fixtures_flakes import FlakeForTest +from helpers.cli import Cli @pytest.mark.impure diff --git a/pkgs/clan-cli/tests/test_modules.py b/pkgs/clan-cli/tests/test_modules.py index 4f65e2a77..7c644dd1a 100644 --- a/pkgs/clan-cli/tests/test_modules.py +++ b/pkgs/clan-cli/tests/test_modules.py @@ -13,7 +13,7 @@ from clan_cli.nix import nix_eval, run_no_stdout if TYPE_CHECKING: from age_keys import KeyPair -from cli import Cli +from helpers.cli import Cli from clan_cli.machines.facts import machine_get_fact diff --git a/pkgs/clan-cli/tests/test_secrets_cli.py b/pkgs/clan-cli/tests/test_secrets_cli.py index 05cf7a8c6..c14022096 100644 --- a/pkgs/clan-cli/tests/test_secrets_cli.py +++ b/pkgs/clan-cli/tests/test_secrets_cli.py @@ -5,8 +5,8 @@ from contextlib import contextmanager from typing import TYPE_CHECKING import pytest -from cli import Cli from fixtures_flakes import FlakeForTest +from helpers.cli import Cli from clan_cli.errors import ClanError diff --git a/pkgs/clan-cli/tests/test_secrets_generate.py b/pkgs/clan-cli/tests/test_secrets_generate.py index 63d47a457..41ce3436a 100644 --- a/pkgs/clan-cli/tests/test_secrets_generate.py +++ b/pkgs/clan-cli/tests/test_secrets_generate.py @@ -2,9 +2,9 @@ import ipaddress from typing import TYPE_CHECKING import pytest -from cli import Cli from fixtures_flakes import FlakeForTest -from validator import is_valid_age_key, is_valid_ssh_key +from helpers.cli import Cli +from helpers.validator import is_valid_age_key, is_valid_ssh_key from clan_cli.clan_uri import FlakeId from clan_cli.facts.secret_modules.sops import SecretStore diff --git a/pkgs/clan-cli/tests/test_secrets_password_store.py b/pkgs/clan-cli/tests/test_secrets_password_store.py index ef9ab23ff..2f813b1a2 100644 --- a/pkgs/clan-cli/tests/test_secrets_password_store.py +++ b/pkgs/clan-cli/tests/test_secrets_password_store.py @@ -2,9 +2,9 @@ import subprocess from pathlib import Path import pytest -from cli import Cli from fixtures_flakes import FlakeForTest -from validator import is_valid_ssh_key +from helpers.cli import Cli +from helpers.validator import is_valid_ssh_key from clan_cli.clan_uri import FlakeId from clan_cli.facts.secret_modules.password_store import SecretStore diff --git a/pkgs/clan-cli/tests/test_secrets_upload.py b/pkgs/clan-cli/tests/test_secrets_upload.py index fa829324b..b246f35c7 100644 --- a/pkgs/clan-cli/tests/test_secrets_upload.py +++ b/pkgs/clan-cli/tests/test_secrets_upload.py @@ -1,8 +1,8 @@ from typing import TYPE_CHECKING import pytest -from cli import Cli from fixtures_flakes import FlakeForTest +from helpers.cli import Cli from clan_cli.ssh import HostGroup diff --git a/pkgs/clan-cli/tests/test_vms_cli.py b/pkgs/clan-cli/tests/test_vms_cli.py index 73a614f0e..fa654ce99 100644 --- a/pkgs/clan-cli/tests/test_vms_cli.py +++ b/pkgs/clan-cli/tests/test_vms_cli.py @@ -7,8 +7,8 @@ from time import sleep from typing import TYPE_CHECKING import pytest -from cli import Cli from fixtures_flakes import FlakeForTest, generate_flake +from helpers.cli import Cli from root import CLAN_CORE from clan_cli.dirs import vm_state_dir