aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-03-07 10:46:47 +0100
committereldritch horrors <pennae@lix.systems>2024-03-07 10:46:47 +0100
commit9eb58f5209f9cd1fd18f33b691c6a613075dffc4 (patch)
tree5cf7c86dd196f0f3b5a83d4c4cc962d2b8333349 /tests
parentca03f7cc28ba09cb4db59ca51c52d4e7783f11e0 (diff)
Merge pull request #9032 from Ma27/structured-attrs-env-vars
structured attrs: improve support / usage of NIX_ATTRS_{SH,JSON}_FILE (cherry picked from commit 3c042f3b0b0a7ef9c47bf049f5410dbd4aac9e90) Change-Id: I7e41838338ee1edf31fff6f9e354c3db2bba6c0e
Diffstat (limited to 'tests')
-rw-r--r--tests/functional/build-hook-ca-fixed.nix5
-rw-r--r--tests/functional/build-hook.nix5
-rw-r--r--tests/functional/config.nix.in5
-rw-r--r--tests/functional/failing.nix5
-rw-r--r--tests/functional/hermetic.nix5
-rw-r--r--tests/functional/structured-attrs.sh14
6 files changed, 33 insertions, 6 deletions
diff --git a/tests/functional/build-hook-ca-fixed.nix b/tests/functional/build-hook-ca-fixed.nix
index 4cb9e85d1..0ce6d9b12 100644
--- a/tests/functional/build-hook-ca-fixed.nix
+++ b/tests/functional/build-hook-ca-fixed.nix
@@ -8,7 +8,10 @@ let
derivation ({
inherit system;
builder = busybox;
- args = ["sh" "-e" args.builder or (builtins.toFile "builder-${args.name}.sh" "if [ -e .attrs.sh ]; then source .attrs.sh; fi; eval \"$buildCommand\"")];
+ args = ["sh" "-e" args.builder or (builtins.toFile "builder-${args.name}.sh" ''
+ if [ -e "$NIX_ATTRS_SH_FILE" ]; then source $NIX_ATTRS_SH_FILE; fi;
+ eval "$buildCommand"
+ '')];
outputHashMode = "recursive";
outputHashAlgo = "sha256";
} // removeAttrs args ["builder" "meta" "passthru"])
diff --git a/tests/functional/build-hook.nix b/tests/functional/build-hook.nix
index 7effd7903..99a13aee4 100644
--- a/tests/functional/build-hook.nix
+++ b/tests/functional/build-hook.nix
@@ -14,7 +14,10 @@ let
derivation ({
inherit system;
builder = busybox;
- args = ["sh" "-e" args.builder or (builtins.toFile "builder-${args.name}.sh" "if [ -e .attrs.sh ]; then source .attrs.sh; fi; eval \"$buildCommand\"")];
+ args = ["sh" "-e" args.builder or (builtins.toFile "builder-${args.name}.sh" ''
+ if [ -e "$NIX_ATTRS_SH_FILE" ]; then source $NIX_ATTRS_SH_FILE; fi;
+ eval "$buildCommand"
+ '')];
} // removeAttrs args ["builder" "meta" "passthru"]
// caArgs)
// { meta = args.meta or {}; passthru = args.passthru or {}; };
diff --git a/tests/functional/config.nix.in b/tests/functional/config.nix.in
index 7facbdcbc..00dc007e1 100644
--- a/tests/functional/config.nix.in
+++ b/tests/functional/config.nix.in
@@ -20,7 +20,10 @@ rec {
derivation ({
inherit system;
builder = shell;
- args = ["-e" args.builder or (builtins.toFile "builder-${args.name}.sh" "if [ -e .attrs.sh ]; then source .attrs.sh; fi; eval \"$buildCommand\"")];
+ args = ["-e" args.builder or (builtins.toFile "builder-${args.name}.sh" ''
+ if [ -e "$NIX_ATTRS_SH_FILE" ]; then source $NIX_ATTRS_SH_FILE; fi;
+ eval "$buildCommand"
+ '')];
PATH = path;
} // caArgs // removeAttrs args ["builder" "meta"])
// { meta = args.meta or {}; };
diff --git a/tests/functional/failing.nix b/tests/functional/failing.nix
index 2a0350d4d..d25e2d6b6 100644
--- a/tests/functional/failing.nix
+++ b/tests/functional/failing.nix
@@ -6,7 +6,10 @@ let
derivation ({
inherit system;
builder = busybox;
- args = ["sh" "-e" args.builder or (builtins.toFile "builder-${args.name}.sh" "if [ -e .attrs.sh ]; then source .attrs.sh; fi; eval \"$buildCommand\"")];
+ args = ["sh" "-e" args.builder or (builtins.toFile "builder-${args.name}.sh" ''
+ if [ -e "$NIX_ATTRS_SH_FILE" ]; then source $NIX_ATTRS_SH_FILE; fi;
+ eval "$buildCommand"
+ '')];
} // removeAttrs args ["builder" "meta"])
// { meta = args.meta or {}; };
in
diff --git a/tests/functional/hermetic.nix b/tests/functional/hermetic.nix
index 4c9d7a51f..0513540f0 100644
--- a/tests/functional/hermetic.nix
+++ b/tests/functional/hermetic.nix
@@ -14,7 +14,10 @@ let
derivation ({
inherit system;
builder = busybox;
- args = ["sh" "-e" args.builder or (builtins.toFile "builder-${args.name}.sh" "if [ -e .attrs.sh ]; then source .attrs.sh; fi; eval \"$buildCommand\"")];
+ args = ["sh" "-e" args.builder or (builtins.toFile "builder-${args.name}.sh" ''
+ if [ -e "$NIX_ATTRS_SH_FILE" ]; then source $NIX_ATTRS_SH_FILE; fi;
+ eval "$buildCommand"
+ '')];
} // removeAttrs args ["builder" "meta" "passthru"]
// caArgs)
// { meta = args.meta or {}; passthru = args.passthru or {}; };
diff --git a/tests/functional/structured-attrs.sh b/tests/functional/structured-attrs.sh
index 378dbc735..f11992dcd 100644
--- a/tests/functional/structured-attrs.sh
+++ b/tests/functional/structured-attrs.sh
@@ -15,9 +15,21 @@ nix-build structured-attrs.nix -A all -o $TEST_ROOT/result
export NIX_BUILD_SHELL=$SHELL
env NIX_PATH=nixpkgs=shell.nix nix-shell structured-attrs-shell.nix \
- --run 'test -e .attrs.json; test "3" = "$(jq ".my.list|length" < $NIX_ATTRS_JSON_FILE)"'
+ --run 'test "3" = "$(jq ".my.list|length" < $NIX_ATTRS_JSON_FILE)"'
+
+nix develop -f structured-attrs-shell.nix -c bash -c 'test "3" = "$(jq ".my.list|length" < $NIX_ATTRS_JSON_FILE)"'
# `nix develop` is a slightly special way of dealing with environment vars, it parses
# these from a shell-file exported from a derivation. This is to test especially `outputs`
# (which is an associative array in thsi case) being fine.
nix develop -f structured-attrs-shell.nix -c bash -c 'test -n "$out"'
+
+nix print-dev-env -f structured-attrs-shell.nix | grepQuiet 'NIX_ATTRS_JSON_FILE='
+nix print-dev-env -f structured-attrs-shell.nix | grepQuiet 'NIX_ATTRS_SH_FILE='
+nix print-dev-env -f shell.nix shellDrv | grepQuietInverse 'NIX_ATTRS_SH_FILE'
+
+jsonOut="$(nix print-dev-env -f structured-attrs-shell.nix --json)"
+
+test "$(<<<"$jsonOut" jq '.structuredAttrs|keys|.[]' -r)" = "$(printf ".attrs.json\n.attrs.sh")"
+
+test "$(<<<"$jsonOut" jq '.variables.out.value' -r)" = "$(<<<"$jsonOut" jq '.structuredAttrs.".attrs.json"' -r | jq -r '.outputs.out')"