diff options
author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-08-02 22:58:39 +0200 |
---|---|---|
committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2024-08-02 23:13:38 +0200 |
commit | 1de8edac1a868ce564dbcb28f5ed52fab4f8ec61 (patch) | |
tree | b9c15dfc9827310e142115ea1b8b91ab3a36052e | |
parent | test(tests): Init infrastructure (diff) | |
download | nixos-server-1de8edac1a868ce564dbcb28f5ed52fab4f8ec61.tar.gz nixos-server-1de8edac1a868ce564dbcb28f5ed52fab4f8ec61.zip |
build(tests): Add complementary scripts
-rwxr-xr-x | scripts/lint_missing_tests.sh | 66 | ||||
-rwxr-xr-x | scripts/test_interactive.sh | 15 |
2 files changed, 81 insertions, 0 deletions
diff --git a/scripts/lint_missing_tests.sh b/scripts/lint_missing_tests.sh new file mode 100755 index 0000000..dffb86e --- /dev/null +++ b/scripts/lint_missing_tests.sh @@ -0,0 +1,66 @@ +#!/usr/bin/env sh + +# Shell library {{{ +die() { + echo "$1" >&2 + exit 1 +} +warning() { + eprintln "\033[1;91m==> WARNING:\033[0m" "\033[1;93m$*\033[0m" +} +eprintln() { + >&2 println "$@" +} +println() { + printf "$*\n" +} +# }}} + +test_template() { + test_name="$(basename "$1")" + cat <<EOF +{pkgs}: +pkgs.testers.runNixOSTest { + name = "$test_name"; + + nodes.server = { pkgs, ... }: { + networking = { + firewall = { + allowedTCPPorts = [ 80 ]; + }; + }; + services.nginx = { + enable = true; + virtualHosts."server" = {}; + }; + }; + + nodes.client = { pkgs, ... }: { + environment.systemPackages = with pkgs; [ + curl + ]; + }; + + testScript = '' + server.wait_for_unit("default.target") + client.wait_for_unit("default.target") + client.succeed("curl http://server/ | grep -o \"Welcome to nginx!\"") + ''; +} +EOF +} + +cd "$(dirname "$0")/.." || die "Bug: The root dir does not exist" + +fd default.nix ./modules | while IFS= read -r dir; do + mkdir --parents "tests/$(dirname "$dir")" + + test_file="$(realpath --relative-to="$(pwd)" "tests/$(dirname "$dir")/test.nix")" + dir="$(realpath --relative-to="$(pwd)" "$dir")" + + if [ "$1" = generate ]; then + test_template "$dir" >"$test_file" + else + warning "'$dir' is missing it's test (at '$test_file')!" + fi +done diff --git a/scripts/test_interactive.sh b/scripts/test_interactive.sh new file mode 100755 index 0000000..d309799 --- /dev/null +++ b/scripts/test_interactive.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env sh + +tast_target="$1" + +[ -z "$test_target" ] && { + echo "You need to select a test target!" 1>&2 + echo "Usage: test_interactive TEST_TARGET" 1>&2 + exit 1 +} + +nix build .#checks.x86_64-linux."$tast_target".driver + +./result/bin/nixos-test-driver --interactive + +# vim: ft=sh |