[libxml2] 558452 fight with reg test and error report



commit ec18c96008cf8f3b6b0b81ed8bfc2ccfe51d26e7
Author: Daniel Veillard <veillard redhat com>
Date:   Wed Aug 26 18:37:43 2009 +0200

    558452 fight with reg test and error report
    
    * relaxng.c: tiny fix and provide more context on some errors
    * result/relaxng/558452_0* test/relaxng/558452*: add some regression
      tests for the bugs
    * Makefile.am runtest.c: fight with the fact streaming error messages
      can differ due to missing node context

 Makefile.am                 |    2 +-
 relaxng.c                   |    4 ++++
 result/relaxng/558452_0.err |    1 +
 result/relaxng/558452_1.err |    2 ++
 result/relaxng/558452_2.err |    1 +
 result/relaxng/558452_3.err |    1 +
 result/relaxng/558452_4.err |    2 ++
 result/relaxng/558452_err   |    1 +
 runtest.c                   |    3 ++-
 test/relaxng/558452.rng     |   21 +++++++++++++++++++++
 test/relaxng/558452_0.xml   |    6 ++++++
 test/relaxng/558452_1.xml   |    3 +++
 test/relaxng/558452_2.xml   |    4 ++++
 test/relaxng/558452_3.xml   |    5 +++++
 test/relaxng/558452_4.xml   |    7 +++++++
 15 files changed, 61 insertions(+), 2 deletions(-)
---
diff --git a/Makefile.am b/Makefile.am
index ebaae31..807e21d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1053,7 +1053,7 @@ Relaxtests: xmllint$(EXEEXT)
 		    > res.$$name 2> err.$$name;\
 	          grep "MORY ALLO" .memdump  | grep -v "MEMORY ALLOCATED : 0";\
 	          diff $(srcdir)/result/relaxng/"$$name"_"$$xno" res.$$name;\
