lib/modules: fixup paths
This commit is contained in:
232
lib/tests.nix
Normal file
232
lib/tests.nix
Normal file
@@ -0,0 +1,232 @@
|
||||
{
|
||||
lib,
|
||||
clan-core,
|
||||
}:
|
||||
let
|
||||
# Shallowly force all attribute values to be evaluated.
|
||||
shallowForceAllAttributes = lib.foldlAttrs (
|
||||
_acc: _name: value:
|
||||
lib.seq value true
|
||||
) true;
|
||||
inherit (clan-core.clanLib) clan;
|
||||
in
|
||||
#######
|
||||
{
|
||||
autoloading = import ./dir_test.nix { inherit lib; };
|
||||
test_missing_self =
|
||||
let
|
||||
eval = clan {
|
||||
meta.name = "test";
|
||||
directory = ./.;
|
||||
};
|
||||
in
|
||||
{
|
||||
expr = shallowForceAllAttributes eval.config;
|
||||
expected = true;
|
||||
};
|
||||
|
||||
test_only_required =
|
||||
let
|
||||
eval = clan {
|
||||
self = {
|
||||
inputs = { };
|
||||
outPath = ./.;
|
||||
};
|
||||
meta.name = "test";
|
||||
};
|
||||
in
|
||||
{
|
||||
expr = shallowForceAllAttributes eval.config;
|
||||
expected = true;
|
||||
};
|
||||
|
||||
test_all_simple =
|
||||
let
|
||||
eval = clan {
|
||||
self = {
|
||||
inputs = { };
|
||||
};
|
||||
directory = ./.;
|
||||
machines = { };
|
||||
inventory = {
|
||||
meta.name = "test";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
expr = eval.config ? inventory;
|
||||
expected = true;
|
||||
};
|
||||
|
||||
test_outputs_clanInternals =
|
||||
let
|
||||
eval = clan {
|
||||
self = {
|
||||
inputs = { };
|
||||
};
|
||||
directory = ./.;
|
||||
imports = [
|
||||
# What the user needs to specify
|
||||
{
|
||||
directory = ./.;
|
||||
inventory.meta.name = "test";
|
||||
}
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
inherit eval;
|
||||
expr = eval.config.clanInternals.inventoryClass.inventory.meta;
|
||||
expected = {
|
||||
description = null;
|
||||
icon = null;
|
||||
name = "test";
|
||||
};
|
||||
};
|
||||
|
||||
test_fn_simple =
|
||||
let
|
||||
eval = clan {
|
||||
self = {
|
||||
inputs = { };
|
||||
};
|
||||
directory = ./.;
|
||||
meta.name = "test";
|
||||
};
|
||||
in
|
||||
{
|
||||
expr = lib.isAttrs eval.config.clanInternals;
|
||||
expected = true;
|
||||
};
|
||||
|
||||
test_fn_clan_core =
|
||||
let
|
||||
eval = clan {
|
||||
self = {
|
||||
inputs = { };
|
||||
};
|
||||
directory = ../.;
|
||||
meta.name = "test-clan-core";
|
||||
};
|
||||
in
|
||||
{
|
||||
expr = builtins.attrNames eval.config.nixosConfigurations;
|
||||
expected = [
|
||||
"test-backup"
|
||||
"test-inventory-machine"
|
||||
];
|
||||
};
|
||||
|
||||
test_machines_are_modules =
|
||||
let
|
||||
eval = clan {
|
||||
self = {
|
||||
inputs = { };
|
||||
};
|
||||
directory = ../.;
|
||||
meta.name = "test-clan-core";
|
||||
};
|
||||
in
|
||||
{
|
||||
expr = builtins.attrNames eval.config.nixosModules;
|
||||
expected = [
|
||||
"clan-machine-test-backup"
|
||||
"clan-machine-test-inventory-machine"
|
||||
];
|
||||
};
|
||||
|
||||
test_clan_all_machines =
|
||||
let
|
||||
eval = clan {
|
||||
self = {
|
||||
inputs = { };
|
||||
};
|
||||
directory = ./.;
|
||||
meta.name = "test";
|
||||
|
||||
inventory.machines.machine1 = { };
|
||||
machines.machine2 = { };
|
||||
};
|
||||
in
|
||||
{
|
||||
expr = builtins.attrNames eval.config.nixosConfigurations;
|
||||
expected = [
|
||||
"machine1"
|
||||
"machine2"
|
||||
];
|
||||
};
|
||||
|
||||
test_clan_specialArgs =
|
||||
let
|
||||
eval = clan {
|
||||
self = {
|
||||
inputs = { };
|
||||
};
|
||||
directory = ./.;
|
||||
meta.name = "test";
|
||||
specialArgs.foo = "dream2nix";
|
||||
machines.machine2 =
|
||||
{ foo, ... }:
|
||||
{
|
||||
networking.hostName = foo;
|
||||
nixpkgs.hostPlatform = "x86_64-linux";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
expr = eval.config.nixosConfigurations.machine2.config.networking.hostName;
|
||||
expected = "dream2nix";
|
||||
};
|
||||
|
||||
test_clan_darwin_machines =
|
||||
let
|
||||
eval = clan {
|
||||
self = {
|
||||
inputs = { };
|
||||
};
|
||||
directory = ./.;
|
||||
meta.name = "test";
|
||||
|
||||
machines.machine1 = { };
|
||||
inventory.machines.machine2 = {
|
||||
machineClass = "darwin";
|
||||
};
|
||||
inventory.machines.machine3 = {
|
||||
machineClass = "nixos";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
result = eval;
|
||||
expr = {
|
||||
nixos = builtins.attrNames eval.config.nixosConfigurations;
|
||||
darwin = builtins.attrNames eval.config.darwinConfigurations;
|
||||
};
|
||||
expected = {
|
||||
nixos = [
|
||||
"machine1"
|
||||
"machine3"
|
||||
];
|
||||
darwin = [ "machine2" ];
|
||||
};
|
||||
};
|
||||
|
||||
test_clan_all_machines_laziness =
|
||||
let
|
||||
eval = clan {
|
||||
self = {
|
||||
inputs = { };
|
||||
};
|
||||
directory = ./.;
|
||||
meta.name = "test";
|
||||
|
||||
machines.machine1.non_existent_option = throw "eval error";
|
||||
};
|
||||
in
|
||||
{
|
||||
expr = builtins.attrNames eval.config.nixosConfigurations;
|
||||
expected = [
|
||||
"machine1"
|
||||
];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user