#!/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin export PATH [[ -e .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} ]] && . .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} if [[ -z "$TESTDIR" ]] || [[ ! -d "$TESTDIR" ]]; then TESTDIR=$(mktemp -d -p "/var/tmp" -t dracut-test.XXXXXX) fi echo "TESTDIR=\"$TESTDIR\"" > .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} export TESTDIR command -v test_check &>/dev/null || test_check() { : } # terminal sequence to set color to a 'success' color (currently: green) function SETCOLOR_SUCCESS() { echo -en '\033[0;32m'; } # terminal sequence to set color to a 'failure' color (currently: red) function SETCOLOR_FAILURE() { echo -en '\033[0;31m'; } # terminal sequence to set color to a 'warning' color (currently: yellow) function SETCOLOR_WARNING() { echo -en '\033[0;33m'; } # terminal sequence to reset to the default color. function SETCOLOR_NORMAL() { echo -en '\033[0;39m'; } COLOR_SUCCESS='\033[0;32m' COLOR_FAILURE='\033[0;31m' COLOR_WARNING='\033[0;33m' COLOR_NORMAL='\033[0;39m' check_root() { if (( $EUID != 0 )); then SETCOLOR_FAILURE; echo "Tests must be run as root! Please use 'sudo'."; SETCOLOR_NORMAL exit 1 fi } while (($# > 0)); do case $1 in --run) check_root echo "TEST RUN: $TEST_DESCRIPTION" test_check && test_run exit $?;; --setup) check_root echo "TEST SETUP: $TEST_DESCRIPTION" test_check && test_setup exit $?;; --clean) echo "TEST CLEANUP: $TEST_DESCRIPTION" test_cleanup rm -fr -- "$TESTDIR" rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} exit $?;; --all) check_root if ! test_check 2&>test${TEST_RUN_ID:+-$TEST_RUN_ID}.log ; then echo -e "TEST: $TEST_DESCRIPTION " $COLOR_WARNING "[SKIPPED]" $COLOR_NORMAL exit 0; else echo "TEST: $TEST_DESCRIPTION [STARTED]"; fi if [[ "$V" == "1" ]]; then set -o pipefail ( test_setup && test_run ret=$? test_cleanup if ((ret!=0)) && [[ -f "$TESTDIR"/server.log ]]; then mv [[ -f "$TESTDIR"/server.log ]] ./server${TEST_RUN_ID:+-$TEST_RUN_ID}.log fi rm -fr -- "$TESTDIR" rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} exit $ret ) &1 | tee test${TEST_RUN_ID:+-$TEST_RUN_ID}.log elif [[ "$V" == "2" ]]; then set -o pipefail ( test_setup && test_run ret=$? test_cleanup if ((ret!=0)) && [[ -f "$TESTDIR"/server.log ]]; then mv "$TESTDIR"/server.log ./server${TEST_RUN_ID:+-$TEST_RUN_ID}.log fi rm -fr -- "$TESTDIR" rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} exit $ret ) &1 | $basedir/logtee test${TEST_RUN_ID:+-$TEST_RUN_ID}.log else ( test_setup && test_run ret=$? test_cleanup rm -fr -- "$TESTDIR" rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} exit $ret ) test${TEST_RUN_ID:+-$TEST_RUN_ID}.log 2>&1 fi ret=$? set +o pipefail if [ $ret -eq 0 ]; then rm -- test${TEST_RUN_ID:+-$TEST_RUN_ID}.log echo -e "TEST: $TEST_DESCRIPTION " $COLOR_SUCCESS "[OK]" $COLOR_NORMAL else echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL if [ "$V" == "2" ]; then tail -c 1048576 $(pwd)/server${TEST_RUN_ID:+-$TEST_RUN_ID}.log $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL else echo "see $(pwd)/test${TEST_RUN_ID:+-$TEST_RUN_ID}.log" fi fi exit $ret;; *) break ;; esac shift done