| #!/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[@]}" |