diff options
author | Ralf Wildenhues <Ralf.Wildenhues@gmx.de> | 2009-03-14 12:15:40 +0100 |
---|---|---|
committer | Jim Meyering <meyering@redhat.com> | 2009-03-31 20:29:01 +0200 |
commit | f8268d3baecee552e13efb916693bfa51734862b (patch) | |
tree | dda3f095374e8affd7ba90e767a2f1c4b09ce5c1 /build-aux | |
parent | 7a21310eb3b8135546d0ded83f301f657cd757ae (diff) | |
download | coreutils-f8268d3baecee552e13efb916693bfa51734862b.tar.xz |
build: use Automake's new parallel-tests feature
* build-aux/check.mk: Remove, not needed any more.
* tests/Makefile.am (AUTOMAKE_OPTIONS): Add parallel-tests and
color-tests.
* tests/check.mk: Do not include build-aux/check.mk any more.
(SUFFIXES, TEST_LOGS): Remove.
(TESTS_ENVIRONMENT): Use $$f rather than $$tst in $PERL invocation.
* gnulib-tests/Makefile.am: Do not include build-aux/check.mk.
(AUTOMAKE_OPTIONS): New macro, add parallel-test and color-tests.
(TEST_LOGS): Remove.
Diffstat (limited to 'build-aux')
-rw-r--r-- | build-aux/check.mk | 283 |
1 files changed, 0 insertions, 283 deletions
diff --git a/build-aux/check.mk b/build-aux/check.mk deleted file mode 100644 index 5bfcc90cf..000000000 --- a/build-aux/check.mk +++ /dev/null @@ -1,283 +0,0 @@ -## Vaucanson, a generic library for finite state machines. -## Copyright (C) 2006, 2007 The Vaucanson Group. -## -## 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 -## of the License, or (at your option) any later version. -## -## The complete GNU General Public Licence Notice can be found as the -## `COPYING' file in the root directory. - -## Override the definition from Automake to generate a log file with -## failed tests. It also supports parallel make checks. -## -## This file provides special support for "unit tests", that is to -## say, tests that (once run) no longer need to be re-compiled and -## re-run at each "make check", unless their sources changed. To -## enable unit-test supports, define LAZY_TEST_SUITE. In such a -## setting, that heavily relies on correct dependencies, its users may -## prefer to define EXTRA_PROGRAMS instead of check_PROGRAMS, because -## it allows intertwined compilation and execution of the tests. -## Sometimes this helps catching errors earlier (you don't have to -## wait for all the tests to be compiled). -## -## Define TEST_SUITE_LOG to be the name of the global log to create. -## Define TEST_LOGS to the set of logs to include in it. One possibility -## is $(TESTS:.test=.log). -## -## In addition to the magic "exit 77 means SKIP" feature (which was -## imported from automake), there is a magic "exit 177 means FAIL" feature -## which is useful if you need to issue a hard error no matter whether the -## test is XFAIL or not. - -# Use a POSIX-compatible shell if available, as this file uses -# features of the POSIX shell that are not supported by some standard -# shell implementations (e.g., Solaris 10 /bin/sh). -SHELL = $(PREFERABLY_POSIX_SHELL) - -# Set this to `false' to disable hard errors. -ENABLE_HARD_ERRORS = : - -## We use GNU Make extensions (%-rules) inside GNU_MAKE checks, -## and we override check-TESTS. -AUTOMAKE_OPTIONS += -Wno-portability -Wno-override - -# Restructured Text title and section. -am__rst_title = sed 's/.*/ & /;h;s/./=/g;p;x;p;g;p;s/.*//' -am__rst_section = sed 'p;s/./=/g;p;g' - -# Put stdin (possibly several lines separated by ". ") in a box. -am__text_box = $(AWK) '{gsub ("\\. ", "\n"); print $$0; }' | \ -$(AWK) ' \ -max < length($$0) { \ - final= final (final ? "\n" : "") " " $$0; \ - max = length($$0); \ -} \ -END { \ - for (i = 0; i < max + 2 ; ++i) \ - line = line "="; \ - print line; \ - print final; \ - print line; \ -}' - -# If stdout is a tty and TERM is smart then use colors. If test -t or -# tput are not supported then this fails; a conservative approach. Of -# course do not redirect stdout here, just stderr... -am__tty_colors = \ -red=; \ -grn=; \ -lgn=; \ -blu=; \ -std=; \ -test "X$$TERM" != Xdumb && \ -test -t 1 2>/dev/null && \ -tput bold 1 >/dev/null 2>&1 && \ -tput setaf 1 >/dev/null 2>&1 && \ -tput sgr0 >/dev/null 2>&1 && \ -{ \ - red=$$(tput setaf 1); \ - grn=$$(tput setaf 2); \ - lgn=$$(tput bold)$$(tput setaf 2); \ - blu=$$(tput setaf 4); \ - std=$$(tput sgr0); \ -} - -# Solaris 10 'make', and several other traditional 'make' implementations, -# pass "-e" to $(SHELL). This contradicts POSIX. Work around the problem -# by disabling -e (using the XSI extension "set +e") if it's set. -SH_E_WORKAROUND = case $$- in *e*) set +e;; esac - -# Emulate dirname with sed. -_d_no_slash = s,^[^/]*$$,., -_d_strip_trailing = s,\([^/]\)//*$$,\1, -_d_abs_trivial = s,^//*[^/]*$$,/, -_d_rm_basename = s,\([^/]\)//*[^/]*$$,\1, -_dirname = \ - sed '$(_d_no_slash);$(_d_strip_trailing);$(_d_abs_trivial);$(_d_rm_basename)' - -# To be inserted before the command running the test. Creates the -# directory for the log if needed. Stores in $dir the directory -# containing $src, and passes TESTS_ENVIRONMENT. -# Save and restore TERM around use of TESTS_ENVIRONMENT, -# in case that unsets it. -am__check_pre = \ -$(SH_E_WORKAROUND); \ -tst=`echo "$$src" | sed 's|^.*/||'`; \ -rm -f $@-t; \ -trap 'st=$$?; rm -f '\''$(abs_builddir)/$@-t'\''; (exit $$st); exit $$st' \ - 1 2 13 15; \ -$(mkdir_p) "$$(echo '$@'|$(_dirname))" || exit; \ -if test -f "./$$src"; then dir=./; \ -elif test -f "$$src"; then dir=; \ -else dir="$(srcdir)/"; fi; \ -__SAVED_TERM=$$TERM; \ -$(TESTS_ENVIRONMENT) - -# To be appended to the command running the test. Handles the stdout -# and stderr redirection, and catch the exit status. -am__check_post = \ ->$@-t 2>&1; \ -estatus=$$?; \ -if test $$estatus -eq 177; then \ - $(ENABLE_HARD_ERRORS) || estatus=1; \ -fi; \ -TERM=$$__SAVED_TERM; export TERM; \ -$(am__tty_colors); \ -xfailed=PASS; \ -for xfail in : $(XFAIL_TESTS); do \ - case $$src in \ - $$xfail | */$$xfail) xfailed=XFAIL; break; \ - esac; \ -done; \ -case $$estatus:$$xfailed in \ - 0:XFAIL) col=$$red; res=XPASS;; \ - 0:*) col=$$grn; res=PASS ;; \ - 77:*) col=$$blu; res=SKIP ;; \ - 177:*) col=$$red; res=FAIL ;; \ - *:XFAIL) col=$$lgn; res=XFAIL;; \ - *:*) col=$$red; res=FAIL ;; \ -esac; \ -echo "$${col}$$res$${std}: $@"; \ -echo "$$res: $@ (exit: $$estatus)" | \ - $(am__rst_section) >$@; \ -cat $@-t >>$@; \ -rm $@-t - -SUFFIXES += .html .log - -# From a test (with no extension) to a log file. -if GNU_MAKE -%.log: % - @src='$<'; $(am__check_pre) "$$dir$$src" $(am__check_post) -else -# With POSIX 'make', inference rules cannot have FOO.log depend on FOO. -# Work around the problem by calculating the dependency dynamically, and -# then invoking a submake with the calculated dependency. -CHECK-FORCE: -DEPENDENCY = CHECK-FORCE -$(TEST_LOGS): $(DEPENDENCY) - @if test '$(DEPENDENCY)' = CHECK-FORCE; then \ - dst=$@; src=$${dst%.log}; \ - test -x "$$src" || src='$(srcdir)'/$$src; \ - exec $(MAKE) $(AM_MAKEFLAGS) DEPENDENCY="$$src" $@; \ - else \ - src='$(DEPENDENCY)'; \ - $(am__check_pre) "$$dir$$src" $(am__check_post); \ - fi -endif - -#TEST_LOGS = $(TESTS:.test=.log) -TEST_SUITE_LOG = test-suite.log - -$(TEST_SUITE_LOG): $(TEST_LOGS) - @$(SH_E_WORKAROUND); \ - results=$$(for f in $(TEST_LOGS); do sed 1q $$f; done); \ - all=$$(echo "$$results" | wc -l | sed -e 's/^[ \t]*//'); \ - fail=$$(echo "$$results" | grep -c '^FAIL'); \ - pass=$$(echo "$$results" | grep -c '^PASS'); \ - skip=$$(echo "$$results" | grep -c '^SKIP'); \ - xfail=$$(echo "$$results" | grep -c '^XFAIL'); \ - xpass=$$(echo "$$results" | grep -c '^XPASS'); \ - failures=$$(expr $$fail + $$xpass); \ - case fail=$$fail:xpass=$$xpass:xfail=$$xfail in \ - fail=0:xpass=0:xfail=0) \ - msg="All $$all tests passed. "; \ - exit=true;; \ - fail=0:xpass=0:xfail=*) \ - msg="All $$all tests behaved as expected"; \ - msg="$$msg ($$xfail expected failures). "; \ - exit=true;; \ - fail=*:xpass=0:xfail=*) \ - msg="$$fail of $$all tests failed. "; \ - exit=false;; \ - fail=*:xpass=*:xfail=*) \ - msg="$$failures of $$all tests did not behave as expected"; \ - msg="$$msg ($$xpass unexpected passes). "; \ - exit=false;; \ - *) \ - echo >&2 "incorrect case"; exit 4;; \ - esac; \ - if test "$$skip" -ne 0; then \ - msg="$$msg($$skip tests were not run). "; \ - fi; \ - if test "$$failures" -ne 0; then \ - { \ - echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ - $(am__rst_title); \ - echo "$$msg"; \ - echo; \ - echo ".. contents:: :depth: 2"; \ - echo; \ - for f in $(TEST_LOGS); \ - do \ - case $$(sed 1q $$f) in \ - SKIP:*|PASS:*|XFAIL:*);; \ - *) echo; cat $$f;; \ - esac; \ - done; \ - } >$(TEST_SUITE_LOG).tmp; \ - mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ - msg="$${msg}See $(subdir)/$(TEST_SUITE_LOG). "; \ - if test -n "$(PACKAGE_BUGREPORT)"; then \ - msg="$${msg}Please report it to $(PACKAGE_BUGREPORT). "; \ - fi; \ - fi; \ - $(am__tty_colors); \ - if $$exit; then echo $$grn; else echo $$red; fi; \ - echo "$$msg" | $(am__text_box); \ - echo $$std; \ - test x"$$VERBOSE" = x || $$exit || cat $(TEST_SUITE_LOG); \ - $$exit - -# if test x"$$VERBOSE" != x && ! $exit; then - -# Run all the tests. -check-TESTS: - @if test -z '$(LAZY_TEST_SUITE)'; then \ - rm -f $(TEST_SUITE_LOG) $(TEST_LOGS); \ - fi - @$(MAKE) $(TEST_SUITE_LOG) - - -## -------------- ## -## Produce HTML. ## -## -------------- ## - -TEST_SUITE_HTML = $(TEST_SUITE_LOG:.log=.html) - -.log.html: - @for r2h in $(RST2HTML) $$RST2HTML rst2html rst2html.py; \ - do \ - if ($$r2h --version) >/dev/null 2>&1; then \ - R2H=$$r2h; \ - fi; \ - done; \ - if test -z "$$R2H"; then \ - echo >&2 "cannot find rst2html, cannot create $@"; \ - exit 2; \ - fi; \ - $$R2H $< >$@.tmp - @mv $@.tmp $@ - -# Be sure to run check-TESTS first, and then to convert the result. -# Beware of concurrent executions. And expect check-TESTS to fail. -check-html: - @if $(MAKE) $(AM_MAKEFLAGS) check-TESTS; then :; else \ - rv=$$?; \ - $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_HTML); \ - exit $$rv; \ - fi - -.PHONY: check-html - - -## ------- ## -## Clean. ## -## ------- ## - -check-clean: - rm -f $(CHECK_CLEANFILES) $(TEST_SUITE_LOG) $(TEST_SUITE_HTML) $(TEST_LOGS) -.PHONY: check-clean -clean-local: check-clean |