run-in-py-utils-bt2-env.sh: rename `UTILSSH` variable -> `utils_sh`
[babeltrace.git] / tests / utils / utils.sh
index 3dddd60b141b2d4026cf67f7380768c5a3ad6eb4..60e5d56e8bd5daaac2d8d21de921856f9e461c31 100644 (file)
 # An unbound variable is an error
 set -u
 
+# Sets the variable named `$1` to `$2` if it's not set, and exports it.
+_bt_tests_set_var_def() {
+       local -r varname=$1
+       local -r val=$2
+
+       if [[ -z ${!varname:-} ]]; then
+               eval "$varname='$val'"
+       fi
+
+       export "${varname?}"
+}
+
 # Name of the OS on which we're running, if not set.
 #
 # One of:
@@ -82,18 +94,10 @@ _set_vars_srcdir_builddir() {
        fi
 
        # Base source directory of tests
-       if [[ -z ${BT_TESTS_SRCDIR:-} ]]; then
-               BT_TESTS_SRCDIR=$testsdir
-       fi
-
-       export BT_TESTS_SRCDIR
+       _bt_tests_set_var_def BT_TESTS_SRCDIR "$testsdir"
 
        # Base build directory of tests
-       if [[ -z ${BT_TESTS_BUILDDIR:-} ]]; then
-               BT_TESTS_BUILDDIR=$testsdir
-       fi
-
-       export BT_TESTS_BUILDDIR
+       _bt_tests_set_var_def BT_TESTS_BUILDDIR "$testsdir"
 }
 
 _set_vars_srcdir_builddir
@@ -124,79 +128,47 @@ fi
 export BT_TESTS_BT2_BIN
 
 # This doesn't need to be exported, but it needs to remain set for
-# run_python_bt2() to use it.
+# bt_run_in_py_env() to use it.
 #
 # TODO: Remove when `tests/bindings/python/bt2/test_plugin.py` is fixed.
 _bt_tests_plugins_path=$BT_TESTS_BUILDDIR/../src/plugins
 
 # Colon-separated list of project plugin paths, if not set
-if [[ -z ${BT_TESTS_BABELTRACE_PLUGIN_PATH:-} ]]; then
-       BT_TESTS_BABELTRACE_PLUGIN_PATH=$_bt_tests_plugins_path/ctf:$_bt_tests_plugins_path/utils:$_bt_tests_plugins_path/text:$_bt_tests_plugins_path/lttng-utils
-fi
-
-export BT_TESTS_BABELTRACE_PLUGIN_PATH
+_bt_tests_set_var_def BT_TESTS_BABELTRACE_PLUGIN_PATH \
+       "$_bt_tests_plugins_path/ctf:$_bt_tests_plugins_path/utils:$_bt_tests_plugins_path/text:$_bt_tests_plugins_path/lttng-utils"
 
 # Directory containing the Python plugin provider library, if not set
-if [[ -z ${BT_TESTS_PROVIDER_DIR:-} ]]; then
-       BT_TESTS_PROVIDER_DIR=$BT_TESTS_BUILDDIR/../src/python-plugin-provider/.libs
-fi
-
-export BT_TESTS_PROVIDER_DIR
+_bt_tests_set_var_def BT_TESTS_PROVIDER_DIR "$BT_TESTS_BUILDDIR/../src/python-plugin-provider/.libs"
 
 # Directory containing the built `bt2` Python package, if not set
-if [[ -z ${BT_TESTS_PYTHONPATH:-} ]]; then
-       BT_TESTS_PYTHONPATH=$BT_TESTS_BUILDDIR/../src/bindings/python/bt2/build/build_lib
-fi
-
-export BT_TESTS_PYTHONPATH
+_bt_tests_set_var_def BT_TESTS_PYTHONPATH "$BT_TESTS_BUILDDIR/../src/bindings/python/bt2/build/build_lib"
 
 # Name of the `awk` command to use when testing, if not set
-if [[ -z ${BT_TESTS_AWK_BIN:-} ]]; then
-       BT_TESTS_AWK_BIN="awk"
-fi
-
-export BT_TESTS_AWK_BIN
+_bt_tests_set_var_def BT_TESTS_AWK_BIN awk
 
 # Name of the `grep` command to use when testing, if not set
-if [[ -z ${BT_TESTS_GREP_BIN:-} ]]; then
-       BT_TESTS_GREP_BIN="grep"
-fi
-
-export BT_TESTS_GREP_BIN
+_bt_tests_set_var_def BT_TESTS_GREP_BIN grep
 
 # Name of the `python3` command to use when testing, if not set
