tests: fix Python plugin provider tests on Windows
authorMichael Jeanson <mjeanson@efficios.com>
Mon, 22 Jul 2019 21:36:02 +0000 (17:36 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Tue, 23 Jul 2019 19:34:16 +0000 (15:34 -0400)
On Windows, the embedded Python interpreter in the Python plugin
provider can't automatically locate the path to it's own modules. Set
the PYTHONHOME variable to the proper value in 'run_python_bt2()'.

Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Change-Id: Ie30ac3212a208d77654add78604c534c05efe518
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1748
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
tests/Makefile.am
tests/utils/utils.sh

index d004b03ffeb4661c59346821da2edeb2b385cf56..7ed754157910d84454677b04032e76241bfe196f 100644 (file)
@@ -116,6 +116,7 @@ LOG_DRIVER = env AM_TAP_AWK='$(AWK)' \
             BT_TESTS_AWK_BIN="$(AWK)" \
             BT_TESTS_GREP_BIN="$(GREP)" \
             BT_TESTS_PYTHON_BIN="$(PYTHON)" \
+            BT_TESTS_PYTHON_CONFIG_BIN="$(PYTHON_CONFIG)" \
             BT_TESTS_SED_BIN="$(SED)" \
             $(SHELL) $(srcdir)/utils/tap-driver.sh
 
index baef441a3718f71ca883be12c10d474359ecc256..d6fcf303452b30648f8235e6cbfa052f73696713 100644 (file)
@@ -120,6 +120,11 @@ if [ "x${BT_TESTS_PYTHON_BIN:-}" = "x" ]; then
 fi
 export BT_TESTS_PYTHON_BIN
 
+if [ "x${BT_TESTS_PYTHON_CONFIG_BIN:-}" = "x" ]; then
+       BT_TESTS_PYTHON_CONFIG_BIN="python3-config"
+fi
+export BT_TESTS_PYTHON_BIN
+
 if [ "x${BT_TESTS_SED_BIN:-}" = "x" ]; then
        BT_TESTS_SED_BIN="sed"
 fi
@@ -247,32 +252,36 @@ check_coverage() {
 # Execute a shell command in the appropriate environment to have access to the
 # bt2 Python bindings.
 run_python_bt2() {
-       local lib_search_var
-       local lib_search_path
+       local env_args
+
+       env_args=(
+               "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"
+               )
 
        local main_lib_path="${BT_TESTS_BUILDDIR}/../src/lib/.libs"
 
        # Set the library search path so the python interpreter can load libbabeltrace2
        if [ "$BT_OS_TYPE" = "mingw" ] || [ "$BT_OS_TYPE" = "cygwin" ]; then
-               lib_search_var="PATH"
-               lib_search_path="${main_lib_path}:${PATH:-}"
+               env_args+=("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:-}"
+               env_args+=("DYLD_LIBRARY_PATH=${main_lib_path}:${DYLD_LIBRARY_PATH:-}")
        else
-               lib_search_var="LD_LIBRARY_PATH"
-               lib_search_path="${main_lib_path}:${LD_LIBRARY_PATH:-}"
+               env_args+=("LD_LIBRARY_PATH=${main_lib_path}:${LD_LIBRARY_PATH:-}")
+       fi
+
+       # On Windows, an embedded Python interpreter needs a way to locate the path
+       # to it's internal modules, set the prefix from python-config to the
+       # PYTHONHOME variable.
+       if [ "$BT_OS_TYPE" = "mingw" ]; then
+               env_args+=("PYTHONHOME=$($BT_TESTS_PYTHON_CONFIG_BIN --prefix)")
        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" \
-               "${lib_search_var}"="${lib_search_path}" \
-               "$@"
+       env "${env_args[@]}" "$@"
 }
 
 # Set the environment and run python tests in the directory.
This page took 0.026003 seconds and 4 git commands to generate.