X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=tests%2Futils%2Futils.sh;h=487d7e7e09a92929e746cfeec53734ca7c67091c;hb=b14c7bf11ddef302870c4d1abf86d3a98f74cb08;hp=b1b6366a0a129714bb43186af40f00d5396c69fa;hpb=27e2c58dac59aaf634817f52a89870107e7e3e01;p=babeltrace.git diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh index b1b6366a..487d7e7e 100644 --- a/tests/utils/utils.sh +++ b/tests/utils/utils.sh @@ -24,6 +24,29 @@ set -u scriptdir="$(dirname "${BASH_SOURCE[0]}")" +# The OS on which we are running. See [1] for possible values of 'uname -s'. +# We do a bit of translation to ease our life down the road for comparison. +# Export it so that called executables can use it. +# [1] https://en.wikipedia.org/wiki/Uname#Examples +if [ "x${BT_OS_TYPE:-}" = "x" ]; then + BT_OS_TYPE="$(uname -s)" + case "$BT_OS_TYPE" in + MINGW*) + BT_OS_TYPE="mingw" + ;; + Darwin) + BT_OS_TYPE="darwin" + ;; + Linux) + BT_OS_TYPE="linux" + ;; + *) + BT_OS_TYPE="unsupported" + ;; + esac +fi +export BT_OS_TYPE + # Allow overriding the source and build directories if [ "x${BT_TESTS_SRCDIR:-}" = "x" ]; then BT_TESTS_SRCDIR="$scriptdir/.." @@ -39,13 +62,14 @@ export BT_TESTS_BUILDDIR # the test script, define the 'SH_TAP' variable to '1' before sourcing this # script. if [ "x${SH_TAP:-}" = x1 ]; then + # shellcheck source=./tap/tap.sh . "${BT_TESTS_SRCDIR}/utils/tap/tap.sh" fi # Allow overriding the babeltrace2 executables if [ "x${BT_TESTS_BT2_BIN:-}" = "x" ]; then BT_TESTS_BT2_BIN="$BT_TESTS_BUILDDIR/../src/cli/babeltrace2" - if [ "x${MSYSTEM:-}" != "x" ]; then + if [ "$BT_OS_TYPE" = "mingw" ]; then BT_TESTS_BT2_BIN="${BT_TESTS_BT2_BIN}.exe" fi fi @@ -53,7 +77,7 @@ export BT_TESTS_BT2_BIN if [ "x${BT_TESTS_BT2LOG_BIN:-}" = "x" ]; then BT_TESTS_BT2LOG_BIN="$BT_TESTS_BUILDDIR/../src/cli/babeltrace2-log" - if [ "x${MSYSTEM:-}" != "x" ]; then + if [ "$BT_OS_TYPE" = "mingw" ]; then BT_TESTS_BT2LOG_BIN="${BT_TESTS_BT2LOG_BIN}.exe" fi fi @@ -67,6 +91,10 @@ if [ "x${BT_TESTS_BABELTRACE_PLUGIN_PATH:-}" = "x" ]; then BT_TESTS_BABELTRACE_PLUGIN_PATH="${BT_PLUGINS_PATH}/ctf:${BT_PLUGINS_PATH}/utils:${BT_PLUGINS_PATH}/text" fi +if [ "x${BT_TESTS_PROVIDER_DIR:-}" = "x" ]; then + BT_TESTS_PROVIDER_DIR="${BT_TESTS_BUILDDIR}/../src/python-plugin-provider/.libs" +fi + # Allow overriding the babeltrace2 executables if [ "x${BT_TESTS_PYTHONPATH:-}" = "x" ]; then BT_TESTS_PYTHONPATH="${BT_TESTS_BUILDDIR}/../src/bindings/python/bt2/build/build_lib" @@ -103,17 +131,17 @@ BT_DEBUG_INFO_PATH="${BT_TESTS_DATADIR}/debug-info" ### Diff Functions ### -# Checks the difference between: -# -# 1. What the CLI outputs when given the arguments "$1" (passed to -# `xargs`, so they can include quoted arguments). -# 2. The file with path "$2". +# Checks the difference between the content of the file with path "$1" +# and the output of the CLI when called with the rest of arguments +# to this function. # # Returns 0 if there's no difference, and 1 if there is, also printing # said difference to the standard error. bt_diff_cli() { - local args="$1" - local expected_file="$2" + local expected_file="$1" + shift 1 + local args=("$@") + local temp_output_file local temp_diff local ret=0 @@ -124,11 +152,11 @@ bt_diff_cli() { # Run the CLI to get a detailed 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. - echo "$args" | xargs "$BT_TESTS_BT2_BIN" 2>/dev/null | tr -d "\r" > "$temp_output_file" + run_python_bt2 "$BT_TESTS_BT2_BIN" "${args[@]}" | tr -d "\r" > "$temp_output_file" # Compare output with expected output if ! diff -u "$temp_output_file" "$expected_file" 2>/dev/null >"$temp_diff"; then - echo "ERROR: for '$args': actual and expected outputs differ:" >&2 + echo "ERROR: for '${args[*]}': actual and expected outputs differ:" >&2 cat "$temp_diff" >&2 ret=1 fi @@ -138,25 +166,21 @@ bt_diff_cli() { return $ret } -# Checks the difference between: -# -# 1. What the CLI outputs when given the arguments: -# -# "$1" -c sink.text.details $3 -# -# 2. The file with path "$2". -# -# Parameter 3 is optional. +# Checks the difference between the content of the file with path "$1" +# and the output of the CLI when called on the directory path "$2" with +# the arguments '-c sink.text.details' and the rest of the arguments to +# this function. # # Returns 0 if there's no difference, and 1 if there is, also printing # said difference to the standard error. bt_diff_details_ctf_single() { - local trace_dir="$1" - local expected_file="$2" - local extra_details_args="${3:-}" + local expected_file="$1" + local trace_dir="$2" + shift 2 + local extra_details_args=("$@") # Compare using the CLI with `sink.text.details` - bt_diff_cli "\"$trace_dir\" -c sink.text.details $extra_details_args" "$expected_file" + bt_diff_cli "$expected_file" "$trace_dir" "-c" "sink.text.details" "${extra_details_args[@]}" } # Calls bt_diff_details_ctf_single(), except that "$1" is the path to a @@ -166,7 +190,8 @@ bt_diff_details_ctf_single() { bt_diff_details_ctf_gen_single() { local ctf_gen_prog_path="$1" local expected_file="$2" - local extra_details_args="${3:-}" + shift 2 + local extra_details_args=("$@") local temp_trace_dir local ret @@ -181,7 +206,7 @@ bt_diff_details_ctf_gen_single() { fi # Compare using the CLI with `sink.text.details` - bt_diff_details_ctf_single "$temp_trace_dir" "$expected_file" "$extra_details_args" + bt_diff_details_ctf_single "$expected_file" "$temp_trace_dir" "${extra_details_args[@]}" ret=$? rm -rf "$temp_trace_dir" return $ret @@ -200,21 +225,24 @@ run_python_bt2() { local lib_search_var local lib_search_path - local python_provider_path="${BT_TESTS_BUILDDIR}/../src/python-plugin-provider/.libs" local main_lib_path="${BT_TESTS_BUILDDIR}/../src/lib/.libs" # Set the library search path so the python interpreter can load libbabeltrace2 - if [ "x${MSYSTEM:-}" != "x" ]; then + if [ "$BT_OS_TYPE" = "mingw" ]; then lib_search_var="PATH" - lib_search_path="${python_provider_path}:${main_lib_path}:${PATH:-}" + lib_search_path="${main_lib_path}:${PATH:-}" + elif [ "$BT_OS_TYPE" = "darwin" ]; then + lib_search_var="DYLD_LIBRARY_PATH" + lib_search_path="${main_lib_path}:${DYLD_LIBRARY_PATH:-}" else lib_search_var="LD_LIBRARY_PATH" - lib_search_path="${python_provider_path}:${main_lib_path}:${LD_LIBRARY_PATH:-}" + lib_search_path="${main_lib_path}:${LD_LIBRARY_PATH:-}" fi env \ BABELTRACE_PYTHON_BT2_NO_TRACEBACK=1 \ BABELTRACE_PLUGIN_PATH="${BT_TESTS_BABELTRACE_PLUGIN_PATH}" \ + LIBBABELTRACE2_PLUGIN_PROVIDER_DIR=${BT_TESTS_PROVIDER_DIR} \ BT_CTF_TRACES_PATH="${BT_CTF_TRACES_PATH}" \ BT_PLUGINS_PATH="${BT_PLUGINS_PATH}" \ PYTHONPATH="${BT_TESTS_PYTHONPATH}:${BT_TESTS_SRCDIR}/utils/python" \ @@ -228,7 +256,7 @@ run_python_bt2() { # $2 : The pattern to match python test script names (optional) run_python_bt2_test() { local test_dir="$1" - local test_pattern="${2:-}" # optional + local test_pattern="${2:-'*'}" # optional, if none default to "*" local ret local test_runner_args=() @@ -247,7 +275,9 @@ run_python_bt2_test() { run_python_bt2 \ "${python_exec}" \ "${BT_TESTS_SRCDIR}/utils/python/testrunner.py" \ - "${test_runner_args[@]}" + --pattern "$test_pattern" \ + "$test_dir" \ + ret=$? if test "x${BT_TESTS_COVERAGE_REPORT:-}" = "x1"; then