Merge pull request 'move flake test into flake folder' (#3682) from flake-in-lib into main

Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3682
This commit is contained in:
Mic92
2025-05-18 20:13:14 +00:00
42 changed files with 47 additions and 42 deletions

View File

@@ -15,7 +15,7 @@ from .clan import show, update
__all__ = ["directory", "disk", "mdns_discovery", "modules", "update"] __all__ = ["directory", "disk", "mdns_discovery", "modules", "update"]
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from . import ( from . import (
backups, backups,

View File

@@ -6,7 +6,7 @@ from pathlib import Path
from clan_lib.api import API from clan_lib.api import API
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import Inventory from clan_lib.nix_models.inventory import Inventory
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore

View File

@@ -4,7 +4,7 @@ from pathlib import Path
from typing import Any from typing import Any
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_cli.cmd import run from clan_cli.cmd import run
from clan_cli.dirs import machine_gcroot from clan_cli.dirs import machine_gcroot

View File

@@ -6,7 +6,7 @@ from urllib.parse import urlparse
from clan_lib.api import API from clan_lib.api import API
from clan_lib.errors import ClanCmdError, ClanError from clan_lib.errors import ClanCmdError, ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import Meta from clan_lib.nix_models.inventory import Meta
from clan_cli.cmd import run from clan_cli.cmd import run

View File

@@ -1,7 +1,7 @@
from dataclasses import dataclass from dataclasses import dataclass
from clan_lib.api import API from clan_lib.api import API
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import Inventory, Meta from clan_lib.nix_models.inventory import Inventory, Meta
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore
from clan_lib.persist.util import apply_patch from clan_lib.persist.util import apply_patch

View File

@@ -9,7 +9,7 @@ from typing import TYPE_CHECKING
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
if TYPE_CHECKING: if TYPE_CHECKING:
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_cli.machines.machines import Machine from clan_cli.machines.machines import Machine

View File

@@ -6,7 +6,7 @@ from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from typing import Any from typing import Any
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_cli.completions import add_dynamic_completer, complete_machines from clan_cli.completions import add_dynamic_completer, complete_machines
from clan_cli.machines.machines import Machine from clan_cli.machines.machines import Machine

View File

@@ -17,7 +17,7 @@ from typing import Any
from clan_lib.api import API from clan_lib.api import API
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import Inventory from clan_lib.nix_models.inventory import Inventory
from clan_lib.persist.inventory_store import WriteInfo from clan_lib.persist.inventory_store import WriteInfo
from clan_lib.persist.util import ( from clan_lib.persist.util import (

View File

@@ -6,7 +6,7 @@ from pathlib import Path
from clan_lib.api import API from clan_lib.api import API
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import ( from clan_lib.nix_models.inventory import (
Machine as InventoryMachine, Machine as InventoryMachine,
) )

View File

@@ -7,7 +7,7 @@ from clan_lib.api import API
from clan_lib.api.disk import MachineDiskMatter from clan_lib.api.disk import MachineDiskMatter
from clan_lib.api.modules import parse_frontmatter from clan_lib.api.modules import parse_frontmatter
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import Machine as InventoryMachine from clan_lib.nix_models.inventory import Machine as InventoryMachine
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore

View File

@@ -10,7 +10,7 @@ from pathlib import Path
from typing import TYPE_CHECKING, Any from typing import TYPE_CHECKING, Any
from clan_lib.errors import ClanCmdError, ClanError from clan_lib.errors import ClanCmdError, ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_cli.cmd import Log, RunOpts, run from clan_cli.cmd import Log, RunOpts, run
from clan_cli.facts import public_modules as facts_public_modules from clan_cli.facts import public_modules as facts_public_modules

View File

@@ -1,5 +1,5 @@
import pytest import pytest
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_cli.machines.machines import Machine from clan_cli.machines.machines import Machine

View File

@@ -8,7 +8,7 @@ from pathlib import Path
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import Machine as InventoryMachine from clan_lib.nix_models.inventory import Machine as InventoryMachine
from clan_cli.cmd import Log, RunOpts, run from clan_cli.cmd import Log, RunOpts, run

View File

@@ -15,7 +15,7 @@ from typing import IO, Any
from clan_lib.api import API from clan_lib.api import API
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_cli.cmd import Log, RunOpts, run from clan_cli.cmd import Log, RunOpts, run
from clan_cli.dirs import user_config_dir from clan_cli.dirs import user_config_dir

View File

@@ -1,7 +1,7 @@
import argparse import argparse
import json import json
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
def select_command(args: argparse.Namespace) -> None: def select_command(args: argparse.Namespace) -> None:

View File

@@ -4,7 +4,7 @@ from pathlib import Path
from typing import Any, Literal, NewType, TypedDict, cast from typing import Any, Literal, NewType, TypedDict, cast
from clan_lib.errors import ClanCmdError, ClanError from clan_lib.errors import ClanCmdError, ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_cli.cmd import run from clan_cli.cmd import run
from clan_cli.dirs import clan_templates from clan_cli.dirs import clan_templates

View File

@@ -23,7 +23,7 @@ from clan_cli.tests import age_keys
from clan_cli.tests.fixture_error import FixtureError from clan_cli.tests.fixture_error import FixtureError
from clan_cli.tests.root import CLAN_CORE from clan_cli.tests.root import CLAN_CORE
from clan_cli.tests.temporary_dir import TEMPDIR from clan_cli.tests.temporary_dir import TEMPDIR
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View File

@@ -19,7 +19,7 @@ from clan_cli.templates import (
list_templates, list_templates,
) )
from clan_cli.tests.fixtures_flakes import FlakeForTest from clan_cli.tests.fixtures_flakes import FlakeForTest
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
# Function to write clan attributes to a file # Function to write clan attributes to a file

View File

@@ -2,7 +2,7 @@ from typing import Any, cast
import pytest import pytest
from clan_cli.tests.fixtures_flakes import FlakeForTest from clan_cli.tests.fixtures_flakes import FlakeForTest
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore

View File

@@ -5,7 +5,7 @@ from clan_cli.tests import fixtures_flakes
from clan_cli.tests.age_keys import SopsSetup, assert_secrets_file_recipients from clan_cli.tests.age_keys import SopsSetup, assert_secrets_file_recipients
from clan_cli.tests.helpers import cli from clan_cli.tests.helpers import cli
from clan_cli.tests.stdout import CaptureOutput from clan_cli.tests.stdout import CaptureOutput
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
@pytest.mark.impure @pytest.mark.impure

View File

@@ -7,7 +7,7 @@ from clan_cli.machines.create import CreateOptions, create_machine
from clan_cli.nix import nix_eval, run from clan_cli.nix import nix_eval, run
from clan_cli.tests.fixtures_flakes import FlakeForTest from clan_cli.tests.fixtures_flakes import FlakeForTest
from clan_lib.api.modules import list_modules from clan_lib.api.modules import list_modules
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import ( from clan_lib.nix_models.inventory import (
Inventory, Inventory,
Machine, Machine,

View File

@@ -8,7 +8,7 @@ from clan_cli.secrets.folders import sops_secrets_folder
from clan_cli.tests.fixtures_flakes import FlakeForTest from clan_cli.tests.fixtures_flakes import FlakeForTest
from clan_cli.tests.helpers import cli from clan_cli.tests.helpers import cli
from clan_cli.tests.helpers.validator import is_valid_age_key from clan_cli.tests.helpers.validator import is_valid_age_key
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
if TYPE_CHECKING: if TYPE_CHECKING:
from .age_keys import KeyPair from .age_keys import KeyPair

View File

@@ -23,7 +23,7 @@ from clan_cli.vars.public_modules import in_repo
from clan_cli.vars.secret_modules import password_store, sops from clan_cli.vars.secret_modules import password_store, sops
from clan_cli.vars.set import set_var from clan_cli.vars.set import set_var
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
def test_dependencies_as_files(temp_dir: Path) -> None: def test_dependencies_as_files(temp_dir: Path) -> None:

View File

@@ -12,7 +12,7 @@ from clan_cli.tests.fixtures_flakes import ClanFlake
from clan_cli.tests.helpers import cli from clan_cli.tests.helpers import cli
from clan_cli.tests.nix_config import ConfigItem from clan_cli.tests.nix_config import ConfigItem
from clan_cli.vms.run import inspect_vm, spawn_vm from clan_cli.vms.run import inspect_vm, spawn_vm
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
@pytest.mark.impure @pytest.mark.impure

View File

@@ -7,7 +7,7 @@ from clan_cli.tests.fixtures_flakes import ClanFlake, FlakeForTest
from clan_cli.tests.helpers import cli from clan_cli.tests.helpers import cli
from clan_cli.tests.stdout import CaptureOutput from clan_cli.tests.stdout import CaptureOutput
from clan_cli.vms.run import inspect_vm, spawn_vm from clan_cli.vms.run import inspect_vm, spawn_vm
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
if TYPE_CHECKING: if TYPE_CHECKING:
from .age_keys import KeyPair from .age_keys import KeyPair

View File

@@ -22,7 +22,7 @@ from clan_cli.vars._types import StoreBase
from clan_cli.vars.migration import check_can_migrate, migrate_files from clan_cli.vars.migration import check_can_migrate, migrate_files
from clan_lib.api import API from clan_lib.api import API
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from .check import check_vars from .check import check_vars
from .graph import ( from .graph import (

View File

@@ -5,7 +5,7 @@ import sys
from clan_cli.completions import add_dynamic_completer, complete_machines from clan_cli.completions import add_dynamic_completer, complete_machines
from clan_lib.api import API from clan_lib.api import API
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from .generate import Var from .generate import Var
from .list import get_vars from .list import get_vars

View File

@@ -5,7 +5,7 @@ from clan_cli.completions import add_dynamic_completer, complete_machines
from clan_cli.machines.machines import Machine from clan_cli.machines.machines import Machine
from clan_lib.api import API from clan_lib.api import API
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from ._types import GeneratorUpdate from ._types import GeneratorUpdate
from .generate import Generator, Prompt, Var, execute_generator from .generate import Generator, Prompt, Var, execute_generator

View File

@@ -7,7 +7,7 @@ from clan_cli.git import commit_files
from clan_cli.machines.machines import Machine from clan_cli.machines.machines import Machine
from clan_cli.vars.get import get_var from clan_cli.vars.get import get_var
from clan_cli.vars.prompt import PromptType from clan_cli.vars.prompt import PromptType
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from .generate import Var from .generate import Var
from .prompt import ask from .prompt import ask

View File

@@ -4,7 +4,7 @@ from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from typing import Any from typing import Any
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_cli.completions import add_dynamic_completer, complete_machines from clan_cli.completions import add_dynamic_completer, complete_machines
from clan_cli.machines.machines import Machine from clan_cli.machines.machines import Machine

View File

@@ -8,7 +8,7 @@ from clan_cli.cmd import RunOpts, run
from clan_cli.nix import nix_shell from clan_cli.nix import nix_shell
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from . import API from . import API

View File

@@ -5,7 +5,7 @@ from pathlib import Path
from typing import Any, TypedDict from typing import Any, TypedDict
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from . import API from . import API

View File

@@ -0,0 +1,3 @@
pytest_plugins = [
"clan_cli.tests.fixtures_flakes",
]

View File

@@ -0,0 +1 @@
from .flake import Flake # noqa

View File

@@ -2,6 +2,7 @@ import logging
import pytest import pytest
from clan_cli.tests.fixtures_flakes import ClanFlake from clan_cli.tests.fixtures_flakes import ClanFlake
from clan_lib.flake.flake import ( from clan_lib.flake.flake import (
Flake, Flake,
FlakeCache, FlakeCache,
@@ -332,10 +333,10 @@ def test_conditional_all_selector(flake: ClanFlake) -> None:
assert isinstance(flake1._cache, FlakeCache) # noqa: SLF001 assert isinstance(flake1._cache, FlakeCache) # noqa: SLF001
assert isinstance(flake2._cache, FlakeCache) # noqa: SLF001 assert isinstance(flake2._cache, FlakeCache) # noqa: SLF001
log.info("First select") log.info("First select")
res1 = flake1.select("inputs.*.{?clan,?missing}") res1 = flake1.select("inputs.*.{?clan,?missing}.templates.*.*.description")
log.info("Second (cached) select") log.info("Second (cached) select")
res2 = flake1.select("inputs.*.{?clan,?missing}") res2 = flake1.select("inputs.*.{?clan,?missing}.templates.*.*.description")
assert res1 == res2 assert res1 == res2
assert res1["clan-core"].get("clan") is not None assert res1["clan-core"].get("clan") is not None
@@ -348,7 +349,7 @@ def test_conditional_all_selector(flake: ClanFlake) -> None:
def test_caching_works(flake: ClanFlake) -> None: def test_caching_works(flake: ClanFlake) -> None:
from unittest.mock import patch from unittest.mock import patch
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
my_flake = Flake(str(flake.path)) my_flake = Flake(str(flake.path))

View File

@@ -4,7 +4,7 @@ from dataclasses import dataclass
from clan_cli.git import commit_file from clan_cli.git import commit_file
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import Inventory from clan_lib.nix_models.inventory import Inventory
from .util import ( from .util import (

View File

@@ -25,7 +25,7 @@ from clan_cli.vars.generate import generate_vars_for_machine, get_generators_clo
from clan_lib.api.disk import hw_main_disk_options, set_machine_disk_schema from clan_lib.api.disk import hw_main_disk_options, set_machine_disk_schema
from clan_lib.api.network import check_machine_online from clan_lib.api.network import check_machine_online
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import Machine as InventoryMachine from clan_lib.nix_models.inventory import Machine as InventoryMachine
from clan_lib.nix_models.inventory import MachineDeploy from clan_lib.nix_models.inventory import MachineDeploy

View File

@@ -227,7 +227,7 @@ pythonRuntime.pkgs.buildPythonApplication {
touch $out touch $out
''; '';
} }
// { // lib.optionalAttrs (!stdenv.isDarwin) {
# disabled on macOS until we fix all remaining issues # disabled on macOS until we fix all remaining issues
clan-lib-pytest = clan-lib-pytest =
runCommand "clan-lib-pytest" runCommand "clan-lib-pytest"

View File

@@ -4,7 +4,7 @@ import urllib.request
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
# Define the ClanURI class # Define the ClanURI class

View File

@@ -10,7 +10,7 @@ from clan_cli.dirs import user_history_file
from clan_cli.locked_open import read_history_file, write_history_file from clan_cli.locked_open import read_history_file, write_history_file
from clan_cli.machines.list import list_machines from clan_cli.machines.list import list_machines
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_vm_manager.clan_uri import ClanURI from clan_vm_manager.clan_uri import ClanURI

View File

@@ -5,7 +5,7 @@ from typing import Any, ClassVar
import gi import gi
from clan_cli.machines.machines import Machine from clan_cli.machines.machines import Machine
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_vm_manager import assets from clan_vm_manager import assets
from clan_vm_manager.clan_uri import ClanURI from clan_vm_manager.clan_uri import ClanURI

View File

@@ -2,7 +2,7 @@ from pathlib import Path
import pytest import pytest
from clan_cli.tests.fixtures_flakes import ClanFlake from clan_cli.tests.fixtures_flakes import ClanFlake
from clan_lib.flake.flake import Flake from clan_lib.flake import Flake
from clan_vm_manager.clan_uri import ClanURI from clan_vm_manager.clan_uri import ClanURI