aboutsummaryrefslogtreecommitdiff
path: root/buildroot/tests/run_tests
diff options
context:
space:
mode:
Diffstat (limited to 'buildroot/tests/run_tests')
-rw-r--r--buildroot/tests/run_tests77
1 files changed, 77 insertions, 0 deletions
diff --git a/buildroot/tests/run_tests b/buildroot/tests/run_tests
new file mode 100644
index 0000000..c4286f4
--- /dev/null
+++ b/buildroot/tests/run_tests
@@ -0,0 +1,77 @@
+#!/usr/bin/env bash
+#
+# run_tests
+#
+export PATH="$PATH:$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )"
+export PATH="$PATH:./buildroot/bin"
+
+# 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
+ dir_list=("$(dirname "${BASH_SOURCE[0]}")"/*)
+ declare -a tests=(${dir_list[@]/*run_tests/})
+ for f in "${tests[@]}"; do
+ testenv=$(basename $f | cut -d"-" -f1)
+ 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 buildroot/tests/$2-tests | 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-tests\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
+ $2-tests $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"