mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
122 lines
2.9 KiB
Bash
Executable File
122 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright JS Foundation and other contributors, http://js.foundation
|
|
#
|
|
# 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
|
|
|
|
VERBOSE=1
|
|
if [ "$1" == "-q" ]
|
|
then
|
|
unset VERBOSE
|
|
shift
|
|
fi
|
|
|
|
UNITTEST_ERROR=$DIR/unittests.failed
|
|
UNITTEST_OK=$DIR/unittests.passed
|
|
|
|
rm -f $UNITTEST_ERROR $UNITTEST_OK
|
|
|
|
UNITTESTS=$(find $DIR -maxdepth 1 -type f -name 'unit-*')
|
|
total=$(find $DIR -maxdepth 1 -type f -name '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`
|
|
|
|
TERM_NORMAL="\033[0m"
|
|
TERM_RED="\033[1;31m"
|
|
TERM_GREEN="\033[1;32m"
|
|
|
|
for unit_test in $UNITTESTS
|
|
do
|
|
cmd_line="$RUNTIME ${unit_test#$ROOT_DIR}"
|
|
$RUNTIME $unit_test &>$UNITTEST_TEMP
|
|
status_code=$?
|
|
|
|
if [ $status_code -ne 0 ]
|
|
then
|
|
printf "[%4d/%4d] %bFAIL (%d): %s%b\n" "$tested" "$total" "$TERM_RED" "$status_code" "${unit_test#$ROOT_DIR}" "$TERM_NORMAL"
|
|
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
|
|
test $VERBOSE && printf "[%4d/%4d] %bPASS: %s%b\n" "$tested" "$total" "$TERM_GREEN" "${unit_test#$ROOT_DIR}" "$TERM_NORMAL"
|
|
echo "$unit_test" >> $UNITTEST_OK
|
|
|
|
passed=$((passed+1))
|
|
fi
|
|
|
|
tested=$((tested+1))
|
|
done
|
|
|
|
rm -f $UNITTEST_TEMP
|
|
|
|
ratio=$(echo $passed*100/$total | bc)
|
|
if [ $passed -eq $total ]
|
|
then
|
|
success_color=$TERM_GREEN
|
|
else
|
|
success_color=$TERM_RED
|
|
fi
|
|
|
|
echo -e "\n[summary] ${DIR#$ROOT_DIR}/unit-*\n"
|
|
echo -e "TOTAL: $total"
|
|
echo -e "${TERM_GREEN}PASS: $passed${TERM_NORMAL}"
|
|
echo -e "${TERM_RED}FAIL: $failed${TERM_NORMAL}\n"
|
|
echo -e "${success_color}Success: $ratio%${TERM_NORMAL}\n"
|
|
|
|
if [ $failed -ne 0 ]
|
|
then
|
|
echo "$0: see $UNITTEST_ERROR for details about failures"
|
|
exit 1
|
|
fi
|
|
|
|
exit 0
|