[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