aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEelco Dolstra <e.dolstra@tudelft.nl>2006-10-19 17:44:51 +0000
committerEelco Dolstra <e.dolstra@tudelft.nl>2006-10-19 17:44:51 +0000
commit7a4497d98ca10a3e92d4f94fd62075f336b299b1 (patch)
tree92460dca74b703ded3778e5d3044f2b9e24bbd9b /tests
parent17f4883bfeb27c3fb6f28bd8ff8c6bbf65e6ea84 (diff)
* Checks for allowedReferences and some other features.
* Use nix-build in a test.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am6
-rw-r--r--tests/check-refs.nix.in59
-rw-r--r--tests/check-refs.sh36
-rw-r--r--tests/common.sh.in1
4 files changed, 100 insertions, 2 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b19802d87..4b56d0226 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -3,7 +3,7 @@ TESTS_ENVIRONMENT = $(SHELL) -e
extra1 = $(shell pwd)/test-tmp/shared
simple.sh: simple.nix
-dependencies.sh gc.sh nix-push.sh nix-pull.in logging.sh nix-build.sh install-package.sh: dependencies.nix
+dependencies.sh gc.sh nix-push.sh nix-pull.in logging.sh nix-build.sh install-package.sh check-refs.sh: dependencies.nix
locking.sh: locking.nix
parallel.sh: parallel.nix
build-hook.sh: build-hook.nix
@@ -14,12 +14,13 @@ gc-concurrent.sh: gc-concurrent.nix gc-concurrent2.nix
user-envs.sh: user-envs.nix
fixed.sh: fixed.nix
gc-runtime.sh: gc-runtime.nix
+check-refs.sh: check-refs.nix
TESTS = init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \
locking.sh parallel.sh build-hook.sh substitutes.sh substitutes2.sh \
fallback.sh nix-push.sh gc.sh gc-concurrent.sh verify.sh nix-pull.sh \
referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh \
- gc-runtime.sh install-package.sh
+ gc-runtime.sh install-package.sh check-refs.sh
XFAIL_TESTS =
@@ -42,5 +43,6 @@ EXTRA_DIST = $(TESTS) \
user-envs.nix.in user-envs.builder.sh \
fixed.nix.in fixed.builder1.sh fixed.builder2.sh \
gc-runtime.nix.in gc-runtime.builder.sh \
+ check-refs.nix.in \
$(wildcard lang/*.nix) $(wildcard lang/*.exp) $(wildcard lang/*.exp.xml) \
common.sh.in
diff --git a/tests/check-refs.nix.in b/tests/check-refs.nix.in
new file mode 100644
index 000000000..a3738fa43
--- /dev/null
+++ b/tests/check-refs.nix.in
@@ -0,0 +1,59 @@
+rec {
+
+ dep = import ./dependencies.nix;
+
+ makeTest = nr: args: derivation ({
+ name = "check-refs-" + toString nr;
+ system = "@system@";
+ builder = "@shell@";
+ PATH = "@testPath@";
+ } // args);
+
+ src = builtins.toFile "aux-ref" "bla bla";
+
+ test1 = makeTest 1 {
+ args = ["-e" "-x" (builtins.toFile "builder.sh" "mkdir $out; ln -s $dep $out/link")];
+ inherit dep;
+ };
+
+ test2 = makeTest 2 {
+ args = ["-e" "-x" (builtins.toFile "builder.sh" "mkdir $out; ln -s ${src} $out/link")];
+ inherit dep;
+ };
+
+ test3 = makeTest 3 {
+ args = ["-e" "-x" (builtins.toFile "builder.sh" "mkdir $out; ln -s $dep $out/link")];
+ allowedReferences = [];
+ inherit dep;
+ };
+
+ test4 = makeTest 4 {
+ args = ["-e" "-x" (builtins.toFile "builder.sh" "mkdir $out; ln -s $dep $out/link")];
+ allowedReferences = [dep];
+ inherit dep;
+ };
+
+ test5 = makeTest 5 {
+ args = ["-e" "-x" (builtins.toFile "builder.sh" "mkdir $out")];
+ allowedReferences = [];
+ inherit dep;
+ };
+
+ test6 = makeTest 6 {
+ args = ["-e" "-x" (builtins.toFile "builder.sh" "mkdir $out; ln -s $out $out/link")];
+ allowedReferences = [];
+ inherit dep;
+ };
+
+ test7 = makeTest 7 {
+ args = ["-e" "-x" (builtins.toFile "builder.sh" "mkdir $out; ln -s $out $out/link")];
+ allowedReferences = ["out"];
+ inherit dep;
+ };
+
+ test8 = makeTest 8 {
+ args = ["-e" "-x" (builtins.toFile "builder.sh" "mkdir $out; ln -s ${test1} $out/link")];
+ inherit dep;
+ };
+
+}
diff --git a/tests/check-refs.sh b/tests/check-refs.sh
new file mode 100644
index 000000000..0e80b1541
--- /dev/null
+++ b/tests/check-refs.sh
@@ -0,0 +1,36 @@
+source common.sh
+
+set -x
+
+RESULT=$TEST_ROOT/result
+
+dep=$($nixbuild -o $RESULT check-refs.nix -A dep)
+
+# test1 references dep, not itself.
+test1=$($nixbuild -o $RESULT check-refs.nix -A test1)
+! $nixstore -q --references $test1 | grep -q $test1
+$nixstore -q --references $test1 | grep -q $dep
+
+# test2 references src, not itself nor dep.
+test2=$($nixbuild -o $RESULT check-refs.nix -A test2)
+! $nixstore -q --references $test2 | grep -q $test2
+! $nixstore -q --references $test2 | grep -q $dep
+$nixstore -q --references $test2 | grep -q aux-ref
+
+# test3 should fail (unallowed ref).
+! $nixbuild -o $RESULT check-refs.nix -A test3
+
+# test4 should succeed.
+$nixbuild -o $RESULT check-refs.nix -A test4
+
+# test5 should succeed.
+$nixbuild -o $RESULT check-refs.nix -A test5
+
+# test6 should fail (unallowed self-ref).
+! $nixbuild -o $RESULT check-refs.nix -A test6
+
+# test7 should succeed (allowed self-ref).
+$nixbuild -o $RESULT check-refs.nix -A test7
+
+# test8 should fail (toFile depending on derivation output).
+! $nixbuild -o $RESULT check-refs.nix -A test8
diff --git a/tests/common.sh.in b/tests/common.sh.in
index ca4c62d91..fa54bcd48 100644
--- a/tests/common.sh.in
+++ b/tests/common.sh.in
@@ -43,6 +43,7 @@ export nixinstantiate=$TOP/src/nix-instantiate/nix-instantiate
export nixstore=$TOP/src/nix-store/nix-store
export nixenv=$TOP/src/nix-env/nix-env
export nixhash=$TOP/src/nix-hash/nix-hash
+export nixbuild=$NIX_BIN_DIR/nix-build
readLink() {
ls -l "$1" | sed 's/.*->\ //'