[Bug testsuite/25241] DejaGNU does not distinguish between errors and warnings
manu at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Tue Jan 30 20:36:00 GMT 2007
------- Comment #4 from manu at gcc dot gnu dot org 2007-01-30 20:35 -------
I have the following patch. Framework tests work. However, this patch will make
a lot of tests to fail because:
* Many tests are using the wrong dg-warning or dg-error directive.
* Many tests add an explicit "warning:" or "error:" to workaround this bug.
* Many tests match several warning/error messages with a single
dg-warning/dg-error directive.
So what we want to do? Fix the testcases or do nothing?
Index: gcc/testsuite/gcc.test-framework/dg-error-exp-F.c
===================================================================
--- gcc/testsuite/gcc.test-framework/dg-error-exp-F.c (revision 0)
+++ gcc/testsuite/gcc.test-framework/dg-error-exp-F.c (revision 0)
@@ -0,0 +1,11 @@
+/* Test the tester; previously part of gcc.misc-tests/dg-9.c. */
+/* { dg-prms-id 42 } */
+/* { dg-options "-Wall" } */
+
+f ()
+{ /* { dg-error "return type" "warning test" } */
+} /* { dg-error "control reaches end" "warning test" } */
+
+main (int argc, char *argv[])
+{ /* { dg-error "return type" "warning test" } */
+} /* { dg-error "control reaches end" "warning test" } */
Index: gcc/testsuite/gcc.test-framework/dg-warning-exp-F.c
===================================================================
--- gcc/testsuite/gcc.test-framework/dg-warning-exp-F.c (revision 0)
+++ gcc/testsuite/gcc.test-framework/dg-warning-exp-F.c (revision 0)
@@ -0,0 +1,10 @@
+/* Test the tester; previously part of gcc.misc-tests/dg-9.c. */
+/* { dg-prms-id 42 } */
+/* { dg-options "-Wall" } */
+
+int main (int argc, char *argv[])
+{
+ +; /* { dg-warning "expected expression" "error test" } */
+ return 0;
+}
+
Index: gcc/testsuite/gcc.test-framework/README
===================================================================
--- gcc/testsuite/gcc.test-framework/README (revision 121027)
+++ gcc/testsuite/gcc.test-framework/README (working copy)
@@ -19,7 +19,7 @@ To run these tests:
To check the results:
TF=${SRC}/gcc/testsuite/gcc.test-framework
- awk -f ${TF}/test-framework.awk gcc/testsuite/gcc.sum
+ awk -f ${TF}/test-framework.awk gcc/testsuite/gcc/gcc.sum
The awk script prints unexpected results followed by the number of tests
that passed and failed.
Index: gcc/testsuite/lib/gfortran-dg.exp
===================================================================
--- gcc/testsuite/lib/gfortran-dg.exp (revision 121027)
+++ gcc/testsuite/lib/gfortran-dg.exp (working copy)
@@ -107,3 +107,14 @@ proc gfortran-dg-runtest { testcases def
}
}
}
+
+
+if { [info procs gfortran-saved-dg-warning] == [list] } {
+ rename dg-warning gfortran-saved-dg-warning
+ rename saved-dg-warning dg-warning
+}
+
+if { [info procs gfortran-saved-dg-error] == [list] } {
+ rename dg-error gfortran-saved-dg-error
+ rename saved-dg-error dg-error
+}
Index: gcc/testsuite/lib/gcc-dg.exp
===================================================================
--- gcc/testsuite/lib/gcc-dg.exp (revision 121027)
+++ gcc/testsuite/lib/gcc-dg.exp (working copy)
@@ -540,4 +540,78 @@ if { [info procs saved-dg-test] == [list
}
}
+if { [info procs saved-dg-warning] == [list] } {
+ rename dg-warning saved-dg-warning
+
+ proc dg-warning { args } {
+ upvar dg-messages messages
+
+ if { [llength $args] > 5 } {
+ error "[lindex $args 0]: too many arguments"
+ return
+ }
+
+ set xfail ""
+ if { [llength $args] >= 4 } {
+ switch [dg-process-target [lindex $args 3]] {
+ "F" { set xfail "X" }
+ "P" { set xfail "" }
+ "N" {
+ # If we get "N", this warning doesn't apply to us so ignore
it.
+ return
+ }
+ }
+ }
+
+ if { [llength $args] >= 5 } {
+ switch [lindex $args 4] {
+ "." { set line [dg-format-linenum [lindex $args 0]] }
+ "0" { set line "" }
+ "default" { set line [dg-format-linenum [lindex $args 4]] }
+ }
+ } else {
+ set line [dg-format-linenum [lindex $args 0]]
+ }
+
+ lappend messages [list $line "${xfail}WARNING" [concat
"\[wW\]arning:\[^\n\]*" [lindex $args 1]] [lindex $args 2]]
+ }
+}
+
+if { [info procs saved-dg-error] == [list] } {
+ rename dg-error saved-dg-error
+
+ proc dg-error { args } {
+ upvar dg-messages messages
+
+ if { [llength $args] > 5 } {
+ error "[lindex $args 0]: too many arguments"
+ return
+ }
+
+ set xfail ""
+ if { [llength $args] >= 4 } {
+ switch [dg-process-target [lindex $args 3]] {
+ "F" { set xfail "X" }
+ "P" { set xfail "" }
+ "N" {
+ # If we get "N", this error doesn't apply to us so ignore
it.
+ return
+ }
+ }
+ }
+
+ if { [llength $args] >= 5 } {
+ switch [lindex $args 4] {
+ "." { set line [dg-format-linenum [lindex $args 0]] }
+ "0" { set line "" }
+ "default" { set line [dg-format-linenum [lindex $args 4]] }
+ }
+ } else {
+ set line [dg-format-linenum [lindex $args 0]]
+ }
+
+ lappend messages [list $line "${xfail}ERROR" [concat
"\[eE\]rror:\[^\n\]*" [lindex $args 1]] [lindex $args 2]]
+ }
+}
+
set additional_prunes ""
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25241
More information about the Gcc-bugs
mailing list