From 7ea31c6e5674ad0afc329f72c6acfd3f76dfa2fe Mon Sep 17 00:00:00 2001 From: John Ericson Date: Fri, 19 Sep 2025 14:16:35 -0400 Subject: [PATCH] Run multiple outputs and build-delete test for CA drvs also --- maintainers/flake-module.nix | 2 ++ tests/functional/build-delete.sh | 4 +++ tests/functional/ca/build-delete.sh | 7 ++++ tests/functional/ca/meson.build | 2 ++ tests/functional/ca/multiple-outputs.sh | 7 ++++ tests/functional/multiple-outputs.sh | 48 ++++++++++++++++--------- 6 files changed, 53 insertions(+), 17 deletions(-) create mode 100644 tests/functional/ca/build-delete.sh create mode 100644 tests/functional/ca/multiple-outputs.sh diff --git a/maintainers/flake-module.nix b/maintainers/flake-module.nix index a54499654..a5360675f 100644 --- a/maintainers/flake-module.nix +++ b/maintainers/flake-module.nix @@ -233,10 +233,12 @@ # Content-addressed test files that use recursive-*looking* sourcing # (cd .. && source ), causing shellcheck to loop # They're small wrapper scripts with not a lot going on + ''^tests/functional/ca/build-delete\.sh$'' ''^tests/functional/ca/build-dry\.sh$'' ''^tests/functional/ca/eval-store\.sh$'' ''^tests/functional/ca/gc\.sh$'' ''^tests/functional/ca/import-from-derivation\.sh$'' + ''^tests/functional/ca/multiple-outputs\.sh$'' ''^tests/functional/ca/new-build-cmd\.sh$'' ''^tests/functional/ca/nix-shell\.sh$'' ''^tests/functional/ca/post-hook\.sh$'' diff --git a/tests/functional/build-delete.sh b/tests/functional/build-delete.sh index 18841509d..66b14fd14 100755 --- a/tests/functional/build-delete.sh +++ b/tests/functional/build-delete.sh @@ -43,6 +43,10 @@ issue_6572_dependent_outputs() { nix-store --delete "$p" # Clean up for next test # Make sure that 'nix build' tracks input-outputs correctly when a single output is already present. + if [[ -n "${NIX_TESTS_CA_BY_DEFAULT:-}" ]]; then + # Resolved derivations interferre with the deletion + nix-store --delete "${NIX_STORE_DIR}"/*.drv + fi nix-store --delete "$(jq -r <"$TEST_ROOT"/a.json .[0].outputs.second)" p=$(nix build -f multiple-outputs.nix use-a --no-link --print-out-paths) cmp "$p" <&1 | grep 'contains illegal character' -expect 1 nix build -f multiple-outputs.nix invalid-output-name-2 2>&1 | grep 'contains illegal character' +# TODO inspect why this doesn't work with floating content-addressing +# derivations. +if [[ ! -n "${NIX_TESTS_CA_BY_DEFAULT:-}" ]]; then + expect 1 nix build -f multiple-outputs.nix invalid-output-name-1 2>&1 | grep 'contains illegal character' + expect 1 nix build -f multiple-outputs.nix invalid-output-name-2 2>&1 | grep 'contains illegal character' +fi