diff options
author | Vincent Ambo <mail@tazj.in> | 2022-05-18T15·39+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2022-05-19T14·08+0000 |
commit | d127f9bd0e7b9b2e0df2de8a2227f77c0907468d (patch) | |
tree | 68455040d88b8e0c2817601db88ede450873ff8e /third_party/nix/tests | |
parent | c85291c602ac666421627d6934ebc6d5be1b93e1 (diff) |
chore(3p/nix): unvendor tvix 0.1 r/4098
Nothing is using this now, and we'll likely never pick this up again, but we learned a lot in the process. Every now and then this breaks in some bizarre way on channel bumps and it's just a waste of time to maintain that. Change-Id: Idcf2f5acd4ca7070ce18d7149cbfc0d967dc0a44 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5632 Tested-by: BuildkiteCI Reviewed-by: sterni <sternenseemann@systemli.org> Reviewed-by: lukegb <lukegb@tvl.fyi> Autosubmit: tazjin <tazjin@tvl.su>
Diffstat (limited to 'third_party/nix/tests')
101 files changed, 0 insertions, 4014 deletions
diff --git a/third_party/nix/tests/add.sh b/third_party/nix/tests/add.sh deleted file mode 100644 index e26e05843d7f..000000000000 --- a/third_party/nix/tests/add.sh +++ /dev/null @@ -1,28 +0,0 @@ -source common.sh - -path1=$(nix-store --add ./dummy) -echo $path1 - -path2=$(nix-store --add-fixed sha256 --recursive ./dummy) -echo $path2 - -if test "$path1" != "$path2"; then - echo "nix-store --add and --add-fixed mismatch" - exit 1 -fi - -path3=$(nix-store --add-fixed sha256 ./dummy) -echo $path3 -test "$path1" != "$path3" || exit 1 - -path4=$(nix-store --add-fixed sha1 --recursive ./dummy) -echo $path4 -test "$path1" != "$path4" || exit 1 - -hash1=$(nix-store -q --hash $path1) -echo $hash1 - -hash2=$(nix-hash --type sha256 --base32 ./dummy) -echo $hash2 - -test "$hash1" = "sha256:$hash2" diff --git a/third_party/nix/tests/binary-cache.sh b/third_party/nix/tests/binary-cache.sh deleted file mode 100644 index eb58ae7c12a8..000000000000 --- a/third_party/nix/tests/binary-cache.sh +++ /dev/null @@ -1,170 +0,0 @@ -source common.sh - -clearStore -clearCache - -# Create the binary cache. -outPath=$(nix-build dependencies.nix --no-out-link) - -nix copy --to file://$cacheDir $outPath - - -basicTests() { - - # By default, a binary cache doesn't support "nix-env -qas", but does - # support installation. - clearStore - clearCacheCache - - nix-env --substituters "file://$cacheDir" -f dependencies.nix -qas \* | grep -- "---" - - nix-store --substituters "file://$cacheDir" --no-require-sigs -r $outPath - - [ -x $outPath/program ] - - - # But with the right configuration, "nix-env -qas" should also work. - clearStore - clearCacheCache - echo "WantMassQuery: 1" >> $cacheDir/nix-cache-info - - nix-env --substituters "file://$cacheDir" -f dependencies.nix -qas \* | grep -- "--S" - nix-env --substituters "file://$cacheDir" -f dependencies.nix -qas \* | grep -- "--S" - - x=$(nix-env -f dependencies.nix -qas \* --prebuilt-only) - [ -z "$x" ] - - nix-store --substituters "file://$cacheDir" --no-require-sigs -r $outPath - - nix-store --check-validity $outPath - nix-store -qR $outPath | grep input-2 - - echo "WantMassQuery: 0" >> $cacheDir/nix-cache-info -} - - -# Test LocalBinaryCacheStore. -basicTests - - -# Test HttpBinaryCacheStore. -export _NIX_FORCE_HTTP_BINARY_CACHE_STORE=1 -basicTests - - -# Test whether Nix notices if the NAR doesn't match the hash in the NAR info. -clearStore - -nar=$(ls $cacheDir/nar/*.nar.xz | head -n1) -mv $nar $nar.good -mkdir -p $TEST_ROOT/empty -nix-store --dump $TEST_ROOT/empty | xz > $nar - -nix-build --substituters "file://$cacheDir" --no-require-sigs dependencies.nix -o $TEST_ROOT/result 2>&1 | tee $TEST_ROOT/log -grep -q "hash mismatch" $TEST_ROOT/log - -mv $nar.good $nar - - -# Test whether this unsigned cache is rejected if the user requires signed caches. -clearStore -clearCacheCache - -if nix-store --substituters "file://$cacheDir" -r $outPath; then - echo "unsigned binary cache incorrectly accepted" - exit 1 -fi - - -# Test whether fallback works if a NAR has disappeared. This does not require --fallback. -clearStore - -mv $cacheDir/nar $cacheDir/nar2 - -nix-build --substituters "file://$cacheDir" --no-require-sigs dependencies.nix -o $TEST_ROOT/result - -mv $cacheDir/nar2 $cacheDir/nar - - -# Test whether fallback works if a NAR is corrupted. This does require --fallback. -clearStore - -mv $cacheDir/nar $cacheDir/nar2 -mkdir $cacheDir/nar -for i in $(cd $cacheDir/nar2 && echo *); do touch $cacheDir/nar/$i; done - -(! nix-build --substituters "file://$cacheDir" --no-require-sigs dependencies.nix -o $TEST_ROOT/result) - -nix-build --substituters "file://$cacheDir" --no-require-sigs dependencies.nix -o $TEST_ROOT/result --fallback - -rm -rf $cacheDir/nar -mv $cacheDir/nar2 $cacheDir/nar - - -# Test whether building works if the binary cache contains an -# incomplete closure. -clearStore - -rm $(grep -l "StorePath:.*dependencies-input-2" $cacheDir/*.narinfo) - -nix-build --substituters "file://$cacheDir" --no-require-sigs dependencies.nix -o $TEST_ROOT/result 2>&1 | tee $TEST_ROOT/log -grep -q "copying path" $TEST_ROOT/log - - -if [ -n "$HAVE_SODIUM" ]; then - -# Create a signed binary cache. -clearCache -clearCacheCache - -declare -a res=($(nix-store --generate-binary-cache-key test.nixos.org-1 $TEST_ROOT/sk1 $TEST_ROOT/pk1 )) -publicKey="$(cat $TEST_ROOT/pk1)" - -res=($(nix-store --generate-binary-cache-key test.nixos.org-1 $TEST_ROOT/sk2 $TEST_ROOT/pk2)) -badKey="$(cat $TEST_ROOT/pk2)" - -res=($(nix-store --generate-binary-cache-key foo.nixos.org-1 $TEST_ROOT/sk3 $TEST_ROOT/pk3)) -otherKey="$(cat $TEST_ROOT/pk3)" - -_NIX_FORCE_HTTP_BINARY_CACHE_STORE= nix copy --to file://$cacheDir?secret-key=$TEST_ROOT/sk1 $outPath - - -# Downloading should fail if we don't provide a key. -clearStore -clearCacheCache - -(! nix-store -r $outPath --substituters "file://$cacheDir") - - -# And it should fail if we provide an incorrect key. -clearStore -clearCacheCache - -(! nix-store -r $outPath --substituters "file://$cacheDir" --trusted-public-keys "$badKey") - - -# It should succeed if we provide the correct key. -nix-store -r $outPath --substituters "file://$cacheDir" --trusted-public-keys "$otherKey $publicKey" - - -# It should fail if we corrupt the .narinfo. -clearStore - -cacheDir2=$TEST_ROOT/binary-cache-2 -rm -rf $cacheDir2 -cp -r $cacheDir $cacheDir2 - -for i in $cacheDir2/*.narinfo; do - grep -v References $i > $i.tmp - mv $i.tmp $i -done - -clearCacheCache - -(! nix-store -r $outPath --substituters "file://$cacheDir2" --trusted-public-keys "$publicKey") - -# If we provide a bad and a good binary cache, it should succeed. - -nix-store -r $outPath --substituters "file://$cacheDir2 file://$cacheDir" --trusted-public-keys "$publicKey" - -fi # HAVE_LIBSODIUM diff --git a/third_party/nix/tests/brotli.sh b/third_party/nix/tests/brotli.sh deleted file mode 100644 index a3c6e55a8fad..000000000000 --- a/third_party/nix/tests/brotli.sh +++ /dev/null @@ -1,21 +0,0 @@ -source common.sh - -clearStore -clearCache - -cacheURI="file://$cacheDir?compression=br" - -outPath=$(nix-build dependencies.nix --no-out-link) - -nix copy --to $cacheURI $outPath - -HASH=$(nix hash-path $outPath) - -clearStore -clearCacheCache - -nix copy --from $cacheURI $outPath --no-check-sigs - -HASH2=$(nix hash-path $outPath) - -[[ $HASH = $HASH2 ]] diff --git a/third_party/nix/tests/build-dry.sh b/third_party/nix/tests/build-dry.sh deleted file mode 100644 index e72533e70614..000000000000 --- a/third_party/nix/tests/build-dry.sh +++ /dev/null @@ -1,52 +0,0 @@ -source common.sh - -################################################### -# Check that --dry-run isn't confused with read-only mode -# https://github.com/NixOS/nix/issues/1795 - -clearStore -clearCache - -# Ensure this builds successfully first -nix build --no-link -f dependencies.nix - -clearStore -clearCache - -# Try --dry-run using old command first -nix-build --no-out-link dependencies.nix --dry-run 2>&1 | grep "will be built" -# Now new command: -nix build -f dependencies.nix --dry-run 2>&1 | grep "will be built" - -# TODO: XXX: FIXME: #1793 -# Disable this part of the test until the problem is resolved: -if [ -n "$ISSUE_1795_IS_FIXED" ]; then -clearStore -clearCache - -# Try --dry-run using new command first -nix build -f dependencies.nix --dry-run 2>&1 | grep "will be built" -# Now old command: -nix-build --no-out-link dependencies.nix --dry-run 2>&1 | grep "will be built" -fi - -################################################### -# Check --dry-run doesn't create links with --dry-run -# https://github.com/NixOS/nix/issues/1849 -clearStore -clearCache - -RESULT=$TEST_ROOT/result-link -rm -f $RESULT - -nix-build dependencies.nix -o $RESULT --dry-run - -[[ ! -h $RESULT ]] || fail "nix-build --dry-run created output link" - -nix build -f dependencies.nix -o $RESULT --dry-run - -[[ ! -h $RESULT ]] || fail "nix build --dry-run created output link" - -nix build -f dependencies.nix -o $RESULT - -[[ -h $RESULT ]] diff --git a/third_party/nix/tests/build-hook.nix b/third_party/nix/tests/build-hook.nix deleted file mode 100644 index 8bff0fe79032..000000000000 --- a/third_party/nix/tests/build-hook.nix +++ /dev/null @@ -1,23 +0,0 @@ -with import ./config.nix; - -let - - input1 = mkDerivation { - name = "build-hook-input-1"; - builder = ./dependencies.builder1.sh; - requiredSystemFeatures = ["foo"]; - }; - - input2 = mkDerivation { - name = "build-hook-input-2"; - builder = ./dependencies.builder2.sh; - }; - -in - - mkDerivation { - name = "build-hook"; - builder = ./dependencies.builder0.sh; - input1 = " " + input1 + "/."; - input2 = " ${input2}/."; - } diff --git a/third_party/nix/tests/build-remote.sh b/third_party/nix/tests/build-remote.sh deleted file mode 100644 index ddd68f327a15..000000000000 --- a/third_party/nix/tests/build-remote.sh +++ /dev/null @@ -1,24 +0,0 @@ -source common.sh - -clearStore - -if ! canUseSandbox; then exit; fi -if [[ ! $SHELL =~ /nix/store ]]; then exit; fi - -chmod -R u+w $TEST_ROOT/store0 || true -chmod -R u+w $TEST_ROOT/store1 || true -rm -rf $TEST_ROOT/store0 $TEST_ROOT/store1 - -nix build -f build-hook.nix -o $TEST_ROOT/result --max-jobs 0 \ - --sandbox-paths /nix/store --sandbox-build-dir /build-tmp \ - --builders "$TEST_ROOT/store0; $TEST_ROOT/store1 - - 1 1 foo" \ - --system-features foo - -outPath=$TEST_ROOT/result - -cat $outPath/foobar | grep FOOBAR - -# Ensure that input1 was built on store1 due to the required feature. -p=$(readlink -f $outPath/input-2) -(! nix path-info --store $TEST_ROOT/store0 --all | grep dependencies.builder1.sh) -nix path-info --store $TEST_ROOT/store1 --all | grep dependencies.builder1.sh diff --git a/third_party/nix/tests/case-hack.sh b/third_party/nix/tests/case-hack.sh deleted file mode 100644 index 61bf9b94bf5c..000000000000 --- a/third_party/nix/tests/case-hack.sh +++ /dev/null @@ -1,19 +0,0 @@ -source common.sh - -clearStore - -rm -rf $TEST_ROOT/case - -opts="--option use-case-hack true" - -# Check whether restoring and dumping a NAR that contains case -# collisions is round-tripping, even on a case-insensitive system. -nix-store $opts --restore $TEST_ROOT/case < case.nar -nix-store $opts --dump $TEST_ROOT/case > $TEST_ROOT/case.nar -cmp case.nar $TEST_ROOT/case.nar -[ "$(nix-hash $opts --type sha256 $TEST_ROOT/case)" = "$(nix-hash --flat --type sha256 case.nar)" ] - -# Check whether we detect true collisions (e.g. those remaining after -# removal of the suffix). -touch "$TEST_ROOT/case/xt_CONNMARK.h~nix~case~hack~3" -(! nix-store $opts --dump $TEST_ROOT/case > /dev/null) diff --git a/third_party/nix/tests/case.nar b/third_party/nix/tests/case.nar deleted file mode 100644 index 22ff26db5afd..000000000000 --- a/third_party/nix/tests/case.nar +++ /dev/null Binary files differdiff --git a/third_party/nix/tests/check-refs.nix b/third_party/nix/tests/check-refs.nix deleted file mode 100644 index 9d90b0920542..000000000000 --- a/third_party/nix/tests/check-refs.nix +++ /dev/null @@ -1,70 +0,0 @@ -with import ./config.nix; - -rec { - - dep = import ./dependencies.nix; - - makeTest = nr: args: mkDerivation ({ - name = "check-refs-" + toString nr; - } // args); - - src = builtins.toFile "aux-ref" "bla bla"; - - test1 = makeTest 1 { - builder = builtins.toFile "builder.sh" "mkdir $out; ln -s $dep $out/link"; - inherit dep; - }; - - test2 = makeTest 2 { - builder = builtins.toFile "builder.sh" "mkdir $out; ln -s ${src} $out/link"; - inherit dep; - }; - - test3 = makeTest 3 { - builder = builtins.toFile "builder.sh" "mkdir $out; ln -s $dep $out/link"; - allowedReferences = []; - inherit dep; - }; - - test4 = makeTest 4 { - builder = builtins.toFile "builder.sh" "mkdir $out; ln -s $dep $out/link"; - allowedReferences = [dep]; - inherit dep; - }; - - test5 = makeTest 5 { - builder = builtins.toFile "builder.sh" "mkdir $out"; - allowedReferences = []; - inherit dep; - }; - - test6 = makeTest 6 { - builder = builtins.toFile "builder.sh" "mkdir $out; ln -s $out $out/link"; - allowedReferences = []; - inherit dep; - }; - - test7 = makeTest 7 { - builder = builtins.toFile "builder.sh" "mkdir $out; ln -s $out $out/link"; - allowedReferences = ["out"]; - inherit dep; - }; - - test8 = makeTest 8 { - builder = builtins.toFile "builder.sh" "mkdir $out; ln -s ${test1} $out/link"; - inherit dep; - }; - - test9 = makeTest 9 { - builder = builtins.toFile "builder.sh" "mkdir $out; ln -s $dep $out/link"; - inherit dep; - disallowedReferences = [dep]; - }; - - test10 = makeTest 10 { - builder = builtins.toFile "builder.sh" "mkdir $out; echo $test5; ln -s $dep $out/link"; - inherit dep test5; - disallowedReferences = [test5]; - }; - -} diff --git a/third_party/nix/tests/check-refs.sh b/third_party/nix/tests/check-refs.sh deleted file mode 100644 index 16bbabc40985..000000000000 --- a/third_party/nix/tests/check-refs.sh +++ /dev/null @@ -1,42 +0,0 @@ -source common.sh - -clearStore - -RESULT=$TEST_ROOT/result - -dep=$(nix-build -o $RESULT check-refs.nix -A dep) - -# test1 references dep, not itself. -test1=$(nix-build -o $RESULT check-refs.nix -A test1) -(! nix-store -q --references $test1 | grep -q $test1) -nix-store -q --references $test1 | grep -q $dep - -# test2 references src, not itself nor dep. -test2=$(nix-build -o $RESULT check-refs.nix -A test2) -(! nix-store -q --references $test2 | grep -q $test2) -(! nix-store -q --references $test2 | grep -q $dep) -nix-store -q --references $test2 | grep -q aux-ref - -# test3 should fail (unallowed ref). -(! nix-build -o $RESULT check-refs.nix -A test3) - -# test4 should succeed. -nix-build -o $RESULT check-refs.nix -A test4 - -# test5 should succeed. -nix-build -o $RESULT check-refs.nix -A test5 - -# test6 should fail (unallowed self-ref). -(! nix-build -o $RESULT check-refs.nix -A test6) - -# test7 should succeed (allowed self-ref). -nix-build -o $RESULT check-refs.nix -A test7 - -# test8 should fail (toFile depending on derivation output). -(! nix-build -o $RESULT check-refs.nix -A test8) - -# test9 should fail (disallowed reference). -(! nix-build -o $RESULT check-refs.nix -A test9) - -# test10 should succeed (no disallowed references). -nix-build -o $RESULT check-refs.nix -A test10 diff --git a/third_party/nix/tests/check-reqs.nix b/third_party/nix/tests/check-reqs.nix deleted file mode 100644 index 41436cb48e08..000000000000 --- a/third_party/nix/tests/check-reqs.nix +++ /dev/null @@ -1,57 +0,0 @@ -with import ./config.nix; - -rec { - dep1 = mkDerivation { - name = "check-reqs-dep1"; - builder = builtins.toFile "builder.sh" "mkdir $out; touch $out/file1"; - }; - - dep2 = mkDerivation { - name = "check-reqs-dep2"; - builder = builtins.toFile "builder.sh" "mkdir $out; touch $out/file2"; - }; - - deps = mkDerivation { - name = "check-reqs-deps"; - dep1 = dep1; - dep2 = dep2; - builder = builtins.toFile "builder.sh" '' - mkdir $out - ln -s $dep1/file1 $out/file1 - ln -s $dep2/file2 $out/file2 - ''; - }; - - makeTest = nr: allowreqs: mkDerivation { - name = "check-reqs-" + toString nr; - inherit deps; - builder = builtins.toFile "builder.sh" '' - mkdir $out - ln -s $deps $out/depdir1 - ''; - allowedRequisites = allowreqs; - }; - - # When specifying all the requisites, the build succeeds. - test1 = makeTest 1 [ dep1 dep2 deps ]; - - # But missing anything it fails. - test2 = makeTest 2 [ dep2 deps ]; - test3 = makeTest 3 [ dep1 deps ]; - test4 = makeTest 4 [ deps ]; - test5 = makeTest 5 []; - - test6 = mkDerivation { - name = "check-reqs"; - inherit deps; - builder = builtins.toFile "builder.sh" "mkdir $out; ln -s $deps $out/depdir1"; - disallowedRequisites = [dep1]; - }; - - test7 = mkDerivation { - name = "check-reqs"; - inherit deps; - builder = builtins.toFile "builder.sh" "mkdir $out; ln -s $deps $out/depdir1"; - disallowedRequisites = [test1]; - }; -} diff --git a/third_party/nix/tests/check-reqs.sh b/third_party/nix/tests/check-reqs.sh deleted file mode 100644 index e9f65fc2a6d3..000000000000 --- a/third_party/nix/tests/check-reqs.sh +++ /dev/null @@ -1,16 +0,0 @@ -source common.sh - -clearStore - -RESULT=$TEST_ROOT/result - -nix-build -o $RESULT check-reqs.nix -A test1 - -(! nix-build -o $RESULT check-reqs.nix -A test2) -(! nix-build -o $RESULT check-reqs.nix -A test3) -(! nix-build -o $RESULT check-reqs.nix -A test4) 2>&1 | grep -q 'check-reqs-dep1' -(! nix-build -o $RESULT check-reqs.nix -A test4) 2>&1 | grep -q 'check-reqs-dep2' -(! nix-build -o $RESULT check-reqs.nix -A test5) -(! nix-build -o $RESULT check-reqs.nix -A test6) - -nix-build -o $RESULT check-reqs.nix -A test7 diff --git a/third_party/nix/tests/check.nix b/third_party/nix/tests/check.nix deleted file mode 100644 index 56c82e565a8f..000000000000 --- a/third_party/nix/tests/check.nix +++ /dev/null @@ -1,22 +0,0 @@ -with import ./config.nix; - -{ - nondeterministic = mkDerivation { - name = "nondeterministic"; - buildCommand = - '' - mkdir $out - date +%s.%N > $out/date - ''; - }; - - hashmismatch = import <nix/fetchurl.nix> { - url = "file://" + toString ./dummy; - sha256 = "0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73"; - }; - - fetchurl = import <nix/fetchurl.nix> { - url = "file://" + toString ./lang/eval-okay-xml.exp.xml; - sha256 = "0kg4sla7ihm8ijr8cb3117fhl99zrc2bwy1jrngsfmkh8bav4m0v"; - }; -} diff --git a/third_party/nix/tests/check.sh b/third_party/nix/tests/check.sh deleted file mode 100644 index bc23a6634ca0..000000000000 --- a/third_party/nix/tests/check.sh +++ /dev/null @@ -1,47 +0,0 @@ -source common.sh - -clearStore - -nix-build dependencies.nix --no-out-link -nix-build dependencies.nix --no-out-link --check - -nix-build check.nix -A nondeterministic --no-out-link -nix-build check.nix -A nondeterministic --no-out-link --check 2> $TEST_ROOT/log || status=$? -grep 'may not be deterministic' $TEST_ROOT/log -[ "$status" = "104" ] - -clearStore - -nix-build dependencies.nix --no-out-link --repeat 3 - -nix-build check.nix -A nondeterministic --no-out-link --repeat 1 2> $TEST_ROOT/log || status=$? -[ "$status" = "1" ] -grep 'differs from previous round' $TEST_ROOT/log - -path=$(nix-build check.nix -A fetchurl --no-out-link --hashed-mirrors '') - -chmod +w $path -echo foo > $path -chmod -w $path - -nix-build check.nix -A fetchurl --no-out-link --check --hashed-mirrors '' -# Note: "check" doesn't repair anything, it just compares to the hash stored in the database. -[[ $(cat $path) = foo ]] - -nix-build check.nix -A fetchurl --no-out-link --repair --hashed-mirrors '' -[[ $(cat $path) != foo ]] - -nix-build check.nix -A hashmismatch --no-out-link --hashed-mirrors '' || status=$? -[ "$status" = "102" ] - -echo -n > ./dummy -nix-build check.nix -A hashmismatch --no-out-link --hashed-mirrors '' -echo 'Hello World' > ./dummy - -nix-build check.nix -A hashmismatch --no-out-link --check --hashed-mirrors '' || status=$? -[ "$status" = "102" ] - -# Multiple failures with --keep-going -nix-build check.nix -A nondeterministic --no-out-link -nix-build check.nix -A nondeterministic -A hashmismatch --no-out-link --check --keep-going --hashed-mirrors '' || status=$? -[ "$status" = "110" ] diff --git a/third_party/nix/tests/common.sh.in b/third_party/nix/tests/common.sh.in deleted file mode 100644 index 15d7b1ef9119..000000000000 --- a/third_party/nix/tests/common.sh.in +++ /dev/null @@ -1,118 +0,0 @@ -set -e - -export TEST_ROOT=$(realpath ${TMPDIR:-/tmp}/nix-test) -export NIX_STORE_DIR -if ! NIX_STORE_DIR=$(readlink -f $TEST_ROOT/store 2> /dev/null); then - # Maybe the build directory is symlinked. - export NIX_IGNORE_SYMLINK_STORE=1 - NIX_STORE_DIR=$TEST_ROOT/store -fi -export NIX_LOCALSTATE_DIR=$TEST_ROOT/var -export NIX_LOG_DIR=$TEST_ROOT/var/log/nix -export NIX_STATE_DIR=$TEST_ROOT/var/nix -export NIX_CONF_DIR=$TEST_ROOT/etc -export _NIX_TEST_SHARED=$TEST_ROOT/shared -if [[ -n $NIX_STORE ]]; then - export _NIX_TEST_NO_SANDBOX=1 -fi -export _NIX_IN_TEST=$TEST_ROOT/shared -export _NIX_TEST_NO_LSOF=1 -export NIX_REMOTE=$NIX_REMOTE_ -unset NIX_PATH -export TEST_HOME=$TEST_ROOT/test-home -export HOME=$TEST_HOME -unset XDG_CACHE_HOME -mkdir -p $TEST_HOME - -export PATH=@bindir@:$PATH -coreutils=@coreutils@ - -export dot=@dot@ -export xmllint="@xmllint@" -export SHELL="@bash@" -export PAGER=cat -export HAVE_SODIUM="@HAVE_SODIUM@" - -export version=@PACKAGE_VERSION@ -export system=@system@ - -cacheDir=$TEST_ROOT/binary-cache - -readLink() { - ls -l "$1" | sed 's/.*->\ //' -} - -clearProfiles() { - profiles="$NIX_STATE_DIR"/profiles - rm -rf $profiles -} - -clearStore() { - echo "clearing store..." - chmod -R +w "$NIX_STORE_DIR" - rm -rf "$NIX_STORE_DIR" - mkdir "$NIX_STORE_DIR" - rm -rf "$NIX_STATE_DIR" - mkdir "$NIX_STATE_DIR" - nix-store --init - clearProfiles -} - -clearCache() { - rm -rf "$cacheDir" -} - -clearCacheCache() { - rm -f $TEST_HOME/.cache/nix/binary-cache* -} - -startDaemon() { - # Start the daemon, wait for the socket to appear. !!! - # ‘nix-daemon’ should have an option to fork into the background. - rm -f $NIX_STATE_DIR/daemon-socket/socket - nix-daemon & - for ((i = 0; i < 30; i++)); do - if [ -e $NIX_STATE_DIR/daemon-socket/socket ]; then break; fi - sleep 1 - done - pidDaemon=$! - trap "kill -9 $pidDaemon" EXIT - export NIX_REMOTE=daemon -} - -killDaemon() { - kill -9 $pidDaemon - wait $pidDaemon || true - trap "" EXIT -} - -if [[ $(uname) == Linux ]] && [[ -L /proc/self/ns/user ]] && unshare --user true; then - _canUseSandbox=1 -fi - -canUseSandbox() { - if [[ ! $_canUseSandbox ]]; then - echo "Sandboxing not supported, skipping this test..." - return 1 - fi - - return 0 -} - -fail() { - echo "$1" - exit 1 -} - -expect() { - local expected res - expected="$1" - shift - set +e - "$@" - res="$?" - set -e - [[ $res -eq $expected ]] -} - -set -x diff --git a/third_party/nix/tests/config.nix b/third_party/nix/tests/config.nix deleted file mode 100644 index 6ba91065b83d..000000000000 --- a/third_party/nix/tests/config.nix +++ /dev/null @@ -1,20 +0,0 @@ -with import <nix/config.nix>; - -rec { - inherit shell; - - path = coreutils; - - system = builtins.currentSystem; - - shared = builtins.getEnv "_NIX_TEST_SHARED"; - - mkDerivation = args: - derivation ({ - inherit system; - builder = shell; - args = ["-e" args.builder or (builtins.toFile "builder.sh" "if [ -e .attrs.sh ]; then source .attrs.sh; fi; eval \"$buildCommand\"")]; - PATH = path; - } // removeAttrs args ["builder" "meta"]) - // { meta = args.meta or {}; }; -} diff --git a/third_party/nix/tests/dependencies.builder0.sh b/third_party/nix/tests/dependencies.builder0.sh deleted file mode 100644 index c37bf909a5f9..000000000000 --- a/third_party/nix/tests/dependencies.builder0.sh +++ /dev/null @@ -1,16 +0,0 @@ -[ "${input1: -2}" = /. ] -[ "${input2: -2}" = /. ] - -mkdir $out -echo $(cat $input1/foo)$(cat $input2/bar) > $out/foobar - -ln -s $input2 $out/input-2 - -# Self-reference. -ln -s $out $out/self - -# Executable. -echo program > $out/program -chmod +x $out/program - -echo FOO diff --git a/third_party/nix/tests/dependencies.builder1.sh b/third_party/nix/tests/dependencies.builder1.sh deleted file mode 100644 index 4b006a17d70f..000000000000 --- a/third_party/nix/tests/dependencies.builder1.sh +++ /dev/null @@ -1,2 +0,0 @@ -mkdir $out -echo FOO > $out/foo diff --git a/third_party/nix/tests/dependencies.builder2.sh b/third_party/nix/tests/dependencies.builder2.sh deleted file mode 100644 index 4f886fdb3a1a..000000000000 --- a/third_party/nix/tests/dependencies.builder2.sh +++ /dev/null @@ -1,2 +0,0 @@ -mkdir $out -echo BAR > $out/bar diff --git a/third_party/nix/tests/dependencies.nix b/third_party/nix/tests/dependencies.nix deleted file mode 100644 index eca4b2964cfb..000000000000 --- a/third_party/nix/tests/dependencies.nix +++ /dev/null @@ -1,24 +0,0 @@ -with import ./config.nix; - -let { - - input1 = mkDerivation { - name = "dependencies-input-1"; - builder = ./dependencies.builder1.sh; - }; - - input2 = mkDerivation { - name = "dependencies-input-2"; - builder = "${./dependencies.builder2.sh}"; - }; - - body = mkDerivation { - name = "dependencies"; - builder = ./dependencies.builder0.sh + "/FOOBAR/../."; - input1 = input1 + "/."; - input2 = "${input2}/."; - input1_drv = input1; - meta.description = "Random test package"; - }; - -} diff --git a/third_party/nix/tests/dependencies.sh b/third_party/nix/tests/dependencies.sh deleted file mode 100644 index df204d185ddc..000000000000 --- a/third_party/nix/tests/dependencies.sh +++ /dev/null @@ -1,52 +0,0 @@ -source common.sh - -clearStore - -drvPath=$(nix-instantiate dependencies.nix) - -echo "derivation is $drvPath" - -nix-store -q --tree "$drvPath" | grep ' +---.*builder1.sh' - -# Test Graphviz graph generation. -nix-store -q --graph "$drvPath" > $TEST_ROOT/graph -if test -n "$dot"; then - # Does it parse? - $dot < $TEST_ROOT/graph -fi - -outPath=$(nix-store -rvv "$drvPath") || fail "build failed" - -# Test Graphviz graph generation. -nix-store -q --graph "$outPath" > $TEST_ROOT/graph -if test -n "$dot"; then - # Does it parse? - $dot < $TEST_ROOT/graph -fi - -nix-store -q --tree "$outPath" | grep '+---.*dependencies-input-2' - -echo "output path is $outPath" - -text=$(cat "$outPath"/foobar) -if test "$text" != "FOOBAR"; then exit 1; fi - -deps=$(nix-store -quR "$drvPath") - -echo "output closure contains $deps" - -# The output path should be in the closure. -echo "$deps" | grep -q "$outPath" - -# Input-1 is not retained. -if echo "$deps" | grep -q "dependencies-input-1"; then exit 1; fi - -# Input-2 is retained. -input2OutPath=$(echo "$deps" | grep "dependencies-input-2") - -# The referrers closure of input-2 should include outPath. -nix-store -q --referrers-closure "$input2OutPath" | grep "$outPath" - -# Check that the derivers are set properly. -test $(nix-store -q --deriver "$outPath") = "$drvPath" -nix-store -q --deriver "$input2OutPath" | grep -q -- "-input-2.drv" diff --git a/third_party/nix/tests/dump-db.sh b/third_party/nix/tests/dump-db.sh deleted file mode 100644 index d6eea42aa04e..000000000000 --- a/third_party/nix/tests/dump-db.sh +++ /dev/null @@ -1,20 +0,0 @@ -source common.sh - -clearStore - -path=$(nix-build dependencies.nix -o $TEST_ROOT/result) - -deps="$(nix-store -qR $TEST_ROOT/result)" - -nix-store --dump-db > $TEST_ROOT/dump - -rm -rf $NIX_STATE_DIR/db - -nix-store --load-db < $TEST_ROOT/dump - -deps2="$(nix-store -qR $TEST_ROOT/result)" - -[ "$deps" = "$deps2" ]; - -nix-store --dump-db > $TEST_ROOT/dump2 -cmp $TEST_ROOT/dump $TEST_ROOT/dump2 diff --git a/third_party/nix/tests/export-graph.nix b/third_party/nix/tests/export-graph.nix deleted file mode 100644 index fdac9583db2c..000000000000 --- a/third_party/nix/tests/export-graph.nix +++ /dev/null @@ -1,29 +0,0 @@ -with import ./config.nix; - -rec { - - printRefs = - '' - echo $exportReferencesGraph - while read path; do - read drv - read nrRefs - echo "$path has $nrRefs references" - echo "$path" >> $out - for ((n = 0; n < $nrRefs; n++)); do read ref; echo "ref $ref"; test -e "$ref"; done - done < refs - ''; - - foo."bar.runtimeGraph" = mkDerivation { - name = "dependencies"; - builder = builtins.toFile "build-graph-builder" "${printRefs}"; - exportReferencesGraph = ["refs" (import ./dependencies.nix)]; - }; - - foo."bar.buildGraph" = mkDerivation { - name = "dependencies"; - builder = builtins.toFile "build-graph-builder" "${printRefs}"; - exportReferencesGraph = ["refs" (import ./dependencies.nix).drvPath]; - }; - -} diff --git a/third_party/nix/tests/export-graph.sh b/third_party/nix/tests/export-graph.sh deleted file mode 100644 index a6fd69054425..000000000000 --- a/third_party/nix/tests/export-graph.sh +++ /dev/null @@ -1,30 +0,0 @@ -source common.sh - -clearStore -clearProfiles - -checkRef() { - nix-store -q --references $TEST_ROOT/result | grep -q "$1" || fail "missing reference $1" -} - -# Test the export of the runtime dependency graph. - -outPath=$(nix-build ./export-graph.nix -A 'foo."bar.runtimeGraph"' -o $TEST_ROOT/result) - -test $(nix-store -q --references $TEST_ROOT/result | wc -l) = 2 || fail "bad nr of references" - -checkRef input-2 -for i in $(cat $outPath); do checkRef $i; done - -# Test the export of the build-time dependency graph. - -nix-store --gc # should force rebuild of input-1 - -outPath=$(nix-build ./export-graph.nix -A 'foo."bar.buildGraph"' -o $TEST_ROOT/result) - -checkRef input-1 -checkRef input-1.drv -checkRef input-2 -checkRef input-2.drv - -for i in $(cat $outPath); do checkRef $i; done diff --git a/third_party/nix/tests/export.sh b/third_party/nix/tests/export.sh deleted file mode 100644 index 2238539bcca9..000000000000 --- a/third_party/nix/tests/export.sh +++ /dev/null @@ -1,36 +0,0 @@ -source common.sh - -clearStore - -outPath=$(nix-build dependencies.nix --no-out-link) - -nix-store --export $outPath > $TEST_ROOT/exp - -nix-store --export $(nix-store -qR $outPath) > $TEST_ROOT/exp_all - -if nix-store --export $outPath >/dev/full ; then - echo "exporting to a bad file descriptor should fail" - exit 1 -fi - - -clearStore - -if nix-store --import < $TEST_ROOT/exp; then - echo "importing a non-closure should fail" - exit 1 -fi - - -clearStore - -nix-store --import < $TEST_ROOT/exp_all - -nix-store --export $(nix-store -qR $outPath) > $TEST_ROOT/exp_all2 - - -clearStore - -# Regression test: the derivers in exp_all2 are empty, which shouldn't -# cause a failure. -nix-store --import < $TEST_ROOT/exp_all2 diff --git a/third_party/nix/tests/fetchGit.sh b/third_party/nix/tests/fetchGit.sh deleted file mode 100644 index 4c46bdf0465b..000000000000 --- a/third_party/nix/tests/fetchGit.sh +++ /dev/null @@ -1,141 +0,0 @@ -source common.sh - -if [[ -z $(type -p git) ]]; then - echo "Git not installed; skipping Git tests" - exit 99 -fi - -clearStore - -repo=$TEST_ROOT/git - -rm -rf $repo ${repo}-tmp $TEST_HOME/.cache/nix/gitv2 - -git init $repo -git -C $repo config user.email "foobar@example.com" -git -C $repo config user.name "Foobar" - -echo utrecht > $repo/hello -touch $repo/.gitignore -git -C $repo add hello .gitignore -git -C $repo commit -m 'Bla1' -rev1=$(git -C $repo rev-parse HEAD) - -echo world > $repo/hello -git -C $repo commit -m 'Bla2' -a -rev2=$(git -C $repo rev-parse HEAD) - -# Fetch the default branch. -path=$(nix eval --raw "(builtins.fetchGit file://$repo).outPath") -[[ $(cat $path/hello) = world ]] - -# In pure eval mode, fetchGit without a revision should fail. -[[ $(nix eval --raw "(builtins.readFile (fetchGit file://$repo + \"/hello\"))") = world ]] -(! nix eval --pure-eval --raw "(builtins.readFile (fetchGit file://$repo + \"/hello\"))") - -# Fetch using an explicit revision hash. -path2=$(nix eval --raw "(builtins.fetchGit { url = file://$repo; rev = \"$rev2\"; }).outPath") -[[ $path = $path2 ]] - -# In pure eval mode, fetchGit with a revision should succeed. -[[ $(nix eval --pure-eval --raw "(builtins.readFile (fetchGit { url = file://$repo; rev = \"$rev2\"; } + \"/hello\"))") = world ]] - -# Fetch again. This should be cached. -mv $repo ${repo}-tmp -path2=$(nix eval --raw "(builtins.fetchGit file://$repo).outPath") -[[ $path = $path2 ]] - -[[ $(nix eval "(builtins.fetchGit file://$repo).revCount") = 2 ]] -[[ $(nix eval --raw "(builtins.fetchGit file://$repo).rev") = $rev2 ]] - -# But with TTL 0, it should fail. -(! nix eval --tarball-ttl 0 "(builtins.fetchGit file://$repo)" -vvvvv) - -# Fetching with a explicit hash should succeed. -path2=$(nix eval --tarball-ttl 0 --raw "(builtins.fetchGit { url = file://$repo; rev = \"$rev2\"; }).outPath") -[[ $path = $path2 ]] - -path2=$(nix eval --tarball-ttl 0 --raw "(builtins.fetchGit { url = file://$repo; rev = \"$rev1\"; }).outPath") -[[ $(cat $path2/hello) = utrecht ]] - -mv ${repo}-tmp $repo - -# Using a clean working tree should produce the same result. -path2=$(nix eval --raw "(builtins.fetchGit $repo).outPath") -[[ $path = $path2 ]] - -# Using an unclean tree should yield the tracked but uncommitted changes. -mkdir $repo/dir1 $repo/dir2 -echo foo > $repo/dir1/foo -echo bar > $repo/bar -echo bar > $repo/dir2/bar -git -C $repo add dir1/foo -git -C $repo rm hello - -path2=$(nix eval --raw "(builtins.fetchGit $repo).outPath") -[ ! -e $path2/hello ] -[ ! -e $path2/bar ] -[ ! -e $path2/dir2/bar ] -[ ! -e $path2/.git ] -[[ $(cat $path2/dir1/foo) = foo ]] - -[[ $(nix eval --raw "(builtins.fetchGit $repo).rev") = 0000000000000000000000000000000000000000 ]] - -# ... unless we're using an explicit ref or rev. -path3=$(nix eval --raw "(builtins.fetchGit { url = $repo; ref = \"master\"; }).outPath") -[[ $path = $path3 ]] - -path3=$(nix eval --raw "(builtins.fetchGit { url = $repo; rev = \"$rev2\"; }).outPath") -[[ $path = $path3 ]] - -# Committing should not affect the store path. -git -C $repo commit -m 'Bla3' -a - -path4=$(nix eval --tarball-ttl 0 --raw "(builtins.fetchGit file://$repo).outPath") -[[ $path2 = $path4 ]] - -# tarball-ttl should be ignored if we specify a rev -echo delft > $repo/hello -git -C $repo add hello -git -C $repo commit -m 'Bla4' -rev3=$(git -C $repo rev-parse HEAD) -nix eval --tarball-ttl 3600 "(builtins.fetchGit { url = $repo; rev = \"$rev3\"; })" >/dev/null - -# Update 'path' to reflect latest master -path=$(nix eval --raw "(builtins.fetchGit file://$repo).outPath") - -# Check behavior when non-master branch is used -git -C $repo checkout $rev2 -b dev -echo dev > $repo/hello - -# File URI uses 'master' unless specified otherwise -path2=$(nix eval --raw "(builtins.fetchGit file://$repo).outPath") -[[ $path = $path2 ]] - -# Using local path with branch other than 'master' should work when clean or dirty -path3=$(nix eval --raw "(builtins.fetchGit $repo).outPath") -# (check dirty-tree handling was used) -[[ $(nix eval --raw "(builtins.fetchGit $repo).rev") = 0000000000000000000000000000000000000000 ]] - -# Committing shouldn't change store path, or switch to using 'master' -git -C $repo commit -m 'Bla5' -a -path4=$(nix eval --raw "(builtins.fetchGit $repo).outPath") -[[ $(cat $path4/hello) = dev ]] -[[ $path3 = $path4 ]] - -# Confirm same as 'dev' branch -path5=$(nix eval --raw "(builtins.fetchGit { url = $repo; ref = \"dev\"; }).outPath") -[[ $path3 = $path5 ]] - - -# Nuke the cache -rm -rf $TEST_HOME/.cache/nix/gitv2 - -# Try again, but without 'git' on PATH -NIX=$(command -v nix) -# This should fail -(! PATH= $NIX eval --raw "(builtins.fetchGit { url = $repo; ref = \"dev\"; }).outPath" ) - -# Try again, with 'git' available. This should work. -path5=$(nix eval --raw "(builtins.fetchGit { url = $repo; ref = \"dev\"; }).outPath") -[[ $path3 = $path5 ]] diff --git a/third_party/nix/tests/fetchMercurial.sh b/third_party/nix/tests/fetchMercurial.sh deleted file mode 100644 index 4088dbd39796..000000000000 --- a/third_party/nix/tests/fetchMercurial.sh +++ /dev/null @@ -1,93 +0,0 @@ -source common.sh - -if [[ -z $(type -p hg) ]]; then - echo "Mercurial not installed; skipping Mercurial tests" - exit 99 -fi - -clearStore - -repo=$TEST_ROOT/hg - -rm -rf $repo ${repo}-tmp $TEST_HOME/.cache/nix/hg - -hg init $repo -echo '[ui]' >> $repo/.hg/hgrc -echo 'username = Foobar <foobar@example.org>' >> $repo/.hg/hgrc - -echo utrecht > $repo/hello -touch $repo/.hgignore -hg add --cwd $repo hello .hgignore -hg commit --cwd $repo -m 'Bla1' -rev1=$(hg log --cwd $repo -r tip --template '{node}') - -echo world > $repo/hello -hg commit --cwd $repo -m 'Bla2' -rev2=$(hg log --cwd $repo -r tip --template '{node}') - -# Fetch the default branch. -path=$(nix eval --raw "(builtins.fetchMercurial file://$repo).outPath") -[[ $(cat $path/hello) = world ]] - -# In pure eval mode, fetchGit without a revision should fail. -[[ $(nix eval --raw "(builtins.readFile (fetchMercurial file://$repo + \"/hello\"))") = world ]] -(! nix eval --pure-eval --raw "(builtins.readFile (fetchMercurial file://$repo + \"/hello\"))") - -# Fetch using an explicit revision hash. -path2=$(nix eval --raw "(builtins.fetchMercurial { url = file://$repo; rev = \"$rev2\"; }).outPath") -[[ $path = $path2 ]] - -# In pure eval mode, fetchGit with a revision should succeed. -[[ $(nix eval --pure-eval --raw "(builtins.readFile (fetchMercurial { url = file://$repo; rev = \"$rev2\"; } + \"/hello\"))") = world ]] - -# Fetch again. This should be cached. -mv $repo ${repo}-tmp -path2=$(nix eval --raw "(builtins.fetchMercurial file://$repo).outPath") -[[ $path = $path2 ]] - -[[ $(nix eval --raw "(builtins.fetchMercurial file://$repo).branch") = default ]] -[[ $(nix eval "(builtins.fetchMercurial file://$repo).revCount") = 1 ]] -[[ $(nix eval --raw "(builtins.fetchMercurial file://$repo).rev") = $rev2 ]] - -# But with TTL 0, it should fail. -(! nix eval --tarball-ttl 0 "(builtins.fetchMercurial file://$repo)") - -# Fetching with a explicit hash should succeed. -path2=$(nix eval --tarball-ttl 0 --raw "(builtins.fetchMercurial { url = file://$repo; rev = \"$rev2\"; }).outPath") -[[ $path = $path2 ]] - -path2=$(nix eval --tarball-ttl 0 --raw "(builtins.fetchMercurial { url = file://$repo; rev = \"$rev1\"; }).outPath") -[[ $(cat $path2/hello) = utrecht ]] - -mv ${repo}-tmp $repo - -# Using a clean working tree should produce the same result. -path2=$(nix eval --raw "(builtins.fetchMercurial $repo).outPath") -[[ $path = $path2 ]] - -# Using an unclean tree should yield the tracked but uncommitted changes. -mkdir $repo/dir1 $repo/dir2 -echo foo > $repo/dir1/foo -echo bar > $repo/bar -echo bar > $repo/dir2/bar -hg add --cwd $repo dir1/foo -hg rm --cwd $repo hello - -path2=$(nix eval --raw "(builtins.fetchMercurial $repo).outPath") -[ ! -e $path2/hello ] -[ ! -e $path2/bar ] -[ ! -e $path2/dir2/bar ] -[ ! -e $path2/.hg ] -[[ $(cat $path2/dir1/foo) = foo ]] - -[[ $(nix eval --raw "(builtins.fetchMercurial $repo).rev") = 0000000000000000000000000000000000000000 ]] - -# ... unless we're using an explicit rev. -path3=$(nix eval --raw "(builtins.fetchMercurial { url = $repo; rev = \"default\"; }).outPath") -[[ $path = $path3 ]] - -# Committing should not affect the store path. -hg commit --cwd $repo -m 'Bla3' - -path4=$(nix eval --tarball-ttl 0 --raw "(builtins.fetchMercurial file://$repo).outPath") -[[ $path2 = $path4 ]] diff --git a/third_party/nix/tests/fetchurl.sh b/third_party/nix/tests/fetchurl.sh deleted file mode 100644 index 7319ced2b599..000000000000 --- a/third_party/nix/tests/fetchurl.sh +++ /dev/null @@ -1,78 +0,0 @@ -source common.sh - -clearStore - -# Test fetching a flat file. -hash=$(nix-hash --flat --type sha256 ./fetchurl.sh) - -outPath=$(nix-build '<nix/fetchurl.nix>' --argstr url file://$(pwd)/fetchurl.sh --argstr sha256 $hash --no-out-link --hashed-mirrors '') - -cmp $outPath fetchurl.sh - -# Now using a base-64 hash. -clearStore - -hash=$(nix hash-file --type sha512 --base64 ./fetchurl.sh) - -outPath=$(nix-build '<nix/fetchurl.nix>' --argstr url file://$(pwd)/fetchurl.sh --argstr sha512 $hash --no-out-link --hashed-mirrors '') - -cmp $outPath fetchurl.sh - -# Now using an SRI hash. -clearStore - -hash=$(nix hash-file ./fetchurl.sh) - -[[ $hash =~ ^sha256- ]] - -outPath=$(nix-build '<nix/fetchurl.nix>' --argstr url file://$(pwd)/fetchurl.sh --argstr hash $hash --no-out-link --hashed-mirrors '') - -cmp $outPath fetchurl.sh - -# Test the hashed mirror feature. -clearStore - -hash=$(nix hash-file --type sha512 --base64 ./fetchurl.sh) -hash32=$(nix hash-file --type sha512 --base16 ./fetchurl.sh) - -mirror=$TMPDIR/hashed-mirror -rm -rf $mirror -mkdir -p $mirror/sha512 -ln -s $(pwd)/fetchurl.sh $mirror/sha512/$hash32 - -outPath=$(nix-build '<nix/fetchurl.nix>' --argstr url file:///no-such-dir/fetchurl.sh --argstr sha512 $hash --no-out-link --hashed-mirrors "file://$mirror") - -# Test hashed mirrors with an SRI hash. -nix-build '<nix/fetchurl.nix>' --argstr url file:///no-such-dir/fetchurl.sh --argstr hash $(nix to-sri --type sha512 $hash) \ - --argstr name bla --no-out-link --hashed-mirrors "file://$mirror" - -# Test unpacking a NAR. -rm -rf $TEST_ROOT/archive -mkdir -p $TEST_ROOT/archive -cp ./fetchurl.sh $TEST_ROOT/archive -chmod +x $TEST_ROOT/archive/fetchurl.sh -ln -s foo $TEST_ROOT/archive/symlink -nar=$TEST_ROOT/archive.nar -nix-store --dump $TEST_ROOT/archive > $nar - -hash=$(nix-hash --flat --type sha256 $nar) - -outPath=$(nix-build '<nix/fetchurl.nix>' --argstr url file://$nar --argstr sha256 $hash \ - --arg unpack true --argstr name xyzzy --no-out-link) - -echo $outPath | grep -q 'xyzzy' - -test -x $outPath/fetchurl.sh -test -L $outPath/symlink - -nix-store --delete $outPath - -# Test unpacking a compressed NAR. -narxz=$TEST_ROOT/archive.nar.xz -rm -f $narxz -xz --keep $nar -outPath=$(nix-build '<nix/fetchurl.nix>' --argstr url file://$narxz --argstr sha256 $hash \ - --arg unpack true --argstr name xyzzy --no-out-link) - -test -x $outPath/fetchurl.sh -test -L $outPath/symlink diff --git a/third_party/nix/tests/filter-source.nix b/third_party/nix/tests/filter-source.nix deleted file mode 100644 index 9071636394af..000000000000 --- a/third_party/nix/tests/filter-source.nix +++ /dev/null @@ -1,12 +0,0 @@ -with import ./config.nix; - -mkDerivation { - name = "filter"; - builder = builtins.toFile "builder" "ln -s $input $out"; - input = - let filter = path: type: - type != "symlink" - && baseNameOf path != "foo" - && !((import ./lang/lib.nix).hasSuffix ".bak" (baseNameOf path)); - in builtins.filterSource filter ((builtins.getEnv "TEST_ROOT") + "/filterin"); -} diff --git a/third_party/nix/tests/filter-source.sh b/third_party/nix/tests/filter-source.sh deleted file mode 100644 index 1f8dceee5786..000000000000 --- a/third_party/nix/tests/filter-source.sh +++ /dev/null @@ -1,19 +0,0 @@ -source common.sh - -rm -rf $TEST_ROOT/filterin -mkdir $TEST_ROOT/filterin -mkdir $TEST_ROOT/filterin/foo -touch $TEST_ROOT/filterin/foo/bar -touch $TEST_ROOT/filterin/xyzzy -touch $TEST_ROOT/filterin/b -touch $TEST_ROOT/filterin/bak -touch $TEST_ROOT/filterin/bla.c.bak -ln -s xyzzy $TEST_ROOT/filterin/link - -nix-build ./filter-source.nix -o $TEST_ROOT/filterout - -test ! -e $TEST_ROOT/filterout/foo/bar -test -e $TEST_ROOT/filterout/xyzzy -test -e $TEST_ROOT/filterout/bak -test ! -e $TEST_ROOT/filterout/bla.c.bak -test ! -L $TEST_ROOT/filterout/link diff --git a/third_party/nix/tests/fixed.builder1.sh b/third_party/nix/tests/fixed.builder1.sh deleted file mode 100644 index c41bb2b9a611..000000000000 --- a/third_party/nix/tests/fixed.builder1.sh +++ /dev/null @@ -1,3 +0,0 @@ -if test "$IMPURE_VAR1" != "foo"; then exit 1; fi -if test "$IMPURE_VAR2" != "bar"; then exit 1; fi -echo "Hello World!" > $out diff --git a/third_party/nix/tests/fixed.builder2.sh b/third_party/nix/tests/fixed.builder2.sh deleted file mode 100644 index 31ea1579a514..000000000000 --- a/third_party/nix/tests/fixed.builder2.sh +++ /dev/null @@ -1,6 +0,0 @@ -echo dummy: $dummy -if test -n "$dummy"; then sleep 2; fi -mkdir $out -mkdir $out/bla -echo "Hello World!" > $out/foo -ln -s foo $out/bar diff --git a/third_party/nix/tests/fixed.nix b/third_party/nix/tests/fixed.nix deleted file mode 100644 index 76580ffa19e8..000000000000 --- a/third_party/nix/tests/fixed.nix +++ /dev/null @@ -1,50 +0,0 @@ -with import ./config.nix; - -rec { - - f2 = dummy: builder: mode: algo: hash: mkDerivation { - name = "fixed"; - inherit builder; - outputHashMode = mode; - outputHashAlgo = algo; - outputHash = hash; - inherit dummy; - impureEnvVars = ["IMPURE_VAR1" "IMPURE_VAR2"]; - }; - - f = f2 ""; - - good = [ - (f ./fixed.builder1.sh "flat" "md5" "8ddd8be4b179a529afa5f2ffae4b9858") - (f ./fixed.builder1.sh "flat" "sha1" "a0b65939670bc2c010f4d5d6a0b3e4e4590fb92b") - (f ./fixed.builder2.sh "recursive" "md5" "3670af73070fa14077ad74e0f5ea4e42") - (f ./fixed.builder2.sh "recursive" "sha1" "vw46m23bizj4n8afrc0fj19wrp7mj3c0") - ]; - - good2 = [ - # Yes, this looks fscked up: builder2 doesn't have that result. - # But Nix sees that an output with the desired hash already - # exists, and will refrain from building it. - (f ./fixed.builder2.sh "flat" "md5" "8ddd8be4b179a529afa5f2ffae4b9858") - ]; - - sameAsAdd = - f ./fixed.builder2.sh "recursive" "sha256" "1ixr6yd3297ciyp9im522dfxpqbkhcw0pylkb2aab915278fqaik"; - - bad = [ - (f ./fixed.builder1.sh "flat" "md5" "0ddd8be4b179a529afa5f2ffae4b9858") - ]; - - reallyBad = [ - # Hash too short, and not base-32 either. - (f ./fixed.builder1.sh "flat" "md5" "ddd8be4b179a529afa5f2ffae4b9858") - ]; - - # Test for building two derivations in parallel that produce the - # same output path because they're fixed-output derivations. - parallelSame = [ - (f2 "foo" ./fixed.builder2.sh "recursive" "md5" "3670af73070fa14077ad74e0f5ea4e42") - (f2 "bar" ./fixed.builder2.sh "recursive" "md5" "3670af73070fa14077ad74e0f5ea4e42") - ]; - -} diff --git a/third_party/nix/tests/fixed.sh b/third_party/nix/tests/fixed.sh deleted file mode 100644 index 8f51403a7071..000000000000 --- a/third_party/nix/tests/fixed.sh +++ /dev/null @@ -1,56 +0,0 @@ -source common.sh - -clearStore - -export IMPURE_VAR1=foo -export IMPURE_VAR2=bar - -path=$(nix-store -q $(nix-instantiate fixed.nix -A good.0)) - -echo 'testing bad...' -nix-build fixed.nix -A bad --no-out-link && fail "should fail" - -# Building with the bad hash should produce the "good" output path as -# a side-effect. -[[ -e $path ]] -nix path-info --json $path | grep fixed:md5:2qk15sxzzjlnpjk9brn7j8ppcd - -echo 'testing good...' -nix-build fixed.nix -A good --no-out-link - -echo 'testing good2...' -nix-build fixed.nix -A good2 --no-out-link - -echo 'testing reallyBad...' -nix-instantiate fixed.nix -A reallyBad && fail "should fail" - -# While we're at it, check attribute selection a bit more. -echo 'testing attribute selection...' -test $(nix-instantiate fixed.nix -A good.1 | wc -l) = 1 - -# Test parallel builds of derivations that produce the same output. -# Only one should run at the same time. -echo 'testing parallelSame...' -clearStore -nix-build fixed.nix -A parallelSame --no-out-link -j2 - -# Fixed-output derivations with a recursive SHA-256 hash should -# produce the same path as "nix-store --add". -echo 'testing sameAsAdd...' -out=$(nix-build fixed.nix -A sameAsAdd --no-out-link) - -# This is what fixed.builder2 produces... -rm -rf $TEST_ROOT/fixed -mkdir $TEST_ROOT/fixed -mkdir $TEST_ROOT/fixed/bla -echo "Hello World!" > $TEST_ROOT/fixed/foo -ln -s foo $TEST_ROOT/fixed/bar - -out2=$(nix-store --add $TEST_ROOT/fixed) -[ "$out" = "$out2" ] - -out3=$(nix-store --add-fixed --recursive sha256 $TEST_ROOT/fixed) -[ "$out" = "$out3" ] - -out4=$(nix-store --print-fixed-path --recursive sha256 "1ixr6yd3297ciyp9im522dfxpqbkhcw0pylkb2aab915278fqaik" fixed) -[ "$out" = "$out4" ] diff --git a/third_party/nix/tests/function-trace.sh b/third_party/nix/tests/function-trace.sh deleted file mode 100755 index 182a4d5c287a..000000000000 --- a/third_party/nix/tests/function-trace.sh +++ /dev/null @@ -1,85 +0,0 @@ -source common.sh - -set +x - -expect_trace() { - expr="$1" - expect="$2" - actual=$( - nix-instantiate \ - --trace-function-calls \ - --expr "$expr" 2>&1 \ - | grep "function-trace" \ - | sed -e 's/ [0-9]*$//' - ); - - echo -n "Tracing expression '$expr'" - set +e - msg=$(diff -swB \ - <(echo "$expect") \ - <(echo "$actual") - ); - result=$? - set -e - if [ $result -eq 0 ]; then - echo " ok." - else - echo " failed. difference:" - echo "$msg" - return $result - fi -} - -# failure inside a tryEval -expect_trace 'builtins.tryEval (throw "example")' " -function-trace entered undefined position at -function-trace exited undefined position at -function-trace entered (string):1:1 at -function-trace entered (string):1:19 at -function-trace exited (string):1:19 at -function-trace exited (string):1:1 at -" - -# Missing argument to a formal function -expect_trace '({ x }: x) { }' " -function-trace entered undefined position at -function-trace exited undefined position at -function-trace entered (string):1:1 at -function-trace exited (string):1:1 at -" - -# Too many arguments to a formal function -expect_trace '({ x }: x) { x = "x"; y = "y"; }' " -function-trace entered undefined position at -function-trace exited undefined position at -function-trace entered (string):1:1 at -function-trace exited (string):1:1 at -" - -# Not enough arguments to a lambda -expect_trace '(x: y: x + y) 1' " -function-trace entered undefined position at -function-trace exited undefined position at -function-trace entered (string):1:1 at -function-trace exited (string):1:1 at -" - -# Too many arguments to a lambda -expect_trace '(x: x) 1 2' " -function-trace entered undefined position at -function-trace exited undefined position at -function-trace entered (string):1:1 at -function-trace exited (string):1:1 at -function-trace entered (string):1:1 at -function-trace exited (string):1:1 at -" - -# Not a function -expect_trace '1 2' " -function-trace entered undefined position at -function-trace exited undefined position at -function-trace entered (string):1:1 at -function-trace exited (string):1:1 at -" - -set -e diff --git a/third_party/nix/tests/gc-auto.sh b/third_party/nix/tests/gc-auto.sh deleted file mode 100644 index de1e2cfe4059..000000000000 --- a/third_party/nix/tests/gc-auto.sh +++ /dev/null @@ -1,70 +0,0 @@ -source common.sh - -clearStore - -garbage1=$(nix add-to-store --name garbage1 ./nar-access.sh) -garbage2=$(nix add-to-store --name garbage2 ./nar-access.sh) -garbage3=$(nix add-to-store --name garbage3 ./nar-access.sh) - -ls -l $garbage3 -POSIXLY_CORRECT=1 du $garbage3 - -fake_free=$TEST_ROOT/fake-free -export _NIX_TEST_FREE_SPACE_FILE=$fake_free -echo 1100 > $fake_free - -expr=$(cat <<EOF -with import ./config.nix; mkDerivation { - name = "gc-A"; - buildCommand = '' - set -x - [[ \$(ls \$NIX_STORE/*-garbage? | wc -l) = 3 ]] - mkdir \$out - echo foo > \$out/bar - echo 1... - sleep 2 - echo 200 > ${fake_free}.tmp1 - mv ${fake_free}.tmp1 $fake_free - echo 2... - sleep 2 - echo 3... - sleep 2 - echo 4... - [[ \$(ls \$NIX_STORE/*-garbage? | wc -l) = 1 ]] - ''; -} -EOF -) - -expr2=$(cat <<EOF -with import ./config.nix; mkDerivation { - name = "gc-B"; - buildCommand = '' - set -x - mkdir \$out - echo foo > \$out/bar - echo 1... - sleep 2 - echo 200 > ${fake_free}.tmp2 - mv ${fake_free}.tmp2 $fake_free - echo 2... - sleep 2 - echo 3... - sleep 2 - echo 4... - ''; -} -EOF -) - -nix build -v -o $TEST_ROOT/result-A -L "($expr)" \ - --min-free 1000 --max-free 2000 --min-free-check-interval 1 & -pid=$! - -nix build -v -o $TEST_ROOT/result-B -L "($expr2)" \ - --min-free 1000 --max-free 2000 --min-free-check-interval 1 - -wait "$pid" - -[[ foo = $(cat $TEST_ROOT/result-A/bar) ]] -[[ foo = $(cat $TEST_ROOT/result-B/bar) ]] diff --git a/third_party/nix/tests/gc-concurrent.builder.sh b/third_party/nix/tests/gc-concurrent.builder.sh deleted file mode 100644 index 0cd67df3aeda..000000000000 --- a/third_party/nix/tests/gc-concurrent.builder.sh +++ /dev/null @@ -1,13 +0,0 @@ -mkdir $out -echo $(cat $input1/foo)$(cat $input2/bar) > $out/foobar - -sleep 10 - -# $out should not have been GC'ed while we were sleeping, but just in -# case... -mkdir -p $out - -# Check that the GC hasn't deleted the lock on our output. -test -e "$out.lock" - -ln -s $input2 $out/input-2 diff --git a/third_party/nix/tests/gc-concurrent.nix b/third_party/nix/tests/gc-concurrent.nix deleted file mode 100644 index c0595cc471b9..000000000000 --- a/third_party/nix/tests/gc-concurrent.nix +++ /dev/null @@ -1,27 +0,0 @@ -with import ./config.nix; - -rec { - - input1 = mkDerivation { - name = "dependencies-input-1"; - builder = ./dependencies.builder1.sh; - }; - - input2 = mkDerivation { - name = "dependencies-input-2"; - builder = ./dependencies.builder2.sh; - }; - - test1 = mkDerivation { - name = "gc-concurrent"; - builder = ./gc-concurrent.builder.sh; - inherit input1 input2; - }; - - test2 = mkDerivation { - name = "gc-concurrent2"; - builder = ./gc-concurrent2.builder.sh; - inherit input1 input2; - }; - -} diff --git a/third_party/nix/tests/gc-concurrent.sh b/third_party/nix/tests/gc-concurrent.sh deleted file mode 100644 index d395930ca0dc..000000000000 --- a/third_party/nix/tests/gc-concurrent.sh +++ /dev/null @@ -1,58 +0,0 @@ -source common.sh - -clearStore - -drvPath1=$(nix-instantiate gc-concurrent.nix -A test1) -outPath1=$(nix-store -q $drvPath1) - -drvPath2=$(nix-instantiate gc-concurrent.nix -A test2) -outPath2=$(nix-store -q $drvPath2) - -drvPath3=$(nix-instantiate simple.nix) -outPath3=$(nix-store -r $drvPath3) - -(! test -e $outPath3.lock) -touch $outPath3.lock - -rm -f "$NIX_STATE_DIR"/gcroots/foo* -ln -s $drvPath2 "$NIX_STATE_DIR"/gcroots/foo -ln -s $outPath3 "$NIX_STATE_DIR"/gcroots/foo2 - -# Start build #1 in the background. It starts immediately. -nix-store -rvv "$drvPath1" & -pid1=$! - -# Start build #2 in the background after 10 seconds. -(sleep 10 && nix-store -rvv "$drvPath2") & -pid2=$! - -# Run the garbage collector while the build is running. -sleep 6 -nix-collect-garbage - -# Wait for build #1/#2 to finish. -echo waiting for pid $pid1 to finish... -wait $pid1 -echo waiting for pid $pid2 to finish... -wait $pid2 - -# Check that the root of build #1 and its dependencies haven't been -# deleted. The should not be deleted by the GC because they were -# being built during the GC. -cat $outPath1/foobar -cat $outPath1/input-2/bar - -# Check that build #2 has succeeded. It should succeed because the -# derivation is a GC root. -cat $outPath2/foobar - -rm -f "$NIX_STATE_DIR"/gcroots/foo* - -# The collector should have deleted lock files for paths that have -# been built previously. -(! test -e $outPath3.lock) - -# If we run the collector now, it should delete outPath1/2. -nix-collect-garbage -(! test -e $outPath1) -(! test -e $outPath2) diff --git a/third_party/nix/tests/gc-concurrent2.builder.sh b/third_party/nix/tests/gc-concurrent2.builder.sh deleted file mode 100644 index 4bfb33103e73..000000000000 --- a/third_party/nix/tests/gc-concurrent2.builder.sh +++ /dev/null @@ -1,7 +0,0 @@ -mkdir $out -echo $(cat $input1/foo)$(cat $input2/bar)xyzzy > $out/foobar - -# Check that the GC hasn't deleted the lock on our output. -test -e "$out.lock" - -sleep 6 diff --git a/third_party/nix/tests/gc-runtime.nix b/third_party/nix/tests/gc-runtime.nix deleted file mode 100644 index ee5980bdff98..000000000000 --- a/third_party/nix/tests/gc-runtime.nix +++ /dev/null @@ -1,17 +0,0 @@ -with import ./config.nix; - -mkDerivation { - name = "gc-runtime"; - builder = - # Test inline source file definitions. - builtins.toFile "builder.sh" '' - mkdir $out - - cat > $out/program <<EOF - #! ${shell} - sleep 10000 - EOF - - chmod +x $out/program - ''; -} diff --git a/third_party/nix/tests/gc-runtime.sh b/third_party/nix/tests/gc-runtime.sh deleted file mode 100644 index 4c5028005c57..000000000000 --- a/third_party/nix/tests/gc-runtime.sh +++ /dev/null @@ -1,38 +0,0 @@ -source common.sh - -case $system in - *linux*) - ;; - *) - exit 0; -esac - -set -m # enable job control, needed for kill - -profiles="$NIX_STATE_DIR"/profiles -rm -rf $profiles - -nix-env -p $profiles/test -f ./gc-runtime.nix -i gc-runtime - -outPath=$(nix-env -p $profiles/test -q --no-name --out-path gc-runtime) -echo $outPath - -echo "backgrounding program..." -$profiles/test/program & -sleep 2 # hack - wait for the program to get started -child=$! -echo PID=$child - -nix-env -p $profiles/test -e gc-runtime -nix-env -p $profiles/test --delete-generations old - -nix-store --gc - -kill -- -$child - -if ! test -e $outPath; then - echo "running program was garbage collected!" - exit 1 -fi - -exit 0 diff --git a/third_party/nix/tests/gc.sh b/third_party/nix/tests/gc.sh deleted file mode 100644 index 8b4f8d282184..000000000000 --- a/third_party/nix/tests/gc.sh +++ /dev/null @@ -1,40 +0,0 @@ -source common.sh - -drvPath=$(nix-instantiate dependencies.nix) -outPath=$(nix-store -rvv "$drvPath") - -# Set a GC root. -rm -f "$NIX_STATE_DIR"/gcroots/foo -ln -sf $outPath "$NIX_STATE_DIR"/gcroots/foo - -[ "$(nix-store -q --roots $outPath)" = "$NIX_STATE_DIR/gcroots/foo -> $outPath" ] - -nix-store --gc --print-roots | grep $outPath -nix-store --gc --print-live | grep $outPath -nix-store --gc --print-dead | grep $drvPath -if nix-store --gc --print-dead | grep $outPath; then false; fi - -nix-store --gc --print-dead - -inUse=$(readLink $outPath/input-2) -if nix-store --delete $inUse; then false; fi -test -e $inUse - -if nix-store --delete $outPath; then false; fi -test -e $outPath - -nix-collect-garbage - -# Check that the root and its dependencies haven't been deleted. -cat $outPath/foobar -cat $outPath/input-2/bar - -# Check that the derivation has been GC'd. -if test -e $drvPath; then false; fi - -rm "$NIX_STATE_DIR"/gcroots/foo - -nix-collect-garbage - -# Check that the output has been GC'd. -if test -e $outPath/foobar; then false; fi diff --git a/third_party/nix/tests/hash-check.nix b/third_party/nix/tests/hash-check.nix deleted file mode 100644 index 4a8e9b8a8df9..000000000000 --- a/third_party/nix/tests/hash-check.nix +++ /dev/null @@ -1,29 +0,0 @@ -let { - - input1 = derivation { - name = "dependencies-input-1"; - system = "i086-msdos"; - builder = "/bar/sh"; - args = ["-e" "-x" ./dummy]; - }; - - input2 = derivation { - name = "dependencies-input-2"; - system = "i086-msdos"; - builder = "/bar/sh"; - args = ["-e" "-x" ./dummy]; - outputHashMode = "recursive"; - outputHashAlgo = "md5"; - outputHash = "ffffffffffffffffffffffffffffffff"; - }; - - body = derivation { - name = "dependencies"; - system = "i086-msdos"; - builder = "/bar/sh"; - args = ["-e" "-x" (./dummy + "/FOOBAR/../.")]; - input1 = input1 + "/."; - inherit input2; - }; - -} \ No newline at end of file diff --git a/third_party/nix/tests/hash.sh b/third_party/nix/tests/hash.sh deleted file mode 100644 index 4cfc97901012..000000000000 --- a/third_party/nix/tests/hash.sh +++ /dev/null @@ -1,87 +0,0 @@ -source common.sh - -try () { - printf "%s" "$2" > $TEST_ROOT/vector - hash=$(nix hash-file --base16 $EXTRA --type "$1" $TEST_ROOT/vector) - if test "$hash" != "$3"; then - echo "hash $1, expected $3, got $hash" - exit 1 - fi -} - -try md5 "" "d41d8cd98f00b204e9800998ecf8427e" -try md5 "a" "0cc175b9c0f1b6a831c399e269772661" -try md5 "abc" "900150983cd24fb0d6963f7d28e17f72" -try md5 "message digest" "f96b697d7cb7938d525a2f31aaf161d0" -try md5 "abcdefghijklmnopqrstuvwxyz" "c3fcd3d76192e4007dfb496cca67e13b" -try md5 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" "d174ab98d277d9f5a5611c2c9f419d9f" -try md5 "12345678901234567890123456789012345678901234567890123456789012345678901234567890" "57edf4a22be3c955ac49da2e2107b67a" - -try sha1 "" "da39a3ee5e6b4b0d3255bfef95601890afd80709" -try sha1 "abc" "a9993e364706816aba3e25717850c26c9cd0d89d" -try sha1 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" "84983e441c3bd26ebaae4aa1f95129e5e54670f1" - -try sha256 "" "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" -try sha256 "abc" "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad" -try sha256 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1" - -try sha512 "" "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e" -try sha512 "abc" "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f" -try sha512 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" "204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c33596fd15c13b1b07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445" - -EXTRA=--base32 -try sha256 "abc" "1b8m03r63zqhnjf7l5wnldhh7c134ap5vpj0850ymkq1iyzicy5s" -EXTRA= - -EXTRA=--sri -try sha512 "" "sha512-z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==" -try sha512 "abc" "sha512-3a81oZNherrMQXNJriBBMRLm+k6JqX6iCp7u5ktV05ohkpkqJ0/BqDa6PCOj/uu9RU1EI2Q86A4qmslPpUyknw==" -try sha512 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" "sha512-IEqPxt2oLwoM7XvrjgikFlfBbvRosiioJ5vjMacDwzWW/RXBOxsH+aodO+pXeJygMa2Fx6cd1wNU7GMSOMo0RQ==" -try sha256 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" "sha256-JI1qYdIGOLjlwCaTDD5gOaM85Flk/yFn9uzt1BnbBsE=" - -try2 () { - hash=$(nix-hash --type "$1" $TEST_ROOT/hash-path) - if test "$hash" != "$2"; then - echo "hash $1, expected $2, got $hash" - exit 1 - fi -} - -rm -rf $TEST_ROOT/hash-path -mkdir $TEST_ROOT/hash-path -echo "Hello World" > $TEST_ROOT/hash-path/hello - -try2 md5 "ea9b55537dd4c7e104515b2ccfaf4100" - -# Execute bit matters. -chmod +x $TEST_ROOT/hash-path/hello -try2 md5 "20f3ffe011d4cfa7d72bfabef7882836" - -# Mtime and other bits don't. -touch -r . $TEST_ROOT/hash-path/hello -chmod 744 $TEST_ROOT/hash-path/hello -try2 md5 "20f3ffe011d4cfa7d72bfabef7882836" - -# File type (e.g., symlink) does. -rm $TEST_ROOT/hash-path/hello -ln -s x $TEST_ROOT/hash-path/hello -try2 md5 "f78b733a68f5edbdf9413899339eaa4a" - -# Conversion. -try3() { - h64=$(nix to-base64 --type "$1" "$2") - [ "$h64" = "$4" ] - sri=$(nix to-sri --type "$1" "$2") - [ "$sri" = "$1-$4" ] - h32=$(nix-hash --type "$1" --to-base32 "$2") - [ "$h32" = "$3" ] - h16=$(nix-hash --type "$1" --to-base16 "$h32") - [ "$h16" = "$2" ] - h16=$(nix to-base16 --type "$1" "$h64") - [ "$h16" = "$2" ] - h16=$(nix to-base16 "$sri") - [ "$h16" = "$2" ] -} -try3 sha1 "800d59cfcd3c05e900cb4e214be48f6b886a08df" "vw46m23bizj4n8afrc0fj19wrp7mj3c0" "gA1Zz808BekAy04hS+SPa4hqCN8=" -try3 sha256 "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad" "1b8m03r63zqhnjf7l5wnldhh7c134ap5vpj0850ymkq1iyzicy5s" "ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=" -try3 sha512 "204a8fc6dda82f0a0ced7beb8e08a41657c16ef468b228a8279be331a703c33596fd15c13b1b07f9aa1d3bea57789ca031ad85c7a71dd70354ec631238ca3445" "12k9jiq29iyqm03swfsgiw5mlqs173qazm3n7daz43infy12pyrcdf30fkk3qwv4yl2ick8yipc2mqnlh48xsvvxl60lbx8vp38yji0" "IEqPxt2oLwoM7XvrjgikFlfBbvRosiioJ5vjMacDwzWW/RXBOxsH+aodO+pXeJygMa2Fx6cd1wNU7GMSOMo0RQ==" diff --git a/third_party/nix/tests/import-derivation.nix b/third_party/nix/tests/import-derivation.nix deleted file mode 100644 index 44fa9a45d7e1..000000000000 --- a/third_party/nix/tests/import-derivation.nix +++ /dev/null @@ -1,26 +0,0 @@ -with import ./config.nix; - -let - - bar = mkDerivation { - name = "bar"; - builder = builtins.toFile "builder.sh" - '' - echo 'builtins.add 123 456' > $out - ''; - }; - - value = - # Test that pathExists can check the existence of /nix/store paths - assert builtins.pathExists bar; - import bar; - -in - -mkDerivation { - name = "foo"; - builder = builtins.toFile "builder.sh" - '' - echo -n FOO${toString value} > $out - ''; -} diff --git a/third_party/nix/tests/import-derivation.sh b/third_party/nix/tests/import-derivation.sh deleted file mode 100644 index 98d61ef49b9c..000000000000 --- a/third_party/nix/tests/import-derivation.sh +++ /dev/null @@ -1,12 +0,0 @@ -source common.sh - -clearStore - -if nix-instantiate --readonly-mode ./import-derivation.nix; then - echo "read-only evaluation of an imported derivation unexpectedly failed" - exit 1 -fi - -outPath=$(nix-build ./import-derivation.nix --no-out-link) - -[ "$(cat $outPath)" = FOO579 ] diff --git a/third_party/nix/tests/init.sh b/third_party/nix/tests/init.sh deleted file mode 100644 index 19a12c1e2d9e..000000000000 --- a/third_party/nix/tests/init.sh +++ /dev/null @@ -1,34 +0,0 @@ -source common.sh - -test -n "$TEST_ROOT" -if test -d "$TEST_ROOT"; then - chmod -R u+w "$TEST_ROOT" - rm -rf "$TEST_ROOT" -fi -mkdir "$TEST_ROOT" - -mkdir "$NIX_STORE_DIR" -mkdir "$NIX_LOCALSTATE_DIR" -mkdir -p "$NIX_LOG_DIR"/drvs -mkdir "$NIX_STATE_DIR" -mkdir "$NIX_CONF_DIR" - -cat > "$NIX_CONF_DIR"/nix.conf <<EOF -build-users-group = -keep-derivations = false -sandbox = false -include nix.conf.extra -EOF - -cat > "$NIX_CONF_DIR"/nix.conf.extra <<EOF -fsync-metadata = false -!include nix.conf.extra.not-there -EOF - -# Initialise the database. -nix-store --init - -# Did anything happen? -test -e "$NIX_STATE_DIR"/db/db.sqlite - -echo 'Hello World' > ./dummy diff --git a/third_party/nix/tests/install-darwin.sh b/third_party/nix/tests/install-darwin.sh deleted file mode 100755 index 9933eba94431..000000000000 --- a/third_party/nix/tests/install-darwin.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/sh - -set -eux - -cleanup() { - PLIST="/Library/LaunchDaemons/org.nixos.nix-daemon.plist" - if sudo launchctl list | grep -q nix-daemon; then - sudo launchctl unload "$PLIST" - fi - - if [ -f "$PLIST" ]; then - sudo rm /Library/LaunchDaemons/org.nixos.nix-daemon.plist - fi - - profiles=(/etc/profile /etc/bashrc /etc/zshrc) - for profile in "${profiles[@]}"; do - if [ -f "${profile}.backup-before-nix" ]; then - sudo mv "${profile}.backup-before-nix" "${profile}" - fi - done - - for file in ~/.bash_profile ~/.bash_login ~/.profile ~/.zshenv ~/.zprofile ~/.zshrc ~/.zlogin; do - if [ -e "$file" ]; then - cat "$file" | grep -v nix-profile > "$file.next" - mv "$file.next" "$file" - fi - done - - for i in $(seq 1 $(sysctl -n hw.ncpu)); do - sudo /usr/bin/dscl . -delete "/Users/nixbld$i" || true - done - sudo /usr/bin/dscl . -delete "/Groups/nixbld" || true - - sudo rm -rf /etc/nix \ - /nix \ - /var/root/.nix-profile /var/root/.nix-defexpr /var/root/.nix-channels \ - "$HOME/.nix-profile" "$HOME/.nix-defexpr" "$HOME/.nix-channels" -} - -verify() { - set +e - output=$(echo "nix-shell -p bash --run 'echo toow | rev'" | bash -l) - set -e - - test "$output" = "woot" -} - -scratch=$(mktemp -d -t tmp.XXXXXXXXXX) -function finish { - rm -rf "$scratch" -} -trap finish EXIT - -# First setup Nix -cleanup -curl -o install https://nixos.org/nix/install -yes | bash ./install -verify - - -( - set +e - ( - echo "cd $(pwd)" - echo nix-build ./release.nix -A binaryTarball.x86_64-darwin - ) | bash -l - set -e - cp ./result/nix-*.tar.bz2 $scratch/nix.tar.bz2 -) - -( - cd $scratch - tar -xf ./nix.tar.bz2 - - cd nix-* - - set -eux - - cleanup - - yes | ./install - verify - cleanup - - echo -n "" | ./install - verify - cleanup - - sudo mkdir -p /nix/store - sudo touch /nix/store/.silly-hint - echo -n "" | ALLOW_PREEXISTING_INSTALLATION=true ./install - verify - test -e /nix/store/.silly-hint - - cleanup -) diff --git a/third_party/nix/tests/lang.sh b/third_party/nix/tests/lang.sh deleted file mode 100644 index 151a71316683..000000000000 --- a/third_party/nix/tests/lang.sh +++ /dev/null @@ -1,68 +0,0 @@ -export TEST_VAR=foo # for eval-okay-getenv.nix - -nix-instantiate --eval -E 'builtins.trace "Hello" 123' 2>&1 | grep -q Hello -(! nix-instantiate --show-trace --eval -E 'builtins.addErrorContext "Hello" 123' 2>&1 | grep -q Hello) -nix-instantiate --show-trace --eval -E 'builtins.addErrorContext "Hello" (throw "Foo")' 2>&1 | grep -q Hello - -set +x - -fail=0 - -for i in lang/parse-fail-*.nix; do - echo "parsing $i (should fail)"; - i=$(basename $i .nix) - if nix-instantiate --parse - < lang/$i.nix; then - echo "FAIL: $i shouldn't parse" - fail=1 - fi -done - -for i in lang/parse-okay-*.nix; do - echo "parsing $i (should succeed)"; - i=$(basename $i .nix) - if ! nix-instantiate --parse - < lang/$i.nix > lang/$i.out; then - echo "FAIL: $i should parse" - fail=1 - fi -done - -for i in lang/eval-fail-*.nix; do - echo "evaluating $i (should fail)"; - i=$(basename $i .nix) - if nix-instantiate --eval lang/$i.nix; then - echo "FAIL: $i shouldn't evaluate" - fail=1 - fi -done - -for i in lang/eval-okay-*.nix; do - echo "evaluating $i (should succeed)"; - i=$(basename $i .nix) - - if test -e lang/$i.exp; then - flags= - if test -e lang/$i.flags; then - flags=$(cat lang/$i.flags) - fi - if ! NIX_PATH=lang/dir3:lang/dir4 nix-instantiate $flags --eval --strict lang/$i.nix > lang/$i.out; then - echo "FAIL: $i should evaluate" - fail=1 - elif ! diff lang/$i.out lang/$i.exp; then - echo "FAIL: evaluation result of $i not as expected" - fail=1 - fi - fi - - if test -e lang/$i.exp.xml; then - if ! nix-instantiate --eval --xml --no-location --strict \ - lang/$i.nix > lang/$i.out.xml; then - echo "FAIL: $i should evaluate" - fail=1 - elif ! cmp -s lang/$i.out.xml lang/$i.exp.xml; then - echo "FAIL: XML evaluation result of $i not as expected" - fail=1 - fi - fi -done - -exit $fail diff --git a/third_party/nix/tests/linux-sandbox.sh b/third_party/nix/tests/linux-sandbox.sh deleted file mode 100644 index 52967d07dda2..000000000000 --- a/third_party/nix/tests/linux-sandbox.sh +++ /dev/null @@ -1,30 +0,0 @@ -source common.sh - -clearStore - -if ! canUseSandbox; then exit; fi - -# Note: we need to bind-mount $SHELL into the chroot. Currently we -# only support the case where $SHELL is in the Nix store, because -# otherwise things get complicated (e.g. if it's in /bin, do we need -# /lib as well?). -if [[ ! $SHELL =~ /nix/store ]]; then exit; fi - -chmod -R u+w $TEST_ROOT/store0 || true -rm -rf $TEST_ROOT/store0 - -export NIX_STORE_DIR=/my/store -export NIX_REMOTE=$TEST_ROOT/store0 - -outPath=$(nix-build dependencies.nix --no-out-link --sandbox-paths /nix/store) - -[[ $outPath =~ /my/store/.*-dependencies ]] - -nix path-info -r $outPath | grep input-2 - -nix ls-store -R -l $outPath | grep foobar - -nix cat-store $outPath/foobar | grep FOOBAR - -# Test --check without hash rewriting. -nix-build dependencies.nix --no-out-link --check --sandbox-paths /nix/store diff --git a/third_party/nix/tests/logging.sh b/third_party/nix/tests/logging.sh deleted file mode 100644 index c894ad3ff079..000000000000 --- a/third_party/nix/tests/logging.sh +++ /dev/null @@ -1,15 +0,0 @@ -source common.sh - -clearStore - -path=$(nix-build dependencies.nix --no-out-link) - -# Test nix-store -l. -[ "$(nix-store -l $path)" = FOO ] - -# Test compressed logs. -clearStore -rm -rf $NIX_LOG_DIR -(! nix-store -l $path) -nix-build dependencies.nix --no-out-link --compress-build-log -[ "$(nix-store -l $path)" = FOO ] diff --git a/third_party/nix/tests/misc.sh b/third_party/nix/tests/misc.sh deleted file mode 100644 index eda0164167f2..000000000000 --- a/third_party/nix/tests/misc.sh +++ /dev/null @@ -1,19 +0,0 @@ -source common.sh - -# Tests miscellaneous commands. - -# Do all commands have help? -#nix-env --help | grep -q install -#nix-store --help | grep -q realise -#nix-instantiate --help | grep -q eval -#nix-hash --help | grep -q base32 - -# Can we ask for the version number? -nix-env --version | grep "$version" - -# Usage errors. -nix-env --foo 2>&1 | grep "no operation" -nix-env -q --foo 2>&1 | grep "unknown flag" - -# Eval Errors. -nix-instantiate --eval -E 'let a = {} // a; in a.foo' 2>&1 | grep "infinite recursion encountered, at .*(string).*:1:15$" diff --git a/third_party/nix/tests/multiple-outputs.nix b/third_party/nix/tests/multiple-outputs.nix deleted file mode 100644 index 4a9010d1868e..000000000000 --- a/third_party/nix/tests/multiple-outputs.nix +++ /dev/null @@ -1,68 +0,0 @@ -with import ./config.nix; - -rec { - - a = mkDerivation { - name = "multiple-outputs-a"; - outputs = [ "first" "second" ]; - builder = builtins.toFile "builder.sh" - '' - mkdir $first $second - test -z $all - echo "first" > $first/file - echo "second" > $second/file - ln -s $first $second/link - ''; - helloString = "Hello, world!"; - }; - - b = mkDerivation { - defaultOutput = assert a.second.helloString == "Hello, world!"; a; - firstOutput = assert a.outputName == "first"; a.first.first; - secondOutput = assert a.second.outputName == "second"; a.second.first.first.second.second.first.second; - allOutputs = a.all; - name = "multiple-outputs-b"; - builder = builtins.toFile "builder.sh" - '' - mkdir $out - test "$firstOutput $secondOutput" = "$allOutputs" - test "$defaultOutput" = "$firstOutput" - test "$(cat $firstOutput/file)" = "first" - test "$(cat $secondOutput/file)" = "second" - echo "success" > $out/file - ''; - }; - - c = mkDerivation { - name = "multiple-outputs-c"; - drv = b.drvPath; - builder = builtins.toFile "builder.sh" - '' - mkdir $out - ln -s $drv $out/drv - ''; - }; - - d = mkDerivation { - name = "multiple-outputs-d"; - drv = builtins.unsafeDiscardOutputDependency b.drvPath; - builder = builtins.toFile "builder.sh" - '' - mkdir $out - echo $drv > $out/drv - ''; - }; - - cyclic = (mkDerivation { - name = "cyclic-outputs"; - outputs = [ "a" "b" "c" ]; - builder = builtins.toFile "builder.sh" - '' - mkdir $a $b $c - echo $a > $b/foo - echo $b > $c/bar - echo $c > $a/baz - ''; - }).a; - -} diff --git a/third_party/nix/tests/multiple-outputs.sh b/third_party/nix/tests/multiple-outputs.sh deleted file mode 100644 index bedbc39a4ebf..000000000000 --- a/third_party/nix/tests/multiple-outputs.sh +++ /dev/null @@ -1,76 +0,0 @@ -source common.sh - -clearStore - -rm -f $TEST_ROOT/result* - -# Test whether read-only evaluation works when referring to the -# ‘drvPath’ attribute. -echo "evaluating c..." -#drvPath=$(nix-instantiate multiple-outputs.nix -A c --readonly-mode) - -# And check whether the resulting derivation explicitly depends on all -# outputs. -drvPath=$(nix-instantiate multiple-outputs.nix -A c) -#[ "$drvPath" = "$drvPath2" ] -grep -q 'multiple-outputs-a.drv",\["first","second"\]' $drvPath -grep -q 'multiple-outputs-b.drv",\["out"\]' $drvPath - -# While we're at it, test the ‘unsafeDiscardOutputDependency’ primop. -outPath=$(nix-build multiple-outputs.nix -A d --no-out-link) -drvPath=$(cat $outPath/drv) -outPath=$(nix-store -q $drvPath) -(! [ -e "$outPath" ]) - -# Do a build of something that depends on a derivation with multiple -# outputs. -echo "building b..." -outPath=$(nix-build multiple-outputs.nix -A b --no-out-link) -echo "output path is $outPath" -[ "$(cat "$outPath"/file)" = "success" ] - -# Test nix-build on a derivation with multiple outputs. -outPath1=$(nix-build multiple-outputs.nix -A a -o $TEST_ROOT/result) -[ -e $TEST_ROOT/result-first ] -(! [ -e $TEST_ROOT/result-second ]) -nix-build multiple-outputs.nix -A a.all -o $TEST_ROOT/result -[ "$(cat $TEST_ROOT/result-first/file)" = "first" ] -[ "$(cat $TEST_ROOT/result-second/file)" = "second" ] -[ "$(cat $TEST_ROOT/result-second/link/file)" = "first" ] -hash1=$(nix-store -q --hash $TEST_ROOT/result-second) - -outPath2=$(nix-build $(nix-instantiate multiple-outputs.nix -A a) --no-out-link) -[[ $outPath1 = $outPath2 ]] - -outPath2=$(nix-build $(nix-instantiate multiple-outputs.nix -A a.first) --no-out-link) -[[ $outPath1 = $outPath2 ]] - -outPath2=$(nix-build $(nix-instantiate multiple-outputs.nix -A a.second) --no-out-link) -[[ $(cat $outPath2/file) = second ]] - -[[ $(nix-build $(nix-instantiate multiple-outputs.nix -A a.all) --no-out-link | wc -l) -eq 2 ]] - -# Delete one of the outputs and rebuild it. This will cause a hash -# rewrite. -nix-store --delete $TEST_ROOT/result-second --ignore-liveness -nix-build multiple-outputs.nix -A a.all -o $TEST_ROOT/result -[ "$(cat $TEST_ROOT/result-second/file)" = "second" ] -[ "$(cat $TEST_ROOT/result-second/link/file)" = "first" ] -hash2=$(nix-store -q --hash $TEST_ROOT/result-second) -[ "$hash1" = "$hash2" ] - -# Make sure that nix-build works on derivations with multiple outputs. -echo "building a.first..." -nix-build multiple-outputs.nix -A a.first --no-out-link - -# Cyclic outputs should be rejected. -echo "building cyclic..." -if nix-build multiple-outputs.nix -A cyclic --no-out-link; then - echo "Cyclic outputs incorrectly accepted!" - exit 1 -fi - -echo "collecting garbage..." -rm $TEST_ROOT/result* -nix-store --gc --keep-derivations --keep-outputs -nix-store --gc --print-roots diff --git a/third_party/nix/tests/nar-access.nix b/third_party/nix/tests/nar-access.nix deleted file mode 100644 index 0e2a7f721135..000000000000 --- a/third_party/nix/tests/nar-access.nix +++ /dev/null @@ -1,23 +0,0 @@ -with import ./config.nix; - -rec { - a = mkDerivation { - name = "nar-index-a"; - builder = builtins.toFile "builder.sh" - '' - mkdir $out - mkdir $out/foo - touch $out/foo-x - touch $out/foo/bar - touch $out/foo/baz - touch $out/qux - mkdir $out/zyx - - cat >$out/foo/data <<EOF - lasjdöaxnasd -asdom 12398 -ä"§Æẞ¢«»”alsd -EOF - ''; - }; -} \ No newline at end of file diff --git a/third_party/nix/tests/nar-access.sh b/third_party/nix/tests/nar-access.sh deleted file mode 100644 index 553d6ca89d7d..000000000000 --- a/third_party/nix/tests/nar-access.sh +++ /dev/null @@ -1,44 +0,0 @@ -source common.sh - -echo "building test path" -storePath="$(nix-build nar-access.nix -A a --no-out-link)" - -cd "$TEST_ROOT" - -# Dump path to nar. -narFile="$TEST_ROOT/path.nar" -nix-store --dump $storePath > $narFile - -# Check that find and ls-nar match. -( cd $storePath; find . | sort ) > files.find -nix ls-nar -R -d $narFile "" | sort > files.ls-nar -diff -u files.find files.ls-nar - -# Check that file contents of data match. -nix cat-nar $narFile /foo/data > data.cat-nar -diff -u data.cat-nar $storePath/foo/data - -# Check that file contents of baz match. -nix cat-nar $narFile /foo/baz > baz.cat-nar -diff -u baz.cat-nar $storePath/foo/baz - -nix cat-store $storePath/foo/baz > baz.cat-nar -diff -u baz.cat-nar $storePath/foo/baz - -# Test --json. -[[ $(nix ls-nar --json $narFile /) = '{"type":"directory","entries":{"foo":{},"foo-x":{},"qux":{},"zyx":{}}}' ]] -[[ $(nix ls-nar --json -R $narFile /foo) = '{"type":"directory","entries":{"bar":{"type":"regular","size":0,"narOffset":368},"baz":{"type":"regular","size":0,"narOffset":552},"data":{"type":"regular","size":58,"narOffset":736}}}' ]] -[[ $(nix ls-nar --json -R $narFile /foo/bar) = '{"type":"regular","size":0,"narOffset":368}' ]] -[[ $(nix ls-store --json $storePath) = '{"type":"directory","entries":{"foo":{},"foo-x":{},"qux":{},"zyx":{}}}' ]] -[[ $(nix ls-store --json -R $storePath/foo) = '{"type":"directory","entries":{"bar":{"type":"regular","size":0},"baz":{"type":"regular","size":0},"data":{"type":"regular","size":58}}}' ]] -[[ $(nix ls-store --json -R $storePath/foo/bar) = '{"type":"regular","size":0}' ]] - -# Test missing files. -nix ls-store --json -R $storePath/xyzzy 2>&1 | grep 'does not exist in NAR' -nix ls-store $storePath/xyzzy 2>&1 | grep 'does not exist' - -# Test failure to dump. -if nix-store --dump $storePath >/dev/full ; then - echo "dumping to /dev/full should fail" - exit -1 -fi diff --git a/third_party/nix/tests/nix-build.sh b/third_party/nix/tests/nix-build.sh deleted file mode 100644 index 395264863196..000000000000 --- a/third_party/nix/tests/nix-build.sh +++ /dev/null @@ -1,25 +0,0 @@ -source common.sh - -clearStore - -outPath=$(nix-build dependencies.nix -o $TEST_ROOT/result) -test "$(cat $TEST_ROOT/result/foobar)" = FOOBAR - -# The result should be retained by a GC. -echo A -target=$(readLink $TEST_ROOT/result) -echo B -echo target is $target -nix-store --gc -test -e $target/foobar - -# But now it should be gone. -rm $TEST_ROOT/result -nix-store --gc -if test -e $target/foobar; then false; fi - -outPath2=$(nix-build $(nix-instantiate dependencies.nix) --no-out-link) -[[ $outPath = $outPath2 ]] - -outPath2=$(nix-build $(nix-instantiate dependencies.nix)!out --no-out-link) -[[ $outPath = $outPath2 ]] diff --git a/third_party/nix/tests/nix-channel.sh b/third_party/nix/tests/nix-channel.sh deleted file mode 100644 index 93f837befcec..000000000000 --- a/third_party/nix/tests/nix-channel.sh +++ /dev/null @@ -1,59 +0,0 @@ -source common.sh - -clearProfiles - -rm -f $TEST_HOME/.nix-channels $TEST_HOME/.nix-profile - -# Test add/list/remove. -nix-channel --add http://foo/bar xyzzy -nix-channel --list | grep -q http://foo/bar -nix-channel --remove xyzzy - -[ -e $TEST_HOME/.nix-channels ] -[ "$(cat $TEST_HOME/.nix-channels)" = '' ] - -# Create a channel. -rm -rf $TEST_ROOT/foo -mkdir -p $TEST_ROOT/foo -nix copy --to file://$TEST_ROOT/foo?compression="bzip2" $(nix-store -r $(nix-instantiate dependencies.nix)) -rm -rf $TEST_ROOT/nixexprs -mkdir -p $TEST_ROOT/nixexprs -cp config.nix dependencies.nix dependencies.builder*.sh $TEST_ROOT/nixexprs/ -ln -s dependencies.nix $TEST_ROOT/nixexprs/default.nix -(cd $TEST_ROOT && tar cvf - nixexprs) | bzip2 > $TEST_ROOT/foo/nixexprs.tar.bz2 - -# Test the update action. -nix-channel --add file://$TEST_ROOT/foo -nix-channel --update - -# Do a query. -nix-env -qa \* --meta --xml --out-path > $TEST_ROOT/meta.xml -if [ "$xmllint" != false ]; then - $xmllint --noout $TEST_ROOT/meta.xml || fail "malformed XML" -fi -grep -q 'meta.*description.*Random test package' $TEST_ROOT/meta.xml -grep -q 'item.*attrPath="foo".*name="dependencies"' $TEST_ROOT/meta.xml - -# Do an install. -nix-env -i dependencies -[ -e $TEST_HOME/.nix-profile/foobar ] - -clearProfiles -rm -f $TEST_HOME/.nix-channels - -# Test updating from a tarball -nix-channel --add file://$TEST_ROOT/foo/nixexprs.tar.bz2 foo -nix-channel --update - -# Do a query. -nix-env -qa \* --meta --xml --out-path > $TEST_ROOT/meta.xml -if [ "$xmllint" != false ]; then - $xmllint --noout $TEST_ROOT/meta.xml || fail "malformed XML" -fi -grep -q 'meta.*description.*Random test package' $TEST_ROOT/meta.xml -grep -q 'item.*attrPath="foo".*name="dependencies"' $TEST_ROOT/meta.xml - -# Do an install. -nix-env -i dependencies -[ -e $TEST_HOME/.nix-profile/foobar ] - diff --git a/third_party/nix/tests/nix-copy-closure.nix b/third_party/nix/tests/nix-copy-closure.nix deleted file mode 100644 index 0dc147fb34e9..000000000000 --- a/third_party/nix/tests/nix-copy-closure.nix +++ /dev/null @@ -1,64 +0,0 @@ -# Test ‘nix-copy-closure’. - -{ nixpkgs, system, nix }: - -with import (nixpkgs + "/nixos/lib/testing.nix") { inherit system; }; - -makeTest (let pkgA = pkgs.cowsay; pkgB = pkgs.wget; pkgC = pkgs.hello; in { - - nodes = - { client = - { config, pkgs, ... }: - { virtualisation.writableStore = true; - virtualisation.pathsInNixDB = [ pkgA ]; - nix.package = nix; - nix.binaryCaches = [ ]; - }; - - server = - { config, pkgs, ... }: - { services.openssh.enable = true; - virtualisation.writableStore = true; - virtualisation.pathsInNixDB = [ pkgB pkgC ]; - nix.package = nix; - }; - }; - - testScript = { nodes }: - '' - startAll; - - # Create an SSH key on the client. - my $key = `${pkgs.openssh}/bin/ssh-keygen -t ed25519 -f key -N ""`; - $client->succeed("mkdir -m 700 /root/.ssh"); - $client->copyFileFromHost("key", "/root/.ssh/id_ed25519"); - $client->succeed("chmod 600 /root/.ssh/id_ed25519"); - - # Install the SSH key on the server. - $server->succeed("mkdir -m 700 /root/.ssh"); - $server->copyFileFromHost("key.pub", "/root/.ssh/authorized_keys"); - $server->waitForUnit("sshd"); - $client->waitForUnit("network.target"); - $client->succeed("ssh -o StrictHostKeyChecking=no " . $server->name() . " 'echo hello world'"); - - # Copy the closure of package A from the client to the server. - $server->fail("nix-store --check-validity ${pkgA}"); - $client->succeed("nix-copy-closure --to server --gzip ${pkgA} >&2"); - $server->succeed("nix-store --check-validity ${pkgA}"); - - # Copy the closure of package B from the server to the client. - $client->fail("nix-store --check-validity ${pkgB}"); - $client->succeed("nix-copy-closure --from server --gzip ${pkgB} >&2"); - $client->succeed("nix-store --check-validity ${pkgB}"); - - # Copy the closure of package C via the SSH substituter. - $client->fail("nix-store -r ${pkgC}"); - # FIXME - #$client->succeed( - # "nix-store --option use-ssh-substituter true" - # . " --option ssh-substituter-hosts root\@server" - # . " -r ${pkgC} >&2"); - #$client->succeed("nix-store --check-validity ${pkgC}"); - ''; - -}) diff --git a/third_party/nix/tests/nix-copy-ssh.sh b/third_party/nix/tests/nix-copy-ssh.sh deleted file mode 100644 index eb801548d2f1..000000000000 --- a/third_party/nix/tests/nix-copy-ssh.sh +++ /dev/null @@ -1,20 +0,0 @@ -source common.sh - -clearStore -clearCache - -remoteRoot=$TEST_ROOT/store2 -chmod -R u+w "$remoteRoot" || true -rm -rf "$remoteRoot" - -outPath=$(nix-build --no-out-link dependencies.nix) - -nix copy --to "ssh://localhost?store=$NIX_STORE_DIR&remote-store=$remoteRoot%3fstore=$NIX_STORE_DIR%26real=$remoteRoot$NIX_STORE_DIR" $outPath - -[ -f $remoteRoot$outPath/foobar ] - -clearStore - -nix copy --no-check-sigs --from "ssh://localhost?store=$NIX_STORE_DIR&remote-store=$remoteRoot%3fstore=$NIX_STORE_DIR%26real=$remoteRoot$NIX_STORE_DIR" $outPath - -[ -f $outPath/foobar ] diff --git a/third_party/nix/tests/nix-profile.sh b/third_party/nix/tests/nix-profile.sh deleted file mode 100644 index e2e0d1090804..000000000000 --- a/third_party/nix/tests/nix-profile.sh +++ /dev/null @@ -1,9 +0,0 @@ -source common.sh - -sed -e "s|@localstatedir@|$TEST_ROOT/profile-var|g" -e "s|@coreutils@|$coreutils|g" < ../scripts/nix-profile.sh.in > $TEST_ROOT/nix-profile.sh - -user=$(whoami) -rm -rf $TEST_HOME $TEST_ROOT/profile-var -mkdir -p $TEST_HOME -USER=$user $SHELL -e -c ". $TEST_ROOT/nix-profile.sh; set" -USER=$user $SHELL -e -c ". $TEST_ROOT/nix-profile.sh" # test idempotency diff --git a/third_party/nix/tests/nix-shell.sh b/third_party/nix/tests/nix-shell.sh deleted file mode 100644 index ee502dddb955..000000000000 --- a/third_party/nix/tests/nix-shell.sh +++ /dev/null @@ -1,57 +0,0 @@ -source common.sh - -clearStore - -# Test nix-shell -A -export IMPURE_VAR=foo -export SELECTED_IMPURE_VAR=baz -export NIX_BUILD_SHELL=$SHELL -output=$(nix-shell --pure shell.nix -A shellDrv --run \ - 'echo "$IMPURE_VAR - $VAR_FROM_STDENV_SETUP - $VAR_FROM_NIX"') - -[ "$output" = " - foo - bar" ] - -# Test --keep -output=$(nix-shell --pure --keep SELECTED_IMPURE_VAR shell.nix -A shellDrv --run \ - 'echo "$IMPURE_VAR - $VAR_FROM_STDENV_SETUP - $VAR_FROM_NIX - $SELECTED_IMPURE_VAR"') - -[ "$output" = " - foo - bar - baz" ] - -# Test nix-shell on a .drv -[[ $(nix-shell --pure $(nix-instantiate shell.nix -A shellDrv) --run \ - 'echo "$IMPURE_VAR - $VAR_FROM_STDENV_SETUP - $VAR_FROM_NIX"') = " - foo - bar" ]] - -[[ $(nix-shell --pure $(nix-instantiate shell.nix -A shellDrv) --run \ - 'echo "$IMPURE_VAR - $VAR_FROM_STDENV_SETUP - $VAR_FROM_NIX"') = " - foo - bar" ]] - -# Test nix-shell on a .drv symlink - -# Legacy: absolute path and .drv extension required -nix-instantiate shell.nix -A shellDrv --indirect --add-root $TEST_ROOT/shell.drv -[[ $(nix-shell --pure $TEST_ROOT/shell.drv --run \ - 'echo "$IMPURE_VAR - $VAR_FROM_STDENV_SETUP - $VAR_FROM_NIX"') = " - foo - bar" ]] - -# New behaviour: just needs to resolve to a derivation in the store -nix-instantiate shell.nix -A shellDrv --indirect --add-root $TEST_ROOT/shell -[[ $(nix-shell --pure $TEST_ROOT/shell --run \ - 'echo "$IMPURE_VAR - $VAR_FROM_STDENV_SETUP - $VAR_FROM_NIX"') = " - foo - bar" ]] - -# Test nix-shell -p -output=$(NIX_PATH=nixpkgs=shell.nix nix-shell --pure -p foo bar --run 'echo "$(foo) $(bar)"') -[ "$output" = "foo bar" ] - -# Test nix-shell shebang mode -sed -e "s|@ENV_PROG@|$(type -p env)|" shell.shebang.sh > $TEST_ROOT/shell.shebang.sh -chmod a+rx $TEST_ROOT/shell.shebang.sh - -output=$($TEST_ROOT/shell.shebang.sh abc def) -[ "$output" = "foo bar abc def" ] - -# Test nix-shell shebang mode for ruby -# This uses a fake interpreter that returns the arguments passed -# This, in turn, verifies the `rc` script is valid and the `load()` script (given using `-e`) is as expected. -sed -e "s|@SHELL_PROG@|$(type -p nix-shell)|" shell.shebang.rb > $TEST_ROOT/shell.shebang.rb -chmod a+rx $TEST_ROOT/shell.shebang.rb - -output=$($TEST_ROOT/shell.shebang.rb abc ruby) -[ "$output" = '-e load("'"$TEST_ROOT"'/shell.shebang.rb") -- abc ruby' ] diff --git a/third_party/nix/tests/optimise-store.sh b/third_party/nix/tests/optimise-store.sh deleted file mode 100644 index 61e3df2f9f7e..000000000000 --- a/third_party/nix/tests/optimise-store.sh +++ /dev/null @@ -1,43 +0,0 @@ -source common.sh - -clearStore - -outPath1=$(echo 'with import ./config.nix; mkDerivation { name = "foo1"; builder = builtins.toFile "builder" "mkdir $out; echo hello > $out/foo"; }' | nix-build - --no-out-link --auto-optimise-store) -outPath2=$(echo 'with import ./config.nix; mkDerivation { name = "foo2"; builder = builtins.toFile "builder" "mkdir $out; echo hello > $out/foo"; }' | nix-build - --no-out-link --auto-optimise-store) - -inode1="$(stat --format=%i $outPath1/foo)" -inode2="$(stat --format=%i $outPath2/foo)" -if [ "$inode1" != "$inode2" ]; then - echo "inodes do not match" - exit 1 -fi - -nlink="$(stat --format=%h $outPath1/foo)" -if [ "$nlink" != 3 ]; then - echo "link count incorrect" - exit 1 -fi - -outPath3=$(echo 'with import ./config.nix; mkDerivation { name = "foo3"; builder = builtins.toFile "builder" "mkdir $out; echo hello > $out/foo"; }' | nix-build - --no-out-link) - -inode3="$(stat --format=%i $outPath3/foo)" -if [ "$inode1" = "$inode3" ]; then - echo "inodes match unexpectedly" - exit 1 -fi - -nix-store --optimise - -inode1="$(stat --format=%i $outPath1/foo)" -inode3="$(stat --format=%i $outPath3/foo)" -if [ "$inode1" != "$inode3" ]; then - echo "inodes do not match" - exit 1 -fi - -nix-store --gc - -if [ -n "$(ls $NIX_STORE_DIR/.links)" ]; then - echo ".links directory not empty after GC" - exit 1 -fi diff --git a/third_party/nix/tests/parallel.builder.sh b/third_party/nix/tests/parallel.builder.sh deleted file mode 100644 index d092bc5a6bd4..000000000000 --- a/third_party/nix/tests/parallel.builder.sh +++ /dev/null @@ -1,29 +0,0 @@ -echo "DOING $text" - - -# increase counter -while ! ln -s x $shared.lock 2> /dev/null; do - sleep 1 -done -test -f $shared.cur || echo 0 > $shared.cur -test -f $shared.max || echo 0 > $shared.max -new=$(($(cat $shared.cur) + 1)) -if test $new -gt $(cat $shared.max); then - echo $new > $shared.max -fi -echo $new > $shared.cur -rm $shared.lock - - -echo -n $(cat $inputs)$text > $out - -sleep $sleepTime - - -# decrease counter -while ! ln -s x $shared.lock 2> /dev/null; do - sleep 1 -done -test -f $shared.cur || echo 0 > $shared.cur -echo $(($(cat $shared.cur) - 1)) > $shared.cur -rm $shared.lock diff --git a/third_party/nix/tests/parallel.nix b/third_party/nix/tests/parallel.nix deleted file mode 100644 index 23f142059f58..000000000000 --- a/third_party/nix/tests/parallel.nix +++ /dev/null @@ -1,19 +0,0 @@ -{sleepTime ? 3}: - -with import ./config.nix; - -let - - mkDrv = text: inputs: mkDerivation { - name = "parallel"; - builder = ./parallel.builder.sh; - inherit text inputs shared sleepTime; - }; - - a = mkDrv "a" []; - b = mkDrv "b" [a]; - c = mkDrv "c" [a]; - d = mkDrv "d" [a]; - e = mkDrv "e" [b c d]; - -in e diff --git a/third_party/nix/tests/parallel.sh b/third_party/nix/tests/parallel.sh deleted file mode 100644 index 3b7bbe5a2251..000000000000 --- a/third_party/nix/tests/parallel.sh +++ /dev/null @@ -1,56 +0,0 @@ -source common.sh - - -# First, test that -jN performs builds in parallel. -echo "testing nix-build -j..." - -clearStore - -rm -f $_NIX_TEST_SHARED.cur $_NIX_TEST_SHARED.max - -outPath=$(nix-build -j10000 parallel.nix --no-out-link) - -echo "output path is $outPath" - -text=$(cat "$outPath") -if test "$text" != "abacade"; then exit 1; fi - -if test "$(cat $_NIX_TEST_SHARED.cur)" != 0; then fail "wrong current process count"; fi -if test "$(cat $_NIX_TEST_SHARED.max)" != 3; then fail "not enough parallelism"; fi - - -# Second, test that parallel invocations of nix-build perform builds -# in parallel, and don't block waiting on locks held by the others. -echo "testing multiple nix-build -j1..." - -clearStore - -rm -f $_NIX_TEST_SHARED.cur $_NIX_TEST_SHARED.max - -drvPath=$(nix-instantiate parallel.nix --argstr sleepTime 15) - -cmd="nix-store -j1 -r $drvPath" - -$cmd & -pid1=$! -echo "pid 1 is $pid1" - -$cmd & -pid2=$! -echo "pid 2 is $pid2" - -$cmd & -pid3=$! -echo "pid 3 is $pid3" - -$cmd & -pid4=$! -echo "pid 4 is $pid4" - -wait $pid1 || fail "instance 1 failed: $?" -wait $pid2 || fail "instance 2 failed: $?" -wait $pid3 || fail "instance 3 failed: $?" -wait $pid4 || fail "instance 4 failed: $?" - -if test "$(cat $_NIX_TEST_SHARED.cur)" != 0; then fail "wrong current process count"; fi -if test "$(cat $_NIX_TEST_SHARED.max)" != 3; then fail "not enough parallelism"; fi diff --git a/third_party/nix/tests/pass-as-file.sh b/third_party/nix/tests/pass-as-file.sh deleted file mode 100644 index 2c0bc5031ad7..000000000000 --- a/third_party/nix/tests/pass-as-file.sh +++ /dev/null @@ -1,18 +0,0 @@ -source common.sh - -clearStore - -outPath=$(nix-build --no-out-link -E " -with import ./config.nix; - -mkDerivation { - name = \"pass-as-file\"; - passAsFile = [ \"foo\" ]; - foo = [ \"xyzzy\" ]; - builder = builtins.toFile \"builder.sh\" '' - [ \"\$(basename \$fooPath)\" = .attr-1bp7cri8hplaz6hbz0v4f0nl44rl84q1sg25kgwqzipzd1mv89ic ] - [ \"\$(cat \$fooPath)\" = xyzzy ] - touch \$out - ''; -} -") diff --git a/third_party/nix/tests/placeholders.sh b/third_party/nix/tests/placeholders.sh deleted file mode 100644 index cd1bb7bc2aac..000000000000 --- a/third_party/nix/tests/placeholders.sh +++ /dev/null @@ -1,20 +0,0 @@ -source common.sh - -clearStore - -nix-build --no-out-link -E ' - with import ./config.nix; - - mkDerivation { - name = "placeholders"; - outputs = [ "out" "bin" "dev" ]; - buildCommand = " - echo foo1 > $out - echo foo2 > $bin - echo foo3 > $dev - [[ $(cat ${placeholder "out"}) = foo1 ]] - [[ $(cat ${placeholder "bin"}) = foo2 ]] - [[ $(cat ${placeholder "dev"}) = foo3 ]] - "; - } -' diff --git a/third_party/nix/tests/post-hook.sh b/third_party/nix/tests/post-hook.sh deleted file mode 100644 index a026572154db..000000000000 --- a/third_party/nix/tests/post-hook.sh +++ /dev/null @@ -1,15 +0,0 @@ -source common.sh - -clearStore - -export REMOTE_STORE=$TEST_ROOT/remote_store - -# Build the dependencies and push them to the remote store -nix-build -o $TEST_ROOT/result dependencies.nix --post-build-hook $PWD/push-to-store.sh - -clearStore - -# Ensure that we the remote store contains both the runtime and buildtime -# closure of what we've just built -nix copy --from "$REMOTE_STORE" --no-require-sigs -f dependencies.nix -nix copy --from "$REMOTE_STORE" --no-require-sigs -f dependencies.nix input1_drv diff --git a/third_party/nix/tests/pure-eval.nix b/third_party/nix/tests/pure-eval.nix deleted file mode 100644 index ed25b3d45637..000000000000 --- a/third_party/nix/tests/pure-eval.nix +++ /dev/null @@ -1,3 +0,0 @@ -{ - x = 123; -} diff --git a/third_party/nix/tests/pure-eval.sh b/third_party/nix/tests/pure-eval.sh deleted file mode 100644 index 49c8564487c3..000000000000 --- a/third_party/nix/tests/pure-eval.sh +++ /dev/null @@ -1,18 +0,0 @@ -source common.sh - -clearStore - -nix eval --pure-eval '(assert 1 + 2 == 3; true)' - -[[ $(nix eval '(builtins.readFile ./pure-eval.sh)') =~ clearStore ]] - -(! nix eval --pure-eval '(builtins.readFile ./pure-eval.sh)') - -(! nix eval --pure-eval '(builtins.currentTime)') -(! nix eval --pure-eval '(builtins.currentSystem)') - -(! nix-instantiate --pure-eval ./simple.nix) - -[[ $(nix eval "((import (builtins.fetchurl { url = file://$(pwd)/pure-eval.nix; })).x)") == 123 ]] -(! nix eval --pure-eval "((import (builtins.fetchurl { url = file://$(pwd)/pure-eval.nix; })).x)") -nix eval --pure-eval "((import (builtins.fetchurl { url = file://$(pwd)/pure-eval.nix; sha256 = \"$(nix hash-file pure-eval.nix --type sha256)\"; })).x)" diff --git a/third_party/nix/tests/push-to-store.sh b/third_party/nix/tests/push-to-store.sh deleted file mode 100755 index 6aadb916ba0b..000000000000 --- a/third_party/nix/tests/push-to-store.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -echo Pushing "$@" to "$REMOTE_STORE" -printf "%s" "$OUT_PATHS" | xargs -d: nix copy --to "$REMOTE_STORE" --no-require-sigs diff --git a/third_party/nix/tests/referrers.sh b/third_party/nix/tests/referrers.sh deleted file mode 100644 index 8ab8e5ddfe87..000000000000 --- a/third_party/nix/tests/referrers.sh +++ /dev/null @@ -1,36 +0,0 @@ -source common.sh - -clearStore - -max=500 - -reference=$NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -touch $reference -(echo $reference && echo && echo 0) | nix-store --register-validity - -echo "making registration..." - -set +x -for ((n = 0; n < $max; n++)); do - storePath=$NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-$n - echo -n > $storePath - ref2=$NIX_STORE_DIR/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-$((n+1)) - if test $((n+1)) = $max; then - ref2=$reference - fi - echo $storePath; echo; echo 2; echo $reference; echo $ref2 -done > $TEST_ROOT/reg_info -set -x - -echo "registering..." - -nix-store --register-validity < $TEST_ROOT/reg_info - -echo "collecting garbage..." -ln -sfn $reference "$NIX_STATE_DIR"/gcroots/ref -nix-store --gc - -if [ -n "$(type -p sqlite3)" -a "$(sqlite3 $NIX_STATE_DIR/db/db.sqlite 'select count(*) from Refs')" -ne 0 ]; then - echo "referrers not cleaned up" - exit 1 -fi diff --git a/third_party/nix/tests/remote-builds.nix b/third_party/nix/tests/remote-builds.nix deleted file mode 100644 index b867f13b4995..000000000000 --- a/third_party/nix/tests/remote-builds.nix +++ /dev/null @@ -1,108 +0,0 @@ -# Test Nix's remote build feature. - -{ nixpkgs, system, nix }: - -with import (nixpkgs + "/nixos/lib/testing.nix") { inherit system; }; - -makeTest ( - -let - - # The configuration of the remote builders. - builder = - { config, pkgs, ... }: - { services.openssh.enable = true; - virtualisation.writableStore = true; - nix.package = nix; - nix.useSandbox = true; - }; - - # Trivial Nix expression to build remotely. - expr = config: nr: pkgs.writeText "expr.nix" - '' - let utils = builtins.storePath ${config.system.build.extraUtils}; in - derivation { - name = "hello-${toString nr}"; - system = "i686-linux"; - PATH = "''${utils}/bin"; - builder = "''${utils}/bin/sh"; - args = [ "-c" "if [ ${toString nr} = 5 ]; then echo FAIL; exit 1; fi; echo Hello; mkdir $out $foo; cat /proc/sys/kernel/hostname > $out/host; ln -s $out $foo/bar; sleep 10" ]; - outputs = [ "out" "foo" ]; - } - ''; - -in - -{ - - nodes = - { builder1 = builder; - builder2 = builder; - - client = - { config, pkgs, ... }: - { nix.maxJobs = 0; # force remote building - nix.distributedBuilds = true; - nix.buildMachines = - [ { hostName = "builder1"; - sshUser = "root"; - sshKey = "/root/.ssh/id_ed25519"; - system = "i686-linux"; - maxJobs = 1; - } - { hostName = "builder2"; - sshUser = "root"; - sshKey = "/root/.ssh/id_ed25519"; - system = "i686-linux"; - maxJobs = 1; - } - ]; - virtualisation.writableStore = true; - virtualisation.pathsInNixDB = [ config.system.build.extraUtils ]; - nix.package = nix; - nix.binaryCaches = [ ]; - programs.ssh.extraConfig = "ConnectTimeout 30"; - }; - }; - - testScript = { nodes }: - '' - startAll; - - # Create an SSH key on the client. - my $key = `${pkgs.openssh}/bin/ssh-keygen -t ed25519 -f key -N ""`; - $client->succeed("mkdir -p -m 700 /root/.ssh"); - $client->copyFileFromHost("key", "/root/.ssh/id_ed25519"); - $client->succeed("chmod 600 /root/.ssh/id_ed25519"); - - # Install the SSH key on the builders. - $client->waitForUnit("network.target"); - foreach my $builder ($builder1, $builder2) { - $builder->succeed("mkdir -p -m 700 /root/.ssh"); - $builder->copyFileFromHost("key.pub", "/root/.ssh/authorized_keys"); - $builder->waitForUnit("sshd"); - $client->succeed("ssh -o StrictHostKeyChecking=no " . $builder->name() . " 'echo hello world'"); - } - - # Perform a build and check that it was performed on the builder. - my $out = $client->succeed( - "nix-build ${expr nodes.client.config 1} 2> build-output", - "grep -q Hello build-output" - ); - $builder1->succeed("test -e $out"); - - # And a parallel build. - my ($out1, $out2) = split /\s/, - $client->succeed('nix-store -r $(nix-instantiate ${expr nodes.client.config 2})\!out $(nix-instantiate ${expr nodes.client.config 3})\!out'); - $builder1->succeed("test -e $out1 -o -e $out2"); - $builder2->succeed("test -e $out1 -o -e $out2"); - - # And a failing build. - $client->fail("nix-build ${expr nodes.client.config 5}"); - - # Test whether the build hook automatically skips unavailable builders. - $builder1->block; - $client->succeed("nix-build ${expr nodes.client.config 4}"); - ''; - -}) diff --git a/third_party/nix/tests/remote-store.sh b/third_party/nix/tests/remote-store.sh deleted file mode 100644 index 77437658ead6..000000000000 --- a/third_party/nix/tests/remote-store.sh +++ /dev/null @@ -1,19 +0,0 @@ -source common.sh - -clearStore - -startDaemon - -storeCleared=1 $SHELL ./user-envs.sh - -nix-store --dump-db > $TEST_ROOT/d1 -NIX_REMOTE= nix-store --dump-db > $TEST_ROOT/d2 -cmp $TEST_ROOT/d1 $TEST_ROOT/d2 - -nix-store --gc --max-freed 1K - -killDaemon - -user=$(whoami) -[ -e $NIX_STATE_DIR/gcroots/per-user/$user ] -[ -e $NIX_STATE_DIR/profiles/per-user/$user ] diff --git a/third_party/nix/tests/repair.sh b/third_party/nix/tests/repair.sh deleted file mode 100644 index ec7ad5dcaff4..000000000000 --- a/third_party/nix/tests/repair.sh +++ /dev/null @@ -1,77 +0,0 @@ -source common.sh - -clearStore - -path=$(nix-build dependencies.nix -o $TEST_ROOT/result) -path2=$(nix-store -qR $path | grep input-2) - -nix-store --verify --check-contents -v - -hash=$(nix-hash $path2) - -# Corrupt a path and check whether nix-build --repair can fix it. -chmod u+w $path2 -touch $path2/bad - -if nix-store --verify --check-contents -v; then - echo "nix-store --verify succeeded unexpectedly" >&2 - exit 1 -fi - -# The path can be repaired by rebuilding the derivation. -nix-store --verify --check-contents --repair - -nix-store --verify-path $path2 - -# Re-corrupt and delete the deriver. Now --verify --repair should -# not work. -chmod u+w $path2 -touch $path2/bad - -nix-store --delete $(nix-store -qd $path2) - -if nix-store --verify --check-contents --repair; then - echo "nix-store --verify --repair succeeded unexpectedly" >&2 - exit 1 -fi - -nix-build dependencies.nix -o $TEST_ROOT/result --repair - -if [ "$(nix-hash $path2)" != "$hash" -o -e $path2/bad ]; then - echo "path not repaired properly" >&2 - exit 1 -fi - -# Corrupt a path that has a substitute and check whether nix-store -# --verify can fix it. -clearCache - -nix copy --to file://$cacheDir $path - -chmod u+w $path2 -rm -rf $path2 - -nix-store --verify --check-contents --repair --substituters "file://$cacheDir" --no-require-sigs - -if [ "$(nix-hash $path2)" != "$hash" -o -e $path2/bad ]; then - echo "path not repaired properly" >&2 - exit 1 -fi - -# Check --verify-path and --repair-path. -nix-store --verify-path $path2 - -chmod u+w $path2 -rm -rf $path2 - -if nix-store --verify-path $path2; then - echo "nix-store --verify-path succeeded unexpectedly" >&2 - exit 1 -fi - -nix-store --repair-path $path2 --substituters "file://$cacheDir" --no-require-sigs - -if [ "$(nix-hash $path2)" != "$hash" -o -e $path2/bad ]; then - echo "path not repaired properly" >&2 - exit 1 -fi diff --git a/third_party/nix/tests/restricted.nix b/third_party/nix/tests/restricted.nix deleted file mode 100644 index e0ef5840209c..000000000000 --- a/third_party/nix/tests/restricted.nix +++ /dev/null @@ -1 +0,0 @@ -1 + 2 diff --git a/third_party/nix/tests/restricted.sh b/third_party/nix/tests/restricted.sh deleted file mode 100644 index e02becc60e38..000000000000 --- a/third_party/nix/tests/restricted.sh +++ /dev/null @@ -1,51 +0,0 @@ -source common.sh - -clearStore - -nix-instantiate --restrict-eval --eval -E '1 + 2' -(! nix-instantiate --restrict-eval ./restricted.nix) -(! nix-instantiate --eval --restrict-eval <(echo '1 + 2')) -nix-instantiate --restrict-eval ./simple.nix -I src=. -nix-instantiate --restrict-eval ./simple.nix -I src1=simple.nix -I src2=config.nix -I src3=./simple.builder.sh - -(! nix-instantiate --restrict-eval --eval -E 'builtins.readFile ./simple.nix') -nix-instantiate --restrict-eval --eval -E 'builtins.readFile ./simple.nix' -I src=.. - -(! nix-instantiate --restrict-eval --eval -E 'builtins.readDir ../src/nix-channel') -nix-instantiate --restrict-eval --eval -E 'builtins.readDir ../src/nix-channel' -I src=../src - -(! nix-instantiate --restrict-eval --eval -E 'let __nixPath = [ { prefix = "foo"; path = ./.; } ]; in <foo>') -nix-instantiate --restrict-eval --eval -E 'let __nixPath = [ { prefix = "foo"; path = ./.; } ]; in <foo>' -I src=. - -p=$(nix eval --raw "(builtins.fetchurl file://$(pwd)/restricted.sh)" --restrict-eval --allowed-uris "file://$(pwd)") -cmp $p restricted.sh - -(! nix eval --raw "(builtins.fetchurl file://$(pwd)/restricted.sh)" --restrict-eval) - -(! nix eval --raw "(builtins.fetchurl file://$(pwd)/restricted.sh)" --restrict-eval --allowed-uris "file://$(pwd)/restricted.sh/") - -nix eval --raw "(builtins.fetchurl file://$(pwd)/restricted.sh)" --restrict-eval --allowed-uris "file://$(pwd)/restricted.sh" - -(! nix eval --raw "(builtins.fetchurl https://github.com/NixOS/patchelf/archive/master.tar.gz)" --restrict-eval) -(! nix eval --raw "(builtins.fetchTarball https://github.com/NixOS/patchelf/archive/master.tar.gz)" --restrict-eval) -(! nix eval --raw "(fetchGit git://github.com/NixOS/patchelf.git)" --restrict-eval) - -ln -sfn $(pwd)/restricted.nix $TEST_ROOT/restricted.nix -[[ $(nix-instantiate --eval $TEST_ROOT/restricted.nix) == 3 ]] -(! nix-instantiate --eval --restrict-eval $TEST_ROOT/restricted.nix) -(! nix-instantiate --eval --restrict-eval $TEST_ROOT/restricted.nix -I $TEST_ROOT) -(! nix-instantiate --eval --restrict-eval $TEST_ROOT/restricted.nix -I .) -nix-instantiate --eval --restrict-eval $TEST_ROOT/restricted.nix -I $TEST_ROOT -I . - -[[ $(nix eval --raw --restrict-eval -I . '(builtins.readFile "${import ./simple.nix}/hello")') == 'Hello World!' ]] - -# Check whether we can leak symlink information through directory traversal. -traverseDir="$(pwd)/restricted-traverse-me" -ln -sfn "$(pwd)/restricted-secret" "$(pwd)/restricted-innocent" -mkdir -p "$traverseDir" -goUp="..$(echo "$traverseDir" | sed -e 's,[^/]\+,..,g')" -output="$(nix eval --raw --restrict-eval -I "$traverseDir" \ - "(builtins.readFile \"$traverseDir/$goUp$(pwd)/restricted-innocent\")" \ - 2>&1 || :)" -echo "$output" | grep "is forbidden" -! echo "$output" | grep -F restricted-secret diff --git a/third_party/nix/tests/run.nix b/third_party/nix/tests/run.nix deleted file mode 100644 index 77dcbd2a9df0..000000000000 --- a/third_party/nix/tests/run.nix +++ /dev/null @@ -1,17 +0,0 @@ -with import ./config.nix; - -{ - hello = mkDerivation { - name = "hello"; - buildCommand = - '' - mkdir -p $out/bin - cat > $out/bin/hello <<EOF - #! ${shell} - who=\$1 - echo "Hello \''${who:-World} from $out/bin/hello" - EOF - chmod +x $out/bin/hello - ''; - }; -} diff --git a/third_party/nix/tests/run.sh b/third_party/nix/tests/run.sh deleted file mode 100644 index d1dbfd6bd4a6..000000000000 --- a/third_party/nix/tests/run.sh +++ /dev/null @@ -1,28 +0,0 @@ -source common.sh - -clearStore -clearCache - -nix run -f run.nix hello -c hello | grep 'Hello World' -nix run -f run.nix hello -c hello NixOS | grep 'Hello NixOS' - -if ! canUseSandbox; then exit; fi - -chmod -R u+w $TEST_ROOT/store0 || true -rm -rf $TEST_ROOT/store0 - -clearStore - -path=$(nix eval --raw -f run.nix hello) - -# Note: we need the sandbox paths to ensure that the shell is -# visible in the sandbox. -nix run --sandbox-build-dir /build-tmp \ - --sandbox-paths '/nix? /bin? /lib? /lib64? /usr?' \ - --store $TEST_ROOT/store0 -f run.nix hello -c hello | grep 'Hello World' - -path2=$(nix run --sandbox-paths '/nix? /bin? /lib? /lib64? /usr?' --store $TEST_ROOT/store0 -f run.nix hello -c $SHELL -c 'type -p hello') - -[[ $path/bin/hello = $path2 ]] - -[[ -e $TEST_ROOT/store0/nix/store/$(basename $path)/bin/hello ]] diff --git a/third_party/nix/tests/search.nix b/third_party/nix/tests/search.nix deleted file mode 100644 index fea6e7a7a647..000000000000 --- a/third_party/nix/tests/search.nix +++ /dev/null @@ -1,25 +0,0 @@ -with import ./config.nix; - -{ - hello = mkDerivation rec { - name = "hello-${version}"; - version = "0.1"; - buildCommand = "touch $out"; - meta.description = "Empty file"; - }; - foo = mkDerivation rec { - name = "foo-5"; - buildCommand = '' - mkdir -p $out - echo ${name} > $out/${name} - ''; - }; - bar = mkDerivation rec { - name = "bar-3"; - buildCommand = '' - echo "Does not build successfully" - exit 1 - ''; - meta.description = "broken bar"; - }; -} diff --git a/third_party/nix/tests/search.sh b/third_party/nix/tests/search.sh deleted file mode 100644 index 14da3127b0d5..000000000000 --- a/third_party/nix/tests/search.sh +++ /dev/null @@ -1,43 +0,0 @@ -source common.sh - -clearStore -clearCache - -# No packages -(( $(NIX_PATH= nix search -u|wc -l) == 0 )) - -# Haven't updated cache, still nothing -(( $(nix search -f search.nix hello|wc -l) == 0 )) -(( $(nix search -f search.nix |wc -l) == 0 )) - -# Update cache, search should work -(( $(nix search -f search.nix -u hello|wc -l) > 0 )) - -# Use cache -(( $(nix search -f search.nix foo|wc -l) > 0 )) -(( $(nix search foo|wc -l) > 0 )) - -# Test --no-cache works -# No results from cache -(( $(nix search --no-cache foo |wc -l) == 0 )) -# Does find results from file pointed at -(( $(nix search -f search.nix --no-cache foo |wc -l) > 0 )) - -# Check descriptions are searched -(( $(nix search broken | wc -l) > 0 )) - -# Check search that matches nothing -(( $(nix search nosuchpackageexists | wc -l) == 0 )) - -# Search for multiple arguments -(( $(nix search hello empty | wc -l) == 3 )) - -# Multiple arguments will not exist -(( $(nix search hello broken | wc -l) == 0 )) - -## Search expressions - -# Check that empty search string matches all -nix search|grep -q foo -nix search|grep -q bar -nix search|grep -q hello diff --git a/third_party/nix/tests/secure-drv-outputs.nix b/third_party/nix/tests/secure-drv-outputs.nix deleted file mode 100644 index b4ac8ff531f8..000000000000 --- a/third_party/nix/tests/secure-drv-outputs.nix +++ /dev/null @@ -1,23 +0,0 @@ -with import ./config.nix; - -{ - - good = mkDerivation { - name = "good"; - builder = builtins.toFile "builder" - '' - mkdir $out - echo > $out/good - ''; - }; - - bad = mkDerivation { - name = "good"; - builder = builtins.toFile "builder" - '' - mkdir $out - echo > $out/bad - ''; - }; - -} diff --git a/third_party/nix/tests/secure-drv-outputs.sh b/third_party/nix/tests/secure-drv-outputs.sh deleted file mode 100644 index 50a9c4428d30..000000000000 --- a/third_party/nix/tests/secure-drv-outputs.sh +++ /dev/null @@ -1,36 +0,0 @@ -# Test that users cannot register specially-crafted derivations that -# produce output paths belonging to other derivations. This could be -# used to inject malware into the store. - -source common.sh - -clearStore - -startDaemon - -# Determine the output path of the "good" derivation. -goodOut=$(nix-store -q $(nix-instantiate ./secure-drv-outputs.nix -A good)) - -# Instantiate the "bad" derivation. -badDrv=$(nix-instantiate ./secure-drv-outputs.nix -A bad) -badOut=$(nix-store -q $badDrv) - -# Rewrite the bad derivation to produce the output path of the good -# derivation. -rm -f $TEST_ROOT/bad.drv -sed -e "s|$badOut|$goodOut|g" < $badDrv > $TEST_ROOT/bad.drv - -# Add the manipulated derivation to the store and build it. This -# should fail. -if badDrv2=$(nix-store --add $TEST_ROOT/bad.drv); then - nix-store -r "$badDrv2" -fi - -# Now build the good derivation. -goodOut2=$(nix-build ./secure-drv-outputs.nix -A good --no-out-link) -test "$goodOut" = "$goodOut2" - -if ! test -e "$goodOut"/good; then - echo "Bad derivation stole the output path of the good derivation!" - exit 1 -fi diff --git a/third_party/nix/tests/setuid.nix b/third_party/nix/tests/setuid.nix deleted file mode 100644 index 77e83c8d6c2c..000000000000 --- a/third_party/nix/tests/setuid.nix +++ /dev/null @@ -1,108 +0,0 @@ -# Verify that Linux builds cannot create setuid or setgid binaries. - -{ nixpkgs, system, nix }: - -with import (nixpkgs + "/nixos/lib/testing.nix") { inherit system; }; - -makeTest { - - machine = - { config, lib, pkgs, ... }: - { virtualisation.writableStore = true; - nix.package = nix; - nix.binaryCaches = [ ]; - nix.nixPath = [ "nixpkgs=${lib.cleanSource pkgs.path}" ]; - virtualisation.pathsInNixDB = [ pkgs.stdenv pkgs.pkgsi686Linux.stdenv ]; - }; - - testScript = { nodes }: - '' - startAll; - - # Copying to /tmp should succeed. - $machine->succeed('nix-build --no-sandbox -E \'(with import <nixpkgs> {}; runCommand "foo" {} " - mkdir -p $out - cp ${pkgs.coreutils}/bin/id /tmp/id - ")\' '); - - $machine->succeed('[[ $(stat -c %a /tmp/id) = 555 ]]'); - - $machine->succeed("rm /tmp/id"); - - # Creating a setuid binary should fail. - $machine->fail('nix-build --no-sandbox -E \'(with import <nixpkgs> {}; runCommand "foo" {} " - mkdir -p $out - cp ${pkgs.coreutils}/bin/id /tmp/id - chmod 4755 /tmp/id - ")\' '); - - $machine->succeed('[[ $(stat -c %a /tmp/id) = 555 ]]'); - - $machine->succeed("rm /tmp/id"); - - # Creating a setgid binary should fail. - $machine->fail('nix-build --no-sandbox -E \'(with import <nixpkgs> {}; runCommand "foo" {} " - mkdir -p $out - cp ${pkgs.coreutils}/bin/id /tmp/id - chmod 2755 /tmp/id - ")\' '); - - $machine->succeed('[[ $(stat -c %a /tmp/id) = 555 ]]'); - - $machine->succeed("rm /tmp/id"); - - # The checks should also work on 32-bit binaries. - $machine->fail('nix-build --no-sandbox -E \'(with import <nixpkgs> { system = "i686-linux"; }; runCommand "foo" {} " - mkdir -p $out - cp ${pkgs.coreutils}/bin/id /tmp/id - chmod 2755 /tmp/id - ")\' '); - - $machine->succeed('[[ $(stat -c %a /tmp/id) = 555 ]]'); - - $machine->succeed("rm /tmp/id"); - - # The tests above use fchmodat(). Test chmod() as well. - $machine->succeed('nix-build --no-sandbox -E \'(with import <nixpkgs> {}; runCommand "foo" { buildInputs = [ perl ]; } " - mkdir -p $out - cp ${pkgs.coreutils}/bin/id /tmp/id - perl -e \"chmod 0666, qw(/tmp/id) or die\" - ")\' '); - - $machine->succeed('[[ $(stat -c %a /tmp/id) = 666 ]]'); - - $machine->succeed("rm /tmp/id"); - - $machine->fail('nix-build --no-sandbox -E \'(with import <nixpkgs> {}; runCommand "foo" { buildInputs = [ perl ]; } " - mkdir -p $out - cp ${pkgs.coreutils}/bin/id /tmp/id - perl -e \"chmod 04755, qw(/tmp/id) or die\" - ")\' '); - - $machine->succeed('[[ $(stat -c %a /tmp/id) = 555 ]]'); - - $machine->succeed("rm /tmp/id"); - - # And test fchmod(). - $machine->succeed('nix-build --no-sandbox -E \'(with import <nixpkgs> {}; runCommand "foo" { buildInputs = [ perl ]; } " - mkdir -p $out - cp ${pkgs.coreutils}/bin/id /tmp/id - perl -e \"my \\\$x; open \\\$x, qw(/tmp/id); chmod 01750, \\\$x or die\" - ")\' '); - - $machine->succeed('[[ $(stat -c %a /tmp/id) = 1750 ]]'); - - $machine->succeed("rm /tmp/id"); - - $machine->fail('nix-build --no-sandbox -E \'(with import <nixpkgs> {}; runCommand "foo" { buildInputs = [ perl ]; } " - mkdir -p $out - cp ${pkgs.coreutils}/bin/id /tmp/id - perl -e \"my \\\$x; open \\\$x, qw(/tmp/id); chmod 04777, \\\$x or die\" - ")\' '); - - $machine->succeed('[[ $(stat -c %a /tmp/id) = 555 ]]'); - - $machine->succeed("rm /tmp/id"); - ''; - -} diff --git a/third_party/nix/tests/shell.nix b/third_party/nix/tests/shell.nix deleted file mode 100644 index eb39f9039a88..000000000000 --- a/third_party/nix/tests/shell.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ }: - -with import ./config.nix; - -let pkgs = rec { - setupSh = builtins.toFile "setup" '' - export VAR_FROM_STDENV_SETUP=foo - for pkg in $buildInputs; do - export PATH=$PATH:$pkg/bin - done - ''; - - stdenv = mkDerivation { - name = "stdenv"; - buildCommand = '' - mkdir -p $out - ln -s ${setupSh} $out/setup - ''; - }; - - shellDrv = mkDerivation { - name = "shellDrv"; - builder = "/does/not/exist"; - VAR_FROM_NIX = "bar"; - inherit stdenv; - }; - - # Used by nix-shell -p - runCommand = name: args: buildCommand: mkDerivation (args // { - inherit name buildCommand stdenv; - }); - - foo = runCommand "foo" {} '' - mkdir -p $out/bin - echo 'echo foo' > $out/bin/foo - chmod a+rx $out/bin/foo - ln -s ${shell} $out/bin/bash - ''; - - bar = runCommand "bar" {} '' - mkdir -p $out/bin - echo 'echo bar' > $out/bin/bar - chmod a+rx $out/bin/bar - ''; - - bash = shell; - - # ruby "interpreter" that outputs "$@" - ruby = runCommand "ruby" {} '' - mkdir -p $out/bin - echo 'printf -- "$*"' > $out/bin/ruby - chmod a+rx $out/bin/ruby - ''; - - inherit pkgs; -}; in pkgs diff --git a/third_party/nix/tests/shell.shebang.rb b/third_party/nix/tests/shell.shebang.rb deleted file mode 100644 index ea67eb09c1c6..000000000000 --- a/third_party/nix/tests/shell.shebang.rb +++ /dev/null @@ -1,7 +0,0 @@ -#! @SHELL_PROG@ -#! ruby -#! nix-shell -I nixpkgs=shell.nix --no-substitute -#! nix-shell --pure -p ruby -i ruby - -# Contents doesn't matter. -abort("This shouldn't be executed.") diff --git a/third_party/nix/tests/shell.shebang.sh b/third_party/nix/tests/shell.shebang.sh deleted file mode 100755 index f7132043de44..000000000000 --- a/third_party/nix/tests/shell.shebang.sh +++ /dev/null @@ -1,4 +0,0 @@ -#! @ENV_PROG@ nix-shell -#! nix-shell -I nixpkgs=shell.nix --no-substitute -#! nix-shell --pure -i bash -p foo bar -echo "$(foo) $(bar) $@" diff --git a/third_party/nix/tests/signing.sh b/third_party/nix/tests/signing.sh deleted file mode 100644 index 9e29e3fbf063..000000000000 --- a/third_party/nix/tests/signing.sh +++ /dev/null @@ -1,105 +0,0 @@ -source common.sh - -clearStore -clearCache - -nix-store --generate-binary-cache-key cache1.example.org $TEST_ROOT/sk1 $TEST_ROOT/pk1 -pk1=$(cat $TEST_ROOT/pk1) -nix-store --generate-binary-cache-key cache2.example.org $TEST_ROOT/sk2 $TEST_ROOT/pk2 -pk2=$(cat $TEST_ROOT/pk2) - -# Build a path. -outPath=$(nix-build dependencies.nix --no-out-link --secret-key-files "$TEST_ROOT/sk1 $TEST_ROOT/sk2") - -# Verify that the path got signed. -info=$(nix path-info --json $outPath) -[[ $info =~ '"ultimate":true' ]] -[[ $info =~ 'cache1.example.org' ]] -[[ $info =~ 'cache2.example.org' ]] - -# Test "nix verify". -nix verify -r $outPath - -expect 2 nix verify -r $outPath --sigs-needed 1 - -nix verify -r $outPath --sigs-needed 1 --trusted-public-keys $pk1 - -expect 2 nix verify -r $outPath --sigs-needed 2 --trusted-public-keys $pk1 - -nix verify -r $outPath --sigs-needed 2 --trusted-public-keys "$pk1 $pk2" - -nix verify --all --sigs-needed 2 --trusted-public-keys "$pk1 $pk2" - -# Build something unsigned. -outPath2=$(nix-build simple.nix --no-out-link) - -nix verify -r $outPath - -# Verify that the path did not get signed but does have the ultimate bit. -info=$(nix path-info --json $outPath2) -[[ $info =~ '"ultimate":true' ]] -(! [[ $info =~ 'signatures' ]]) - -# Test "nix verify". -nix verify -r $outPath2 - -expect 2 nix verify -r $outPath2 --sigs-needed 1 - -expect 2 nix verify -r $outPath2 --sigs-needed 1 --trusted-public-keys $pk1 - -# Test "nix sign-paths". -nix sign-paths --key-file $TEST_ROOT/sk1 $outPath2 - -nix verify -r $outPath2 --sigs-needed 1 --trusted-public-keys $pk1 - -# Build something content-addressed. -outPathCA=$(IMPURE_VAR1=foo IMPURE_VAR2=bar nix-build ./fixed.nix -A good.0 --no-out-link) - -[[ $(nix path-info --json $outPathCA) =~ '"ca":"fixed:md5:' ]] - -# Content-addressed paths don't need signatures, so they verify -# regardless of --sigs-needed. -nix verify $outPathCA -nix verify $outPathCA --sigs-needed 1000 - -# Check that signing a content-addressed path doesn't overflow validSigs -nix sign-paths --key-file $TEST_ROOT/sk1 $outPathCA -nix verify -r $outPathCA --sigs-needed 1000 --trusted-public-keys $pk1 - -# Copy to a binary cache. -nix copy --to file://$cacheDir $outPath2 - -# Verify that signatures got copied. -info=$(nix path-info --store file://$cacheDir --json $outPath2) -(! [[ $info =~ '"ultimate":true' ]]) -[[ $info =~ 'cache1.example.org' ]] -(! [[ $info =~ 'cache2.example.org' ]]) - -# Verify that adding a signature to a path in a binary cache works. -nix sign-paths --store file://$cacheDir --key-file $TEST_ROOT/sk2 $outPath2 -info=$(nix path-info --store file://$cacheDir --json $outPath2) -[[ $info =~ 'cache1.example.org' ]] -[[ $info =~ 'cache2.example.org' ]] - -# Copying to a diverted store should fail due to a lack of valid signatures. -chmod -R u+w $TEST_ROOT/store0 || true -rm -rf $TEST_ROOT/store0 -(! nix copy --to $TEST_ROOT/store0 $outPath) - -# But succeed if we supply the public keys. -nix copy --to $TEST_ROOT/store0 $outPath --trusted-public-keys $pk1 - -expect 2 nix verify --store $TEST_ROOT/store0 -r $outPath - -nix verify --store $TEST_ROOT/store0 -r $outPath --trusted-public-keys $pk1 -nix verify --store $TEST_ROOT/store0 -r $outPath --sigs-needed 2 --trusted-public-keys "$pk1 $pk2" - -# It should also succeed if we disable signature checking. -(! nix copy --to $TEST_ROOT/store0 $outPath2) -nix copy --to $TEST_ROOT/store0?require-sigs=false $outPath2 - -# But signatures should still get copied. -nix verify --store $TEST_ROOT/store0 -r $outPath2 --trusted-public-keys $pk1 - -# Content-addressed stuff can be copied without signatures. -nix copy --to $TEST_ROOT/store0 $outPathCA diff --git a/third_party/nix/tests/simple.builder.sh b/third_party/nix/tests/simple.builder.sh deleted file mode 100644 index 569e8ca88c1e..000000000000 --- a/third_party/nix/tests/simple.builder.sh +++ /dev/null @@ -1,11 +0,0 @@ -echo "PATH=$PATH" - -# Verify that the PATH is empty. -if mkdir foo 2> /dev/null; then exit 1; fi - -# Set a PATH (!!! impure). -export PATH=$goodPath - -mkdir $out - -echo "Hello World!" > $out/hello \ No newline at end of file diff --git a/third_party/nix/tests/simple.nix b/third_party/nix/tests/simple.nix deleted file mode 100644 index 4223c0f23a5b..000000000000 --- a/third_party/nix/tests/simple.nix +++ /dev/null @@ -1,8 +0,0 @@ -with import ./config.nix; - -mkDerivation { - name = "simple"; - builder = ./simple.builder.sh; - PATH = ""; - goodPath = path; -} diff --git a/third_party/nix/tests/simple.sh b/third_party/nix/tests/simple.sh deleted file mode 100644 index 37631b648c67..000000000000 --- a/third_party/nix/tests/simple.sh +++ /dev/null @@ -1,25 +0,0 @@ -source common.sh - -drvPath=$(nix-instantiate simple.nix) - -test "$(nix-store -q --binding system "$drvPath")" = "$system" - -echo "derivation is $drvPath" - -outPath=$(nix-store -rvv "$drvPath") - -echo "output path is $outPath" - -text=$(cat "$outPath"/hello) -if test "$text" != "Hello World!"; then exit 1; fi - -# Directed delete: $outPath is not reachable from a root, so it should -# be deleteable. -nix-store --delete $outPath -if test -e $outPath/hello; then false; fi - -outPath="$(NIX_REMOTE=local?store=/foo\&real=$TEST_ROOT/real-store nix-instantiate --readonly-mode hash-check.nix)" -if test "$outPath" != "/foo/lfy1s6ca46rm5r6w4gg9hc0axiakjcnm-dependencies.drv"; then - echo "hashDerivationModulo appears broken, got $outPath" - exit 1 -fi diff --git a/third_party/nix/tests/structured-attrs.nix b/third_party/nix/tests/structured-attrs.nix deleted file mode 100644 index 6c77a43913a7..000000000000 --- a/third_party/nix/tests/structured-attrs.nix +++ /dev/null @@ -1,66 +0,0 @@ -with import ./config.nix; - -let - - dep = mkDerivation { - name = "dep"; - buildCommand = '' - mkdir $out; echo bla > $out/bla - ''; - }; - -in - -mkDerivation { - name = "structured"; - - __structuredAttrs = true; - - buildCommand = '' - set -x - - [[ $int = 123456789 ]] - [[ -z $float ]] - [[ -n $boolTrue ]] - [[ -z $boolFalse ]] - [[ -n ''${hardening[format]} ]] - [[ -z ''${hardening[fortify]} ]] - [[ ''${#buildInputs[@]} = 7 ]] - [[ ''${buildInputs[2]} = c ]] - [[ -v nothing ]] - [[ -z $nothing ]] - - mkdir ''${outputs[out]} - echo bar > $dest - - json=$(cat .attrs.json) - [[ $json =~ '"narHash":"sha256:1r7yc43zqnzl5b0als5vnyp649gk17i37s7mj00xr8kc47rjcybk"' ]] - [[ $json =~ '"narSize":288' ]] - [[ $json =~ '"closureSize":288' ]] - [[ $json =~ '"references":[]' ]] - ''; - - buildInputs = [ "a" "b" "c" 123 "'" "\"" null ]; - - hardening.format = true; - hardening.fortify = false; - - outer.inner = [ 1 2 3 ]; - - int = 123456789; - - float = 123.456; - - boolTrue = true; - boolFalse = false; - - nothing = null; - - dest = "${placeholder "out"}/foo"; - - "foo bar" = "BAD"; - "1foobar" = "BAD"; - "foo$" = "BAD"; - - exportReferencesGraph.refs = [ dep ]; -} diff --git a/third_party/nix/tests/structured-attrs.sh b/third_party/nix/tests/structured-attrs.sh deleted file mode 100644 index 9ba2672b6833..000000000000 --- a/third_party/nix/tests/structured-attrs.sh +++ /dev/null @@ -1,7 +0,0 @@ -source common.sh - -clearStore - -outPath=$(nix-build structured-attrs.nix --no-out-link) - -[[ $(cat $outPath/foo) = bar ]] diff --git a/third_party/nix/tests/tarball.sh b/third_party/nix/tests/tarball.sh deleted file mode 100644 index ba534c6261ad..000000000000 --- a/third_party/nix/tests/tarball.sh +++ /dev/null @@ -1,28 +0,0 @@ -source common.sh - -clearStore - -rm -rf $TEST_HOME - -tarroot=$TEST_ROOT/tarball -rm -rf $tarroot -mkdir -p $tarroot -cp dependencies.nix $tarroot/default.nix -cp config.nix dependencies.builder*.sh $tarroot/ - -tarball=$TEST_ROOT/tarball.tar.xz -(cd $TEST_ROOT && tar c tarball) | xz > $tarball - -nix-env -f file://$tarball -qa --out-path | grep -q dependencies - -nix-build -o $TEST_ROOT/result file://$tarball - -nix-build -o $TEST_ROOT/result '<foo>' -I foo=file://$tarball - -nix-build -o $TEST_ROOT/result -E "import (fetchTarball file://$tarball)" - -nix-instantiate --eval -E '1 + 2' -I fnord=file://no-such-tarball.tar.xz -nix-instantiate --eval -E 'with <fnord/xyzzy>; 1 + 2' -I fnord=file://no-such-tarball.tar.xz -(! nix-instantiate --eval -E '<fnord/xyzzy> 1' -I fnord=file://no-such-tarball.tar.xz) - -nix-instantiate --eval -E '<fnord/config.nix>' -I fnord=file://no-such-tarball.tar.xz -I fnord=. diff --git a/third_party/nix/tests/timeout.nix b/third_party/nix/tests/timeout.nix deleted file mode 100644 index d0e949e31498..000000000000 --- a/third_party/nix/tests/timeout.nix +++ /dev/null @@ -1,31 +0,0 @@ -with import ./config.nix; - -{ - - infiniteLoop = mkDerivation { - name = "timeout"; - buildCommand = '' - touch $out - echo "'timeout' builder entering an infinite loop" - while true ; do echo -n .; done - ''; - }; - - silent = mkDerivation { - name = "silent"; - buildCommand = '' - touch $out - sleep 60 - ''; - }; - - closeLog = mkDerivation { - name = "silent"; - buildCommand = '' - touch $out - exec > /dev/null 2>&1 - sleep 1000000000 - ''; - }; - -} diff --git a/third_party/nix/tests/timeout.sh b/third_party/nix/tests/timeout.sh deleted file mode 100644 index eea9b5731da0..000000000000 --- a/third_party/nix/tests/timeout.sh +++ /dev/null @@ -1,40 +0,0 @@ -# Test the `--timeout' option. - -source common.sh - - -set +e -messages=$(nix-build -Q timeout.nix -A infiniteLoop --timeout 2 2>&1) -status=$? -set -e - -if [ $status -ne 101 ]; then - echo "error: 'nix-store' exited with '$status'; should have exited 101" - exit 1 -fi - -if ! echo "$messages" | grep -q "timed out"; then - echo "error: build may have failed for reasons other than timeout; output:" - echo "$messages" >&2 - exit 1 -fi - -if nix-build -Q timeout.nix -A infiniteLoop --max-build-log-size 100; then - echo "build should have failed" - exit 1 -fi - -if nix-build timeout.nix -A silent --max-silent-time 2; then - echo "build should have failed" - exit 1 -fi - -if nix-build timeout.nix -A closeLog; then - echo "build should have failed" - exit 1 -fi - -if nix build -f timeout.nix silent --max-silent-time 2; then - echo "build should have failed" - exit 1 -fi diff --git a/third_party/nix/tests/user-envs.builder.sh b/third_party/nix/tests/user-envs.builder.sh deleted file mode 100644 index 5fafa797f11e..000000000000 --- a/third_party/nix/tests/user-envs.builder.sh +++ /dev/null @@ -1,5 +0,0 @@ -mkdir $out -mkdir $out/bin -echo "#! $shell" > $out/bin/$progName -echo "echo $name" >> $out/bin/$progName -chmod +x $out/bin/$progName diff --git a/third_party/nix/tests/user-envs.nix b/third_party/nix/tests/user-envs.nix deleted file mode 100644 index 1aa410cc9680..000000000000 --- a/third_party/nix/tests/user-envs.nix +++ /dev/null @@ -1,29 +0,0 @@ -# Some dummy arguments... -{ foo ? "foo" -}: - -with import ./config.nix; - -assert foo == "foo"; - -let - - makeDrv = name: progName: (mkDerivation { - inherit name progName system; - builder = ./user-envs.builder.sh; - } // { - meta = { - description = "A silly test package"; - }; - }); - -in - - [ - (makeDrv "foo-1.0" "foo") - (makeDrv "foo-2.0pre1" "foo") - (makeDrv "bar-0.1" "bar") - (makeDrv "foo-2.0" "foo") - (makeDrv "bar-0.1.1" "bar") - (makeDrv "foo-0.1" "foo" // { meta.priority = 10; }) - ] diff --git a/third_party/nix/tests/user-envs.sh b/third_party/nix/tests/user-envs.sh deleted file mode 100644 index aebf6a2a2b87..000000000000 --- a/third_party/nix/tests/user-envs.sh +++ /dev/null @@ -1,181 +0,0 @@ -source common.sh - -if [ -z "$storeCleared" ]; then - clearStore -fi - -clearProfiles - -# Query installed: should be empty. -test "$(nix-env -p $profiles/test -q '*' | wc -l)" -eq 0 - -mkdir -p $TEST_HOME -nix-env --switch-profile $profiles/test - -# Query available: should contain several. -test "$(nix-env -f ./user-envs.nix -qa '*' | wc -l)" -eq 6 -outPath10=$(nix-env -f ./user-envs.nix -qa --out-path --no-name '*' | grep foo-1.0) -drvPath10=$(nix-env -f ./user-envs.nix -qa --drv-path --no-name '*' | grep foo-1.0) -[ -n "$outPath10" -a -n "$drvPath10" ] - -# Query descriptions. -nix-env -f ./user-envs.nix -qa '*' --description | grep -q silly -rm -rf $HOME/.nix-defexpr -ln -s $(pwd)/user-envs.nix $HOME/.nix-defexpr -nix-env -qa '*' --description | grep -q silly - -# Query the system. -nix-env -qa '*' --system | grep -q $system - -# Install "foo-1.0". -nix-env -i foo-1.0 - -# Query installed: should contain foo-1.0 now (which should be -# executable). -test "$(nix-env -q '*' | wc -l)" -eq 1 -nix-env -q '*' | grep -q foo-1.0 -test "$($profiles/test/bin/foo)" = "foo-1.0" - -# Test nix-env -qc to compare installed against available packages, and vice versa. -nix-env -qc '*' | grep -q '< 2.0' -nix-env -qac '*' | grep -q '> 1.0' - -# Test the -b flag to filter out source-only packages. -[ "$(nix-env -qab | wc -l)" -eq 1 ] - -# Test the -s flag to get package status. -nix-env -qas | grep -q 'IP- foo-1.0' -nix-env -qas | grep -q -- '--- bar-0.1' - -# Disable foo. -nix-env --set-flag active false foo -(! [ -e "$profiles/test/bin/foo" ]) - -# Enable foo. -nix-env --set-flag active true foo -[ -e "$profiles/test/bin/foo" ] - -# Store the path of foo-1.0. -outPath10_=$(nix-env -q --out-path --no-name '*' | grep foo-1.0) -echo "foo-1.0 = $outPath10" -[ "$outPath10" = "$outPath10_" ] - -# Install "foo-2.0pre1": should remove foo-1.0. -nix-env -i foo-2.0pre1 - -# Query installed: should contain foo-2.0pre1 now. -test "$(nix-env -q '*' | wc -l)" -eq 1 -nix-env -q '*' | grep -q foo-2.0pre1 -test "$($profiles/test/bin/foo)" = "foo-2.0pre1" - -# Upgrade "foo": should install foo-2.0. -NIX_PATH=nixpkgs=./user-envs.nix:$NIX_PATH nix-env -f '<nixpkgs>' -u foo - -# Query installed: should contain foo-2.0 now. -test "$(nix-env -q '*' | wc -l)" -eq 1 -nix-env -q '*' | grep -q foo-2.0 -test "$($profiles/test/bin/foo)" = "foo-2.0" - -# Store the path of foo-2.0. -outPath20=$(nix-env -q --out-path --no-name '*' | grep foo-2.0) -test -n "$outPath20" - -# Install bar-0.1, uninstall foo. -nix-env -i bar-0.1 -nix-env -e foo - -# Query installed: should only contain bar-0.1 now. -if nix-env -q '*' | grep -q foo; then false; fi -nix-env -q '*' | grep -q bar - -# Rollback: should bring "foo" back. -oldGen="$(nix-store -q --resolve $profiles/test)" -nix-env --rollback -[ "$(nix-store -q --resolve $profiles/test)" != "$oldGen" ] -nix-env -q '*' | grep -q foo-2.0 -nix-env -q '*' | grep -q bar - -# Rollback again: should remove "bar". -nix-env --rollback -nix-env -q '*' | grep -q foo-2.0 -if nix-env -q '*' | grep -q bar; then false; fi - -# Count generations. -nix-env --list-generations -test "$(nix-env --list-generations | wc -l)" -eq 7 - -# Doing the same operation twice results in the same generation, which triggers -# "lazy" behaviour and does not create a new symlink. - -nix-env -i foo -nix-env -i foo - -# Count generations. -nix-env --list-generations -test "$(nix-env --list-generations | wc -l)" -eq 8 - -# Switch to a specified generation. -nix-env --switch-generation 7 -[ "$(nix-store -q --resolve $profiles/test)" = "$oldGen" ] - -# Install foo-1.0, now using its store path. -nix-env -i "$outPath10" -nix-env -q '*' | grep -q foo-1.0 -nix-store -qR $profiles/test | grep "$outPath10" -nix-store -q --referrers-closure $profiles/test | grep "$(nix-store -q --resolve $profiles/test)" -[ "$(nix-store -q --deriver "$outPath10")" = $drvPath10 ] - -# Uninstall foo-1.0, using a symlink to its store path. -ln -sfn $outPath10/bin/foo $TEST_ROOT/symlink -nix-env -e $TEST_ROOT/symlink -if nix-env -q '*' | grep -q foo; then false; fi -(! nix-store -qR $profiles/test | grep "$outPath10") - -# Install foo-1.0, now using a symlink to its store path. -nix-env -i $TEST_ROOT/symlink -nix-env -q '*' | grep -q foo - -# Delete all old generations. -nix-env --delete-generations old - -# Run the garbage collector. This should get rid of foo-2.0 but not -# foo-1.0. -nix-collect-garbage -test -e "$outPath10" -(! [ -e "$outPath20" ]) - -# Uninstall everything -nix-env -e '*' -test "$(nix-env -q '*' | wc -l)" -eq 0 - -# Installing "foo" should only install the newest foo. -nix-env -i foo -test "$(nix-env -q '*' | grep foo- | wc -l)" -eq 1 -nix-env -q '*' | grep -q foo-2.0 - -# On the other hand, this should install both (and should fail due to -# a collision). -nix-env -e '*' -(! nix-env -i foo-1.0 foo-2.0) - -# Installing "*" should install one foo and one bar. -nix-env -e '*' -nix-env -i '*' -test "$(nix-env -q '*' | wc -l)" -eq 2 -nix-env -q '*' | grep -q foo-2.0 -nix-env -q '*' | grep -q bar-0.1.1 - -# Test priorities: foo-0.1 has a lower priority than foo-1.0, so it -# should be possible to install both without a collision. Also test -# ‘--set-flag priority’ to manually override the declared priorities. -nix-env -e '*' -nix-env -i foo-0.1 foo-1.0 -[ "$($profiles/test/bin/foo)" = "foo-1.0" ] -nix-env --set-flag priority 1 foo-0.1 -[ "$($profiles/test/bin/foo)" = "foo-0.1" ] - -# Test nix-env --set. -nix-env --set $outPath10 -[ "$(nix-store -q --resolve $profiles/test)" = $outPath10 ] -nix-env --set $drvPath10 -[ "$(nix-store -q --resolve $profiles/test)" = $outPath10 ] |