aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/content-addressed.nix22
-rw-r--r--tests/content-addressed.sh25
-rw-r--r--tests/tarball.sh2
3 files changed, 39 insertions, 10 deletions
diff --git a/tests/content-addressed.nix b/tests/content-addressed.nix
index 5e9bad0ac..3dcf916c3 100644
--- a/tests/content-addressed.nix
+++ b/tests/content-addressed.nix
@@ -29,4 +29,26 @@ rec {
outputHashMode = "recursive";
outputHashAlgo = "sha256";
};
+ dependentCA = mkDerivation {
+ name = "dependent";
+ buildCommand = ''
+ echo "building a dependent derivation"
+ mkdir -p $out
+ echo ${rootCA}/hello > $out/dep
+ '';
+ __contentAddressed = true;
+ outputHashMode = "recursive";
+ outputHashAlgo = "sha256";
+ };
+ transitivelyDependentCA = mkDerivation {
+ name = "transitively-dependent";
+ buildCommand = ''
+ echo "building transitively-dependent"
+ cat ${dependentCA}/dep
+ echo ${dependentCA} > $out
+ '';
+ __contentAddressed = true;
+ outputHashMode = "recursive";
+ outputHashAlgo = "sha256";
+ };
}
diff --git a/tests/content-addressed.sh b/tests/content-addressed.sh
index 0ae2852d2..61ec03fe3 100644
--- a/tests/content-addressed.sh
+++ b/tests/content-addressed.sh
@@ -2,19 +2,26 @@
source common.sh
-clearStore
-clearCache
-
-export REMOTE_STORE=file://$cacheDir
-
drv=$(nix-instantiate --experimental-features ca-derivations ./content-addressed.nix -A rootCA --arg seed 1)
nix --experimental-features 'nix-command ca-derivations' show-derivation --derivation "$drv" --arg seed 1
-commonArgs=("--experimental-features" "ca-derivations" "./content-addressed.nix" "-A" "rootCA" "--no-out-link")
-out1=$(nix-build "${commonArgs[@]}" ./content-addressed.nix --arg seed 1)
-out2=$(nix-build "${commonArgs[@]}" ./content-addressed.nix --arg seed 2)
+testDerivation () {
+ local derivationPath=$1
+ local commonArgs=("--experimental-features" "ca-derivations" "./content-addressed.nix" "-A" "$derivationPath" "--no-out-link")
+ local out1 out2
+ out1=$(nix-build "${commonArgs[@]}" --arg seed 1)
+ out2=$(nix-build "${commonArgs[@]}" --arg seed 2 "${secondSeedArgs[@]}")
+ test "$out1" == "$out2"
+}
-test $out1 == $out2
+testDerivation rootCA
+# The seed only changes the root derivation, and not it's output, so the
+# dependent derivations should only need to be built once.
+secondSeedArgs=(-j0)
+# Don't directly build depenentCA, that way we'll make sure we dodn't rely on
+# dependent derivations always being already built.
+#testDerivation dependentCA
+testDerivation transitivelyDependentCA
nix-instantiate --experimental-features ca-derivations ./content-addressed.nix -A rootCA --arg seed 5
nix-collect-garbage --experimental-features ca-derivations --option keep-derivations true
diff --git a/tests/tarball.sh b/tests/tarball.sh
index 88a1a07a0..fe65a22e4 100644
--- a/tests/tarball.sh
+++ b/tests/tarball.sh
@@ -17,7 +17,7 @@ test_tarball() {
local compressor="$2"
tarball=$TEST_ROOT/tarball.tar$ext
- (cd $TEST_ROOT && tar c tarball) | $compressor > $tarball
+ (cd $TEST_ROOT && tar cf - tarball) | $compressor > $tarball
nix-env -f file://$tarball -qa --out-path | grep -q dependencies