-		  if [ "$$name" != "tutor10_1" -a "$$name" != "tutor10_2" -a "$$name" != "tutor3_2" -a "$$name" != "307377" ] ; then \
+		  if [ "$$name" != "tutor10_1" -a "$$name" != "tutor10_2" -a "$$name" != "tutor3_2" -a "$$name" != "307377" -a "$$name" != "tutor8_2" ] ; then \
 		      diff $(srcdir)/result/relaxng/"$$name"_"$$xno".err \
 			   err.$$name | grep -v "error detected at";\
 		  fi ; grep Unimplemented err.$$name`; \
diff --git a/relaxng.c b/relaxng.c
index a0ddcc6..6b83cfd 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -2374,6 +2374,9 @@ xmlRelaxNGAddValidError(xmlRelaxNGValidCtxtPtr ctxt,
         } else {
             node = seq = NULL;
         }
+        if ((node == NULL) && (seq == NULL)) {
+            node = ctxt->pnode;
+        }
         xmlRelaxNGShowValidError(ctxt, err, node, seq, arg1, arg2);
     }
     /*
@@ -4682,6 +4685,7 @@ xmlRelaxNGParseImportRefs(xmlRelaxNGParserCtxtPtr ctxt,
         return(-1);
     }
     xmlHashScan(grammar->refs, xmlRelaxNGParseImportRef, ctxt);
+    return(0);
 }
 
 /**
diff --git a/result/relaxng/558452_0 b/result/relaxng/558452_0
new file mode 100644
index 0000000..e69de29
diff --git a/result/relaxng/558452_0.err b/result/relaxng/558452_0.err
new file mode 100644
index 0000000..fecc3e9
--- /dev/null
+++ b/result/relaxng/558452_0.err
@@ -0,0 +1 @@
+./test/relaxng/558452_0.xml validates
diff --git a/result/relaxng/558452_1 b/result/relaxng/558452_1
new file mode 100644
index 0000000..e69de29
diff --git a/result/relaxng/558452_1.err b/result/relaxng/558452_1.err
new file mode 100644
index 0000000..1e225be
--- /dev/null
+++ b/result/relaxng/558452_1.err
@@ -0,0 +1,2 @@
+./test/relaxng/558452_1.xml:2: element doc: Relax-NG validity error : Expecting an element , got nothing
+./test/relaxng/558452_1.xml fails to validate
diff --git a/result/relaxng/558452_2 b/result/relaxng/558452_2
new file mode 100644
index 0000000..e69de29
diff --git a/result/relaxng/558452_2.err b/result/relaxng/558452_2.err
new file mode 100644
index 0000000..d48287c
--- /dev/null
+++ b/result/relaxng/558452_2.err
@@ -0,0 +1 @@
+./test/relaxng/558452_2.xml validates
diff --git a/result/relaxng/558452_3 b/result/relaxng/558452_3
new file mode 100644
index 0000000..e69de29
diff --git a/result/relaxng/558452_3.err b/result/relaxng/558452_3.err
new file mode 100644
index 0000000..0d33cdb
--- /dev/null
+++ b/result/relaxng/558452_3.err
@@ -0,0 +1 @@
+./test/relaxng/558452_3.xml validates
diff --git a/result/relaxng/558452_4 b/result/relaxng/558452_4
new file mode 100644
index 0000000..e69de29
diff --git a/result/relaxng/558452_4.err b/result/relaxng/558452_4.err
new file mode 100644
index 0000000..22e12fa
--- /dev/null
+++ b/result/relaxng/558452_4.err
@@ -0,0 +1,2 @@
+./test/relaxng/558452_4.xml:6: element elem: Relax-NG validity error : Did not expect element elem there
+./test/relaxng/558452_4.xml fails to validate
diff --git a/result/relaxng/558452_err b/result/relaxng/558452_err
new file mode 100644
index 0000000..b162846
--- /dev/null
+++ b/result/relaxng/558452_err
@@ -0,0 +1 @@
+./test/relaxng/558452.rng validates
diff --git a/result/relaxng/558452_valid b/result/relaxng/558452_valid
new file mode 100644
index 0000000..e69de29
diff --git a/runtest.c b/runtest.c
index c821786..1d64695 100644
--- a/runtest.c
+++ b/runtest.c
@@ -3257,7 +3257,8 @@ rngStreamTest(const char *filename,
      * hack is also done in the Makefile
      */
     if ((!strcmp(prefix, "tutor10_1")) || (!strcmp(prefix, "tutor10_2")) ||
-        (!strcmp(prefix, "tutor3_2")) || (!strcmp(prefix, "307377")))
+        (!strcmp(prefix, "tutor3_2")) || (!strcmp(prefix, "307377")) ||
+        (!strcmp(prefix, "tutor8_2")))
 	disable_err = 1;
 
     snprintf(pattern, 499, "./test/relaxng/%s_?.xml", prefix);
diff --git a/test/relaxng/558452.rng b/test/relaxng/558452.rng
new file mode 100644
index 0000000..80fbf7b
--- /dev/null
+++ b/test/relaxng/558452.rng
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<grammar ns="http://www.example.com/choice";
+         xmlns="http://relaxng.org/ns/structure/1.0";>
+  <start> 
+    <element name="doc" ns="">
+      <ref name="elem"/>
+      <optional>
+        <ref name="elem"/>
+        <optional>
+          <ref name="elem"/>
+        </optional>
+      </optional>
+    </element>
+  </start>
+
+  <define name="elem">
+    <element name="elem" ns="">
+      <text/>
+    </element>
+  </define>
+</grammar>
diff --git a/test/relaxng/558452_0.xml b/test/relaxng/558452_0.xml
new file mode 100644
index 0000000..70440e2
--- /dev/null
+++ b/test/relaxng/558452_0.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0"?>
+<doc>
+  <elem/>
+  <elem/>
+  <elem/>
+</doc>
diff --git a/test/relaxng/558452_1.xml b/test/relaxng/558452_1.xml
new file mode 100644
index 0000000..2c569f9
--- /dev/null
+++ b/test/relaxng/558452_1.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0"?>
+<doc>
+</doc>
diff --git a/test/relaxng/558452_2.xml b/test/relaxng/558452_2.xml
new file mode 100644
index 0000000..6e24626
--- /dev/null
+++ b/test/relaxng/558452_2.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<doc>
+  <elem/>
+</doc>
diff --git a/test/relaxng/558452_3.xml b/test/relaxng/558452_3.xml
new file mode 100644
index 0000000..5ceb468
--- /dev/null
+++ b/test/relaxng/558452_3.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<doc>
+  <elem/>
+  <elem/>
+</doc>
diff --git a/test/relaxng/558452_4.xml b/test/relaxng/558452_4.xml
new file mode 100644
index 0000000..a1ee72b
--- /dev/null
+++ b/test/relaxng/558452_4.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<doc>
+  <elem/>
+  <elem/>
+  <elem/>
+  <elem/>
+</doc>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]