From e8701195e66f2d27ffe17fb514eae8173795aaf7 Mon Sep 17 00:00:00 2001 From: Georgiy Bondarenko <69736697+nehilo@users.noreply.github.com> Date: Thu, 4 Mar 2021 22:54:23 +0500 Subject: Initial commit --- buildroot/tests/run_tests | 77 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 buildroot/tests/run_tests (limited to 'buildroot/tests/run_tests') 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" -- cgit v1.2.3