From 44a6213c8eebf3f69712a5fba9a33bbb90a79023 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Tue, 10 Mar 2015 15:13:14 -0700 Subject: [PATCH] Let tests result in UNSUPPORTED; use that for unbuildable C++ cases --- ChangeLog | 17 +++++++++++++++++ Makefile | 21 +++++++++------------ Rules | 12 ++++++++++++ debug/Makefile | 6 ++++-- dlfcn/Makefile | 7 +++++-- nptl/Makefile | 18 +++++++++--------- scripts/evaluate-test.sh | 21 +++++++++++++-------- 7 files changed, 69 insertions(+), 33 deletions(-) diff --git a/ChangeLog b/ChangeLog index db19e88d4f..da5c0ef24e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,22 @@ 2015-03-10 Roland McGrath + * 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. diff --git a/Makefile b/Makefile index 17e796fe1b..7edf517724 100644 --- a/Makefile +++ b/Makefile @@ -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. diff --git a/Rules b/Rules index 829beac487..e237d0352a 100644 --- a/Rules +++ b/Rules @@ -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 diff --git a/debug/Makefile b/debug/Makefile index c775223ef2..9ff357b6a8 100644 --- a/debug/Makefile +++ b/debug/Makefile @@ -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 diff --git a/dlfcn/Makefile b/dlfcn/Makefile index 34b1b5d450..759780dd34 100644 --- a/dlfcn/Makefile +++ b/dlfcn/Makefile @@ -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 diff --git a/nptl/Makefile b/nptl/Makefile index 00d13cf859..d784c8d3d2 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -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)) diff --git a/scripts/evaluate-test.sh b/scripts/evaluate-test.sh index 6c002e535a..ad4da6e575 100755 --- a/scripts/evaluate-test.sh +++ b/scripts/evaluate-test.sh @@ -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" -- 2.11.4.GIT