#!/bin/bash # Copyright 2014-2016 Samsung Electronics Co., Ltd. # Copyright 2016 University of Szeged # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. DIR="$1" shift UNITTEST_ERROR=$DIR/unittests.failed UNITTEST_OK=$DIR/unittests.passed rm -f $UNITTEST_ERROR $UNITTEST_OK UNITTESTS=$(ls $DIR/unit-*) total=$(ls $DIR/unit-* | wc -l) if [ "$total" -eq 0 ] then echo "$0: $DIR: no unit-* test to execute" exit 1 fi ROOT_DIR="" CURRENT_DIR=`pwd` PATH_STEP=2 while true do TMP_ROOT_DIR=`(echo "$CURRENT_DIR"; echo "$0"; echo "$DIR") | cut -f1-$PATH_STEP -d/ | uniq -d` if [ -z "$TMP_ROOT_DIR" ] then break else ROOT_DIR="$TMP_ROOT_DIR" fi PATH_STEP=$((PATH_STEP+1)) done if [ -n "$ROOT_DIR" ] then ROOT_DIR="$ROOT_DIR/" fi tested=1 failed=0 passed=0 UNITTEST_TEMP=`mktemp unittest-out.XXXXXXXXXX` for unit_test in $UNITTESTS do cmd_line="${unit_test#$ROOT_DIR}" $unit_test &>$UNITTEST_TEMP status_code=$? if [ $status_code -ne 0 ] then echo "[$tested/$total] $cmd_line: FAIL ($status_code)" cat $UNITTEST_TEMP echo "$status_code: $unit_test" >> $UNITTEST_ERROR echo "============================================" >> $UNITTEST_ERROR cat $UNITTEST_TEMP >> $UNITTEST_ERROR echo "============================================" >> $UNITTEST_ERROR echo >> $UNITTEST_ERROR echo >> $UNITTEST_ERROR failed=$((failed+1)) else echo "[$tested/$total] $cmd_line: PASS" echo "$unit_test" >> $UNITTEST_OK passed=$((passed+1)) fi tested=$((tested+1)) done rm -f $UNITTEST_TEMP ratio=$(echo $passed*100/$total | bc) echo "[summary] ${DIR#$ROOT_DIR}/unit-*: $passed PASS, $failed FAIL, $total total, $ratio% success" if [ $failed -ne 0 ] then echo "$0: see $UNITTEST_ERROR for details about failures" exit 1 fi exit 0