Commit | Line | Data |
---|---|---|
644e0364 | 1 | #!/bin/bash |
644e0364 | 2 | # |
0235b0db | 3 | # SPDX-License-Identifier: GPL-2.0-only |
644e0364 | 4 | # |
0235b0db MJ |
5 | # Copyright (c) 2019 Michael Jeanson <mjeanson@efficios.com> |
6 | # Copyright (C) 2019 Philippe Proulx <pproulx@efficios.com> | |
644e0364 | 7 | # |
644e0364 MJ |
8 | |
9 | # This file is meant to be sourced at the start of shell script-based tests. | |
10 | ||
11 | ||
12 | # Error out when encountering an undefined variable | |
13 | set -u | |
14 | ||
9c5dd55a MJ |
15 | # If "readlink -f" is available, get a resolved absolute path to the |
16 | # tests source dir, otherwise make do with a relative path. | |
644e0364 | 17 | scriptdir="$(dirname "${BASH_SOURCE[0]}")" |
9c5dd55a MJ |
18 | if readlink -f "." >/dev/null 2>&1; then |
19 | testsdir=$(readlink -f "$scriptdir/..") | |
20 | else | |
21 | testsdir="$scriptdir/.." | |
22 | fi | |
644e0364 | 23 | |
5058d31b JR |
24 | # The OS on which we are running. See [1] for possible values of 'uname -s'. |
25 | # We do a bit of translation to ease our life down the road for comparison. | |
26 | # Export it so that called executables can use it. | |
27 | # [1] https://en.wikipedia.org/wiki/Uname#Examples | |
75e396f6 | 28 | if [ -z "${BT_TESTS_OS_TYPE:-}" ]; then |
a0baab4a SM |
29 | BT_TESTS_OS_TYPE="$(uname -s)" |
30 | case "$BT_TESTS_OS_TYPE" in | |
5058d31b | 31 | MINGW*) |
a0baab4a | 32 | BT_TESTS_OS_TYPE="mingw" |
5058d31b JR |
33 | ;; |
34 | Darwin) | |
a0baab4a | 35 | BT_TESTS_OS_TYPE="darwin" |
5058d31b JR |
36 | ;; |
37 | Linux) | |
a0baab4a | 38 | BT_TESTS_OS_TYPE="linux" |
5058d31b | 39 | ;; |
df9db467 | 40 | CYGWIN*) |
a0baab4a | 41 | BT_TESTS_OS_TYPE="cygwin" |
df9db467 | 42 | ;; |
5058d31b | 43 | *) |
a0baab4a | 44 | BT_TESTS_OS_TYPE="unsupported" |
5058d31b JR |
45 | ;; |
46 | esac | |
47 | fi | |
a0baab4a | 48 | export BT_TESTS_OS_TYPE |
5058d31b | 49 | |
644e0364 | 50 | # Allow overriding the source and build directories |
75e396f6 | 51 | if [ -z "${BT_TESTS_SRCDIR:-}" ]; then |
9c5dd55a | 52 | BT_TESTS_SRCDIR="$testsdir" |
644e0364 MJ |
53 | fi |
54 | export BT_TESTS_SRCDIR | |
55 | ||
75e396f6 | 56 | if [ -z "${BT_TESTS_BUILDDIR:-}" ]; then |
9c5dd55a | 57 | BT_TESTS_BUILDDIR="$testsdir" |
644e0364 MJ |
58 | fi |
59 | export BT_TESTS_BUILDDIR | |
60 | ||
e46cbefe MJ |
61 | |
62 | # Source the generated environment file if it's present. | |
63 | if [ -f "${BT_TESTS_BUILDDIR}/utils/env.sh" ]; then | |
05ffcfc0 | 64 | # shellcheck disable=SC1091 |
e46cbefe | 65 | . "${BT_TESTS_BUILDDIR}/utils/env.sh" |
644e0364 MJ |
66 | fi |
67 | ||
68 | # Allow overriding the babeltrace2 executables | |
75e396f6 | 69 | if [ -z "${BT_TESTS_BT2_BIN:-}" ]; then |
4881a20e | 70 | BT_TESTS_BT2_BIN="$BT_TESTS_BUILDDIR/../src/cli/babeltrace2" |
a0baab4a | 71 | if [ "$BT_TESTS_OS_TYPE" = "mingw" ]; then |
27e2c58d JR |
72 | BT_TESTS_BT2_BIN="${BT_TESTS_BT2_BIN}.exe" |
73 | fi | |
644e0364 MJ |
74 | fi |
75 | export BT_TESTS_BT2_BIN | |
76 | ||
644e0364 MJ |
77 | # TODO: Remove when bindings/python/bt2/test_plugin.py is fixed |
78 | BT_PLUGINS_PATH="${BT_TESTS_BUILDDIR}/../src/plugins" | |
79 | ||
80 | # Allow overriding the babeltrace2 plugin path | |
75e396f6 | 81 | if [ -z "${BT_TESTS_BABELTRACE_PLUGIN_PATH:-}" ]; then |
e8cafc6e | 82 | BT_TESTS_BABELTRACE_PLUGIN_PATH="${BT_PLUGINS_PATH}/ctf:${BT_PLUGINS_PATH}/utils:${BT_PLUGINS_PATH}/text:${BT_PLUGINS_PATH}/lttng-utils" |
644e0364 | 83 | fi |
e46cbefe | 84 | export BT_TESTS_BABELTRACE_PLUGIN_PATH |
644e0364 | 85 | |
75e396f6 | 86 | if [ -z "${BT_TESTS_PROVIDER_DIR:-}" ]; then |
b14c7bf1 MJ |
87 | BT_TESTS_PROVIDER_DIR="${BT_TESTS_BUILDDIR}/../src/python-plugin-provider/.libs" |
88 | fi | |
e46cbefe | 89 | export BT_TESTS_PROVIDER_DIR |
b14c7bf1 | 90 | |
644e0364 | 91 | # Allow overriding the babeltrace2 executables |
75e396f6 | 92 | if [ -z "${BT_TESTS_PYTHONPATH:-}" ]; then |
644e0364 MJ |
93 | BT_TESTS_PYTHONPATH="${BT_TESTS_BUILDDIR}/../src/bindings/python/bt2/build/build_lib" |
94 | fi | |
e46cbefe | 95 | export BT_TESTS_PYTHONPATH |
644e0364 MJ |
96 | |
97 | ||
98 | ### External Tools ### | |
75e396f6 | 99 | if [ -z "${BT_TESTS_AWK_BIN:-}" ]; then |
644e0364 MJ |
100 | BT_TESTS_AWK_BIN="awk" |
101 | fi | |
102 | export BT_TESTS_AWK_BIN | |
103 | ||
75e396f6 | 104 | if [ -z "${BT_TESTS_GREP_BIN:-}" ]; then |
644e0364 MJ |
105 | BT_TESTS_GREP_BIN="grep" |
106 | fi | |
107 | export BT_TESTS_GREP_BIN | |
108 | ||
75e396f6 | 109 | if [ -z "${BT_TESTS_PYTHON_BIN:-}" ]; then |
644e0364 MJ |
110 | BT_TESTS_PYTHON_BIN="python3" |
111 | fi | |
112 | export BT_TESTS_PYTHON_BIN | |
113 | ||
7747a39f PP |
114 | BT_TESTS_PYTHON_VERSION=$($BT_TESTS_PYTHON_BIN -c 'import sys; print("{}.{}".format(sys.version_info.major, sys.version_info.minor))') |
115 | ||
75e396f6 | 116 | if [ -z "${BT_TESTS_PYTHON_CONFIG_BIN:-}" ]; then |
e23e08c4 MJ |
117 | BT_TESTS_PYTHON_CONFIG_BIN="python3-config" |
118 | fi | |
242ddcb7 | 119 | export BT_TESTS_PYTHON_CONFIG_BIN |
e23e08c4 | 120 | |
75e396f6 | 121 | if [ -z "${BT_TESTS_SED_BIN:-}" ]; then |
644e0364 MJ |
122 | BT_TESTS_SED_BIN="sed" |
123 | fi | |
124 | export BT_TESTS_SED_BIN | |
125 | ||
75e396f6 | 126 | if [ -z "${BT_TESTS_CC_BIN:-}" ]; then |
0b0893d4 SM |
127 | BT_TESTS_CC_BIN="cc" |
128 | fi | |
129 | export BT_TESTS_CC_BIN | |
130 | ||
131 | ||
132 | ### Optional features ### | |
133 | ||
75e396f6 | 134 | if [ -z "${BT_TESTS_ENABLE_ASAN:-}" ]; then |
0b0893d4 SM |
135 | BT_TESTS_ENABLE_ASAN="0" |
136 | fi | |
137 | export BT_TESTS_ENABLE_ASAN | |
138 | ||
644e0364 MJ |
139 | |
140 | # Data files path | |
141 | BT_TESTS_DATADIR="${BT_TESTS_SRCDIR}/data" | |
142 | BT_CTF_TRACES_PATH="${BT_TESTS_DATADIR}/ctf-traces" | |
644e0364 | 143 | |
e46cbefe MJ |
144 | # By default, it will not source tap.sh. If you want to output tap directly |
145 | # from the test script, define the 'SH_TAP' variable to '1' before sourcing | |
146 | # this script. | |
75e396f6 | 147 | if [ "${SH_TAP:-}" = 1 ]; then |
e46cbefe MJ |
148 | # shellcheck source=./tap/tap.sh |
149 | . "${BT_TESTS_SRCDIR}/utils/tap/tap.sh" | |
150 | fi | |
151 | ||
152 | ||
90a8a0f2 SM |
153 | # Remove CR characters in file "$1". |
154 | ||
155 | bt_remove_cr() { | |
717a01a7 | 156 | "$BT_TESTS_SED_BIN" -i'' -e 's/\r//g' "$1" |
90a8a0f2 SM |
157 | } |
158 | ||
10ba5f69 OD |
159 | bt_remove_cr_inline() { |
160 | "$BT_TESTS_SED_BIN" 's/\r//g' "$1" | |
161 | } | |
162 | ||
22703f66 SM |
163 | # Run the Babeltrace CLI, redirecting stdout and stderr to specified files. |
164 | # | |
165 | # $1: file to redirect stdout to | |
166 | # $2: file to redirect stderr to | |
167 | # remaining args: arguments to pass to the CLI | |
168 | # | |
169 | # Return the exit code of the CLI. | |
170 | ||
171 | bt_cli() { | |
172 | local stdout_file="$1" | |
173 | local stderr_file="$2" | |
174 | shift 2 | |
175 | local args=("$@") | |
176 | ||
ea458b95 | 177 | echo "Running: $BT_TESTS_BT2_BIN ${args[*]}" >&2 |
22703f66 SM |
178 | run_python_bt2 "$BT_TESTS_BT2_BIN" "${args[@]}" 1>"$stdout_file" 2>"$stderr_file" |
179 | } | |
644e0364 MJ |
180 | |
181 | ### Diff Functions ### | |
182 | ||
a70b6702 SM |
183 | # Check the differences between two files (typically some expected output vs |
184 | # some actual output). If there are differences, print the diff to stderr. | |
ff89ed28 | 185 | # |
a70b6702 SM |
186 | # $1: file 1 (expected) |
187 | # $2: file 2 (actual) | |
ff89ed28 | 188 | # |
ea458b95 | 189 | # Return 0 if there's no difference, and non-zero if there are. |
ff89ed28 | 190 | # |
a70b6702 SM |
191 | # Note that this function modifies the actual output file ($2) _in-place_ to |
192 | # remove any \r character. | |
193 | ||
ff89ed28 | 194 | bt_diff() { |
a70b6702 SM |
195 | local expected_file="$1" |
196 | local actual_file="$2" | |
ff89ed28 | 197 | local ret=0 |
ff89ed28 MJ |
198 | |
199 | # Strip any \r present due to Windows (\n -> \r\n). | |
200 | # "diff --string-trailing-cr" is not used since it is not present on | |
201 | # Solaris. | |
10ba5f69 | 202 | diff -u <(bt_remove_cr_inline "$expected_file") <(bt_remove_cr_inline "$actual_file") 1>&2 |
ff89ed28 | 203 | |
ea458b95 | 204 | return $? |
ff89ed28 MJ |
205 | } |
206 | ||
58db335e FD |
207 | # Checks the difference between: |
208 | # | |
209 | # 1. What the CLI outputs on its standard output when given the arguments | |
210 | # "$@" (excluding the first two arguments). | |
211 | # 2. The file with path "$1". | |
212 | # | |
213 | # And the difference between: | |
214 | # | |
215 | # 1. What the CLI outputs on its standard error when given the arguments | |
216 | # "$@" (excluding the first two arguments). | |
217 | # 2. The file with path "$2". | |
644e0364 MJ |
218 | # |
219 | # Returns 0 if there's no difference, and 1 if there is, also printing | |
220 | # said difference to the standard error. | |
221 | bt_diff_cli() { | |
58db335e FD |
222 | local expected_stdout_file="$1" |
223 | local expected_stderr_file="$2" | |
224 | shift 2 | |
53cc240b MJ |
225 | local args=("$@") |
226 | ||
58db335e FD |
227 | local temp_stdout_output_file |
228 | local temp_stderr_output_file | |
644e0364 | 229 | local ret=0 |
a70b6702 SM |
230 | local ret_stdout |
231 | local ret_stderr | |
644e0364 | 232 | |
7132b838 PP |
233 | temp_stdout_output_file="$(mktemp -t actual-stdout.XXXXXX)" |
234 | temp_stderr_output_file="$(mktemp -t actual-stderr.XXXXXX)" | |
644e0364 | 235 | |
58db335e | 236 | # Run the CLI to get a detailed file. |
22703f66 | 237 | bt_cli "$temp_stdout_output_file" "$temp_stderr_output_file" "${args[@]}" |
58db335e | 238 | |
a70b6702 SM |
239 | bt_diff "$expected_stdout_file" "$temp_stdout_output_file" "${args[@]}" |
240 | ret_stdout=$? | |
241 | bt_diff "$expected_stderr_file" "$temp_stderr_output_file" "${args[@]}" | |
242 | ret_stderr=$? | |
243 | ||
244 | if ((ret_stdout != 0 || ret_stderr != 0)); then | |
245 | ret=1 | |
246 | fi | |
58db335e | 247 | |
ff89ed28 | 248 | rm -f "$temp_stdout_output_file" "$temp_stderr_output_file" |
644e0364 | 249 | |
ff89ed28 MJ |
250 | return $ret |
251 | } | |
252 | ||
53cc240b MJ |
253 | # Checks the difference between the content of the file with path "$1" |
254 | # and the output of the CLI when called on the directory path "$2" with | |
255 | # the arguments '-c sink.text.details' and the rest of the arguments to | |
256 | # this function. | |
644e0364 MJ |
257 | # |
258 | # Returns 0 if there's no difference, and 1 if there is, also printing | |
259 | # said difference to the standard error. | |
260 | bt_diff_details_ctf_single() { | |
58db335e | 261 | local expected_stdout_file="$1" |
53cc240b MJ |
262 | local trace_dir="$2" |
263 | shift 2 | |
264 | local extra_details_args=("$@") | |
58db335e | 265 | expected_stderr_file="/dev/null" |
644e0364 MJ |
266 | |
267 | # Compare using the CLI with `sink.text.details` | |
8b729209 PP |
268 | bt_diff_cli "$expected_stdout_file" "$expected_stderr_file" "$trace_dir" \ |
269 | "-c" "sink.text.details" "${extra_details_args[@]+${extra_details_args[@]}}" | |
644e0364 MJ |
270 | } |
271 | ||
272 | # Calls bt_diff_details_ctf_single(), except that "$1" is the path to a | |
273 | # program which generates the CTF trace to compare to. The program "$1" | |
274 | # receives the path to a temporary, empty directory where to write the | |
275 | # CTF trace as its first argument. | |
276 | bt_diff_details_ctf_gen_single() { | |
277 | local ctf_gen_prog_path="$1" | |
58db335e | 278 | local expected_stdout_file="$2" |
53cc240b MJ |
279 | shift 2 |
280 | local extra_details_args=("$@") | |
644e0364 MJ |
281 | |
282 | local temp_trace_dir | |
283 | local ret | |
284 | ||
285 | temp_trace_dir="$(mktemp -d)" | |
286 | ||
287 | # Run the CTF trace generator program to get a CTF trace | |
288 | if ! "$ctf_gen_prog_path" "$temp_trace_dir" 2>/dev/null; then | |
289 | echo "ERROR: \"$ctf_gen_prog_path\" \"$temp_trace_dir\" failed" >&2 | |
290 | rm -rf "$temp_trace_dir" | |
291 | return 1 | |
292 | fi | |
293 | ||
294 | # Compare using the CLI with `sink.text.details` | |
8b729209 PP |
295 | bt_diff_details_ctf_single "$expected_stdout_file" "$temp_trace_dir" \ |
296 | "${extra_details_args[@]+${extra_details_args[@]}}" | |
644e0364 MJ |
297 | ret=$? |
298 | rm -rf "$temp_trace_dir" | |
299 | return $ret | |
300 | } | |
301 | ||
407d3b10 SM |
302 | # Run the grep binary configured for the tests. |
303 | bt_grep() { | |
304 | "$BT_TESTS_GREP_BIN" "$@" | |
305 | } | |
644e0364 | 306 | |
db01f759 SM |
307 | # ok() with the test name `$3` on the result of bt_grep() matching the |
308 | # pattern `$1` within the file `$2`. | |
309 | bt_grep_ok() { | |
310 | local pattern=$1 | |
311 | local file=$2 | |
312 | local test_name=$3 | |
313 | ||
314 | bt_grep --silent "$pattern" "$file" | |
315 | ||
316 | local ret=$? | |
317 | ||
318 | if ! ok $ret "$test_name"; then | |
319 | { | |
320 | echo "Pattern \`$pattern\` doesn't match the contents of \`$file\`:" | |
321 | echo '--- 8< ---' | |
322 | cat "$file" | |
323 | echo '--- >8 ---' | |
324 | } >&2 | |
325 | fi | |
326 | ||
327 | return $ret | |
328 | } | |
329 | ||
644e0364 MJ |
330 | ### Functions ### |
331 | ||
332 | check_coverage() { | |
333 | coverage run "$@" | |
334 | } | |
335 | ||
1e14ec65 PP |
336 | # Execute a shell command in the appropriate environment to access the Python |
337 | # test utility modules in `tests/utils/python`. | |
338 | run_python() { | |
7747a39f PP |
339 | local our_pythonpath="${BT_TESTS_SRCDIR}/utils/python" |
340 | ||
5f62b715 | 341 | if [[ $BT_TESTS_PYTHON_VERSION =~ 3.[45] ]]; then |
7747a39f PP |
342 | # Add a local directory containing a `typing.py` to `PYTHONPATH` for |
343 | # Python 3.4 which doesn't offer the `typing` module. | |
344 | our_pythonpath="$our_pythonpath:${BT_TESTS_SRCDIR}/utils/python/typing" | |
345 | fi | |
346 | ||
347 | PYTHONPATH="${our_pythonpath}${PYTHONPATH:+:}${PYTHONPATH:-}" "$@" | |
1e14ec65 PP |
348 | } |
349 | ||
644e0364 MJ |
350 | # Execute a shell command in the appropriate environment to have access to the |
351 | # bt2 Python bindings. | |
352 | run_python_bt2() { | |
0b0893d4 | 353 | local lib_asan |
1e14ec65 PP |
354 | local -x "BABELTRACE_PYTHON_BT2_NO_TRACEBACK=1" |
355 | local -x "BABELTRACE_PLUGIN_PATH=${BT_TESTS_BABELTRACE_PLUGIN_PATH}" | |
356 | local -x "LIBBABELTRACE2_PLUGIN_PROVIDER_DIR=${BT_TESTS_PROVIDER_DIR}" | |
357 | local -x "BT_TESTS_DATADIR=${BT_TESTS_DATADIR}" | |
358 | local -x "BT_CTF_TRACES_PATH=${BT_CTF_TRACES_PATH}" | |
359 | local -x "BT_PLUGINS_PATH=${BT_PLUGINS_PATH}" | |
360 | local -x "PYTHONPATH=${BT_TESTS_PYTHONPATH}${PYTHONPATH:+:}${PYTHONPATH:-}" | |
644e0364 | 361 | |
0408934a SM |
362 | local main_lib_path="${BT_TESTS_BUILDDIR}/../src/lib/.libs" |
363 | ||
644e0364 | 364 | # Set the library search path so the python interpreter can load libbabeltrace2 |
a0baab4a | 365 | if [ "$BT_TESTS_OS_TYPE" = "mingw" ] || [ "$BT_TESTS_OS_TYPE" = "cygwin" ]; then |
1e14ec65 | 366 | local -x PATH="${main_lib_path}${PATH:+:}${PATH:-}" |
a0baab4a | 367 | elif [ "$BT_TESTS_OS_TYPE" = "darwin" ]; then |
1e14ec65 | 368 | local -x DYLD_LIBRARY_PATH="${main_lib_path}${DYLD_LIBRARY_PATH:+:}${DYLD_LIBRARY_PATH:-}" |
644e0364 | 369 | else |
1e14ec65 | 370 | local -x LD_LIBRARY_PATH="${main_lib_path}${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH:-}" |
e23e08c4 MJ |
371 | fi |
372 | ||
373 | # On Windows, an embedded Python interpreter needs a way to locate the path | |
1e14ec65 | 374 | # to its internal modules, set the prefix from python-config to the |
e23e08c4 | 375 | # PYTHONHOME variable. |
a0baab4a | 376 | if [ "$BT_TESTS_OS_TYPE" = "mingw" ]; then |
1e14ec65 PP |
377 | local -x PYTHONHOME |
378 | ||
379 | PYTHONHOME=$($BT_TESTS_PYTHON_CONFIG_BIN --prefix) | |
644e0364 MJ |
380 | fi |
381 | ||
0b0893d4 SM |
382 | # If AddressSanitizer is used, we must preload libasan.so so that |
383 | # libasan doesn't complain about not being the first loaded library. | |
384 | # | |
385 | # Python and sed (executed as part of the libtool wrapper) produce some | |
386 | # leaks, so we must unfortunately disable leak detection. Append it to | |
387 | # existing ASAN_OPTIONS, such that we override the user's value if it | |
388 | # contains detect_leaks=1. | |
75e396f6 | 389 | if [ "${BT_TESTS_ENABLE_ASAN:-}" = "1" ]; then |
407d3b10 | 390 | if ${BT_TESTS_CC_BIN} --version | head -n 1 | bt_grep -q '^gcc'; then |
1e14ec65 PP |
391 | lib_asan="$(${BT_TESTS_CC_BIN} -print-file-name=libasan.so)" |
392 | local -x LD_PRELOAD="${lib_asan}${LD_PRELOAD:+:}${LD_PRELOAD:-}" | |
2d12d310 | 393 | fi |
0b0893d4 | 394 | |
1e14ec65 | 395 | local -x "ASAN_OPTIONS=${ASAN_OPTIONS:-}${ASAN_OPTIONS:+,}detect_leaks=0" |
0b0893d4 SM |
396 | fi |
397 | ||
1e14ec65 | 398 | run_python "$@" |
644e0364 MJ |
399 | } |
400 | ||
401 | # Set the environment and run python tests in the directory. | |
402 | # | |
403 | # $1 : The directory containing the python test scripts | |
404 | # $2 : The pattern to match python test script names (optional) | |
644e0364 MJ |
405 | run_python_bt2_test() { |
406 | local test_dir="$1" | |
a818a617 | 407 | local test_pattern="${2:-'*'}" # optional, if none default to "*" |
644e0364 MJ |
408 | |
409 | local ret | |
410 | local test_runner_args=() | |
411 | ||
412 | test_runner_args+=("$test_dir") | |
75e396f6 | 413 | if [ -n "${test_pattern}" ]; then |
644e0364 MJ |
414 | test_runner_args+=("${test_pattern}") |
415 | fi | |
416 | ||
75e396f6 | 417 | if test "${BT_TESTS_COVERAGE:-}" = "1"; then |
644e0364 MJ |
418 | python_exec="check_coverage" |
419 | else | |
420 | python_exec="${BT_TESTS_PYTHON_BIN}" | |
421 | fi | |
422 | ||
423 | run_python_bt2 \ | |
424 | "${python_exec}" \ | |
425 | "${BT_TESTS_SRCDIR}/utils/python/testrunner.py" \ | |
a818a617 FD |
426 | --pattern "$test_pattern" \ |
427 | "$test_dir" \ | |
428 | ||
644e0364 MJ |
429 | ret=$? |
430 | ||
75e396f6 | 431 | if test "${BT_TESTS_COVERAGE_REPORT:-}" = "1"; then |
644e0364 MJ |
432 | coverage report -m |
433 | fi | |
434 | ||
75e396f6 | 435 | if test "${BT_TESTS_COVERAGE_HTML:-}" = "1"; then |
644e0364 MJ |
436 | coverage html |
437 | fi | |
438 | ||
439 | return $ret | |
440 | } | |
89ec984e SM |
441 | |
442 | # Generate a CTF trace using `mctf.py`. | |
443 | # | |
444 | # $1: Input filename | |
445 | # $2: Base directory path for output files | |
446 | gen_mctf_trace() { | |
447 | local input_file="$1" | |
448 | local base_dir="$2" | |
449 | ||
450 | diag "Running: ${BT_TESTS_PYTHON_BIN} ${BT_TESTS_SRCDIR}/utils/python/mctf.py --base-dir ${base_dir} ${input_file}" | |
ec48dce5 | 451 | run_python "${BT_TESTS_PYTHON_BIN}" "${BT_TESTS_SRCDIR}/utils/python/mctf.py" \ |
89ec984e SM |
452 | --base-dir "${base_dir}" "${input_file}" |
453 | } |