mirror of
https://github.com/libexpat/libexpat.git
synced 2025-04-08 14:33:43 +00:00
Move CR test functions out of runtests.c
This commit is contained in:
parent
8117bfa90b
commit
3971adaef6
2 changed files with 62 additions and 62 deletions
|
@ -2372,6 +2372,66 @@ START_TEST(test_explicit_encoding) {
|
|||
}
|
||||
END_TEST
|
||||
|
||||
/* Test handling of trailing CR (rather than newline) */
|
||||
START_TEST(test_trailing_cr) {
|
||||
const char *text = "<doc>\r";
|
||||
int found_cr;
|
||||
|
||||
/* Try with a character handler, for code coverage */
|
||||
XML_SetCharacterDataHandler(g_parser, cr_cdata_handler);
|
||||
XML_SetUserData(g_parser, &found_cr);
|
||||
found_cr = 0;
|
||||
if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE)
|
||||
== XML_STATUS_OK)
|
||||
fail("Failed to fault unclosed doc");
|
||||
if (found_cr == 0)
|
||||
fail("Did not catch the carriage return");
|
||||
XML_ParserReset(g_parser, NULL);
|
||||
|
||||
/* Now with a default handler instead */
|
||||
XML_SetDefaultHandler(g_parser, cr_cdata_handler);
|
||||
XML_SetUserData(g_parser, &found_cr);
|
||||
found_cr = 0;
|
||||
if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE)
|
||||
== XML_STATUS_OK)
|
||||
fail("Failed to fault unclosed doc");
|
||||
if (found_cr == 0)
|
||||
fail("Did not catch default carriage return");
|
||||
}
|
||||
END_TEST
|
||||
|
||||
/* Test trailing CR in an external entity parse */
|
||||
START_TEST(test_ext_entity_trailing_cr) {
|
||||
const char *text = "<!DOCTYPE doc [\n"
|
||||
" <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
|
||||
"]>\n"
|
||||
"<doc>&en;</doc>";
|
||||
int found_cr;
|
||||
|
||||
XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
|
||||
XML_SetExternalEntityRefHandler(g_parser, external_entity_cr_catcher);
|
||||
XML_SetUserData(g_parser, &found_cr);
|
||||
found_cr = 0;
|
||||
if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE)
|
||||
!= XML_STATUS_OK)
|
||||
xml_failure(g_parser);
|
||||
if (found_cr == 0)
|
||||
fail("No carriage return found");
|
||||
XML_ParserReset(g_parser, NULL);
|
||||
|
||||
/* Try again with a different trailing CR */
|
||||
XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
|
||||
XML_SetExternalEntityRefHandler(g_parser, external_entity_bad_cr_catcher);
|
||||
XML_SetUserData(g_parser, &found_cr);
|
||||
found_cr = 0;
|
||||
if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE)
|
||||
!= XML_STATUS_OK)
|
||||
xml_failure(g_parser);
|
||||
if (found_cr == 0)
|
||||
fail("No carriage return found");
|
||||
}
|
||||
END_TEST
|
||||
|
||||
TCase *
|
||||
make_basic_test_case(Suite *s) {
|
||||
TCase *tc_basic = tcase_create("basic tests");
|
||||
|
@ -2479,6 +2539,8 @@ make_basic_test_case(Suite *s) {
|
|||
tcase_add_test__ifdef_xml_dtd(tc_basic,
|
||||
test_ext_entity_invalid_suspended_parse);
|
||||
tcase_add_test(tc_basic, test_explicit_encoding);
|
||||
tcase_add_test(tc_basic, test_trailing_cr);
|
||||
tcase_add_test(tc_basic, test_ext_entity_trailing_cr);
|
||||
|
||||
return tc_basic; /* TEMPORARY: this will become a void function */
|
||||
}
|
||||
|
|
|
@ -74,66 +74,6 @@
|
|||
|
||||
XML_Parser g_parser = NULL;
|
||||
|
||||
/* Test handling of trailing CR (rather than newline) */
|
||||
START_TEST(test_trailing_cr) {
|
||||
const char *text = "<doc>\r";
|
||||
int found_cr;
|
||||
|
||||
/* Try with a character handler, for code coverage */
|
||||
XML_SetCharacterDataHandler(g_parser, cr_cdata_handler);
|
||||
XML_SetUserData(g_parser, &found_cr);
|
||||
found_cr = 0;
|
||||
if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE)
|
||||
== XML_STATUS_OK)
|
||||
fail("Failed to fault unclosed doc");
|
||||
if (found_cr == 0)
|
||||
fail("Did not catch the carriage return");
|
||||
XML_ParserReset(g_parser, NULL);
|
||||
|
||||
/* Now with a default handler instead */
|
||||
XML_SetDefaultHandler(g_parser, cr_cdata_handler);
|
||||
XML_SetUserData(g_parser, &found_cr);
|
||||
found_cr = 0;
|
||||
if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE)
|
||||
== XML_STATUS_OK)
|
||||
fail("Failed to fault unclosed doc");
|
||||
if (found_cr == 0)
|
||||
fail("Did not catch default carriage return");
|
||||
}
|
||||
END_TEST
|
||||
|
||||
/* Test trailing CR in an external entity parse */
|
||||
START_TEST(test_ext_entity_trailing_cr) {
|
||||
const char *text = "<!DOCTYPE doc [\n"
|
||||
" <!ENTITY en SYSTEM 'http://example.org/dummy.ent'>\n"
|
||||
"]>\n"
|
||||
"<doc>&en;</doc>";
|
||||
int found_cr;
|
||||
|
||||
XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
|
||||
XML_SetExternalEntityRefHandler(g_parser, external_entity_cr_catcher);
|
||||
XML_SetUserData(g_parser, &found_cr);
|
||||
found_cr = 0;
|
||||
if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE)
|
||||
!= XML_STATUS_OK)
|
||||
xml_failure(g_parser);
|
||||
if (found_cr == 0)
|
||||
fail("No carriage return found");
|
||||
XML_ParserReset(g_parser, NULL);
|
||||
|
||||
/* Try again with a different trailing CR */
|
||||
XML_SetParamEntityParsing(g_parser, XML_PARAM_ENTITY_PARSING_ALWAYS);
|
||||
XML_SetExternalEntityRefHandler(g_parser, external_entity_bad_cr_catcher);
|
||||
XML_SetUserData(g_parser, &found_cr);
|
||||
found_cr = 0;
|
||||
if (_XML_Parse_SINGLE_BYTES(g_parser, text, (int)strlen(text), XML_TRUE)
|
||||
!= XML_STATUS_OK)
|
||||
xml_failure(g_parser);
|
||||
if (found_cr == 0)
|
||||
fail("No carriage return found");
|
||||
}
|
||||
END_TEST
|
||||
|
||||
/* Test handling of trailing square bracket */
|
||||
static void XMLCALL
|
||||
rsqb_handler(void *userData, const XML_Char *s, int len) {
|
||||
|
@ -8724,8 +8664,6 @@ make_suite(void) {
|
|||
TCase *tc_accounting = tcase_create("accounting tests");
|
||||
#endif
|
||||
|
||||
tcase_add_test(tc_basic, test_trailing_cr);
|
||||
tcase_add_test(tc_basic, test_ext_entity_trailing_cr);
|
||||
tcase_add_test(tc_basic, test_trailing_rsqb);
|
||||
tcase_add_test(tc_basic, test_ext_entity_trailing_rsqb);
|
||||
tcase_add_test(tc_basic, test_ext_entity_good_cdata);
|
||||
|
|
Loading…
Add table
Reference in a new issue