mirror of
https://github.com/divnix/digga.git
synced 2024-11-22 18:58:21 +03:00
imp: remove default application of profileTests
now that we have per-host custom tests, it does not make sense anymore to have magic lumpsum tests. users are encouraged to use the new digga.lib.allProfilesTest standard test and add it to a host's test like so: `nixos.<host>.tests = [ digga.lib.allPrefilesTest ];`
This commit is contained in:
parent
35e45d6a0a
commit
6267d6abf9
13
doc/tests.md
13
doc/tests.md
@ -12,12 +12,21 @@ packages during their [check phase][check]. All packages and their tests will
|
||||
be built during CI.
|
||||
|
||||
## Integration Tests
|
||||
All your profiles defined in suites will be tested in a NixOS VM.
|
||||
All your profiles defined in suites can be tested against an individual host.
|
||||
Simply use digga's pre-baked `digga.lib.allProfilesTest` like so:
|
||||
|
||||
```nix
|
||||
{
|
||||
hosts = {
|
||||
Morty.tests = [ allProfilesTest ];
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
You can write integration tests for one or more NixOS VMs that can,
|
||||
optionally, be networked together, and yes, it's as awesome as it sounds!
|
||||
|
||||
Be sure to use the `mkTest` function from Digga, `digga.lib.pkgs-lib.mkTest`
|
||||
Be sure to use the `mkTest` function from Digga, `digga.lib.mkTest`
|
||||
which wraps the official [testing-python][testing-python] function to ensure
|
||||
that the system is setup exactly as it is for a bare DevOS system. There are
|
||||
already great resources for learning how to use these tests effectively,
|
||||
|
@ -1,7 +1,12 @@
|
||||
{ self, ... }:
|
||||
{
|
||||
{ self, inputs, ... }: let
|
||||
inherit (inputs.digga.lib) allProfilesTest;
|
||||
in {
|
||||
hostDefaults.channelName = "nixos";
|
||||
hosts = {
|
||||
Morty.modules = [ ./Morty.nix ];
|
||||
Morty.tests = [ allProfilesTest ];
|
||||
};
|
||||
importables = rec { suites = rec {
|
||||
base = [ ];
|
||||
};};
|
||||
}
|
||||
|
@ -113,7 +113,7 @@
|
||||
inherit (flake-utils-plus.inputs.flake-utils.lib) defaultSystems eachSystem eachDefaultSystem filterPackages;
|
||||
inherit (flake-utils-plus.lib) exportModules exportOverlays exportPackages;
|
||||
inherit mkFlake;
|
||||
inherit (tests) mkTest;
|
||||
inherit (tests) mkTest allProfilesTest;
|
||||
inherit (importers) flattenTree rakeLeaves importOverlays importModules importHosts;
|
||||
inherit (generators) mkDeployNodes mkHomeConfigurations;
|
||||
|
||||
|
@ -112,14 +112,6 @@ in
|
||||
systemSieve = _: host: host.config.nixpkgs.system == system;
|
||||
hostConfigsOnThisSystem = lib.filterAttrs systemSieve config.self.nixosConfigurations;
|
||||
|
||||
suitesSieve = n: host:
|
||||
lib.warnIf (host.config.lib.specialArgs.suites == null) ''
|
||||
'${n}' will only be tested against all profiles if 'importables.suites'
|
||||
are used to declare your profiles.
|
||||
''
|
||||
host.config.lib.specialArgs.suites != null;
|
||||
hostConfigsOnThisSystemWithSuites = lib.filterAttrs suitesSieve hostConfigsOnThisSystem;
|
||||
|
||||
createCustomTestOp = n: host: test:
|
||||
lib.warnIf (!(test ? name)) ''
|
||||
'${n}' has a test without a name. To distinguish tests in the flake output
|
||||
@ -136,23 +128,12 @@ in
|
||||
in
|
||||
builtins.listToAttrs (map op config.nixos.hosts.${n}.tests);
|
||||
|
||||
createAllProfilesTestOp = n: host: {
|
||||
name = "allProfilesTestFor-${n}";
|
||||
value = tests.profilesTest host;
|
||||
};
|
||||
|
||||
profilesTests =
|
||||
if (hostConfigsOnThisSystemWithSuites != [ ])
|
||||
then lib.mapAttrs' createAllProfilesTestOp hostConfigsOnThisSystemWithSuites
|
||||
else { };
|
||||
|
||||
customTests =
|
||||
if (hostConfigsOnThisSystem != [ ])
|
||||
then lib.foldl (a: b: a // b) { } (lib.attrValues (lib.mapAttrs createCustomTestsOp hostConfigsOnThisSystem))
|
||||
else { };
|
||||
|
||||
in
|
||||
(profilesTests // customTests)
|
||||
in customTests
|
||||
else { }
|
||||
)
|
||||
;
|
||||
|
@ -27,23 +27,22 @@ let
|
||||
in
|
||||
nixosTesting.makeTest (maybeCallTest pkgs (maybeImport test));
|
||||
|
||||
profilesTest = host:
|
||||
mkTest host {
|
||||
name = "profiles";
|
||||
allProfilesTest = {
|
||||
name = "allProfiles";
|
||||
|
||||
machine = { suites ? null, ... }: {
|
||||
imports =
|
||||
let
|
||||
allProfiles = lib.foldl
|
||||
(lhs: rhs: lhs ++ rhs) [ ]
|
||||
(builtins.attrValues suites);
|
||||
in
|
||||
allProfiles;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
${host.config.networking.hostName}.systemctl("is-system-running --wait")
|
||||
'';
|
||||
machine = { suites ? null, ... }: {
|
||||
imports =
|
||||
let
|
||||
allProfiles = lib.foldl
|
||||
(lhs: rhs: lhs ++ rhs) [ ]
|
||||
(builtins.attrValues suites);
|
||||
in
|
||||
allProfiles;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machines[0].systemctl("is-system-running --wait")
|
||||
'';
|
||||
};
|
||||
in
|
||||
{ inherit mkTest profilesTest; }
|
||||
{ inherit mkTest allProfilesTest; }
|
||||
|
Loading…
Reference in New Issue
Block a user