diff options
Diffstat (limited to 'scripts/lint_missing_tests.sh')
-rwxr-xr-x | scripts/lint_missing_tests.sh | 66 |
1 files changed, 66 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 |