aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorEelco Dolstra <edolstra@gmail.com>2020-09-29 11:37:29 +0200
committerGitHub <noreply@github.com>2020-09-29 11:37:29 +0200
commit1e8855a7f71c31f1b6353e0cf4d752eacc85f9c8 (patch)
treeb114d877ff4fda4fa39281ebec0900d36c3de81f /tests
parented02d20e1d437ea2c3f99b13f1dd2ff31c48e0c8 (diff)
parent00135e13f49e9b20e3ef03f2516e7cc277c40ca9 (diff)
Merge pull request #3958 from obsidiansystems/ca-floating-upstream
CA derivations that depend on other CA derivations
Diffstat (limited to 'tests')
-rw-r--r--tests/content-addressed.nix22
-rw-r--r--tests/content-addressed.sh25
2 files changed, 38 insertions, 9 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