150 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/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
 | 
