From 8497f0fe197cb1c8de2967cdae20e42c1ac25830 Mon Sep 17 00:00:00 2001 From: Jade Lovelace Date: Thu, 26 Sep 2024 14:12:18 -0700 Subject: [PATCH] tests: move nix-shell related tests to subdir This change feels kind of gross and reveals a fair bit about the disorganization of our tests, but I think it makes parts of it a bit better. Change-Id: Idb8d9a00cbd75d5c156678c6b408b42b59d5e4d7 --- tests/functional/ca/nix-shell.sh | 4 +-- tests/functional/flakes/develop-r8854.sh | 2 +- tests/functional/flakes/develop.sh | 2 +- tests/functional/meson.build | 5 +++- .../{nix-shell.sh => nix-shell/basic.sh} | 2 +- tests/functional/{ => nix-shell}/ca-shell.nix | 0 tests/functional/nix-shell/config.nix.in | 1 + tests/functional/nix-shell/meson.build | 6 ++++ tests/functional/{ => nix-shell}/shell.nix | 0 .../{ => nix-shell}/shell.shebang.nix | 0 .../{ => nix-shell}/shell.shebang.rb | 0 .../{ => nix-shell}/shell.shebang.sh | 0 .../structured-attrs-shell.nix | 0 .../functional/nix-shell/structured-attrs.sh | 28 +++++++++++++++++++ tests/functional/structured-attrs.sh | 21 -------------- 15 files changed, 44 insertions(+), 27 deletions(-) rename tests/functional/{nix-shell.sh => nix-shell/basic.sh} (99%) rename tests/functional/{ => nix-shell}/ca-shell.nix (100%) create mode 120000 tests/functional/nix-shell/config.nix.in create mode 100644 tests/functional/nix-shell/meson.build rename tests/functional/{ => nix-shell}/shell.nix (100%) rename tests/functional/{ => nix-shell}/shell.shebang.nix (100%) rename tests/functional/{ => nix-shell}/shell.shebang.rb (100%) rename tests/functional/{ => nix-shell}/shell.shebang.sh (100%) rename tests/functional/{ => nix-shell}/structured-attrs-shell.nix (100%) create mode 100644 tests/functional/nix-shell/structured-attrs.sh diff --git a/tests/functional/ca/nix-shell.sh b/tests/functional/ca/nix-shell.sh index d1fbe54d1..a9b09069e 100755 --- a/tests/functional/ca/nix-shell.sh +++ b/tests/functional/ca/nix-shell.sh @@ -3,5 +3,5 @@ source common.sh CONTENT_ADDRESSED=true -cd .. -source ./nix-shell.sh +cd ../nix-shell +source ./basic.sh diff --git a/tests/functional/flakes/develop-r8854.sh b/tests/functional/flakes/develop-r8854.sh index efe129bf4..9cf4e7cf3 100644 --- a/tests/functional/flakes/develop-r8854.sh +++ b/tests/functional/flakes/develop-r8854.sh @@ -24,7 +24,7 @@ EOF # Create fake nixpkgs flake. mkdir -p $TEST_HOME/nixpkgs -cp ../config.nix ../shell.nix $TEST_HOME/nixpkgs +cp ../config.nix ../nix-shell/shell.nix $TEST_HOME/nixpkgs cat <$TEST_HOME/nixpkgs/flake.nix { outputs = {self}: { diff --git a/tests/functional/flakes/develop.sh b/tests/functional/flakes/develop.sh index e1e53d364..71d448a78 100644 --- a/tests/functional/flakes/develop.sh +++ b/tests/functional/flakes/develop.sh @@ -21,7 +21,7 @@ EOF # Create fake nixpkgs flake. mkdir -p $TEST_HOME/nixpkgs -cp ../config.nix ../shell.nix $TEST_HOME/nixpkgs +cp ../config.nix ../nix-shell/shell.nix $TEST_HOME/nixpkgs cat <$TEST_HOME/nixpkgs/flake.nix { outputs = {self}: { diff --git a/tests/functional/meson.build b/tests/functional/meson.build index f56ced48d..3b610bcdc 100644 --- a/tests/functional/meson.build +++ b/tests/functional/meson.build @@ -25,6 +25,8 @@ config_nix_in = configure_file( subdir('ca') # Just configures `dyn-drv/config.nix.in`. Same as above. subdir('dyn-drv') +# Just configures `nix-shell/config.nix.in`. Same as above. +subdir('nix-shell') subdir('plugins') subdir('test-libstoreconsumer') @@ -111,7 +113,8 @@ functional_tests_scripts = [ 'hash.sh', 'gc-non-blocking.sh', 'check.sh', - 'nix-shell.sh', + 'nix-shell/basic.sh', + 'nix-shell/structured-attrs.sh', 'check-refs.sh', 'build-remote-input-addressed.sh', 'secure-drv-outputs.sh', diff --git a/tests/functional/nix-shell.sh b/tests/functional/nix-shell/basic.sh similarity index 99% rename from tests/functional/nix-shell.sh rename to tests/functional/nix-shell/basic.sh index 04c83138e..5c6e81ec2 100644 --- a/tests/functional/nix-shell.sh +++ b/tests/functional/nix-shell/basic.sh @@ -1,4 +1,4 @@ -source common.sh +source ../common.sh clearStore diff --git a/tests/functional/ca-shell.nix b/tests/functional/nix-shell/ca-shell.nix similarity index 100% rename from tests/functional/ca-shell.nix rename to tests/functional/nix-shell/ca-shell.nix diff --git a/tests/functional/nix-shell/config.nix.in b/tests/functional/nix-shell/config.nix.in new file mode 120000 index 000000000..af24ddb30 --- /dev/null +++ b/tests/functional/nix-shell/config.nix.in @@ -0,0 +1 @@ +../config.nix.in \ No newline at end of file diff --git a/tests/functional/nix-shell/meson.build b/tests/functional/nix-shell/meson.build new file mode 100644 index 000000000..f3f4a3b2b --- /dev/null +++ b/tests/functional/nix-shell/meson.build @@ -0,0 +1,6 @@ +# test_confdata set from tests/functional/meson.build +configure_file( + input : 'config.nix.in', + output : 'config.nix', + configuration : test_confdata, +) diff --git a/tests/functional/shell.nix b/tests/functional/nix-shell/shell.nix similarity index 100% rename from tests/functional/shell.nix rename to tests/functional/nix-shell/shell.nix diff --git a/tests/functional/shell.shebang.nix b/tests/functional/nix-shell/shell.shebang.nix similarity index 100% rename from tests/functional/shell.shebang.nix rename to tests/functional/nix-shell/shell.shebang.nix diff --git a/tests/functional/shell.shebang.rb b/tests/functional/nix-shell/shell.shebang.rb similarity index 100% rename from tests/functional/shell.shebang.rb rename to tests/functional/nix-shell/shell.shebang.rb diff --git a/tests/functional/shell.shebang.sh b/tests/functional/nix-shell/shell.shebang.sh similarity index 100% rename from tests/functional/shell.shebang.sh rename to tests/functional/nix-shell/shell.shebang.sh diff --git a/tests/functional/structured-attrs-shell.nix b/tests/functional/nix-shell/structured-attrs-shell.nix similarity index 100% rename from tests/functional/structured-attrs-shell.nix rename to tests/functional/nix-shell/structured-attrs-shell.nix diff --git a/tests/functional/nix-shell/structured-attrs.sh b/tests/functional/nix-shell/structured-attrs.sh new file mode 100644 index 000000000..1d2fa8fed --- /dev/null +++ b/tests/functional/nix-shell/structured-attrs.sh @@ -0,0 +1,28 @@ +source ../common.sh + +# 27ce722638 required some incompatible changes to the nix file, so skip this +# tests for the older versions +requireDaemonNewerThan "2.4pre20210712" + +clearStore + +export NIX_BUILD_SHELL=$SHELL +env NIX_PATH=nixpkgs=shell.nix nix-shell structured-attrs-shell.nix \ + --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')" diff --git a/tests/functional/structured-attrs.sh b/tests/functional/structured-attrs.sh index f11992dcd..86d8b76c3 100644 --- a/tests/functional/structured-attrs.sh +++ b/tests/functional/structured-attrs.sh @@ -12,24 +12,3 @@ nix-build structured-attrs.nix -A all -o $TEST_ROOT/result [[ $(cat $TEST_ROOT/result/foo) = bar ]] [[ $(cat $TEST_ROOT/result-dev/foo) = foo ]] - -export NIX_BUILD_SHELL=$SHELL -env NIX_PATH=nixpkgs=shell.nix nix-shell structured-attrs-shell.nix \ - --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')"