| #!/bin/bash |
| # Copyright lowRISC contributors. |
| # Licensed under the Apache License, Version 2.0, see LICENSE for details. |
| # SPDX-License-Identifier: Apache-2.0 |
| # |
| # A shell script for executing rust-based tests for functional and e2e tests, |
| # especially for harnesses built atop opentitanlib. |
| # |
| # There are three components that make up the harness invocation: |
| # - test harness |
| # - arguments |
| # - test commands |
| # |
| # The test harness is invoked with arguments first, then the test commands. |
| # The test harness and test commands are both passed in by environment variables. |
| # Note that bazel passes user-specified test_arg arguments as arguments to this |
| # script, and because the user-specified test_arg arguments come after the bazel |
| # rule's arguments, they can override the ones coming from the bazel rule. |
| # Thus, the test harness and test script represent portions of the invocation |
| # that cannot be overridden, but the arguments in the middle can. |
| |
| set -e |
| |
| if [ -z "$TEST_HARNESS" ]; then |
| echo "TEST_HARNESS variable needs to be specified." |
| exit 1 |
| fi |
| |
| # eval the environment variable string to break up the components and have bash |
| # interpret quotes and other special characters in arguments. This happens |
| # during the invocation line. |
| eval "TEST_CMDS_ARRAY=( ${TEST_CMDS} )" |
| |
| echo Invoking test: "${TEST_HARNESS}" "$@" "${TEST_CMDS_ARRAY[@]}" |
| RUST_BACKTRACE=1 ${TEST_HARNESS} "$@" "${TEST_CMDS_ARRAY[@]}" |