diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/config.nix.in | 6 | ||||
-rw-r--r-- | tests/fetchurl.sh | 2 | ||||
-rw-r--r-- | tests/lang/eval-okay-attrs6.exp | 1 | ||||
-rw-r--r-- | tests/lang/eval-okay-attrs6.nix | 4 | ||||
-rw-r--r-- | tests/local.mk | 2 | ||||
-rw-r--r-- | tests/recursive.sh | 72 | ||||
-rw-r--r-- | tests/referrers.sh | 4 |
7 files changed, 83 insertions, 8 deletions
diff --git a/tests/config.nix.in b/tests/config.nix.in index ff5aeb31a..0ec2eba6b 100644 --- a/tests/config.nix.in +++ b/tests/config.nix.in @@ -1,9 +1,7 @@ -with import <nix/config.nix>; - rec { - inherit shell; + shell = "@bash@"; - path = coreutils; + path = "@coreutils@"; system = "@system@"; diff --git a/tests/fetchurl.sh b/tests/fetchurl.sh index 7319ced2b..2535651b0 100644 --- a/tests/fetchurl.sh +++ b/tests/fetchurl.sh @@ -35,7 +35,7 @@ clearStore hash=$(nix hash-file --type sha512 --base64 ./fetchurl.sh) hash32=$(nix hash-file --type sha512 --base16 ./fetchurl.sh) -mirror=$TMPDIR/hashed-mirror +mirror=$TEST_ROOT/hashed-mirror rm -rf $mirror mkdir -p $mirror/sha512 ln -s $(pwd)/fetchurl.sh $mirror/sha512/$hash32 diff --git a/tests/lang/eval-okay-attrs6.exp b/tests/lang/eval-okay-attrs6.exp new file mode 100644 index 000000000..b46938032 --- /dev/null +++ b/tests/lang/eval-okay-attrs6.exp @@ -0,0 +1 @@ +{ __overrides = { bar = "qux"; }; bar = "qux"; foo = "bar"; } diff --git a/tests/lang/eval-okay-attrs6.nix b/tests/lang/eval-okay-attrs6.nix new file mode 100644 index 000000000..2e5c85483 --- /dev/null +++ b/tests/lang/eval-okay-attrs6.nix @@ -0,0 +1,4 @@ +rec { + "${"foo"}" = "bar"; + __overrides = { bar = "qux"; }; +} diff --git a/tests/local.mk b/tests/local.mk index 97c24a78e..622f0f3d3 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -31,6 +31,7 @@ nix_tests = \ nix-copy-ssh.sh \ post-hook.sh \ function-trace.sh \ + recursive.sh \ flakes.sh # parallel.sh @@ -41,4 +42,3 @@ tests-environment = NIX_REMOTE= $(bash) -e clean-files += $(d)/common.sh $(d)/config.nix installcheck: $(d)/common.sh $(d)/plugins/libplugintest.$(SO_EXT) $(d)/config.nix - diff --git a/tests/recursive.sh b/tests/recursive.sh new file mode 100644 index 000000000..b255a2883 --- /dev/null +++ b/tests/recursive.sh @@ -0,0 +1,72 @@ +source common.sh + +# FIXME +if [[ $(uname) != Linux ]]; then exit; fi + +clearStore + +export unreachable=$(nix add-to-store ./recursive.sh) + +nix --experimental-features 'nix-command recursive-nix' build -o $TEST_ROOT/result -L --impure --expr ' + with import ./config.nix; + with import <nix/config.nix>; + mkDerivation { + name = "recursive"; + dummy = builtins.toFile "dummy" "bla bla"; + SHELL = shell; + + # Note: this is a string without context. + unreachable = builtins.getEnv "unreachable"; + + requiredSystemFeatures = [ "recursive-nix" ]; + + buildCommand = '\'\'' + mkdir $out + PATH=${nixBinDir}:$PATH + opts="--experimental-features nix-command" + + # Check that we can query/build paths in our input closure. + nix $opts path-info $dummy + nix $opts build $dummy + + # Make sure we cannot query/build paths not in out input closure. + [[ -e $unreachable ]] + (! nix $opts path-info $unreachable) + (! nix $opts build $unreachable) + + # Add something to the store. + echo foobar > foobar + foobar=$(nix $opts add-to-store ./foobar) + + nix $opts path-info $foobar + nix $opts build $foobar + + # Add it to our closure. + ln -s $foobar $out/foobar + + [[ $(nix $opts path-info --all | wc -l) -eq 3 ]] + + # Build a derivation. + nix $opts build -L --impure --expr '\'' + derivation { + name = "inner1"; + builder = builtins.getEnv "SHELL"; + system = builtins.getEnv "system"; + fnord = builtins.toFile "fnord" "fnord"; + args = [ "-c" "echo $fnord blaat > $out" ]; + } + '\'' + + [[ $(nix $opts path-info --json ./result) =~ fnord ]] + + ln -s $(nix $opts path-info ./result) $out/inner1 + '\'\''; + } +' + +[[ $(cat $TEST_ROOT/result/inner1) =~ blaat ]] + +# Make sure the recursively created paths are in the closure. +nix path-info -r $TEST_ROOT/result | grep foobar +nix path-info -r $TEST_ROOT/result | grep fnord +nix path-info -r $TEST_ROOT/result | grep inner1 diff --git a/tests/referrers.sh b/tests/referrers.sh index 8ab8e5ddf..614dd8f5b 100644 --- a/tests/referrers.sh +++ b/tests/referrers.sh @@ -4,9 +4,9 @@ clearStore max=500 -reference=$NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +reference=$NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bla touch $reference -(echo $reference && echo && echo 0) | nix-store --register-validity +(echo $reference && echo && echo 0) | nix-store --register-validity echo "making registration..." |