summaryrefslogtreecommitdiff
path: root/contrib/regression
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@bitrange.com>2005-06-07 07:42:22 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2005-06-07 07:42:22 +0000
commitbd127a751553d5b4a97784a2e6d903415366bcdd (patch)
treed748b7319e4eede14dc8b5c4a919bc710da7aad9 /contrib/regression
parentce677da7bc5dc6d1f475cbd4b013d1418d7c4e49 (diff)
downloadgcc-bd127a751553d5b4a97784a2e6d903415366bcdd.tar.gz
btest-gcc.sh: Add support for option --add-passes-despite-regression.
* btest-gcc.sh: Add support for option --add-passes-despite-regression. From-SVN: r100699
Diffstat (limited to 'contrib/regression')
-rw-r--r--contrib/regression/ChangeLog5
-rwxr-xr-xcontrib/regression/btest-gcc.sh50
2 files changed, 47 insertions, 8 deletions
diff --git a/contrib/regression/ChangeLog b/contrib/regression/ChangeLog
index c77a758ad1a..ae577173200 100644
--- a/contrib/regression/ChangeLog
+++ b/contrib/regression/ChangeLog
@@ -1,3 +1,8 @@
+2005-06-07 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * btest-gcc.sh: Add support for option
+ --add-passes-despite-regression.
+
2005-06-06 Hans-Peter Nilsson <hp@axis.com>
* btest-gcc.sh <Build>: Don't pass --with-newlib when target is
diff --git a/contrib/regression/btest-gcc.sh b/contrib/regression/btest-gcc.sh
index 7a704e69d29..2e9ea1e52d7 100755
--- a/contrib/regression/btest-gcc.sh
+++ b/contrib/regression/btest-gcc.sh
@@ -18,7 +18,20 @@
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# INPUT:
-# btest <target> <source> <prefix> <state> <build>
+# btest <options> <target> <source> <prefix> <state> <build>
+
+add_passes_despite_regression=0
+
+# <options> can be
+# --add-passes-despite-regression:
+# Add new "PASSes" despite there being some regressions.
+
+case "$1" in
+ --add-passes-despite-regression)
+ add_passes_despite_regression=1; shift;;
+ --*) echo "Invalid option: $1"; exit 2;;
+esac
+
# TARGET is the target triplet. It should be the same one as used in
# constructing PREFIX. Or it can be the keyword 'native', indicating
# a target of whatever platform the script is running on.
@@ -178,17 +191,38 @@ for LOG in $TESTLOGS ; do
done | sort | uniq > $FAILED || exit 1
comm -12 $FAILED $PASSES >> $REGRESS || exit 1
NUMREGRESS=`wc -l < $REGRESS | tr -d ' '`
+
+if [ $NUMREGRESS -eq 0 ] || [ $add_passes_despite_regression -ne 0 ] ; then
+ # Update the state.
+ for LOG in $TESTLOGS ; do
+ L=`basename $LOG`
+ awk '/^PASS: / { print "'$L'",$2; }' $LOG || exit 1
+ done | sort | uniq | comm -23 - $FAILED > ${PASSES}~ || exit 1
+ [ -s ${PASSES}~ ] || exit 1
+ if [ $NUMREGRESS -ne 0 ] ; then
+ # The way we keep track of new PASSes when in "regress-N" for
+ # --add-passes-despite-regression, is to *add* them to previous
+ # PASSes. Just as without this option, we don't forget *any* PASS
+ # lines, because besides the ones in $REGRESS that we definitely
+ # don't want to lose, their removal or rename may have been a
+ # mistake (as in, the cause of the "regress-N" state). If they
+ # come back, we then know they're regressions.
+ cat ${PASSES}~ ${PASSES} | sort -u > ${PASSES}~~
+ mv ${PASSES}~~ ${PASSES} || exit 1
+ rm ${PASSES}~ || exit 1
+ else
+ # In contrast to the merging for "regress-N", we just overwrite
+ # the known PASSes when in the "pass" state, so we get rid of
+ # stale PASS lines for removed, moved or otherwise changed tests
+ # which may be added back with a different meaning later on.
+ mv ${PASSES}~ ${PASSES} || exit 1
+ fi
+fi
+
if [ $NUMREGRESS -ne 0 ] ; then
echo regress-$NUMREGRESS > $RESULT
exit 1
fi
-# It passed. Update the state.
-for LOG in $TESTLOGS ; do
- L=`basename $LOG`
- awk '/^PASS: / { print "'$L'",$2; }' $LOG || exit 1
-done | sort | uniq | comm -23 - $FAILED > ${PASSES}~ || exit 1
-[ -s ${PASSES}~ ] || exit 1
-mv ${PASSES}~ ${PASSES} || exit 1
echo pass > $RESULT
exit 0