| # Copyright 2023 Nordic Semiconductor ASA |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| _process_ids=""; |
| |
| #All user scripts require these variable, let's check for them here already |
| : "${BSIM_OUT_PATH:?BSIM_OUT_PATH must be defined}" |
| |
| #Give a default value to BOARD if it does not have one yet: |
| BOARD="${BOARD:-nrf52_bsim}" |
| |
| #The board target full string (with qualifiers): |
| BOARD_TS="${BOARD//\//_}" |
| |
| function run_in_background(){ |
| $@ & _process_ids="$_process_ids $!" |
| } |
| |
| function wait_for_background_jobs(){ |
| exit_code=0 |
| for process_id in $_process_ids; do |
| wait $process_id || let "exit_code=$?" |
| done |
| [ $exit_code -eq 0 ] || exit $exit_code |
| } |
| |
| trap ctrl_c INT |
| |
| function ctrl_c() { |
| echo "Aborted by CTRL-C" |
| |
| for process_id in $_process_ids; do |
| kill -15 $process_id |
| done |
| } |
| |
| function check_program_exists() { |
| if [ ! -f $1 ]; then |
| echo -e " \e[91m`pwd`/`basename $1` cannot be found (did you forget to\ |
| compile it?)\e[39m" |
| exit 1 |
| fi |
| } |
| |
| function Execute() { |
| EXECUTE_TIMEOUT="${EXECUTE_TIMEOUT:-30}" |
| |
| check_program_exists $1 |
| run_in_background timeout --kill-after=5 -v ${EXECUTE_TIMEOUT} $@ |
| } |
| |
| function _guess_test_relpath(){ |
| local PA="$(cd -- "$(dirname "${BASH_SOURCE[2]}")" && pwd)" |
| PA="$(realpath --relative-to "${ZEPHYR_BASE}" "${PA}")" |
| echo $PA | sed -E 's/\/tests?_scripts//' |
| } |
| |
| # For a caller running from a tests_script/ folder, get the path of its parent |
| # relative to $ZEPHYR_BASE |
| # This must be run without/before cd'ing into another directory |
| function guess_test_relpath(){ |
| echo $(_guess_test_relpath) |
| } |
| |
| # For a caller running from a tests_script/ folder, get the path of its parent |
| # relative to $ZEPHYR_BASE, replacing "/" with "_" |
| # This must be run without/before cd'ing into another directory |
| function guess_test_long_name(){ |
| echo $(_guess_test_relpath) | tr / _ |
| } |