diff --git a/ChangeLog b/ChangeLog index ed9f24c6fa..f625d07efc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2014-02-14 Tomas Dohnalek + Joseph Myers + + * Makeconfig (test-name): New variable. + (evaluate-test): Likewise. + * Makerules (do-test-clean): Remove .test-result files. + (common-mostlyclean): Likewise. + * Rules ($(objpfx)%.out): Use $(evaluate-test) in both rules. + * scripts/evaluate-test.sh: New file. + 2014-02-14 Joseph Myers * libio/Makefile ($(objpfx)tst-fopenloc.check): Split into diff --git a/Makeconfig b/Makeconfig index 1908f275a9..21a7d6ea65 100644 --- a/Makeconfig +++ b/Makeconfig @@ -1080,6 +1080,13 @@ defines += -D_LIBC_REENTRANT libio-mtsafe = -D_IO_MTSAFE_IO endif +# The name to give to a test in test results summaries. +test-name = $(strip $(patsubst %.out, %, $(patsubst $(common-objpfx)%, %, $@))) + +# Command to output a test status line (such as PASS: test-name). +evaluate-test = $(..)scripts/evaluate-test.sh $(test-name) $$? \ + > $(common-objpfx)$(test-name).test-result + endif # Makeconfig not yet included # Local Variables: diff --git a/Makerules b/Makerules index 13c3faec3f..54a347104f 100644 --- a/Makerules +++ b/Makerules @@ -1332,7 +1332,10 @@ mostlyclean: common-mostlyclean do-tests-clean: -rm -f $(addprefix $(objpfx),$(addsuffix .out,$(tests) $(xtests) \ - $(test-srcs))) + $(test-srcs)) \ + $(addsuffix .test-result,$(tests) \ + $(xtests) \ + $(test-srcs))) # Remove the object files. common-mostlyclean: @@ -1342,7 +1345,10 @@ common-mostlyclean: $(test-srcs) $(others) \ $(sysdep-others)) \ $(addsuffix .out,$(tests) $(xtests) \ - $(test-srcs))) + $(test-srcs)) \ + $(addsuffix .test-result,$(tests) \ + $(xtests) \ + $(test-srcs))) -rm -f $(addprefix $(objpfx),$(extra-objs) $(extra-test-objs) \ $(install-lib) $(install-lib.so) \ $(install-lib.so:%.so=%_pic.a)) diff --git a/Rules b/Rules index 49ca8ea7a2..3e305ddaa5 100644 --- a/Rules +++ b/Rules @@ -183,9 +183,11 @@ make-test-out = $(test-wrapper-env) \ GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ $($*-ENV) $(host-test-program-cmd) $($*-ARGS) $(objpfx)%.out: %.input $(objpfx)% - $(make-test-out) > $@ < $(word 1,$^) + $(make-test-out) > $@ < $(word 1,$^); \ + $(evaluate-test) $(objpfx)%.out: /dev/null $(objpfx)% # Make it 2nd arg for canned sequence. - $(make-test-out) > $@ + $(make-test-out) > $@; \ + $(evaluate-test) endif # tests diff --git a/scripts/evaluate-test.sh b/scripts/evaluate-test.sh new file mode 100755 index 0000000000..9cb6435de2 --- /dev/null +++ b/scripts/evaluate-test.sh @@ -0,0 +1,33 @@ +#! /bin/sh +# Output a test status line. +# Copyright (C) 2012-2014 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C Library 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 +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# . + +# usage: evaluate-test.sh test_name rc + +test_name=$1 +rc=$2 + +if [ $rc -eq 0 ]; then + result="PASS" +else + result="FAIL" +fi + +echo "$result: $test_name" +echo "original exit status $rc" +exit $rc