aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/config.nix.in6
-rw-r--r--tests/fetchurl.sh2
-rw-r--r--tests/lang/eval-okay-attrs6.exp1
-rw-r--r--tests/lang/eval-okay-attrs6.nix4
-rw-r--r--tests/local.mk2
-rw-r--r--tests/recursive.sh72
-rw-r--r--tests/referrers.sh4
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..."