Merge pull request 'generate_test_vars: add support for darwin' (#3952) from lassulus/clanTest_darwin into main

Reviewed-on: https://git.clan.lol/clan/clan-core/pulls/3952
This commit is contained in:
lassulus
2025-06-12 13:58:30 +00:00
2 changed files with 38 additions and 15 deletions

View File

@@ -61,10 +61,28 @@ in
clanFlakeResult = clanFlakeResult =
if config.clan.test.fromFlake != null then importFlake config.clan.test.fromFlake else config.clan; if config.clan.test.fromFlake != null then importFlake config.clan.test.fromFlake else config.clan;
machineModules = flip filterAttrs clanFlakeResult.nixosModules ( machineModules' = flip filterAttrs clanFlakeResult.nixosModules (
name: _module: hasPrefix "clan-machine-" name name: _module: hasPrefix "clan-machine-" name
); );
machineModules = flip mapAttrs' machineModules' (
name: machineModule: {
name = removePrefix "clan-machine-" name;
value = machineModule;
}
);
machinesCross = lib.genAttrs [ "aarch64-darwin" "aarch64-linux" "x86_64-darwin" "x86_64-linux" ] (
system:
lib.mapAttrs (
_: module:
lib.nixosSystem {
inherit system;
modules = [ module ];
}
) machineModules
);
update-vars-script = "${ update-vars-script = "${
self.packages.${hostPkgs.system}.generate-test-vars self.packages.${hostPkgs.system}.generate-test-vars
}/bin/generate-test-vars"; }/bin/generate-test-vars";
@@ -219,12 +237,7 @@ in
# Inherit all nodes from the clan # Inherit all nodes from the clan
# i.e. nodes.jon <- clan.machines.jon # i.e. nodes.jon <- clan.machines.jon
# clanInternals.nixosModules contains nixosModules per node # clanInternals.nixosModules contains nixosModules per node
nodes = flip mapAttrs' machineModules ( nodes = machineModules;
name: machineModule: {
name = removePrefix "clan-machine-" name;
value = machineModule;
}
);
# !WARNING: Write a detailed comment if adding new options here # !WARNING: Write a detailed comment if adding new options here
# We should be very careful about adding new options here because it affects all tests # We should be very careful about adding new options here because it affects all tests
@@ -269,7 +282,9 @@ in
} }
); );
result = { inherit update-vars vars-check; }; result = {
inherit update-vars vars-check machinesCross;
};
}; };
}; };
} }

View File

@@ -22,7 +22,7 @@ sops_priv_key = (
sops_pub_key = "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg" sops_pub_key = "age1qm0p4vf9jvcnn43s6l4prk8zn6cx0ep9gzvevxecv729xz540v8qa742eg"
def get_machine_names(repo_root: Path, check_attr: str) -> list[str]: def get_machine_names(repo_root: Path, check_attr: str, system: str) -> list[str]:
""" """
Get the machine names from the test flake Get the machine names from the test flake
""" """
@@ -31,7 +31,7 @@ def get_machine_names(repo_root: Path, check_attr: str) -> list[str]:
nix_options += ["--store", str(tmp_store)] nix_options += ["--store", str(tmp_store)]
cmd = nix_eval( cmd = nix_eval(
[ [
f"path://{repo_root}#checks.{nix_config()['system']}.{check_attr}.nodes", f"path://{repo_root}#checks.{system}.{check_attr}.nodes",
"--apply", "--apply",
"builtins.attrNames", "builtins.attrNames",
*nix_options, *nix_options,
@@ -75,9 +75,12 @@ class TestMachine(Machine):
config = nix_config() config = nix_config()
system = config["system"] system = config["system"]
test_system = system
if system.endswith("-darwin"):
test_system = system.rstrip("darwin") + "linux"
return self.flake.select( return self.flake.select(
f'checks."{system}".{self.check_attr}.nodes.{self.name}.{attr}', f'checks."{test_system}".{self.check_attr}.machinesCross.{system}.{self.name}.{attr}',
nix_options=nix_options, nix_options=nix_options,
) )
@@ -146,18 +149,23 @@ def main() -> None:
shutil.rmtree(test_dir / "vars", ignore_errors=True) shutil.rmtree(test_dir / "vars", ignore_errors=True)
shutil.rmtree(test_dir / "sops", ignore_errors=True) shutil.rmtree(test_dir / "sops", ignore_errors=True)
config = nix_config()
system = config["system"]
test_system = system
if system.endswith("-darwin"):
test_system = system.rstrip("darwin") + "linux"
flake = Flake(str(opts.repo_root)) flake = Flake(str(opts.repo_root))
machine_names = get_machine_names( machine_names = get_machine_names(
opts.repo_root, opts.repo_root,
opts.check_attr, opts.check_attr,
test_system,
) )
config = nix_config()
system = config["system"]
flake.precache( flake.precache(
[ [
f"checks.{system}.{opts.check_attr}.nodes.{{{','.join(machine_names)}}}.config.clan.core.vars.generators.*.validationHash", f"checks.{test_system}.{opts.check_attr}.machinesCross.{system}.{{{','.join(machine_names)}}}.config.clan.core.vars.generators.*.validationHash",
f"checks.{system}.{opts.check_attr}.nodes.{{{','.join(machine_names)}}}.config.system.clan.deployment.file", f"checks.{test_system}.{opts.check_attr}.machinesCross.{system}.{{{','.join(machine_names)}}}.config.system.clan.deployment.file",
] ]
) )