You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.8 KiB
70 lines
1.8 KiB
# 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/native}" |
|
|
|
#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 / _ |
|
}
|
|
|