]> granicus.if.org Git - libexpat/commitdiff
Fix test case regarding reporting of undefined entities and
authorFred L. Drake, Jr. <fdrake@users.sourceforge.net>
Tue, 21 Jan 2003 05:41:24 +0000 (05:41 +0000)
committerFred L. Drake, Jr. <fdrake@users.sourceforge.net>
Tue, 21 Jan 2003 05:41:24 +0000 (05:41 +0000)
non-validating parsers (see section 5.1 of the XML 1.0 specification).

expat/tests/runtests.c

index 246d4ebacb3a262195e59c1f582bced3f68aa1fa..e8738dada1693d208803dbd0a194c877baea71dd 100644 (file)
@@ -827,11 +827,11 @@ external_entity_loader(XML_Parser parser,
 }
 
 /* Test that an error is reported for unknown entities if we have read
-   an external subset.
+   an external subset, and standalone is true.
 */
-START_TEST(test_wfc_undeclared_entity_with_external_subset) {
+START_TEST(test_wfc_undeclared_entity_with_external_subset_standalone) {
     char *text =
-        "<?xml version='1.0' encoding='us-ascii'?>\n"
+        "<?xml version='1.0' encoding='us-ascii' standalone='yes'?>\n"
         "<!DOCTYPE doc SYSTEM 'foo'>\n"
         "<doc>&entity;</doc>";
     char *foo_text =
@@ -846,6 +846,25 @@ START_TEST(test_wfc_undeclared_entity_with_external_subset) {
 }
 END_TEST
 
+/* Test that no error is reported for unknown entities if we have read
+   an external subset, and standalone is false.
+*/
+START_TEST(test_wfc_undeclared_entity_with_external_subset) {
+    char *text =
+        "<?xml version='1.0' encoding='us-ascii'?>\n"
+        "<!DOCTYPE doc SYSTEM 'foo'>\n"
+        "<doc>&entity;</doc>";
+    char *foo_text =
+        "<!ELEMENT doc (#PCDATA)*>";
+
+    XML_SetParamEntityParsing(parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
+    XML_SetUserData(parser, foo_text);
+    XML_SetExternalEntityRefHandler(parser, external_entity_loader);
+    if (XML_Parse(parser, text, strlen(text), 1) == XML_STATUS_ERROR)
+        xml_failure(parser);
+}
+END_TEST
+
 START_TEST(test_wfc_no_recursive_entity_refs)
 {
     char *text =
@@ -1165,6 +1184,8 @@ make_basic_suite(void)
     tcase_add_test(tc_basic, test_wfc_undeclared_entity_no_external_subset);
     tcase_add_test(tc_basic, test_wfc_undeclared_entity_standalone);
     tcase_add_test(tc_basic, test_wfc_undeclared_entity_with_external_subset);
+    tcase_add_test(tc_basic,
+                   test_wfc_undeclared_entity_with_external_subset_standalone);
     tcase_add_test(tc_basic, test_wfc_no_recursive_entity_refs);
     tcase_add_test(tc_basic, test_ext_entity_set_encoding);
     tcase_add_test(tc_basic, test_dtd_default_handling);