Inventory: add eval tests
All checks were successful
buildbot/nix-build .#checks.aarch64-darwin.nixos-test_install_machine Build done.
buildbot/nix-build .#checks.aarch64-darwin.nixos-flash-installer Build done.
buildbot/nix-build .#checks.aarch64-darwin.nixos-iso-installer Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-test_install_machine Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-flash-installer Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-iso-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-apk Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-app-pytest Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-inventory-schema Build done.
buildbot/nix-build .#checks.aarch64-darwin.nixos-test-backup Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-app-no-breakpoints Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-age Build done.
buildbot/nix-build .#checks.x86_64-linux.package-module-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-e2fsprogs Build done.
buildbot/nix-build .#checks.x86_64-linux.renderClanOptions Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-openssh Build done.
buildbot/nix-build .#checks.x86_64-linux."clan-dep-python3.11-mypy" Build done.
buildbot/nix-build .#checks.x86_64-linux."clan-dep-python3.11-qemu" Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-sshpass Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-zbar Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-archlinux Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-deb Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-rpm Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-test-backup Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-bash Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-test-backup Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-fakeroot Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-git Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-nix Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-rsync Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-sops Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-tor Build done.
buildbot/nix-build .#checks.x86_64-linux.package-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.check-for-breakpoints Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-clan-cli Build done.
buildbot/nix-build .#checks.x86_64-linux.lib-jsonschema-example-valid Build done.
buildbot/nix-build .#checks.x86_64-linux.treefmt Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-clan-app Build done.
buildbot/nix-build .#checks.x86_64-linux.container Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-pytest-without-core Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-default Build done.
buildbot/nix-build .#checks.x86_64-linux.borgbackup Build done.
buildbot/nix-build .#checks.x86_64-linux.deltachat Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-cli Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-webview-ui Build done.
buildbot/nix-build .#checks.x86_64-linux.package-tea-create-pr Build done.
buildbot/nix-build .#checks.x86_64-linux.package-zerotier-members Build done.
buildbot/nix-build .#checks.x86_64-linux.package-deploy-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-cli-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-ts-api Build done.
buildbot/nix-build .#checks.x86_64-linux.package-default Build done.
buildbot/nix-build .#checks.x86_64-linux.matrix-synapse Build done.
buildbot/nix-build .#checks.x86_64-linux.package-editor Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-app Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-test_install_machine Build done.
buildbot/nix-build .#checks.x86_64-linux.package-impure-checks Build done.
buildbot/nix-build .#checks.x86_64-linux.package-merge-after-ci Build done.
buildbot/nix-build .#checks.x86_64-linux.module-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.package-module-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.package-moonlight-sunshine-accept Build done.
buildbot/nix-build .#checks.x86_64-linux.lib-inventory-eval Build done.
buildbot/nix-build .#checks.x86_64-linux.lib-inventory-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.package-zerotierone Build done.
buildbot/nix-build .#checks.x86_64-linux.package-zt-tcp-relay Build done.
buildbot/nix-build .#checks.x86_64-linux.lib-jsonschema-nix-unit-tests Build done.
buildbot/nix-build .#checks.x86_64-linux.package-webview-ui Build done.
buildbot/nix-build .#checks.x86_64-linux.package-pending-reviews Build done.
buildbot/nix-build .#checks.x86_64-linux.package-function-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-iso-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.template-minimal Build done.
buildbot/nix-build .#checks.x86_64-linux.wayland-proxy-virtwl Build done.
buildbot/nix-build .#checks.x86_64-linux.package-iso-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.zt-tcp-relay Build done.
buildbot/nix-build .#checks.x86_64-linux.postgresql Build done.
buildbot/nix-build .#checks.x86_64-linux.secrets Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-flash-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.syncthing Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-install-test-ubuntu-22-04 Build done.
buildbot/nix-build .#checks.x86_64-linux.test-backups Build done.
checks / checks-impure (pull_request) Successful in 2m24s
buildbot/nix-build .#checks.x86_64-linux.flash Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-pytest-with-core Build done.
buildbot/nix-build .#checks.x86_64-linux.test-installation Build done.
buildbot/nix-eval Build done.
All checks were successful
buildbot/nix-build .#checks.aarch64-darwin.nixos-test_install_machine Build done.
buildbot/nix-build .#checks.aarch64-darwin.nixos-flash-installer Build done.
buildbot/nix-build .#checks.aarch64-darwin.nixos-iso-installer Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-test_install_machine Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-flash-installer Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-iso-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-apk Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-app-pytest Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-inventory-schema Build done.
buildbot/nix-build .#checks.aarch64-darwin.nixos-test-backup Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-app-no-breakpoints Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-age Build done.
buildbot/nix-build .#checks.x86_64-linux.package-module-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-e2fsprogs Build done.
buildbot/nix-build .#checks.x86_64-linux.renderClanOptions Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-openssh Build done.
buildbot/nix-build .#checks.x86_64-linux."clan-dep-python3.11-mypy" Build done.
buildbot/nix-build .#checks.x86_64-linux."clan-dep-python3.11-qemu" Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-sshpass Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-zbar Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-archlinux Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-deb Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-installer-rpm Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-test-backup Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-bash Build done.
buildbot/nix-build .#checks.aarch64-linux.nixos-test-backup Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-fakeroot Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-git Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-nix Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-rsync Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-sops Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-dep-tor Build done.
buildbot/nix-build .#checks.x86_64-linux.package-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.check-for-breakpoints Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-clan-cli Build done.
buildbot/nix-build .#checks.x86_64-linux.lib-jsonschema-example-valid Build done.
buildbot/nix-build .#checks.x86_64-linux.treefmt Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-clan-app Build done.
buildbot/nix-build .#checks.x86_64-linux.container Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-pytest-without-core Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-default Build done.
buildbot/nix-build .#checks.x86_64-linux.borgbackup Build done.
buildbot/nix-build .#checks.x86_64-linux.deltachat Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-cli Build done.
buildbot/nix-build .#checks.x86_64-linux.devShell-webview-ui Build done.
buildbot/nix-build .#checks.x86_64-linux.package-tea-create-pr Build done.
buildbot/nix-build .#checks.x86_64-linux.package-zerotier-members Build done.
buildbot/nix-build .#checks.x86_64-linux.package-deploy-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-cli-docs Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-ts-api Build done.
buildbot/nix-build .#checks.x86_64-linux.package-default Build done.
buildbot/nix-build .#checks.x86_64-linux.matrix-synapse Build done.
buildbot/nix-build .#checks.x86_64-linux.package-editor Build done.
buildbot/nix-build .#checks.x86_64-linux.package-clan-app Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-test_install_machine Build done.
buildbot/nix-build .#checks.x86_64-linux.package-impure-checks Build done.
buildbot/nix-build .#checks.x86_64-linux.package-merge-after-ci Build done.
buildbot/nix-build .#checks.x86_64-linux.module-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.package-module-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.package-moonlight-sunshine-accept Build done.
buildbot/nix-build .#checks.x86_64-linux.lib-inventory-eval Build done.
buildbot/nix-build .#checks.x86_64-linux.lib-inventory-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.package-zerotierone Build done.
buildbot/nix-build .#checks.x86_64-linux.package-zt-tcp-relay Build done.
buildbot/nix-build .#checks.x86_64-linux.lib-jsonschema-nix-unit-tests Build done.
buildbot/nix-build .#checks.x86_64-linux.package-webview-ui Build done.
buildbot/nix-build .#checks.x86_64-linux.package-pending-reviews Build done.
buildbot/nix-build .#checks.x86_64-linux.package-function-schema Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-iso-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.template-minimal Build done.
buildbot/nix-build .#checks.x86_64-linux.wayland-proxy-virtwl Build done.
buildbot/nix-build .#checks.x86_64-linux.package-iso-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.zt-tcp-relay Build done.
buildbot/nix-build .#checks.x86_64-linux.postgresql Build done.
buildbot/nix-build .#checks.x86_64-linux.secrets Build done.
buildbot/nix-build .#checks.x86_64-linux.nixos-flash-installer Build done.
buildbot/nix-build .#checks.x86_64-linux.syncthing Build done.
buildbot/nix-build .#checks.x86_64-linux.package-gui-install-test-ubuntu-22-04 Build done.
buildbot/nix-build .#checks.x86_64-linux.test-backups Build done.
checks / checks-impure (pull_request) Successful in 2m24s
buildbot/nix-build .#checks.x86_64-linux.flash Build done.
buildbot/nix-build .#checks.x86_64-linux.clan-pytest-with-core Build done.
buildbot/nix-build .#checks.x86_64-linux.test-installation Build done.
buildbot/nix-eval Build done.
This commit is contained in:
parent
2535fdcb12
commit
1628fdeaee
|
@ -13,13 +13,18 @@ let
|
||||||
++ (builtins.foldl' (
|
++ (builtins.foldl' (
|
||||||
acc: tag:
|
acc: tag:
|
||||||
let
|
let
|
||||||
|
# For error printing
|
||||||
|
availableTags = lib.foldlAttrs (
|
||||||
|
acc: _: v:
|
||||||
|
v.tags or [ ] ++ acc
|
||||||
|
) [ ] inventory.machines;
|
||||||
|
|
||||||
tagMembers = builtins.attrNames (
|
tagMembers = builtins.attrNames (
|
||||||
lib.filterAttrs (_n: v: builtins.elem tag v.tags or [ ]) inventory.machines
|
lib.filterAttrs (_n: v: builtins.elem tag v.tags or [ ]) inventory.machines
|
||||||
);
|
);
|
||||||
in
|
in
|
||||||
# throw "Machine tag ${tag} not found. Not machine with: tag ${tagName} not in inventory.";
|
|
||||||
if tagMembers == [ ] then
|
if tagMembers == [ ] then
|
||||||
throw "Machine tag ${tag} not found. Not machine with: tag ${tag} not in inventory."
|
throw "Tag: '${tag}' not found. Available tags: ${builtins.toJSON (lib.unique availableTags)}"
|
||||||
else
|
else
|
||||||
acc ++ tagMembers
|
acc ++ tagMembers
|
||||||
) [ ] members.tags or [ ]);
|
) [ ] members.tags or [ ]);
|
||||||
|
@ -76,7 +81,7 @@ let
|
||||||
if builtins.pathExists path then
|
if builtins.pathExists path then
|
||||||
path
|
path
|
||||||
else
|
else
|
||||||
throw "Role doesnt have a module: ${role}. Path: ${path} not found."
|
throw "Module doesn't have role: '${role}'. Path: ${path} not found."
|
||||||
) inverseRoles.${machineName} or [ ];
|
) inverseRoles.${machineName} or [ ];
|
||||||
in
|
in
|
||||||
if isInService then
|
if isInService then
|
||||||
|
@ -101,6 +106,6 @@ let
|
||||||
acc2
|
acc2
|
||||||
) [ ] serviceConfigs)
|
) [ ] serviceConfigs)
|
||||||
) [ ] inventory.services
|
) [ ] inventory.services
|
||||||
) inventory.machines;
|
) inventory.machines or { };
|
||||||
in
|
in
|
||||||
machines
|
machines
|
||||||
|
|
|
@ -1,42 +1,81 @@
|
||||||
{ self, ... }:
|
{ self, inputs, ... }:
|
||||||
|
let
|
||||||
|
inputOverrides = builtins.concatStringsSep " " (
|
||||||
|
builtins.map (input: " --override-input ${input} ${inputs.${input}}") (builtins.attrNames inputs)
|
||||||
|
);
|
||||||
|
in
|
||||||
{
|
{
|
||||||
|
|
||||||
flake.inventory = import ./example.nix { inherit self; };
|
flake.inventory = import ./example.nix { inherit self; };
|
||||||
|
|
||||||
perSystem =
|
perSystem =
|
||||||
{ pkgs, config, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
system,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
buildInventory = import ./build-inventory {
|
||||||
|
clan-core = self;
|
||||||
|
inherit lib;
|
||||||
|
};
|
||||||
|
in
|
||||||
{
|
{
|
||||||
devShells.inventory-schema = pkgs.mkShell {
|
devShells.inventory-schema = pkgs.mkShell {
|
||||||
inputsFrom = [ config.checks.inventory-schema-checks ];
|
inputsFrom = with config.checks; [
|
||||||
|
lib-inventory-schema
|
||||||
|
lib-inventory-eval
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
checks.inventory-schema-checks = pkgs.stdenv.mkDerivation {
|
# Run: nix-unit --extra-experimental-features flakes --flake .#legacyPackages.x86_64-linux.evalTests
|
||||||
name = "inventory-schema-checks";
|
legacyPackages.evalTests = import ./tests {
|
||||||
src = ./.;
|
inherit buildInventory;
|
||||||
buildInputs = [ pkgs.cue ];
|
clan-core = self;
|
||||||
buildPhase = ''
|
};
|
||||||
echo "Running inventory tests..."
|
|
||||||
# Cue is easier to run in the same directory as the schema
|
|
||||||
cd spec
|
|
||||||
|
|
||||||
echo "Export cue as json-schema..."
|
checks = {
|
||||||
cue export --out openapi root.cue
|
lib-inventory-eval = pkgs.runCommand "tests" { nativeBuildInputs = [ pkgs.nix-unit ]; } ''
|
||||||
|
export HOME="$(realpath .)"
|
||||||
|
|
||||||
echo "Validate test/*.json against inventory-schema..."
|
nix-unit --eval-store "$HOME" \
|
||||||
|
--extra-experimental-features flakes \
|
||||||
test_dir="../examples"
|
${inputOverrides} \
|
||||||
for file in "$test_dir"/*; do
|
--flake ${self}#legacyPackages.${system}.evalTests
|
||||||
# Check if the item is a file
|
|
||||||
if [ -f "$file" ]; then
|
|
||||||
# Print the filename
|
|
||||||
echo "Running test on: $file"
|
|
||||||
|
|
||||||
# Run the cue vet command
|
|
||||||
cue vet "$file" root.cue -d "#Root"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
touch $out
|
touch $out
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
lib-inventory-schema = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "inventory-schema-checks";
|
||||||
|
src = ./.;
|
||||||
|
buildInputs = [ pkgs.cue ];
|
||||||
|
buildPhase = ''
|
||||||
|
echo "Running inventory tests..."
|
||||||
|
# Cue is easier to run in the same directory as the schema
|
||||||
|
cd spec
|
||||||
|
|
||||||
|
echo "Export cue as json-schema..."
|
||||||
|
cue export --out openapi root.cue
|
||||||
|
|
||||||
|
echo "Validate test/*.json against inventory-schema..."
|
||||||
|
|
||||||
|
test_dir="../examples"
|
||||||
|
for file in "$test_dir"/*; do
|
||||||
|
# Check if the item is a file
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
# Print the filename
|
||||||
|
echo "Running test on: $file"
|
||||||
|
|
||||||
|
# Run the cue vet command
|
||||||
|
cue vet "$file" root.cue -d "#Root"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
touch $out
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
151
lib/inventory/tests/default.nix
Normal file
151
lib/inventory/tests/default.nix
Normal file
|
@ -0,0 +1,151 @@
|
||||||
|
{ buildInventory, clan-core, ... }:
|
||||||
|
{
|
||||||
|
test_inventory_empty = {
|
||||||
|
# Empty inventory should return an empty module
|
||||||
|
expr = buildInventory { };
|
||||||
|
expected = { };
|
||||||
|
};
|
||||||
|
test_inventory_role_imports =
|
||||||
|
let
|
||||||
|
configs = buildInventory {
|
||||||
|
services = {
|
||||||
|
borgbackup.instance_1 = {
|
||||||
|
roles.server.machines = [ "backup_server" ];
|
||||||
|
roles.client.machines = [
|
||||||
|
"client_1_machine"
|
||||||
|
"client_2_machine"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
machines = {
|
||||||
|
"backup_server" = { };
|
||||||
|
"client_1_machine" = { };
|
||||||
|
"client_2_machine" = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
expr = {
|
||||||
|
server_imports = (builtins.head configs."backup_server").imports;
|
||||||
|
client_1_imports = (builtins.head configs."client_1_machine").imports;
|
||||||
|
client_2_imports = (builtins.head configs."client_2_machine").imports;
|
||||||
|
};
|
||||||
|
|
||||||
|
expected = {
|
||||||
|
server_imports = [
|
||||||
|
clan-core.clanModules.borgbackup
|
||||||
|
"${clan-core.clanModules.borgbackup}/roles/server.nix"
|
||||||
|
];
|
||||||
|
client_1_imports = [
|
||||||
|
clan-core.clanModules.borgbackup
|
||||||
|
"${clan-core.clanModules.borgbackup}/roles/client.nix"
|
||||||
|
];
|
||||||
|
client_2_imports = [
|
||||||
|
clan-core.clanModules.borgbackup
|
||||||
|
"${clan-core.clanModules.borgbackup}/roles/client.nix"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
test_inventory_tag_resolve =
|
||||||
|
let
|
||||||
|
configs = buildInventory {
|
||||||
|
services = {
|
||||||
|
borgbackup.instance_1 = {
|
||||||
|
roles.client.tags = [ "backup" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
machines = {
|
||||||
|
"not_used_machine" = { };
|
||||||
|
"client_1_machine" = {
|
||||||
|
tags = [ "backup" ];
|
||||||
|
};
|
||||||
|
"client_2_machine" = {
|
||||||
|
tags = [ "backup" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
expr = {
|
||||||
|
client_1_machine = builtins.length configs.client_1_machine;
|
||||||
|
client_2_machine = builtins.length configs.client_2_machine;
|
||||||
|
not_used_machine = builtins.length configs.not_used_machine;
|
||||||
|
};
|
||||||
|
expected = {
|
||||||
|
client_1_machine = 2;
|
||||||
|
client_2_machine = 2;
|
||||||
|
not_used_machine = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
test_inventory_multiple_roles =
|
||||||
|
let
|
||||||
|
configs = buildInventory {
|
||||||
|
services = {
|
||||||
|
borgbackup.instance_1 = {
|
||||||
|
roles.client.machines = [ "machine_1" ];
|
||||||
|
roles.server.machines = [ "machine_1" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
machines = {
|
||||||
|
"machine_1" = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
expr = {
|
||||||
|
machine_1_imports = (builtins.head configs."machine_1").imports;
|
||||||
|
};
|
||||||
|
expected = {
|
||||||
|
machine_1_imports = [
|
||||||
|
clan-core.clanModules.borgbackup
|
||||||
|
"${clan-core.clanModules.borgbackup}/roles/client.nix"
|
||||||
|
"${clan-core.clanModules.borgbackup}/roles/server.nix"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
test_inventory_role_doesnt_exist =
|
||||||
|
let
|
||||||
|
configs = buildInventory {
|
||||||
|
services = {
|
||||||
|
borgbackup.instance_1 = {
|
||||||
|
roles.roleXYZ.machines = [ "machine_1" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
machines = {
|
||||||
|
"machine_1" = { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
expr = configs;
|
||||||
|
expectedError = {
|
||||||
|
type = "ThrownError";
|
||||||
|
msg = "Module doesn't have role.*";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
test_inventory_tag_doesnt_exist =
|
||||||
|
let
|
||||||
|
configs = buildInventory {
|
||||||
|
services = {
|
||||||
|
borgbackup.instance_1 = {
|
||||||
|
roles.client.machines = [ "machine_1" ];
|
||||||
|
roles.client.tags = [ "tagXYZ" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
machines = {
|
||||||
|
"machine_1" = {
|
||||||
|
tags = [ "tagABC" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
expr = configs;
|
||||||
|
expectedError = {
|
||||||
|
type = "ThrownError";
|
||||||
|
msg = "Tag: '\\w+' not found";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user