opencv_run_all_tests_unix.sh.in 4.19 KB
Newer Older
1
#!/bin/bash
2

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
# Usage info

usage()
{
cat << EOF
usage: $0 [options]

This script runs the OpenCV tests on linux device.

OPTIONS:
   -h           Show this message
   -c           Color output
EOF
}

# Parse options

COLOR_OUTPUT=0
while getopts “hc” OPTION
do
    case $OPTION in
        h)
            usage
            exit 0
            ;;
        c)
            COLOR_OUTPUT=1
            ;;
        ?)
            usage
            exit 1
            ;;
    esac
done

38 39
# Text style

40 41 42 43 44 45 46 47 48 49 50
if [ $COLOR_OUTPUT -eq 1 ]; then
    TEXT_RED="$(tput setaf 1)"
    TEXT_GREEN="$(tput setaf 2)"
    TEXT_CYAN="$(tput setaf 6)"
    TEXT_RESET="$(tput sgr0)"
else
    TEXT_RED=""
    TEXT_GREEN=""
    TEXT_CYAN=""
    TEXT_RESET=""
fi
51 52 53

# Test binaries and data paths

54
OPENCV_TEST_PATH=@CMAKE_INSTALL_PREFIX@/@OPENCV_TEST_INSTALL_PATH@
55
OPENCV_PYTHON_TESTS=@OPENCV_PYTHON_TESTS_LIST@
56 57
export OPENCV_TEST_DATA_PATH=@CMAKE_INSTALL_PREFIX@/share/OpenCV/testdata

58 59 60 61 62 63 64 65 66
CUR_DIR=`pwd`
if [ -d "$CUR_DIR" -a -w "$CUR_DIR" ]; then
    echo "${TEXT_CYAN}CUR_DIR : $CUR_DIR${TEXT_RESET}"
else
    echo "${TEXT_RED}Error: Do not have permissions to write to $CUR_DIR${TEXT_RESET}"
    echo "${TEXT_RED}Please run the script from directory with write access${TEXT_RESET}"
    exit 1
fi

67 68
# Run tests

69
SUMMARY_STATUS=0
70 71 72
FAILED_TESTS=""
PASSED_TESTS=""

73 74
for t in "$OPENCV_TEST_PATH/"opencv_test_* "$OPENCV_TEST_PATH/"opencv_perf_*;
do
75 76
    test_name=`basename "$t"`

77
    cmd="$t --perf_min_samples=1 --perf_force_samples=1 --gtest_output=xml:$test_name.xml"
78

79 80 81 82 83 84 85 86 87
    seg_reg="s/^/${TEXT_CYAN}[$test_name]${TEXT_RESET} /"                     # append test name
    if [ $COLOR_OUTPUT -eq 1 ]; then
        seg_reg="${seg_reg};s/\[==========\]/${TEXT_GREEN}&${TEXT_RESET}/g"   # green for [==========]
        seg_reg="${seg_reg};s/\[----------\]/${TEXT_GREEN}&${TEXT_RESET}/g"   # green for [----------]
        seg_reg="${seg_reg};s/\[ RUN      \]/${TEXT_GREEN}&${TEXT_RESET}/g"   # green for [ RUN      ]
        seg_reg="${seg_reg};s/\[       OK \]/${TEXT_GREEN}&${TEXT_RESET}/g"   # green for [       OK ]
        seg_reg="${seg_reg};s/\[  FAILED  \]/${TEXT_RED}&${TEXT_RESET}/g"     # red   for [  FAILED  ]
        seg_reg="${seg_reg};s/\[  PASSED  \]/${TEXT_GREEN}&${TEXT_RESET}/g"   # green for [  PASSED  ]
    fi
88 89

    echo "${TEXT_CYAN}[$test_name]${TEXT_RESET} RUN : $cmd"
90
    eval "$cmd" | tee "$test_name.log" | sed -r "$seg_reg"
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
    ret=${PIPESTATUS[0]}
    echo "${TEXT_CYAN}[$test_name]${TEXT_RESET} RETURN_CODE : $ret"

    if [ $ret -ne 0 ]; then
        echo "${TEXT_CYAN}[$test_name]${TEXT_RESET} ${TEXT_RED}FAILED${TEXT_RESET}"
        SUMMARY_STATUS=1
        FAILED_TESTS="$FAILED_TESTS $test_name"
    else
        echo "${TEXT_CYAN}[$test_name]${TEXT_RESET} ${TEXT_GREEN}OK${TEXT_RESET}"
        PASSED_TESTS="$PASSED_TESTS $test_name"
    fi

    echo ""
done

for t in $OPENCV_PYTHON_TESTS;
do
    test_name=`basename "$t"`

110
    cmd="py.test --junitxml $test_name.xml \"$OPENCV_TEST_PATH\"/$t"
111 112 113 114

    seg_reg="s/^/${TEXT_CYAN}[$test_name]${TEXT_RESET} /"                 # append test name

    echo "${TEXT_CYAN}[$test_name]${TEXT_RESET} RUN : $cmd"
115
    eval "$cmd" | tee "$test_name.log" | sed -r "$seg_reg"
116 117 118 119 120 121 122 123 124 125 126 127 128 129

    ret=${PIPESTATUS[0]}
    echo "${TEXT_CYAN}[$test_name]${TEXT_RESET} RETURN_CODE : $ret"

    if [ $ret -ne 0 ]; then
        echo "${TEXT_CYAN}[$test_name]${TEXT_RESET} ${TEXT_RED}FAILED${TEXT_RESET}"
        SUMMARY_STATUS=1
        FAILED_TESTS="$FAILED_TESTS $test_name"
    else
        echo "${TEXT_CYAN}[$test_name]${TEXT_RESET} ${TEXT_GREEN}OK${TEXT_RESET}"
        PASSED_TESTS="$PASSED_TESTS $test_name"
    fi

    echo ""
130 131
done

132 133
# Remove temporary test files

134 135
rm -f /tmp/__opencv_temp.*

136 137 138 139 140
# Report final status

echo "${TEXT_CYAN}===============================================================${TEXT_RESET}"
echo "${TEXT_CYAN}PASSED TESTS : $PASSED_TESTS${TEXT_RESET}"
echo "${TEXT_CYAN}FAILED TESTS : $FAILED_TESTS${TEXT_RESET}"
141
if [ $SUMMARY_STATUS -eq 0 ]; then
142 143
    echo "${TEXT_GREEN}STATUS : OK${TEXT_RESET}"
    echo "${TEXT_GREEN}STATUS : All OpenCV tests finished successfully${TEXT_RESET}"
144
else
145 146
    echo "${TEXT_RED}STATUS : FAIL${TEXT_RESET}"
    echo "${TEXT_RED}STATUS : OpenCV tests finished with status $SUMMARY_STATUS${TEXT_RESET}"
147 148
fi

149
exit $SUMMARY_STATUS