diff options
author | 1138-4EB <1138-4EB@users.noreply.github.com> | 2019-09-18 20:17:09 +0200 |
---|---|---|
committer | tgingold <tgingold@users.noreply.github.com> | 2019-09-18 20:17:09 +0200 |
commit | 4a04f914b836c21a6d036f72846f8698d907cf43 (patch) | |
tree | 957b1f5fbd295d6abdcb02b09389e669f86117b8 /testsuite | |
parent | 1b8c3d64e07584ffcd60f2d13634e6285e3cc7ef (diff) | |
download | ghdl-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-x | testsuite/testsuite.sh | 191 |
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 |