Let tests result in UNSUPPORTED; use that for unbuildable C++ cases

This commit is contained in:
Roland McGrath 2015-03-10 15:13:14 -07:00
parent d3821ab0ac
commit 44a6213c8e
7 changed files with 69 additions and 33 deletions

View File

@ -1,5 +1,22 @@
2015-03-10 Roland McGrath <roland@hack.frob.com>
* scripts/evaluate-test.sh: Grok exit code 77 as UNSUPPORTED and exit
with 0 in that case.
* Makefile (summarize-tests): New canned sequence, factored out of
commands for targets tests and xtests. Display summary lines that
don't start with PASS: or XFAIL: rather than ones that do start with
ERROR: or FAIL:. Make the commands fail if any summary lines fail
to start with X?PASS: or XFAIL: or UNSUPPORTED: rather than if any
do start with ERROR: or FAIL:.
* dlfcn/Makefile (tests): Add bug-atexit3 back here unconditionally
(except for [$(build-shared) = yes]).
(tests-unsupported) [$(CXX) empty]: Add bug-atexit3.
(LDLIBS-bug-atexit3-lib.so): Conditionalize on [$(CXX) nonempty].
($(objpfx)bug-atexit3, $(objpfx)bug-atexit3.out): Likewise.
* nptl/Makefile: Revert 2015-03-04 changes.
[$(CXX) empty] (tests-unsupported): New variable.
* debug/Makefile: Likewise.
* posix/regcomp.c: Fix comment typos and formatting to harmonize with
gnulib file. Replace __attribute with __attribute__ throughout.

View File

@ -316,6 +316,13 @@ $(objpfx)begin-end-check.out: scripts/begin-end-check.pl
$(evaluate-test)
endif
define summarize-tests
@egrep -v '^(PASS|XFAIL):' $(objpfx)$1 || true
@echo "Summary of test results$2:"
@sed 's/:.*//' < $(objpfx)$1 | sort | uniq -c
@egrep -q -v '^(X?PASS|XFAIL|UNSUPPORTED):' $(objpfx)$1 && false
endef
tests-special-notdir = $(patsubst $(objpfx)%, %, $(tests-special))
tests: $(tests-special)
$(..)scripts/merge-test-results.sh -s $(objpfx) "" \
@ -324,22 +331,12 @@ tests: $(tests-special)
$(..)scripts/merge-test-results.sh -t $(objpfx) subdir-tests.sum \
$(sort $(subdirs) .) \
> $(objpfx)tests.sum
@grep '^ERROR:' $(objpfx)tests.sum || true
@grep '^FAIL:' $(objpfx)tests.sum || true
@echo "Summary of test results:"
@sed 's/:.*//' < $(objpfx)tests.sum | sort | uniq -c
@if grep -q '^ERROR:' $(objpfx)tests.sum; then exit 1; fi
@if grep -q '^FAIL:' $(objpfx)tests.sum; then exit 1; fi
$(call summarize-tests,tests.sum)
xtests:
$(..)scripts/merge-test-results.sh -t $(objpfx) subdir-xtests.sum \
$(sort $(subdirs)) \
> $(objpfx)xtests.sum
@grep '^ERROR:' $(objpfx)xtests.sum || true
@grep '^FAIL:' $(objpfx)xtests.sum || true
@echo "Summary of test results for extra tests:"
@sed 's/:.*//' < $(objpfx)xtests.sum | sort | uniq -c
@if grep -q '^ERROR:' $(objpfx)xtests.sum; then exit 1; fi
@if grep -q '^FAIL:' $(objpfx)xtests.sum; then exit 1; fi
$(call summarize-tests,xtests.sum, for extra tests)
# The realclean target is just like distclean for the parent, but we want
# the subdirs to know the difference in case they care.

12
Rules
View File

@ -198,6 +198,18 @@ $(objpfx)%.out: /dev/null $(objpfx)% # Make it 2nd arg for canned sequence.
$(make-test-out) > $@; \
$(evaluate-test)
# tests-unsupported lists tests that we will not try to build at all in
# this configuration. Note this runs every time because it does not
# actually create its target. The dependency on Makefile is meant to
# ensure that it runs after a Makefile change to add a test to the list
# when it previously ran and produced a .out file (probably for a failure).
ifneq "$(strip $(tests-unsupported))" ""
$(tests-unsupported:%=$(objpfx)%.out): $(objpfx)%.out: Makefile
@rm -f $@
$(..)scripts/evaluate-test.sh $(patsubst $(common-objpfx)%.out,%,$@) \
77 false false > $(@:.out=.test-result)
endif
endif # tests

View File

