diff options
author | Andres Noetzli <andres.noetzli@gmail.com> | 2018-03-21 13:10:24 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-21 13:10:24 -0700 |
commit | b8db52f9bad5b1053810c93f0067de8423349da3 (patch) | |
tree | bd937d795052073645a87032eaf8ecf0be2e11cb /test/Makefile.am | |
parent | be2702490d684c100ba6abe76ee156078a9aa621 (diff) |
Move regression tests to single Makefile.am (#1658)
Until now, regression tests were split across tens of different
Makefile.am, which required a lot of code duplication and does not
really seem to be in the spirit of automake. If we want to change the
LOG_COMPILER/LOG_DRIVER for example, we have to change every single
Makefile.am, which is cumbersome (I was able to get something
semi-working by exporting those variables but it didn't seem very
clean). Additionally, it made the output of the regression tests fairly
verbose and split the output across multiple log files. Finally
it also limited parallelism when running the regression tests (this fix lowers
the time it takes to run regression level 1 from 3m to 1m45s on my
machine with 16 threads).
This commit moves all the regression tests into
test/regress/Makefile.tests and changes test/regress/Makefile.am to deal
with this new structure. Finally, it changes how the test summary in
test/Makefile.am is produced: instead of relying on the log files for
the subdirectories, it greps for the test results in the log files of
the individual tests. Not the most elegant solution but we should
probably anyway delegate that task to a Python script at some point.
Diffstat (limited to 'test/Makefile.am')
-rw-r--r-- | test/Makefile.am | 101 |
1 files changed, 30 insertions, 71 deletions
diff --git a/test/Makefile.am b/test/Makefile.am index 65dd601b1..e87427dc6 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -29,65 +29,6 @@ test "X$(AM_COLOR_TESTS)" != Xno \ } subdirs_to_check = \ - regress/regress0 \ - regress/regress0/arith \ - regress/regress0/arith/integers \ - regress/regress0/arrays \ - regress/regress0/aufbv \ - regress/regress0/auflia \ - regress/regress0/bv \ - regress/regress0/bv/core \ - regress/regress0/datatypes \ - regress/regress0/decision \ - regress/regress0/expect \ - regress/regress0/fmf \ - regress/regress0/ho \ - regress/regress0/lemmas \ - regress/regress0/nl \ - regress/regress0/parser \ - regress/regress0/precedence \ - regress/regress0/preprocess \ - regress/regress0/push-pop \ - regress/regress0/push-pop/boolean \ - regress/regress0/quantifiers \ - regress/regress0/rels \ - regress/regress0/rewriterules \ - regress/regress0/sep \ - regress/regress0/sets \ - regress/regress0/strings \ - regress/regress0/sygus \ - regress/regress0/tptp \ - regress/regress0/uf \ - regress/regress0/uflia \ - regress/regress0/uflra \ - regress/regress0/unconstrained \ - regress/regress1 \ - regress/regress1/aufbv \ - regress/regress1/auflia \ - regress/regress1/bv \ - regress/regress1/datatypes \ - regress/regress1/decision \ - regress/regress1/fmf \ - regress/regress1/ho \ - regress/regress1/lemmas \ - regress/regress1/nl \ - regress/regress1/push-pop \ - regress/regress1/rels \ - regress/regress1/rewriterules \ - regress/regress1/sep \ - regress/regress1/sets \ - regress/regress1/strings \ - regress/regress1/sygus \ - regress/regress1/quantifiers \ - regress/regress1/uflia \ - regress/regress2 \ - regress/regress2/arith \ - regress/regress2/nl \ - regress/regress2/quantifiers \ - regress/regress2/strings \ - regress/regress2/sygus \ - regress/regress3 \ - regress/regress4 \ system \ unit @@ -95,6 +36,7 @@ check-recursive: check-pre .PHONY: check-pre check-pre: @rm -f $(subdirs_to_check:=/test-suite.log) + @find regress -name '*.trs' -exec rm {} \; if HAVE_CXXTESTGEN HANDLE_UNIT_TEST_SUMMARY = \ @@ -116,18 +58,7 @@ check-local: if test -s "system/test-suite.log"; then :; else \ echo "$${red}System tests did not run; maybe there were compilation problems ?$$std"; \ fi; \ - for dir in $(subdirs_to_check); do \ - log=$$dir/test-suite.log; \ - if test -s "$$log"; then \ - status="`head -n 5 $$log | tail -1`"; \ - if echo "$$status" | grep -q failed; then \ - echo "$$red$$status"; \ - echo " @abs_builddir@/$$log$$std"; \ - else \ - printf "$$grn%-30s in $$dir$$std\\n" "$$status"; \ - fi; \ - fi; \ - done; \ + echo $${red}Upgrade to a newer version of Automake to get a more detailed summary; \ echo $${blu}=============================== TESTING SUMMARY =============================$$std else # automake 1.12 version @@ -154,5 +85,33 @@ check-local: fi; \ fi; \ done; \ + for dir in `find regress -not -empty -type d`; do \ + status_info=`grep -d skip ":test-result: " $$dir/*`; \ + total=`echo "$$status_info" | grep ":test-result: " | wc -l`; \ + if [ $$total -ne 0 ]; then \ + status="$${std}$$total TOTAL"; \ + pass=`echo "$$status_info" | grep " PASS" | wc -l`; \ + if [ $$pass -ne 0 ]; then \ + status="$$status $${grn}$$pass PASS"; \ + fi; \ + fail=`echo "$$status_info" | grep " FAIL" | wc -l`; \ + if [ $$fail -ne 0 ]; then \ + status="$$status $${red}$$fail FAIL"; \ + fi; \ + xpass=`echo "$$status_info" | grep " XPASS" | wc -l`; \ + if [ $$xpass -ne 0 ]; then \ + status="$$status $${red}$$xpass XPASS"; \ + fi; \ + error=`echo "$$status_info" | grep " ERROR" | wc -l`; \ + if [ $$error -ne 0 ]; then \ + status="$$status $${red}$$error ERROR"; \ + fi; \ + skip=`echo "$$status_info" | grep " SKIP" | wc -l`; \ + if [ $$skip -ne 0 ]; then \ + status="$$status $${blu}$$skip SKIP"; \ + fi; \ + printf "$$grn%-30s in $$dir\\n" "$$status"; \ + fi; \ + done; \ echo $${blu}=============================== TESTING SUMMARY =============================$$std endif |