# find all test .pro files pahts, cut .pro extension
UNIT_TEST_PROJECTS=(`find $UNIT_TESTS_ROOT_DIR_ABSOLUTE | egrep .pro$ | sed -e s/.pro//g`)
+ echo "###################################################"
+ echo "All unit test executables will be deleted"
+ echo "and qmake + make will be run for root tests.pro"
+ echo "###################################################"
+ echo ""
+
+ # remove all unit test binaries
+ for BINARY in "${UNIT_TEST_PROJECTS[@]}"
+ do
+ # remove only if file really exists
+ if [ -a $BINARY ]; then
+ rm $BINARY
+ fi
+ done
+
+ # run qmake
+ cd $UNIT_TESTS_ROOT_DIR_ABSOLUTE
+ qmake -r
+ make
+ cd -
+
+ echo ""
+ echo "###################################################"
+ echo "Executing tests..."
+ echo "###################################################"
+
# run tests
- for project in "${UNIT_TEST_PROJECTS[@]}"
+ for PROJECT in "${UNIT_TEST_PROJECTS[@]}"
do
# do not try to test the root tests.pro project
- if [ $project != "$UNIT_TESTS_ROOT_DIR_ABSOLUTE/tests" ]; then
+ if [ $PROJECT != "$UNIT_TESTS_ROOT_DIR_ABSOLUTE/tests" ]; then
# check if unit test file is found and is executable
- if [ -x $project ]; then
- echo ""
+ if [ -x $PROJECT ]; then
+ # go to unit test directory
+ cd "`echo $PROJECT | grep --perl-regexp -o .*\(?=/\)`"
# run unit test, save to temp file, ignore strerr stream
- $project -silent -o $REPORT_PATH_ABSOLUTE/$TEMP_REPORT_FILE 2> /dev/null
+ $PROJECT -silent -o $REPORT_PATH_ABSOLUTE/$TEMP_REPORT_FILE 2>&1 | grep -v "atk_object_set_name..assertion"
+ cd - > /dev/null
# print to screen and append to summary
cat $REPORT_PATH_ABSOLUTE/$TEMP_REPORT_FILE
cat $REPORT_PATH_ABSOLUTE/$TEMP_REPORT_FILE >> $REPORT_PATH_ABSOLUTE/$REPORT_FILE
echo "" >> $REPORT_PATH_ABSOLUTE/$REPORT_FILE
else
# save path of missing test to temporary file
- missing=(`echo $project | sed -e s,$UNIT_TESTS_ROOT_DIR_ABSOLUTE,,g`)
- echo "$missing" >> "$REPORT_PATH_ABSOLUTE/$TEMP_FILE_EXEC_NOT_FOUND"
+ MISSING=(`echo $PROJECT | sed -e s,$UNIT_TESTS_ROOT_DIR_ABSOLUTE,,g`)
+ echo "$MISSING" >> "$REPORT_PATH_ABSOLUTE/$TEMP_FILE_EXEC_NOT_FOUND"
fi
fi
done
fi
# check if unit test output contained any qDebug or qWarning prints
- debugs=$(egrep -c "(QDEBUG|QWARN)" $REPORT_PATH_ABSOLUTE/$REPORT_FILE)
- if [ $debugs -ge 1 ]; then
+ DEBUG_COUNT=$(egrep -c "(QDEBUG|QWARN)" $REPORT_PATH_ABSOLUTE/$REPORT_FILE)
+ if [ $DEBUG_COUNT -ge 1 ]; then
echo ""
# print message in red and bold
echo -e "\E[31m\E[1mDisable debug output from unit tests so test output stays readable!!!"