mirror of
https://github.com/openembedded/meta-openembedded.git
synced 2026-04-17 22:48:28 +00:00
bats: upgrade 1.6.0 -> 1.6.1
The 1.6.1 incorporates the 0001-Fix-status-in-teardown-overriding-exit-code.patch backport patch. Changelog: ========== Fixed: ------ prevent teardown, teardown_file, and teardown_suite from overriding bats' exit code by setting $status (e.g. via calling run) (#581, #575) CRITICAL: this can return exit code 0 despite failed tests, thus preventing your CI from reporting test failures! The regression happened in version 1.6.0. Documentation: -------------- corrected invalid documentation of run -N (had =N instead) (#579) CRITICAL: using the incorrect form can lead to silent errors. See issue #578 for more details and how to find out if your tests are affected. Signed-off-by: Diego Sueiro <diego.sueiro@arm.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
@@ -7,12 +7,11 @@ LICENSE = "MIT"
|
||||
LIC_FILES_CHKSUM = "file://LICENSE.md;md5=2970203aedf9e829edb96a137a4fe81b"
|
||||
|
||||
SRC_URI = "\
|
||||
git://github.com/bats-core/bats-core.git;branch=master;protocol=https \
|
||||
file://0001-Fix-status-in-teardown-overriding-exit-code.patch \
|
||||
git://github.com/bats-core/bats-core.git;branch=version/1.6.x;protocol=https \
|
||||
"
|
||||
|
||||
# v1.6.0
|
||||
SRCREV = "210acf3a8ed318ddedad3137c15451739beba7d4"
|
||||
# v1.6.1
|
||||
SRCREV = "1977254c2a7faa2e0af17355856f91dc471d1daa"
|
||||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
@@ -1,150 +0,0 @@
|
||||
From aa628ccdc4dec1c129c1bd98b53ef94d8c2e119a Mon Sep 17 00:00:00 2001
|
||||
From: Richard Neill <richard.neill@arm.com>
|
||||
Date: Mon, 9 May 2022 12:20:48 +0100
|
||||
Subject: [PATCH] Fix status in teardown* overriding exit code
|
||||
|
||||
Patch fixes regression which produces false-negatives in v1.6.0, where the
|
||||
teardown function can cause BATS to report success even if test cases fail.
|
||||
Fixes: https://github.com/bats-core/bats-core/issues/575
|
||||
|
||||
Upstream-Status: Backport [Adapted from https://github.com/bats-core/bats-core/commit/5f372058b05f817e4e3a8dab27f83c30fd467504]
|
||||
Signed-off-by: Richard Neill <richard.neill@arm.com>
|
||||
---
|
||||
libexec/bats-core/bats-exec-file | 18 ++++++++----------
|
||||
libexec/bats-core/bats-exec-suite | 12 ++++++------
|
||||
libexec/bats-core/bats-exec-test | 8 ++++----
|
||||
3 files changed, 18 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/libexec/bats-core/bats-exec-file b/libexec/bats-core/bats-exec-file
|
||||
index 298441b..63452c7 100755
|
||||
--- a/libexec/bats-core/bats-exec-file
|
||||
+++ b/libexec/bats-core/bats-exec-file
|
||||
@@ -118,7 +118,6 @@ bats_run_teardown_file() {
|
||||
|
||||
bats_file_teardown_trap() {
|
||||
bats_run_teardown_file
|
||||
- local status=0
|
||||
bats_file_exit_trap
|
||||
}
|
||||
|
||||
@@ -144,9 +143,9 @@ bats_file_exit_trap() {
|
||||
bats_print_failed_command "${stack_trace[@]}" >&3
|
||||
bats_prefix_lines_for_tap_output < "$BATS_OUT" | bats_replace_filename >&3
|
||||
rm -rf "$BATS_OUT"
|
||||
- status=1
|
||||
+ bats_exec_file_status=1
|
||||
fi
|
||||
- exit $status
|
||||
+ exit $bats_exec_file_status
|
||||
}
|
||||
|
||||
function setup_file() {
|
||||
@@ -250,15 +249,15 @@ bats_read_tests_list_file() {
|
||||
}
|
||||
|
||||
bats_run_tests() {
|
||||
- status=0
|
||||
+ bats_exec_file_status=0
|
||||
|
||||
if [[ "$num_jobs" != 1 && "${BATS_NO_PARALLELIZE_WITHIN_FILE-False}" == False ]]; then
|
||||
export BATS_SEMAPHORE_NUMBER_OF_SLOTS="$num_jobs"
|
||||
- bats_run_tests_in_parallel "$BATS_RUN_TMPDIR/parallel_output" || status=1
|
||||
+ bats_run_tests_in_parallel "$BATS_RUN_TMPDIR/parallel_output" || bats_exec_file_status=1
|
||||
else
|
||||
for test_name in "${tests_to_run[@]}"; do
|
||||
if [[ "${BATS_INTERRUPTED-NOTSET}" != NOTSET ]]; then
|
||||
- status=130 # bash's code for SIGINT exits
|
||||
+ bats_exec_file_status=130 # bash's code for SIGINT exits
|
||||
break
|
||||
fi
|
||||
# Only handle non-empty lines
|
||||
@@ -267,14 +266,13 @@ bats_run_tests() {
|
||||
((++test_number_in_file))
|
||||
# deal with empty flags to avoid spurious "unbound variable" errors on Bash 4.3 and lower
|
||||
if [[ "${#flags[@]}" -gt 0 ]]; then
|
||||
- "$BATS_LIBEXEC/bats-exec-test" "${flags[@]}" "$filename" "$test_name" "$test_number_in_suite" "$test_number_in_file" || status=1
|
||||
+ "$BATS_LIBEXEC/bats-exec-test" "${flags[@]}" "$filename" "$test_name" "$test_number_in_suite" "$test_number_in_file" || bats_exec_file_status=1
|
||||
else
|
||||
- "$BATS_LIBEXEC/bats-exec-test" "$filename" "$test_name" "$test_number_in_suite" "$test_number_in_file" || status=1
|
||||
+ "$BATS_LIBEXEC/bats-exec-test" "$filename" "$test_name" "$test_number_in_suite" "$test_number_in_file" || bats_exec_file_status=1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
- export status
|
||||
}
|
||||
|
||||
bats_create_file_tempdirs() {
|
||||
@@ -322,4 +320,4 @@ bats_run_tests
|
||||
trap bats_interrupt_trap INT
|
||||
bats_run_teardown_file
|
||||
|
||||
-exit $status
|
||||
+exit $bats_exec_file_status
|
||||
diff --git a/libexec/bats-core/bats-exec-suite b/libexec/bats-core/bats-exec-suite
|
||||
index 05c66f4..4d440ae 100755
|
||||
--- a/libexec/bats-core/bats-exec-suite
|
||||
+++ b/libexec/bats-core/bats-exec-suite
|
||||
@@ -135,10 +135,10 @@ bats_exit_trap() {
|
||||
if [[ ${BATS_INTERRUPTED-NOTSET} != NOTSET ]]; then
|
||||
printf "\n# Received SIGINT, aborting ...\n\n"
|
||||
fi
|
||||
- exit "$status"
|
||||
+ exit "$bats_exec_suite_status"
|
||||
}
|
||||
|
||||
-status=0
|
||||
+bats_exec_suite_status=0
|
||||
printf '1..%d\n' "${test_count}"
|
||||
|
||||
# No point on continuing if there's no tests.
|
||||
@@ -163,15 +163,15 @@ if [[ "$num_jobs" -gt 1 ]] && [[ -z "$bats_no_parallelize_across_files" ]]; then
|
||||
# shellcheck disable=SC2086,SC2068
|
||||
# we need to handle the quoting of ${flags[@]} ourselves,
|
||||
# because parallel can only quote it as one
|
||||
- parallel --keep-order --jobs "$num_jobs" bats-exec-file "$(printf "%q " "${flags[@]}")" "{}" "$TESTS_LIST_FILE" ::: "${BATS_UNIQUE_TEST_FILENAMES[@]}" 2>&1 || status=1
|
||||
+ parallel --keep-order --jobs "$num_jobs" bats-exec-file "$(printf "%q " "${flags[@]}")" "{}" "$TESTS_LIST_FILE" ::: "${BATS_UNIQUE_TEST_FILENAMES[@]}" 2>&1 || bats_exec_suite_status=1
|
||||
else
|
||||
for filename in "${BATS_UNIQUE_TEST_FILENAMES[@]}"; do
|
||||
if [[ "${BATS_INTERRUPTED-NOTSET}" != NOTSET ]]; then
|
||||
- status=130 # bash's code for SIGINT exits
|
||||
+ bats_exec_suite_status=130 # bash's code for SIGINT exits
|
||||
break
|
||||
fi
|
||||
- bats-exec-file "${flags[@]}" "$filename" "${TESTS_LIST_FILE}" || status=1
|
||||
+ bats-exec-file "${flags[@]}" "$filename" "${TESTS_LIST_FILE}" || bats_exec_suite_status=1
|
||||
done
|
||||
fi
|
||||
|
||||
-exit "$status"
|
||||
+exit "$bats_exec_suite_status"
|
||||
diff --git a/libexec/bats-core/bats-exec-test b/libexec/bats-core/bats-exec-test
|
||||
index aae4572..57bdf18 100755
|
||||
--- a/libexec/bats-core/bats-exec-test
|
||||
+++ b/libexec/bats-core/bats-exec-test
|
||||
@@ -94,18 +94,18 @@ source "$BATS_ROOT/lib/bats-core/tracing.bash"
|
||||
|
||||
bats_teardown_trap() {
|
||||
bats_check_status_from_trap
|
||||
- local status=0
|
||||
+ local bats_teardown_trap_status=0
|
||||
# mark the start of this function to distinguish where skip is called
|
||||
# parameter 1 will signify the reason why this function was called
|
||||
# this is used to identify when this is called as exit trap function
|
||||
BATS_TEARDOWN_STARTED=${1:-1}
|
||||
- teardown >>"$BATS_OUT" 2>&1 || status="$?"
|
||||
+ teardown >>"$BATS_OUT" 2>&1 || bats_teardown_trap_status="$?"
|
||||
|
||||
- if [[ $status -eq 0 ]]; then
|
||||
+ if [[ $bats_teardown_trap_status -eq 0 ]]; then
|
||||
BATS_TEARDOWN_COMPLETED=1
|
||||
elif [[ -n "$BATS_TEST_COMPLETED" ]]; then
|
||||
BATS_DEBUG_LAST_STACK_TRACE_IS_VALID=1
|
||||
- BATS_ERROR_STATUS="$status"
|
||||
+ BATS_ERROR_STATUS="$bats_teardown_trap_status"
|
||||
fi
|
||||
|
||||
bats_exit_trap
|
||||
--
|
||||
2.25.1
|
||||
|
||||
Reference in New Issue
Block a user