From: Simon Marchi Date: Mon, 1 Apr 2019 19:46:57 +0000 (-0400) Subject: Add env wrapper to facilitate importing the in-tree python bindings X-Git-Tag: v2.0.0-pre5~51 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=12671d4923af09099f64800b0853b16a2458877a Add env wrapper to facilitate importing the in-tree python bindings The test_python_bt2 script sets up a special environment for running the Python bindings tests. Crucially, it sets up PYTHONPATH so we are able to "import bt2" from a Python interpreter. It can be difficult to reproduce this environment exactly in an interactive shell, or when trying to run a single test. This patch introduces test_python_bt2_env, which can be used to run a command in the same environment. This command can be anything from a single test run to a sub-shell. Also, we expect that many Babeltrace tests will test some non-Python features using Python, for convenience. These tests will also need to run in the right environment to be able to import the bt2 Python package. Therefore, I think it makes sense to put it under tests/utils. Once the bindings and their tests work better, we should make the test_python_bt2 script use test_python_bt2_env, to avoid the duplication, but for now I prefer to leave it as-is. Signed-off-by: Simon Marchi Change-Id: I4e1655614756d638ef6bb9a4426719d4b754aa4b Reviewed-on: https://review.gerrithub.io/c/eepp/babeltrace/+/452152 Reviewed-by: Philippe Proulx Tested-by: Philippe Proulx --- diff --git a/configure.ac b/configure.ac index 37979849..5950c670 100644 --- a/configure.ac +++ b/configure.ac @@ -808,6 +808,7 @@ AC_CONFIG_FILES([tests/plugins/test_bin_info_complete], [chmod +x tests/plugins/ AS_IF([test "x$enable_python_bindings" = xyes], [ AC_CONFIG_FILES([tests/bindings/python/bt2/test_python_bt2], [chmod +x tests/bindings/python/bt2/test_python_bt2]) + AC_CONFIG_FILES([tests/utils/test_python_bt2_env], [chmod +x tests/utils/test_python_bt2_env]) AC_CONFIG_FILES([tests/bindings/python/babeltrace/test_python_babeltrace], [chmod +x tests/bindings/python/babeltrace/test_python_babeltrace]) ] ) diff --git a/tests/utils/.gitignore b/tests/utils/.gitignore new file mode 100644 index 00000000..a8402501 --- /dev/null +++ b/tests/utils/.gitignore @@ -0,0 +1 @@ +test_python_bt2_env diff --git a/tests/utils/test_python_bt2_env.in b/tests/utils/test_python_bt2_env.in new file mode 100644 index 00000000..03ac2522 --- /dev/null +++ b/tests/utils/test_python_bt2_env.in @@ -0,0 +1,44 @@ +#!/bin/bash +# +# Copyright (C) 2017 - Philippe Proulx +# Copyright (C) 2019 - Simon Marchi +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; only version 2 +# of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# + +# Execute a shell command in the appropriate environment to have access to the +# bt2 Python bindings. For example, one could use it to run a specific Python +# binding test case with: +# +# $ ./test_python_bt2_env python3 -m unittest test_values.MapValueTestCase.test_deepcopy + +NO_SH_TAP=1 +. "@abs_top_builddir@/tests/utils/common.sh" + +export BABELTRACE_PYTHON_BT2_NO_TRACEBACK=1 +export TEST_PLUGIN_PLUGINS_PATH="${BT_BUILD_PATH}/plugins" +export BABELTRACE_PLUGIN_PATH="${BT_BUILD_PATH}/plugins/ctf:${BT_BUILD_PATH}/plugins/utils:${BT_BUILD_PATH}/plugins/text" +export TEST_CTF_TRACES_PATH="${BT_SRC_PATH}/tests/ctf-traces" +PYTHON_BUILD_DIR="${BT_BUILD_PATH}/bindings/python/bt2/build/build_lib" +TESTS_UTILS_PYTHON_DIR="${BT_SRC_PATH}/tests/utils/python" +export PYTHONPATH="${PYTHON_BUILD_DIR}:${TESTS_UTILS_PYTHON_DIR}" + +if [ "x${MSYSTEM}" != "x" ]; then + export PATH="${BT_BUILD_PATH}/lib/.libs:${PATH}" +else + export LD_LIBRARY_PATH="${BT_BUILD_PATH}/lib/.libs:${LD_LIBRARY_PATH}" +fi + +exec "$@"