From 6d15e32536abbcef919b706f073c7fea46cf9229 Mon Sep 17 00:00:00 2001 From: "Nicolas B. Pierron" Date: Sun, 8 Feb 2015 21:48:38 +0100 Subject: Issue #6161 - Add tests for NixOS modules. --- lib/tests/modules.sh | 93 ++++++++++++++++++++++ lib/tests/modules/declare-enable.nix | 14 ++++ lib/tests/modules/declare-loaOfSub-any-enable.nix | 29 +++++++ lib/tests/modules/default.nix | 7 ++ lib/tests/modules/define-enable-force.nix | 5 ++ lib/tests/modules/define-enable.nix | 3 + lib/tests/modules/define-force-enable.nix | 5 ++ .../modules/define-force-loaOfSub-foo-enable.nix | 5 ++ lib/tests/modules/define-loaOfSub-bar-enable.nix | 3 + lib/tests/modules/define-loaOfSub-bar.nix | 3 + .../modules/define-loaOfSub-foo-enable-force.nix | 5 ++ lib/tests/modules/define-loaOfSub-foo-enable.nix | 3 + .../modules/define-loaOfSub-foo-force-enable.nix | 7 ++ lib/tests/modules/define-loaOfSub-foo.nix | 3 + .../modules/define-loaOfSub-force-foo-enable.nix | 7 ++ 15 files changed, 192 insertions(+) create mode 100755 lib/tests/modules.sh create mode 100644 lib/tests/modules/declare-enable.nix create mode 100644 lib/tests/modules/declare-loaOfSub-any-enable.nix create mode 100644 lib/tests/modules/default.nix create mode 100644 lib/tests/modules/define-enable-force.nix create mode 100644 lib/tests/modules/define-enable.nix create mode 100644 lib/tests/modules/define-force-enable.nix create mode 100644 lib/tests/modules/define-force-loaOfSub-foo-enable.nix create mode 100644 lib/tests/modules/define-loaOfSub-bar-enable.nix create mode 100644 lib/tests/modules/define-loaOfSub-bar.nix create mode 100644 lib/tests/modules/define-loaOfSub-foo-enable-force.nix create mode 100644 lib/tests/modules/define-loaOfSub-foo-enable.nix create mode 100644 lib/tests/modules/define-loaOfSub-foo-force-enable.nix create mode 100644 lib/tests/modules/define-loaOfSub-foo.nix create mode 100644 lib/tests/modules/define-loaOfSub-force-foo-enable.nix diff --git a/lib/tests/modules.sh b/lib/tests/modules.sh new file mode 100755 index 00000000000..9c69df2bd9b --- /dev/null +++ b/lib/tests/modules.sh @@ -0,0 +1,93 @@ +#!/bin/sh +# +# This script is used to test that the module system is working as expected. +# By default it test the version of nixpkgs which is defined in the NIX_PATH. + +cd ./modules + +pass=0 +fail=0 + +evalConfig() { + local attr=$1 + shift; + local script="import ./default.nix { modules = [ $@ ];}" + nix-instantiate -E "$script" -A "$attr" --eval-only +} + +reportFailure() { + local attr=$1 + shift; + local script="import ./default.nix { modules = [ $@ ];}" + echo 2>&1 "$ nix-instantiate -E '$script' -A '$attr' --eval-only" + evalConfig "$attr" "$@" + fail=$((fail + 1)) +} + +checkConfigOutput() { + local outputContains=$1 + shift; + if evalConfig "$@" 2>/dev/null | grep --silent "$outputContains" ; then + pass=$((pass + 1)) + return 0; + else + echo 2>&1 "error: Expected result matching '$outputContains', while evaluating" + reportFailure "$@" + return 1 + fi +} + +checkConfigError() { + local errorContains=$1 + shift; + if evalConfig "$@" 1>/dev/null 2>&1; then + echo 2>&1 "error: Expected error code, got exit code 0, while evaluating" + reportFailure "$@" + return 1 + fi + + if evalConfig "$@" 2>&1 >/dev/null | grep --silent "$errorContains" ; then + pass=$((pass + 1)) + return 0; + else + echo 2>&1 "error: Expected error matching '$errorContains', while evaluating" + reportFailure "$@" + return 1 + fi +} + +checkConfigOutput "false" config.enable +checkConfigError 'The option .* defined in .* does not exist.' config.enable ./define-enable.nix +set -- config.enable ./declare-enable.nix ./define-enable.nix +checkConfigOutput "true" "$@" +checkConfigOutput "false" "$@" ./define-force-enable.nix +checkConfigOutput "false" "$@" ./define-enable-force.nix + +checkConfigError 'attribute .foo. .* not found' config.loaOfSub.foo.enable ./declare-loaOfSub-any-enable.nix +checkConfigOutput 'false' config.loaOfSub.foo.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix +set -- config.loaOfSub.foo.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo-enable.nix +checkConfigOutput 'true' "$@" +checkConfigOutput 'false' "$@" ./define-force-loaOfSub-foo-enable.nix +checkConfigOutput 'false' "$@" ./define-loaOfSub-force-foo-enable.nix +checkConfigOutput 'false' "$@" ./define-loaOfSub-foo-force-enable.nix +checkConfigOutput 'false' "$@" ./define-loaOfSub-foo-enable-force.nix + +checkConfigError 'attribute .bar. .* not found' config.loaOfSub.bar.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix +checkConfigOutput 'false' config.loaOfSub.bar.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix ./define-loaOfSub-bar.nix +set -- config.loaOfSub.bar.enable ./declare-loaOfSub-any-enable.nix ./define-loaOfSub-foo.nix ./define-loaOfSub-bar-enable.nix +checkConfigOutput 'true' "$@" +checkConfigError 'attribute .bar. .* not found' "$@" ./define-force-loaOfSub-foo-enable.nix +checkConfigError 'attribute .bar. .* not found' "$@" ./define-loaOfSub-force-foo-enable.nix +checkConfigOutput 'true' "$@" ./define-loaOfSub-foo-force-enable.nix +checkConfigOutput 'true' "$@" ./define-loaOfSub-foo-enable-force.nix + +cat <, modules ? [] }: + +{ + inherit (lib.evalModules { + inherit modules; + }) config options; +} diff --git a/lib/tests/modules/define-enable-force.nix b/lib/tests/modules/define-enable-force.nix new file mode 100644 index 00000000000..f4990a32863 --- /dev/null +++ b/lib/tests/modules/define-enable-force.nix @@ -0,0 +1,5 @@ +{ lib, ... }: + +{ + enable = lib.mkForce false; +} diff --git a/lib/tests/modules/define-enable.nix b/lib/tests/modules/define-enable.nix new file mode 100644 index 00000000000..7dc26010ae5 --- /dev/null +++ b/lib/tests/modules/define-enable.nix @@ -0,0 +1,3 @@ +{ + enable = true; +} diff --git a/lib/tests/modules/define-force-enable.nix b/lib/tests/modules/define-force-enable.nix new file mode 100644 index 00000000000..978caa2a8c0 --- /dev/null +++ b/lib/tests/modules/define-force-enable.nix @@ -0,0 +1,5 @@ +{ lib, ... }: + +lib.mkForce { + enable = false; +} diff --git a/lib/tests/modules/define-force-loaOfSub-foo-enable.nix b/lib/tests/modules/define-force-loaOfSub-foo-enable.nix new file mode 100644 index 00000000000..bfd8e084b59 --- /dev/null +++ b/lib/tests/modules/define-force-loaOfSub-foo-enable.nix @@ -0,0 +1,5 @@ +{ lib, ... }: + +lib.mkForce { + loaOfSub.foo.enable = false; +} diff --git a/lib/tests/modules/define-loaOfSub-bar-enable.nix b/lib/tests/modules/define-loaOfSub-bar-enable.nix new file mode 100644 index 00000000000..422bb0a600b --- /dev/null +++ b/lib/tests/modules/define-loaOfSub-bar-enable.nix @@ -0,0 +1,3 @@ +{ + loaOfSub.bar.enable = true; +} diff --git a/lib/tests/modules/define-loaOfSub-bar.nix b/lib/tests/modules/define-loaOfSub-bar.nix new file mode 100644 index 00000000000..c24315e09b6 --- /dev/null +++ b/lib/tests/modules/define-loaOfSub-bar.nix @@ -0,0 +1,3 @@ +{ + loaOfSub.bar = {}; +} diff --git a/lib/tests/modules/define-loaOfSub-foo-enable-force.nix b/lib/tests/modules/define-loaOfSub-foo-enable-force.nix new file mode 100644 index 00000000000..c1d7b198be5 --- /dev/null +++ b/lib/tests/modules/define-loaOfSub-foo-enable-force.nix @@ -0,0 +1,5 @@ +{ lib, ... }: + +{ + loaOfSub.foo.enable = lib.mkForce false; +} diff --git a/lib/tests/modules/define-loaOfSub-foo-enable.nix b/lib/tests/modules/define-loaOfSub-foo-enable.nix new file mode 100644 index 00000000000..822425c71bb --- /dev/null +++ b/lib/tests/modules/define-loaOfSub-foo-enable.nix @@ -0,0 +1,3 @@ +{ + loaOfSub.foo.enable = true; +} diff --git a/lib/tests/modules/define-loaOfSub-foo-force-enable.nix b/lib/tests/modules/define-loaOfSub-foo-force-enable.nix new file mode 100644 index 00000000000..dce0ef547b3 --- /dev/null +++ b/lib/tests/modules/define-loaOfSub-foo-force-enable.nix @@ -0,0 +1,7 @@ +{ lib, ... }: + +{ + loaOfSub.foo = lib.mkForce { + enable = false; + }; +} diff --git a/lib/tests/modules/define-loaOfSub-foo.nix b/lib/tests/modules/define-loaOfSub-foo.nix new file mode 100644 index 00000000000..e9b2e631f2e --- /dev/null +++ b/lib/tests/modules/define-loaOfSub-foo.nix @@ -0,0 +1,3 @@ +{ + loaOfSub.foo = {}; +} diff --git a/lib/tests/modules/define-loaOfSub-force-foo-enable.nix b/lib/tests/modules/define-loaOfSub-force-foo-enable.nix new file mode 100644 index 00000000000..df5722274ee --- /dev/null +++ b/lib/tests/modules/define-loaOfSub-force-foo-enable.nix @@ -0,0 +1,7 @@ +{ lib, ... }: + +{ + loaOfSub = lib.mkForce { + foo.enable = false; + }; +} -- cgit 1.4.1