aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite
diff options
context:
space:
mode:
author1138-4EB <1138-4EB@users.noreply.github.com>2019-09-18 20:17:09 +0200
committertgingold <tgingold@users.noreply.github.com>2019-09-18 20:17:09 +0200
commit4a04f914b836c21a6d036f72846f8698d907cf43 (patch)
tree957b1f5fbd295d6abdcb02b09389e669f86117b8 /testsuite
parent1b8c3d64e07584ffcd60f2d13634e6285e3cc7ef (diff)
downloadghdl-4a04f914b836c21a6d036f72846f8698d907cf43.tar.gz
ghdl-4a04f914b836c21a6d036f72846f8698d907cf43.tar.bz2
ghdl-4a04f914b836c21a6d036f72846f8698d907cf43.zip
update testsuite (#928)
* update testsuite/testsuite.sh * deprecate dist/travis/test.sh, use testsuite/testsuite.sh instead
Diffstat (limited to 'testsuite')
-rwxr-xr-xtestsuite/testsuite.sh191
1 files changed, 159 insertions, 32 deletions
diff --git a/testsuite/testsuite.sh b/testsuite/testsuite.sh
index dd3f9e003..797e733eb 100755
--- a/testsuite/testsuite.sh
+++ b/testsuite/testsuite.sh
@@ -1,62 +1,189 @@
-#! /bin/sh
+#! /bin/bash
# Stop in case of error
set -e
-. ./testenv.sh
+enable_color() {
+ ENABLECOLOR=''
+ ANSI_RED="\033[31m"
+ ANSI_GREEN="\033[32m"
+ ANSI_YELLOW="\033[33m"
+ ANSI_BLUE="\033[34m"
+ ANSI_MAGENTA="\033[35m"
+ ANSI_GRAY="\033[90m"
+ ANSI_CYAN="\033[36;1m"
+ ANSI_DARKCYAN="\033[36m"
+ ANSI_NOCOLOR="\033[0m"
+}
-tests=
+disable_color() { unset ENABLECOLOR ANSI_RED ANSI_GREEN ANSI_YELLOW ANSI_BLUE ANSI_MAGENTA ANSI_CYAN ANSI_DARKCYAN ANSI_NOCOLOR; }
+enable_color
-for opt; do
- case "$opt" in
- [a-z]*) tests="$tests $opt" ;;
- *) echo "$0: unknown option $opt"; exit 2 ;;
- esac
-done
+print_start() {
+ COL="$ANSI_YELLOW"
+ if [ "x$2" != "x" ]; then
+ COL="$2"
+ fi
+ printf "${COL}${1}$ANSI_NOCOLOR\n"
+}
+
+gstart () {
+ print_start "$@"
+}
+gend () {
+ :
+}
+
+[ -n "$CI" ] && {
+ echo "INFO: set 'gstart' and 'gend' for CI"
+ gstart () {
+ printf '::[group]'
+ print_start "$@"
+ SECONDS=0
+ }
+
+ gend () {
+ duration=$SECONDS
+ echo '::[endgroup]'
+ printf "${ANSI_GRAY}took $(($duration / 60)) min $(($duration % 60)) sec.${ANSI_NOCOLOR}\n"
+ }
+} || echo "INFO: not in CI"
-if [ x$tests = x ]; then tests="sanity gna vests"; fi
+#---
+
+do_sanity () {
+ gstart "[GHDL - test] sanity"
+ cd sanity
+
+ for d in [0-9]*; do
+ cd $d
+ if ./testsuite.sh > test.log 2>&1 ; then
+ printf "sanity $d: ${ANSI_GREEN}ok${ANSI_NOCOLOR}\n"
+ # Don't disp log
+ else
+ printf "sanity $d: ${ANSI_RED}failed${ANSI_NOCOLOR}\n"
+ cat test.log
+ failures="$failures $d"
+ fi
+ cd ..
+ # Stop at the first failure
+ [ "$failures" = "" ] || break
+ done
+
+ cd ..
+ gend
+ [ "$failures" = "" ] || exit 1
+}
# The GNA testsuite: regression testsuite using reports/issues from gna.org
-do_gna()
-{
+do_gna () {
+ gstart "[GHDL - test] gna"
cd gna
- ./testsuite.sh
+
+ dirs=`./testsuite.sh --list-tests`
+ for d in $dirs; do
+ cd $d
+ if ./testsuite.sh > test.log 2>&1 ; then
+ printf "gna $d: ${ANSI_GREEN}ok${ANSI_NOCOLOR}\n"
+ # Don't disp log
+ else
+ printf "gna $d: ${ANSI_RED}failed${ANSI_NOCOLOR}\n"
+ cat test.log
+ failures="$failures $d"
+ fi
+ cd ..
+ # Stop at the first failure
+ [ "$failures" = "" ] || break
+ done
+
cd ..
+ gend
+ [ "$failures" = "" ] || exit 1
}
# The VESTS testsuite: compliance testsuite, from: https://github.com/nickg/vests.git 388250486a
-do_vests()
-{
+do_vests () {
+ gstart "[GHDL - test] vests"
cd vests
- ./testsuite.sh
+
+ if ./testsuite.sh > vests.log 2>&1 ; then
+ printf "${ANSI_GREEN}Vests is OK$ANSI_NOCOLOR\n"
+ wc -l vests.log
+ else
+ cat vests.log
+ printf "${ANSI_RED}Vests failure$ANSI_NOCOLOR\n"
+ failures=vests
+ fi
+
cd ..
+ gend
+ [ "$failures" = "" ] || exit 1
}
-do_sanity()
-{
- cd sanity
- ./testsuite.sh
- cd ..
+do_synth () {
+ gstart "[GHDL - test] synth"
+ cd synth
+
+ if ./testsuite.sh > synth.log 2>&1 ; then
+ printf "${ANSI_GREEN}Synth is OK$ANSI_NOCOLOR\n"
+ wc -l synth.log
+ else
+ cat synth.log
+ printf "${ANSI_RED}Synth failure$ANSI_NOCOLOR\n"
+ failures="synth"
+ fi
+
+ cd ..
+ gend
+ [ "$failures" = "" ] || exit 1
}
+#---
+
+if [ "x$GHDL" = "x" ]; then
+ if [ "x$prefix" != "x" ]; then
+ export GHDL="$prefix/bin/ghdl"
+ elif [ "x$(command -v which)" != "x" ]; then
+ export GHDL="$(which ghdl)"
+ else
+ printf "${ANSI_RED}error: GHDL environment variable is not defined${ANSI_NOCOLOR}\n"
+ exit 1
+ fi
+fi
+
+cd $(dirname $0)
+rm -f test_ok
+failures=""
+tests=
+
+for opt; do
+ case "$opt" in
+ [a-z]*) tests="$tests $opt" ;;
+ *) echo "$0: unknown option $opt"; exit 2 ;;
+ esac
+done
+
+if [ "x$tests" = "x" ]; then tests="sanity gna vests synth"; fi
+
+echo "tests: $tests"
+
# Run a testsuite
do_test() {
case $1 in
- gna) do_gna;;
- vests) do_vests;;
- sanity) do_sanity;;
- *)
- echo "$0: test name '$1' is unknown"
- exit 1;;
+ sanity) do_sanity;;
+ gna) do_gna;;
+ vests) do_vests;;
+ synth) do_synth;;
+ *)
+ printf "${ANSI_RED}$0: test name '$1' is unknown${ANSI_NOCOLOR}\n"
+ exit 1;;
esac
}
-
for t in $tests; do do_test $t; done
-echo "$0: Success"
+printf "${ANSI_GREEN}[GHDL - test] SUCCESSFUL${ANSI_NOCOLOR}\n"
+touch test_ok
-echo "GHDL is: $GHDL"
+printf "GHDL is: %s\n\n" "$GHDL"
$GHDL --version
-
-exit 0