#
# Returns the exit status of the executed `$BT_TESTS_BT2_BIN`.
bt_cli() {
- local stdout_file="$1"
- local stderr_file="$2"
+ local -r stdout_file="$1"
+ local -r stderr_file="$2"
shift 2
- local args=("$@")
+ local -r args=("$@")
echo "Running: $BT_TESTS_BT2_BIN ${args[*]}" >&2
run_python_bt2 "$BT_TESTS_BT2_BIN" "${args[@]}" 1>"$stdout_file" 2>"$stderr_file"
#
# Returns 0 if there's no difference, or not zero otherwise.
bt_diff() {
- local expected_file="$1"
- local actual_file="$2"
+ local -r expected_file="$1"
+ local -r actual_file="$2"
local ret=0
diff -u <(bt_remove_cr_inline "$expected_file") <(bt_remove_cr_inline "$actual_file") 1>&2
# Returns 0 if there's no difference, or 1 otherwise, also printing said
# difference to the standard error.
bt_diff_cli() {
- local expected_stdout_file="$1"
- local expected_stderr_file="$2"
+ local -r expected_stdout_file="$1"
+ local -r expected_stderr_file="$2"
shift 2
- local args=("$@")
+ local -r args=("$@")
- local temp_stdout_output_file
- local temp_stderr_output_file
+ local -r temp_stdout_output_file="$(mktemp -t actual-stdout.XXXXXX)"
+ local -r temp_stderr_output_file="$(mktemp -t actual-stderr.XXXXXX)"
local ret=0
- local ret_stdout
- local ret_stderr
-
- temp_stdout_output_file="$(mktemp -t actual-stdout.XXXXXX)"
- temp_stderr_output_file="$(mktemp -t actual-stderr.XXXXXX)"
bt_cli "$temp_stdout_output_file" "$temp_stderr_output_file" "${args[@]}"
bt_diff "$expected_stdout_file" "$temp_stdout_output_file" "${args[@]}"
- ret_stdout=$?
+ local -r ret_stdout=$?
bt_diff "$expected_stderr_file" "$temp_stderr_output_file" "${args[@]}"
- ret_stderr=$?
+ local -r ret_stderr=$?
if ((ret_stdout != 0 || ret_stderr != 0)); then
ret=1
# Returns 0 if there's no difference, or 1 otherwise, also printing said
# difference to the standard error.
bt_diff_details_ctf_single() {
- local expected_stdout_file="$1"
- local trace_dir="$2"
+ local -r expected_stdout_file="$1"
+ local -r trace_dir="$2"
shift 2
- local extra_details_args=("$@")
+ local -r extra_details_args=("$@")
expected_stderr_file="/dev/null"
# Compare using the CLI with `sink.text.details`
# The program `$1` receives the path to a temporary, empty directory
# where to write the CTF trace as its first argument.
bt_diff_details_ctf_gen_single() {
- local ctf_gen_prog_path="$1"
- local expected_stdout_file="$2"
+ local -r ctf_gen_prog_path="$1"
+ local -r expected_stdout_file="$2"
shift 2
- local extra_details_args=("$@")
-
- local temp_trace_dir
- local ret
+ local -r extra_details_args=("$@")
- temp_trace_dir="$(mktemp -d)"
+ local -r temp_trace_dir="$(mktemp -d)"
# Run the CTF trace generator program to get a CTF trace
if ! "$ctf_gen_prog_path" "$temp_trace_dir" 2>/dev/null; then
# Compare using the CLI with `sink.text.details`
bt_diff_details_ctf_single "$expected_stdout_file" "$temp_trace_dir" \
"${extra_details_args[@]+${extra_details_args[@]}}"
- ret=$?
+ local -r ret=$?
rm -rf "$temp_trace_dir"
return $ret
}
# Python modules (in `tests/utils/python`) and the `bt2` Python package.
run_python_bt2() {
local lib_asan
- local -x "BABELTRACE_PYTHON_BT2_NO_TRACEBACK=1"
local -x "BABELTRACE_PLUGIN_PATH=${BT_TESTS_BABELTRACE_PLUGIN_PATH}"
local -x "LIBBABELTRACE2_PLUGIN_PROVIDER_DIR=${BT_TESTS_PROVIDER_DIR}"
local -x "BT_TESTS_DATADIR=${BT_TESTS_DATADIR}"