123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #!/bin/bash
- # 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
- # Text style
- 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
- # Test binaries and data paths
- OPENCV_TEST_PATH=@CMAKE_INSTALL_PREFIX@/@OPENCV_TEST_INSTALL_PATH@
- OPENCV_PYTHON_TESTS=@OPENCV_PYTHON_TESTS_LIST@
- export OPENCV_TEST_DATA_PATH=@CMAKE_INSTALL_PREFIX@/share/OpenCV/testdata
- 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
- # Run tests
- SUMMARY_STATUS=0
- FAILED_TESTS=""
- PASSED_TESTS=""
- for t in "$OPENCV_TEST_PATH/"opencv_test_* "$OPENCV_TEST_PATH/"opencv_perf_*;
- do
- test_name=`basename "$t"`
- cmd="$t --perf_min_samples=1 --perf_force_samples=1 --gtest_output=xml:$test_name.xml"
- 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
- echo "${TEXT_CYAN}[$test_name]${TEXT_RESET} RUN : $cmd"
- eval "$cmd" | tee "$test_name.log" | sed -r "$seg_reg"
- 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"`
- cmd="py.test --junitxml $test_name.xml \"$OPENCV_TEST_PATH\"/$t"
- seg_reg="s/^/${TEXT_CYAN}[$test_name]${TEXT_RESET} /" # append test name
- echo "${TEXT_CYAN}[$test_name]${TEXT_RESET} RUN : $cmd"
- eval "$cmd" | tee "$test_name.log" | sed -r "$seg_reg"
- 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
- # Remove temporary test files
- rm -f /tmp/__opencv_temp.*
- # 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}"
- if [ $SUMMARY_STATUS -eq 0 ]; then
- echo "${TEXT_GREEN}STATUS : OK${TEXT_RESET}"
- echo "${TEXT_GREEN}STATUS : All OpenCV tests finished successfully${TEXT_RESET}"
- else
- echo "${TEXT_RED}STATUS : FAIL${TEXT_RESET}"
- echo "${TEXT_RED}STATUS : OpenCV tests finished with status $SUMMARY_STATUS${TEXT_RESET}"
- fi
- exit $SUMMARY_STATUS
|