bats: use writeText instead of passAsFile (#498267)

This commit is contained in:
Philip Taron
2026-04-12 22:30:41 +00:00
committed by GitHub
+42 -42
View File
@@ -18,6 +18,7 @@
symlinkJoin,
makeWrapper,
runCommand,
writeText,
doInstallCheck ? true,
# packages that use bats (for update testing)
bash-preexec,
@@ -151,59 +152,58 @@ resholve.mkDerivation rec {
wrapProgram "$out/bin/bats" \
--suffix BATS_LIB_PATH : "$out/share/bats"
'';
inherit meta;
};
passthru.tests = {
libraries =
runCommand "${bats.name}-with-libraries-test"
{
testScript = ''
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"
}
'';
passAsFile = [ "testScript" ];
}
''
${
bats.withLibraries (p: [
p.bats-support
p.bats-assert
p.bats-file
p.bats-detik
])
}/bin/bats "$testScriptPath"
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";