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.
77 lines
2.0 KiB
77 lines
2.0 KiB
#!/usr/bin/env bash |
|
# |
|
# run_tests |
|
# |
|
HERE="$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )" |
|
TESTS="$HERE/../tests" |
|
export PATH="$HERE:$TESTS:$PATH" |
|
|
|
# exit on first failure |
|
set -e |
|
|
|
exec_test () { |
|
printf "\n\033[0;32m[Test $2] \033[0m$3...\n" |
|
# Check to see if we should skip tests |
|
if [[ -n "$4" ]] ; then |
|
if [[ ! "$3" =~ $4 ]] ; then |
|
printf "\033[1;33mSkipped\033[0m\n" |
|
return 0 |
|
fi |
|
fi |
|
if [[ -z "$VERBOSE_PLATFORMIO" ]] ; then |
|
silent="--silent" |
|
else |
|
silent="-v" |
|
fi |
|
if platformio run --project-dir $1 -e $2 $silent; then |
|
printf "\033[0;32mPassed\033[0m\n" |
|
return 0 |
|
else |
|
if [[ -n $GIT_RESET_HARD ]]; then |
|
git reset --hard HEAD |
|
else |
|
restore_configs |
|
fi |
|
printf "\033[0;31mFailed!\033[0m\n" |
|
return 1 |
|
fi |
|
} |
|
export -f exec_test |
|
|
|
printf "Running \033[0;32m$2\033[0m Tests\n" |
|
|
|
if [[ $2 = "ALL" ]]; then |
|
tests=("$TESTS"/*) |
|
for f in "${tests[@]}"; do |
|
testenv=$(basename $f) |
|
printf "Running \033[0;32m$f\033[0m Tests\n" |
|
exec_test $1 "$testenv --target clean" "Setup Build Environment" |
|
if [[ $GIT_RESET_HARD == "true" ]]; then |
|
git reset --hard HEAD |
|
else |
|
restore_configs |
|
fi |
|
done |
|
else |
|
exec_test $1 "$2 --target clean" "Setup Build Environment" |
|
test_name="$3" |
|
# If the test name is 1 or 2 digits, treat it as an index |
|
if [[ "$test_name" =~ ^[0-9][0-9]?$ ]] ; then |
|
# Find the test name that corresponds to that index |
|
test_name="$(cat $TESTS/$2 | grep -e '^exec_test' | sed -n "$3p" | sed "s/.*\$1 \$2 \"\([^\"]*\).*/\1/g")" |
|
if [[ -z "$test_name" ]] ; then |
|
# Fail if none matches |
|
printf "\033[0;31mCould not find test \033[0m#$3\033[0;31m in \033[0mbuildroot/tests/$2\n" |
|
exit 1 |
|
else |
|
printf "\033[0;32mMatching test \033[0m#$3\033[0;32m: '\033[0m$test_name\033[0;32m'\n" |
|
fi |
|
fi |
|
"$TESTS/$2" $1 $2 "$test_name" |
|
if [[ $GIT_RESET_HARD == "true" ]]; then |
|
git reset --hard HEAD |
|
else |
|
restore_configs |
|
fi |
|
fi |
|
printf "\033[0;32mAll tests completed successfully\033[0m\n"
|
|
|