From d3d6e2f38b510bc41e98bf386e34429af6accd2a Mon Sep 17 00:00:00 2001 From: Stefan Frijters Date: Mon, 9 Mar 2026 13:56:43 +0100 Subject: [PATCH 1/3] bats: use writeText instead of passAsFile This fixes compatibility with __structuredAttrs. --- pkgs/by-name/ba/bats/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ba/bats/package.nix b/pkgs/by-name/ba/bats/package.nix index 0a6232cde99c..543c19248b98 100644 --- a/pkgs/by-name/ba/bats/package.nix +++ b/pkgs/by-name/ba/bats/package.nix @@ -18,6 +18,7 @@ symlinkJoin, makeWrapper, runCommand, + writeText, doInstallCheck ? true, # packages that use bats (for update testing) bash-preexec, @@ -157,7 +158,7 @@ resholve.mkDerivation rec { libraries = runCommand "${bats.name}-with-libraries-test" { - testScript = '' + testScript = writeText "bats-libraries-test-script" '' setup() { bats_load_library bats-support bats_load_library bats-assert @@ -191,7 +192,6 @@ resholve.mkDerivation rec { assert_output "hi" } ''; - passAsFile = [ "testScript" ]; } '' ${ @@ -201,7 +201,7 @@ resholve.mkDerivation rec { p.bats-file p.bats-detik ]) - }/bin/bats "$testScriptPath" + }/bin/bats "$testScript" touch "$out" ''; From 5f5d29e3a23c775790e3ca6aabdac716306622f9 Mon Sep 17 00:00:00 2001 From: Stefan Frijters Date: Wed, 25 Mar 2026 23:23:28 +0100 Subject: [PATCH 2/3] bats: add let binding to passthru.tests.libraries We don't actually need to pass the script as an argument to runCommand since we can reference it directly. Moving bats.withLibraries [...] out of the string interpolation seems a bit more readable as well. --- pkgs/by-name/ba/bats/package.nix | 80 ++++++++++++++++---------------- 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/pkgs/by-name/ba/bats/package.nix b/pkgs/by-name/ba/bats/package.nix index 543c19248b98..8990ded3209c 100644 --- a/pkgs/by-name/ba/bats/package.nix +++ b/pkgs/by-name/ba/bats/package.nix @@ -156,54 +156,52 @@ resholve.mkDerivation rec { passthru.tests = { libraries = - runCommand "${bats.name}-with-libraries-test" - { - testScript = writeText "bats-libraries-test-script" '' - setup() { - bats_load_library bats-support - bats_load_library bats-assert - bats_load_library bats-file - bats_load_library bats-detik/detik.bash + let + testScript = writeText "bats-libraries-test-script" '' + setup() { + bats_load_library bats-support + bats_load_library bats-assert + bats_load_library bats-file + bats_load_library bats-detik/detik.bash - bats_require_minimum_version 1.5.0 + bats_require_minimum_version 1.5.0 - TEST_TEMP_DIR="$(temp_make --prefix 'nixpkgs-bats-test')" - } + TEST_TEMP_DIR="$(temp_make --prefix 'nixpkgs-bats-test')" + } - teardown() { - temp_del "$TEST_TEMP_DIR" - } + teardown() { + temp_del "$TEST_TEMP_DIR" + } - @test echo_hi { - run -0 echo hi - assert_output "hi" - } + @test echo_hi { + run -0 echo hi + assert_output "hi" + } - @test cp_failure { - run ! cp - assert_line --index 0 "cp: missing file operand" - assert_line --index 1 "Try 'cp --help' for more information." - } + @test cp_failure { + run ! cp + assert_line --index 0 "cp: missing file operand" + assert_line --index 1 "Try 'cp --help' for more information." + } - @test file_exists { - echo "hi" > "$TEST_TEMP_DIR/hello.txt" - assert_file_exist "$TEST_TEMP_DIR/hello.txt" - run cat "$TEST_TEMP_DIR/hello.txt" - assert_output "hi" - } - ''; - } - '' - ${ - bats.withLibraries (p: [ - p.bats-support - p.bats-assert - p.bats-file - p.bats-detik - ]) - }/bin/bats "$testScript" - touch "$out" + @test file_exists { + echo "hi" > "$TEST_TEMP_DIR/hello.txt" + assert_file_exist "$TEST_TEMP_DIR/hello.txt" + run cat "$TEST_TEMP_DIR/hello.txt" + assert_output "hi" + } ''; + batsWithLibraries = bats.withLibraries (p: [ + p.bats-support + p.bats-assert + p.bats-file + p.bats-detik + ]); + in + runCommand "${bats.name}-with-libraries-test" { } '' + ${lib.getExe batsWithLibraries} "${testScript}" + touch "$out" + ''; upstream = bats.unresholved.overrideAttrs (old: { name = "${bats.name}-tests"; From 5eca65929e3f5c921a7e5feb34ac852697f6fe96 Mon Sep 17 00:00:00 2001 From: Stefan Frijters Date: Wed, 25 Mar 2026 23:24:56 +0100 Subject: [PATCH 3/3] bats.withLibraries: inherit meta from bats This fixes "evaluation warning: getExe: Package "bats-with-libraries-1.12.0" does not have the meta.mainProgram attribute" --- pkgs/by-name/ba/bats/package.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/ba/bats/package.nix b/pkgs/by-name/ba/bats/package.nix index 8990ded3209c..6220ecf5698c 100644 --- a/pkgs/by-name/ba/bats/package.nix +++ b/pkgs/by-name/ba/bats/package.nix @@ -152,6 +152,8 @@ resholve.mkDerivation rec { wrapProgram "$out/bin/bats" \ --suffix BATS_LIB_PATH : "$out/share/bats" ''; + + inherit meta; }; passthru.tests = {