mirror of https://github.com/opencv/opencv.git
Open Source Computer Vision Library
https://opencv.org/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
4.2 KiB
149 lines
4.2 KiB
#!/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
|
|
|