blob: 53d39c51c7957650aab4540345dbc5017b76b4d5 [file] [log] [blame]
## automake - create Makefile.in from Makefile.am
## Copyright (C) 2001-2015 Free Software Foundation, Inc.
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2, or (at your option)
## any later version.
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with this program. If not, see <http://www.gnu.org/licenses/>.
## Obsolescent serial testsuite driver.
ifdef EXEEXT
## This is suboptimal, but we need to preserve the order of $(TESTS).
am.test-suite.cook-with-exeext.helper = \
$(if $(filter $(am.all-progs), $1), $1$(EXEEXT), $1)
am.test-suite.cook-with-exeext = \
$(strip $(foreach t, $1, $(call $0.helper, $t)))
else
am.test-suite.cook-with-exeext = $(strip $1)
endif
# TESTS can contain compiled programs, in which case we might have
# to account for $(EXEEXT) appending. For matching purposes, we
# need to adjust XFAIL_TESTS as well.
am__cooked_tests = \
$(call am.test-suite.cook-with-exeext, $(TESTS))
am__cooked_xfail_tests = \
$(call am.test-suite.cook-with-exeext, $(XFAIL_TESTS))
.PHONY: check-TESTS
check-TESTS: $(am__cooked_tests)
@failed=0; all=0; xfail=0; xpass=0; skip=0; \
srcdir=$(srcdir); export srcdir; \
list='$(am__cooked_tests)'; \
$(am.test-suite.tty-colors); \
is_xfail_test () { \
case " $(strip $(am__cooked_xfail_tests)) " in \
*" $$tst "*) return 0;; \
*) return 1;; \
esac; \
}; \
test -n "$$list" || exit 0; \
## Run the tests one by one in series, collecting their results.
for tst in $$list; do \
if test -f ./$$tst; then dir=./; \
## For VPATH support.
else dir="$(srcdir)/"; fi; \
if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \
## Success.
all=`expr $$all + 1`; \
if is_xfail_test; then \
xpass=`expr $$xpass + 1`; \
failed=`expr $$failed + 1`; \
col=$$red; res=XPASS; \
else \
col=$$grn; res=PASS; \
fi; \
elif test $$? -ne 77; then \
## Failure. Expected or unexpected?
all=`expr $$all + 1`; \
if is_xfail_test; then \
## Expected failure (XFAIL).
xfail=`expr $$xfail + 1`; \
col=$$lgn; res=XFAIL; \
else \
## Unexpected failure (FAIL).
failed=`expr $$failed + 1`; \
col=$$red; res=FAIL; \
fi; \
else \
## Test skipped.
skip=`expr $$skip + 1`; \
col=$$blu; res=SKIP; \
fi; \
## Report this single result on stdout.
echo "$${col}$$res$${std}: $$tst"; \
done; \
## Done running the tests. Will now have to display the global
## outcome, with proper formatting.
## Let's start preparing the banner.
if test "$$all" -eq 1; then \
tests="test"; \
All=""; \
else \
tests="tests"; \
All="All "; \
fi; \
if test "$$failed" -eq 0; then \
if test "$$xfail" -eq 0; then \
banner="$$All$$all $$tests passed"; \
else \
if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
fi; \
else \
if test "$$xpass" -eq 0; then \
banner="$$failed of $$all $$tests failed"; \
else \
if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
fi; \
fi; \
## DASHES should contain the largest line of the banner.
dashes="$$banner"; \
skipped=""; \
if test "$$skip" -ne 0; then \
if test "$$skip" -eq 1; then \
skipped="($$skip test was not run)"; \
else \
skipped="($$skip tests were not run)"; \
fi; \
test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
dashes="$$skipped"; \
fi; \
report=""; \
if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
report="Please report to $(PACKAGE_BUGREPORT)"; \
test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
dashes="$$report"; \
fi; \
dashes=`echo "$$dashes" | sed s/./=/g`; \
if test "$$failed" -eq 0; then \
col="$$grn"; \
else \
col="$$red"; \
fi; \
## Multi line coloring is problematic with "less -R", so we really need
## to color each line individually.
echo "$${col}$$dashes$${std}"; \
echo "$${col}$$banner$${std}"; \
test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
test -z "$$report" || echo "$${col}$$report$${std}"; \
echo "$${col}$$dashes$${std}"; \
test "$$failed" -eq 0 || exit 1