summaryrefslogtreecommitdiff
path: root/tests/runtests.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/runtests.c')
-rw-r--r--tests/runtests.c27
1 files changed, 24 insertions, 3 deletions
diff --git a/tests/runtests.c b/tests/runtests.c
index 246d4eb..e8738da 100644
--- a/tests/runtests.c
+++ b/tests/runtests.c
@@ -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);