-if [[ -z ${BT_TESTS_PYTHON_BIN:-} ]]; then
-       BT_TESTS_PYTHON_BIN=python3
-fi
-
-export BT_TESTS_PYTHON_BIN
+_bt_tests_set_var_def BT_TESTS_PYTHON_BIN python3
 
 # Major and minor version of the `python3` command to use when testing.
 #
 # This doesn't need to be exported, but it needs to remain set for
-# run_python() to use it.
+# bt_run_in_py_utils_env() to use it.
 _bt_tests_py3_version=$("$BT_TESTS_PYTHON_BIN" -c 'import sys; print("{}.{}".format(sys.version_info.major, sys.version_info.minor))')
 
 # Name of the `python3-config` command to use when testing, if not set
-if [[ -z ${BT_TESTS_PYTHON_CONFIG_BIN:-} ]]; then
-       BT_TESTS_PYTHON_CONFIG_BIN=python3-config
-fi
-
-export BT_TESTS_PYTHON_CONFIG_BIN
+_bt_tests_set_var_def BT_TESTS_PYTHON_CONFIG_BIN python3-config
 
 # Name of the `sed` command to use when testing, if not set
-if [[ -z ${BT_TESTS_SED_BIN:-} ]]; then
-       BT_TESTS_SED_BIN="sed"
-fi
-
-export BT_TESTS_SED_BIN
+_bt_tests_set_var_def BT_TESTS_SED_BIN sed
 
 # Name of the `cc` command to use when testing, if not set
-if [[ -z ${BT_TESTS_CC_BIN:-} ]]; then
-       BT_TESTS_CC_BIN=cc
-fi
+_bt_tests_set_var_def BT_TESTS_CC_BIN cc
 
-export BT_TESTS_CC_BIN
+# Done with _bt_tests_set_var_def()
+unset -f _bt_tests_set_var_def
 
 # Whether or not to enable AddressSanitizer, `0` (disabled) if not set.
 #
@@ -250,7 +222,7 @@ bt_cli() {
        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"
+       bt_run_in_py_env "$BT_TESTS_BT2_BIN" "${args[@]}" 1>"$stdout_file" 2>"$stderr_file"
 }
 
 # Checks the differences between:
@@ -404,7 +376,7 @@ _bt_tests_check_coverage() {
 
 # Executes a command within an environment which can import the testing
 # Python modules (in `tests/utils/python`).
-run_python() {
+bt_run_in_py_utils_env() {
        local our_pythonpath=$BT_TESTS_SRCDIR/utils/python
 
        if [[ $_bt_tests_py3_version =~ 3.[45] ]]; then
@@ -419,7 +391,7 @@ run_python() {
 
 # Executes a command within an environment which can import the testing
 # Python modules (in `tests/utils/python`) and the `bt2` Python package.
-run_python_bt2() {
+bt_run_in_py_env() {
        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
@@ -464,16 +436,16 @@ run_python_bt2() {
                local -x ASAN_OPTIONS=${ASAN_OPTIONS:-}${ASAN_OPTIONS:+,}detect_leaks=0
        fi
 
-       run_python "$@"
+       bt_run_in_py_utils_env "$@"
 }
 
 # Runs the Python tests matching the pattern `$2` (optional, `*` if
 # missing) in the directory `$1` using `testrunner.py`.
 #
-# This function uses run_python_bt2(), therefore such tests can import
+# This function uses bt_run_in_py_env(), therefore such tests can import
 # the testing Python modules (in `tests/utils/python`) and the `bt2`
 # Python package.
-run_python_bt2_test() {
+bt_run_py_test() {
        local -r test_dir=$1
        local -r test_pattern=${2:-*}
        local python_exec
@@ -484,7 +456,7 @@ run_python_bt2_test() {
                python_exec=$BT_TESTS_PYTHON_BIN
        fi
 
-       run_python_bt2 \
+       bt_run_in_py_env \
                "$python_exec" "$BT_TESTS_SRCDIR/utils/python/testrunner.py" \
                --pattern "$test_pattern" "$test_dir"
 
@@ -503,7 +475,7 @@ run_python_bt2_test() {
 
 # Generates a CTF trace into the directory `$2` from the moultipart
 # document `$1` using `mctf.py`.
-gen_mctf_trace() {
+bt_gen_mctf_trace() {
        local -r input_file=$1
        local -r base_dir=$2
        local -r cmd=(
@@ -513,5 +485,5 @@ gen_mctf_trace() {
        )
 
        echo "Running: \`${cmd[*]}\`" >&2
-       run_python "${cmd[@]}"
+       bt_run_in_py_utils_env "${cmd[@]}"
 }
This page took 0.029137 seconds and 4 git commands to generate.