@ -133,11 +133,13 @@ LDFLAGS-tst-backtrace6 = -rdynamic
tests = backtrace-tst tst-longjmp_chk tst-chk1 tst-chk2 tst-chk3 \
tst-lfschk1 tst-lfschk2 tst-lfschk3 test-strcpy_chk test-stpcpy_chk \
tst-chk4 tst-chk5 tst-chk6 tst-lfschk4 tst-lfschk5 tst-lfschk6 \
tst-longjmp_chk2 tst-backtrace2 tst-backtrace3 tst-backtrace4 \
tst-backtrace5 tst-backtrace6
ifneq (,$(CXX))
tests += tst-chk4 tst-chk5 tst-chk6 tst-lfschk4 tst-lfschk5 tst-lfschk6
ifeq (,$(CXX))
tests-unsupported = tst-chk4 tst-chk5 tst-chk6 \
tst-lfschk4 tst-lfschk5 tst-lfschk6
endif
extra-libs = libSegFault libpcprofile

View File

@ -36,7 +36,7 @@ endif
ifeq (yes,$(build-shared))
tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \
bug-dlopen1 bug-dlsym1 tst-dlinfo bug-atexit1 bug-atexit2 \
tstatexit bug-dl-leaf tst-rec-dlopen
bug-atexit3 tstatexit bug-dl-leaf tst-rec-dlopen
endif
modules-names = glreflib1 glreflib2 glreflib3 failtestmod defaultmod1 \
defaultmod2 errmsg1mod modatexit modcxaatexit \
@ -59,8 +59,9 @@ tststatic4-ENV = $(tststatic-ENV)
tststatic5-ENV = $(tststatic-ENV)
ifneq (,$(CXX))
tests += bug-atexit3
modules-names += bug-atexit3-lib
else
tests-unsupported += bug-atexit3
endif
endif
@ -136,9 +137,11 @@ $(objpfx)bug-atexit1.out: $(objpfx)bug-atexit1-lib.so
$(objpfx)bug-atexit2: $(libdl)
$(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so
ifneq (,$(CXX))
LDLIBS-bug-atexit3-lib.so = -lstdc++ -lgcc_eh
$(objpfx)bug-atexit3: $(libdl)
$(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so
endif
$(objpfx)bug-dl-leaf: $(objpfx)bug-dl-leaf-lib.so
$(objpfx)bug-dl-leaf.out: $(objpfx)bug-dl-leaf-lib-cb.so

View File

@ -245,8 +245,8 @@ tests = tst-typesizes \
tst-cancel6 tst-cancel7 tst-cancel8 tst-cancel9 tst-cancel10 \
tst-cancel11 tst-cancel12 tst-cancel13 tst-cancel14 tst-cancel15 \
tst-cancel16 tst-cancel17 tst-cancel18 tst-cancel19 tst-cancel20 \
tst-cancel21 tst-cancel22 tst-cancel23 $(if $(CXX),tst-cancel24) \
tst-cancel25 tst-cancel-self tst-cancel-self-cancelstate \
tst-cancel21 tst-cancel22 tst-cancel23 tst-cancel24 tst-cancel25 \
tst-cancel-self tst-cancel-self-cancelstate \
tst-cancel-self-canceltype tst-cancel-self-testcancel \
tst-cleanup0 tst-cleanup1 tst-cleanup2 tst-cleanup3 tst-cleanup4 \
tst-flock1 tst-flock2 \
@ -364,19 +364,14 @@ link-libc-static := $(common-objpfx)libc.a $(static-gnulib) \
$(common-objpfx)libc.a
tests-static += tst-locale1 tst-locale2 tst-stackguard1-static \
tst-cancel21-static tst-cond8-static \
tst-cancel21-static tst-cancel24-static tst-cond8-static \
tst-mutex8-static tst-mutexpi8-static tst-sem11-static \
tst-sem12-static
tests += tst-stackguard1-static tst-cancel21-static \
tests += tst-stackguard1-static tst-cancel21-static tst-cancel24-static \
tst-cond8-static tst-mutex8-static tst-mutexpi8-static \
tst-sem11-static tst-sem12-static
xtests-static += tst-setuid1-static
ifneq (,$(CXX))
tests += tst-cancel24-static
tests-static += tst-cancel24-static
endif
# These tests are linked with libc before libpthread
tests-reverse += tst-cancel5 tst-cancel23 tst-vfork1x tst-vfork2x
@ -388,6 +383,11 @@ tests-special += $(objpfx)tst-tls6.out $(objpfx)tst-cleanup0-cmp.out \
endif
endif
ifeq (,$(CXX))
# These tests require a C++ compiler and runtime.
tests-unsupported += tst-cancel24 tst-cancel24-static
endif
include ../Rules
ifeq (yes,$(build-shared))

View File

@ -25,15 +25,20 @@ orig_rc=$rc
xfail=$3
stop_on_failure=$4
if [ $rc -eq 0 ]; then
result="PASS"
else
result="FAIL"
fi
if $xfail; then
result="X$result"
if [ $rc -eq 77 ]; then
result="UNSUPPORTED"
rc=0
else
if [ $rc -eq 0 ]; then
result="PASS"
else
result="FAIL"
fi
if $xfail; then
result="X$result"
rc=0
fi
fi
echo "$result: $test_name"