* Checks for allowedReferences and some other features.

* Use nix-build in a test.
This commit is contained in:
Eelco Dolstra 2006-10-19 17:44:51 +00:00
parent 17f4883bfe
commit 7a4497d98c
4 changed files with 100 additions and 2 deletions

View File

@ -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

59
tests/check-refs.nix.in Normal file
View File

@ -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;
};
}

36
tests/check-refs.sh Normal file
View File

@ -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

View File

@ -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/.*->\ //'