[nix] add base integration test
run it using 'nix flake check -L'
This commit is contained in:
@@ -176,5 +176,14 @@
|
|||||||
program = builtins.toString (nixpkgs.legacyPackages."x86_64-linux".writeScript "docs" ''
|
program = builtins.toString (nixpkgs.legacyPackages."x86_64-linux".writeScript "docs" ''
|
||||||
${pkgs.python3}/bin/python3 -m http.server --directory ${self.packages."x86_64-linux".docs}/share/doc'');
|
${pkgs.python3}/bin/python3 -m http.server --directory ${self.packages."x86_64-linux".docs}/share/doc'');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
checks = forAllSystems (system: let
|
||||||
|
checkArgs = {
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
inherit self;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
gokill = import ./test/test.nix checkArgs;
|
||||||
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
21
test/lib.nix
Normal file
21
test/lib.nix
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# tests/lib.nix
|
||||||
|
# based on https://blog.thalheim.io/2023/01/08/how-to-use-nixos-testing-framework-with-flakes/
|
||||||
|
# The first argument to this function is the test module itself
|
||||||
|
test:
|
||||||
|
# These arguments are provided by `flake.nix` on import, see checkArgs
|
||||||
|
{ pkgs, self}:
|
||||||
|
let
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
# this imports the nixos library that contains our testing framework
|
||||||
|
nixos-lib = import (pkgs.path + "/nixos/lib") {};
|
||||||
|
in
|
||||||
|
(nixos-lib.runTest {
|
||||||
|
hostPkgs = pkgs;
|
||||||
|
# This speeds up the evaluation by skipping evaluating documentation (optional)
|
||||||
|
defaults.documentation.enable = lib.mkDefault false;
|
||||||
|
# This makes `self` available in the NixOS configuration of our virtual machines.
|
||||||
|
# This is useful for referencing modules or packages from your own flake
|
||||||
|
# as well as importing from other flakes.
|
||||||
|
node.specialArgs = { inherit self; };
|
||||||
|
imports = [ test ];
|
||||||
|
}).config.result
|
||||||
42
test/test.nix
Normal file
42
test/test.nix
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
# ./tests/hello-world-server.nix
|
||||||
|
(import ./lib.nix) {
|
||||||
|
name = "gokill-base-test";
|
||||||
|
nodes = {
|
||||||
|
# `self` here is set by using specialArgs in `lib.nix`
|
||||||
|
node1 = { self, pkgs, ... }: {
|
||||||
|
imports = [ self.nixosModules.gokill ];
|
||||||
|
|
||||||
|
services.gokill = {
|
||||||
|
enable = true;
|
||||||
|
triggers = [
|
||||||
|
{
|
||||||
|
type = "Timeout";
|
||||||
|
name = "custom timeout";
|
||||||
|
options = {
|
||||||
|
duration = 10;
|
||||||
|
};
|
||||||
|
actions = [
|
||||||
|
{
|
||||||
|
type = "Command";
|
||||||
|
options = {
|
||||||
|
command = "echo hello world";
|
||||||
|
};
|
||||||
|
stage = 2;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
import time
|
||||||
|
start_all() # wait for our service to start
|
||||||
|
node1.wait_for_unit("gokill")
|
||||||
|
time.sleep(11)
|
||||||
|
output = node1.succeed("journalctl -u gokill.service | tail -n 2 | head -n 1")
|
||||||
|
# Check if our webserver returns the expected result
|
||||||
|
assert "hellow world" in output
|
||||||
|
'';
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user