fi
export BT_TESTS_BUILDDIR
-# By default, it will not source tap.sh. If you to tap output directly from
-# 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"
+
+# Source the generated environment file if it's present.
+if [ -f "${BT_TESTS_BUILDDIR}/utils/env.sh" ]; then
+ # shellcheck source=./env.sh
+ . "${BT_TESTS_BUILDDIR}/utils/env.sh"
fi
# Allow overriding the babeltrace2 executables
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:${BT_PLUGINS_PATH}/lttng-utils"
fi
+export BT_TESTS_BABELTRACE_PLUGIN_PATH
if [ "x${BT_TESTS_PROVIDER_DIR:-}" = "x" ]; then
BT_TESTS_PROVIDER_DIR="${BT_TESTS_BUILDDIR}/../src/python-plugin-provider/.libs"
fi
+export BT_TESTS_PROVIDER_DIR
# 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"
fi
+export BT_TESTS_PYTHONPATH
### External Tools ###
fi
export BT_TESTS_SED_BIN
+if [ "x${BT_TESTS_CC_BIN:-}" = "x" ]; then
+ BT_TESTS_CC_BIN="cc"
+fi
+export BT_TESTS_CC_BIN
+
+
+### Optional features ###
+
+if [ "x${BT_TESTS_ENABLE_ASAN:-}" = "x" ]; then
+ BT_TESTS_ENABLE_ASAN="0"
+fi
+export BT_TESTS_ENABLE_ASAN
+
# Data files path
BT_TESTS_DATADIR="${BT_TESTS_SRCDIR}/data"
BT_CTF_TRACES_PATH="${BT_TESTS_DATADIR}/ctf-traces"
+# By default, it will not source tap.sh. If you want to output tap directly
+# from 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
+
+
# Remove CR characters in file "$1".
bt_remove_cr() {
# bt2 Python bindings.
run_python_bt2() {
local env_args
+ local lib_asan
env_args=(
"BABELTRACE_PYTHON_BT2_NO_TRACEBACK=1" \
env_args+=("PYTHONHOME=$($BT_TESTS_PYTHON_CONFIG_BIN --prefix)")
fi
+ # If AddressSanitizer is used, we must preload libasan.so so that
+ # libasan doesn't complain about not being the first loaded library.
+ #
+ # Python and sed (executed as part of the libtool wrapper) produce some
+ # leaks, so we must unfortunately disable leak detection. Append it to
+ # existing ASAN_OPTIONS, such that we override the user's value if it
+ # contains detect_leaks=1.
+ if [ "x${BT_TESTS_ENABLE_ASAN:-}" = "x1" ]; then
+ lib_asan=$(${BT_TESTS_CC_BIN} -print-file-name=libasan.so)
+
+ env_args+=("LD_PRELOAD=${lib_asan}:${LD_PRELOAD:-}")
+ env_args+=("ASAN_OPTIONS=${ASAN_OPTIONS:-},detect_leaks=0")
+ fi
+
env "${env_args[@]}" "$@"
}