summaryrefslogtreecommitdiff
path: root/pkgs/build-support/trivial-builders/test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support/trivial-builders/test.sh')
-rwxr-xr-xpkgs/build-support/trivial-builders/test.sh56
1 files changed, 56 insertions, 0 deletions
diff --git a/pkgs/build-support/trivial-builders/test.sh b/pkgs/build-support/trivial-builders/test.sh
new file mode 100755
index 000000000000..b7c4726a9be0
--- /dev/null
+++ b/pkgs/build-support/trivial-builders/test.sh
@@ -0,0 +1,56 @@
+#!/usr/bin/env bash
+
+# -------------------------------------------------------------------------- #
+#
+# trivial-builders test
+#
+# -------------------------------------------------------------------------- #
+#
+# This file can be run independently (quick):
+#
+# $ pkgs/build-support/trivial-builders/test.sh
+#
+# or in the build sandbox with a ~20s VM overhead
+#
+# $ nix-build -A tests.trivial-builders
+#
+# -------------------------------------------------------------------------- #
+
+# strict bash
+set -euo pipefail
+
+# debug
+# set -x
+# PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
+
+cd "$(dirname ${BASH_SOURCE[0]})" # nixpkgs root
+
+if [[ -z ${SAMPLE:-} ]]; then
+ sample=( `nix-build test/sample.nix` )
+ directRefs=( `nix-build test/invoke-writeDirectReferencesToFile.nix` )
+ references=( `nix-build test/invoke-writeReferencesToFile.nix` )
+else
+ # Injected by Nix (to avoid evaluating in a derivation)
+ # turn them into arrays
+ sample=($SAMPLE)
+ directRefs=($DIRECT_REFS)
+ references=($REFERENCES)
+fi
+
+echo >&2 Testing direct references...
+for i in "${!sample[@]}"; do
+ echo >&2 Checking '#'$i ${sample[$i]} ${directRefs[$i]}
+ diff -U3 \
+ <(sort <${directRefs[$i]}) \
+ <(nix-store -q --references ${sample[$i]} | sort)
+done
+
+echo >&2 Testing closure...
+for i in "${!sample[@]}"; do
+ echo >&2 Checking '#'$i ${sample[$i]} ${references[$i]}
+ diff -U3 \
+ <(sort <${references[$i]}) \
+ <(nix-store -q --requisites ${sample[$i]} | sort)
+done
+
+echo 'OK!'