When debugging a test, it is often useful to have the complete
CLI command line executed, so we can copy paste it and reproduce
the failure by hand.
This patch makes bt_cli echo the executed CLI command line to
stderr, such that it will show up when running one test by hand and in
the test logs when running "make check".
This allows simplifying bt_diff: we no longer have to pass the
CLI arguments to have them included in the error message, since
the full CLI command line will typically be printed just above.
Change-Id: I64f8c80f648d06319efe4e7544447183ba8069cc
Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1839
Tested-by: jenkins <jenkins@lttng.org>
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
shift 2
local args=("$@")
shift 2
local args=("$@")
+ echo "Running: $BT_TESTS_BT2_BIN ${args[*]}" >&2
run_python_bt2 "$BT_TESTS_BT2_BIN" "${args[@]}" 1>"$stdout_file" 2>"$stderr_file"
}
run_python_bt2 "$BT_TESTS_BT2_BIN" "${args[@]}" 1>"$stdout_file" 2>"$stderr_file"
}
# $1: file 1 (expected)
# $2: file 2 (actual)
#
# $1: file 1 (expected)
# $2: file 2 (actual)
#
-# Return 0 if there's no difference, and 1 if there are.
+# Return 0 if there's no difference, and non-zero if there are.
#
# Note that this function modifies the actual output file ($2) _in-place_ to
# remove any \r character.
#
# Note that this function modifies the actual output file ($2) _in-place_ to
# remove any \r character.
bt_diff() {
local expected_file="$1"
local actual_file="$2"
bt_diff() {
local expected_file="$1"
local actual_file="$2"
- shift 2
- local args=("$@")
- local temp_diff
-
- temp_diff="$(mktemp -t diff.XXXXXX)"
# Strip any \r present due to Windows (\n -> \r\n).
# "diff --string-trailing-cr" is not used since it is not present on
# Solaris.
"$BT_TESTS_SED_BIN" -i 's/\r//g' "$actual_file"
# Strip any \r present due to Windows (\n -> \r\n).
# "diff --string-trailing-cr" is not used since it is not present on
# Solaris.
"$BT_TESTS_SED_BIN" -i 's/\r//g' "$actual_file"
- if ! diff -u "$expected_file" "$actual_file" > "$temp_diff"; then
- echo "ERROR: for '${args[*]}': output does not match:" >&2
- cat "$temp_diff" >&2
- ret=1
- fi
+ diff -u "$expected_file" "$actual_file" 1>&2
- rm -f "$temp_diff"
-
- return $ret
}
# Checks the difference between:
}
# Checks the difference between:
# shellcheck disable=SC2005
echo "$(LC_ALL=C sort "$temp_stdout_output_file")" > "$temp_stdout_output_file"
# shellcheck disable=SC2005
echo "$(LC_ALL=C sort "$temp_stdout_output_file")" > "$temp_stdout_output_file"
- bt_diff "$expected_stdout_file" "$temp_stdout_output_file" "${args[@]}"
+ bt_diff "$expected_stdout_file" "$temp_stdout_output_file"
- bt_diff "$expected_stderr_file" "$temp_stderr_output_file" "${args[@]}"
+ bt_diff "$expected_stderr_file" "$temp_stderr_output_file"
ret_stderr=$?
if ((ret_stdout != 0 || ret_stderr != 0)); then
ret_stderr=$?
if ((ret_stdout != 0 || ret_stderr != 0)); then