From e46cbefe0605ab6e66e5c1d1487c823682d3ac10 Mon Sep 17 00:00:00 2001 From: Michael Jeanson Date: Tue, 31 Aug 2021 11:25:18 -0400 Subject: [PATCH] Add a single generated env file to the test suite Regroup all the configure detected values relevant to the test suite in a single generated file. This file will be automatically sourced by the test suite in most scenarios but can also be sourced in the shell of a user. * All user overridable variables start with 'BT_TESTS_'. * The priority for variables is : Environment -> env.sh -> utils.sh (defaults). * A user can source 'env.sh', override some of the values and manually run test scripts. * The test suite can run without an 'env.sh' file present. Scenarios: * Manually running tests in an in-tree build: The test suite sources 'env.sh' relative to itself, no environment variables required. * Manually running tests in an out-of-tree build: The user sets BT_TESTS_BUILDDIR in its environment or sources 'env.sh'. * Running the test suite with 'make check' in either builds: The Makefile sets BT_TESTS_BUILDDIR in the environment which allows the test suite to source env.sh in either in-tree or out-of-tree builds. Change-Id: I1ba3775ea3d724345cab769af9b2efc22ee53585 Signed-off-by: Michael Jeanson Reviewed-on: https://review.lttng.org/c/babeltrace/+/6314 Reviewed-by: Simon Marchi CI-Build: Simon Marchi Tested-by: jenkins --- .gitignore | 1 + configure.ac | 2 ++ tests/Makefile.am | 5 ----- tests/utils/env.sh.in | 42 ++++++++++++++++++++++++++++++++++++++++++ tests/utils/utils.sh | 23 +++++++++++++++++------ 5 files changed, 62 insertions(+), 11 deletions(-) create mode 100644 tests/utils/env.sh.in diff --git a/.gitignore b/.gitignore index 709ac071..193676d1 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ /tests/plugins/src.ctf.fs/succeed/gen-trace-simple /tests/plugins/sink.ctf.fs/succeed/gen-trace-float /tests/plugins/sink.ctf.fs/succeed/gen-trace-double +/tests/utils/env.sh *~ *.o *.a diff --git a/configure.ac b/configure.ac index 590627f6..673fd720 100644 --- a/configure.ac +++ b/configure.ac @@ -841,6 +841,8 @@ AC_CONFIG_FILES([ tests/utils/tap/Makefile ]) +AC_CONFIG_FILES([tests/utils/env.sh],[chmod +x tests/utils/env.sh]) + AC_OUTPUT # diff --git a/tests/Makefile.am b/tests/Makefile.am index b25852fa..1b44a9cc 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -169,11 +169,6 @@ LOG_DRIVER_FLAGS = --merge --comments LOG_DRIVER = env AM_TAP_AWK='$(AWK)' \ BT_TESTS_SRCDIR='$(abs_top_srcdir)/tests' \ BT_TESTS_BUILDDIR='$(abs_top_builddir)/tests' \ - 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 TESTS_NO_BITFIELD = \ diff --git a/tests/utils/env.sh.in b/tests/utils/env.sh.in new file mode 100644 index 00000000..af34046b --- /dev/null +++ b/tests/utils/env.sh.in @@ -0,0 +1,42 @@ +#!/bin/bash +# +# SPDX-License-Identifier: GPL-2.0-only +# + +### Base paths to test suite ### +if [ "x${BT_TESTS_SRCDIR:-}" = "x" ]; then + BT_TESTS_SRCDIR="@abs_top_srcdir@/tests" +fi +export BT_TESTS_SRCDIR + +if [ "x${BT_TESTS_BUILDDIR:-}" = "x" ]; then + BT_TESTS_BUILDDIR="@abs_top_builddir@/tests" +fi +export BT_TESTS_BUILDDIR + + +### External Tools ### +if [ "x${BT_TESTS_AWK_BIN:-}" = "x" ]; then + BT_TESTS_AWK_BIN="@AWK@" +fi +export BT_TESTS_AWK_BIN + +if [ "x${BT_TESTS_GREP_BIN:-}" = "x" ]; then + BT_TESTS_GREP_BIN="@GREP@" +fi +export BT_TESTS_GREP_BIN + +if [ "x${BT_TESTS_PYTHON_BIN:-}" = "x" ]; then + BT_TESTS_PYTHON_BIN="@PYTHON@" +fi +export BT_TESTS_PYTHON_BIN + +if [ "x${BT_TESTS_PYTHON_CONFIG_BIN:-}" = "x" ]; then + BT_TESTS_PYTHON_CONFIG_BIN="@PYTHON_CONFIG@" +fi +export BT_TESTS_PYTHON_CONFIG_BIN + +if [ "x${BT_TESTS_SED_BIN:-}" = "x" ]; then + BT_TESTS_SED_BIN="@SED@" +fi +export BT_TESTS_SED_BIN diff --git a/tests/utils/utils.sh b/tests/utils/utils.sh index afdc856b..9d9b639b 100644 --- a/tests/utils/utils.sh +++ b/tests/utils/utils.sh @@ -58,12 +58,11 @@ if [ "x${BT_TESTS_BUILDDIR:-}" = "x" ]; then 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 @@ -82,15 +81,18 @@ BT_PLUGINS_PATH="${BT_TESTS_BUILDDIR}/../src/plugins" 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 ### @@ -124,6 +126,15 @@ export BT_TESTS_SED_BIN 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() { -- 2.34.1