]> git.ipfire.org Git - thirdparty/dracut.git/blob - test/test-functions
test: add TEST_RUN_ID
[thirdparty/dracut.git] / test / test-functions
1 #!/bin/bash
2 PATH=/sbin:/bin:/usr/sbin:/usr/bin
3 export PATH
4
5 [[ -e .testdir${TEST_RUN_ID:+-$TEST_RUN_ID} ]] && . .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
6 if [[ -z "$TESTDIR" ]] || [[ ! -d "$TESTDIR" ]]; then
7 TESTDIR=$(mktemp -d -p "/var/tmp" -t dracut-test.XXXXXX)
8 fi
9 echo "TESTDIR=\"$TESTDIR\"" > .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
10 export TESTDIR
11
12 command -v test_check &>/dev/null || test_check() {
13 :
14 }
15
16 # terminal sequence to set color to a 'success' color (currently: green)
17 function SETCOLOR_SUCCESS() { echo -en '\033[0;32m'; }
18 # terminal sequence to set color to a 'failure' color (currently: red)
19 function SETCOLOR_FAILURE() { echo -en '\033[0;31m'; }
20 # terminal sequence to set color to a 'warning' color (currently: yellow)
21 function SETCOLOR_WARNING() { echo -en '\033[0;33m'; }
22 # terminal sequence to reset to the default color.
23 function SETCOLOR_NORMAL() { echo -en '\033[0;39m'; }
24
25 COLOR_SUCCESS='\033[0;32m'
26 COLOR_FAILURE='\033[0;31m'
27 COLOR_WARNING='\033[0;33m'
28 COLOR_NORMAL='\033[0;39m'
29
30 check_root() {
31 if (( $EUID != 0 )); then
32 SETCOLOR_FAILURE; echo "Tests must be run as root! Please use 'sudo'."; SETCOLOR_NORMAL
33 exit 1
34 fi
35 }
36
37 while (($# > 0)); do
38 case $1 in
39 --run)
40 check_root
41 echo "TEST RUN: $TEST_DESCRIPTION"
42 test_check && test_run
43 exit $?;;
44 --setup)
45 check_root
46 echo "TEST SETUP: $TEST_DESCRIPTION"
47 test_check && test_setup
48 exit $?;;
49 --clean)
50 echo "TEST CLEANUP: $TEST_DESCRIPTION"
51 test_cleanup
52 rm -fr -- "$TESTDIR"
53 rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
54 exit $?;;
55 --all)
56 check_root
57 if ! test_check 2&>test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log ; then
58 echo -e "TEST: $TEST_DESCRIPTION " $COLOR_WARNING "[SKIPPED]" $COLOR_NORMAL
59 exit 0;
60 else
61 echo "TEST: $TEST_DESCRIPTION [STARTED]";
62 fi
63 if [ "$V" != "1" ]; then
64 (
65 test_setup && test_run
66 ret=$?
67 test_cleanup
68 rm -fr -- "$TESTDIR"
69 rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
70 exit $ret
71 ) </dev/null >test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log 2>&1
72 else
73 set -o pipefail
74 (
75 test_setup && test_run
76 ret=$?
77 test_cleanup
78 if ((ret!=0)) && [[ -f "$TESTDIR"/server.log ]]; then
79 mv [[ -f "$TESTDIR"/server.log ]] ./server${TEST_RUN_ID:+-$TEST_RUN_ID}.log
80 fi
81 rm -fr -- "$TESTDIR"
82 rm -f -- .testdir${TEST_RUN_ID:+-$TEST_RUN_ID}
83 exit $ret
84 ) </dev/null 2>&1 | tee test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
85 fi
86 ret=$?
87 set +o pipefail
88 if [ $ret -eq 0 ]; then
89 rm -- test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
90 echo -e "TEST: $TEST_DESCRIPTION " $COLOR_SUCCESS "[OK]" $COLOR_NORMAL
91 else
92 echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
93 if [ "$V" == "2" ]; then
94 cat $(pwd)/server${TEST_RUN_ID:+-$TEST_RUN_ID}.log $(pwd)/test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log
95 echo -e "TEST: $TEST_DESCRIPTION " $COLOR_FAILURE "[FAILED]" $COLOR_NORMAL
96 else
97 echo "see $(pwd)/test-${TEST_RUN_ID:+-$TEST_RUN_ID}.log"
98 fi
99 fi
100 exit $ret;;
101 *) break ;;
102 esac
103 shift
104 done