diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | conform/Makefile | 7 | ||||
-rw-r--r-- | conform/conformtest.pl | 13 |
3 files changed, 27 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog index bcfa26e2bb..1f8760f571 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2017-03-17 Joseph Myers <joseph@codesourcery.com> + + * conform/conformtest.pl ($xfail_str): New variable. + (--xfail=): New command-line option. + (top level): Handle expectations starting xfail[cond]-. + * conform/Makefile (conformtest-xfail): New variable. + ($(conformtest-header-tests)): Pass $(conformtest-xfail) to + conformtest.pl. + 2017-03-16 Joseph Myers <joseph@codesourcery.com> * conform/conformtest.pl: Use compilation instead of execution diff --git a/conform/Makefile b/conform/Makefile index b393641e5d..c07cc1d8d9 100644 --- a/conform/Makefile +++ b/conform/Makefile @@ -192,13 +192,18 @@ test-xfail-XOPEN2K8/signal.h/conform = yes test-xfail-XOPEN2K8/sys/wait.h/conform = yes conformtest-cc-flags = -I../include $(+sysdep-includes) $(sysincludes) -I.. +# conformtest-xfail-conds may be set by a sysdeps Makefile fragment to +# a list of conditions that are considered to be true when encountered +# in xfail[cond]- lines in test expectations. +conformtest-xfail = $(if $(conformtest-xfail-conds),\ + --xfail='$(conformtest-xfail-conds)') $(conformtest-header-tests): $(objpfx)%/conform.out: \ conformtest.pl $(conformtest-headers-data) (set -e; std_hdr=$*; std=$${std_hdr%%/*}; hdr=$${std_hdr#*/}; \ mkdir -p $(@D)/scratch; \ $(PERL) -I. conformtest.pl --tmpdir=$(@D)/scratch --cc='$(CC)' \ --flags='$(conformtest-cc-flags)' --standard=$$std \ - --headers=$$hdr > $@); \ + --headers=$$hdr $(conformtest-xfail) > $@); \ $(evaluate-test) $(linknamespace-symlists-tests): $(objpfx)symlist-%: list-header-symbols.pl diff --git a/conform/conformtest.pl b/conform/conformtest.pl index 54b38f85e9..41682e9b86 100644 --- a/conform/conformtest.pl +++ b/conform/conformtest.pl @@ -7,8 +7,10 @@ use POSIX; $standard = "XOPEN2K8"; $CC = "gcc"; $tmpdir = "/tmp"; +$xfail_str = ""; GetOptions ('headers=s' => \@headers, 'standard=s' => \$standard, - 'flags=s' => \$flags, 'cc=s' => \$CC, 'tmpdir=s' => \$tmpdir); + 'flags=s' => \$flags, 'cc=s' => \$CC, 'tmpdir=s' => \$tmpdir, + 'xfail=s' => \$xfail_str); @headers = split(/,/,join(',',@headers)); # List of the headers we are testing. @@ -347,6 +349,15 @@ while ($#headers >= 0) { if (/^xfail-/) { s/^xfail-//; $xfail = 1; + } elsif (/^xfail\[([^\]]*)\]-/) { + my($xfail_cond) = $1; + s/^xfail\[([^\]]*)\]-//; + # "xfail[cond]-" or "xfail[cond1|cond2|...]-" means a failure of + # the test is allowed if any of the listed conditions are in the + # --xfail command-line option argument. + if ($xfail_str =~ /\b($xfail_cond)\b/) { + $xfail = 1; + } } my($optional) = 0; if (/^optional-/) { |