summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Zhakov <ivan@apache.org>2019-05-12 15:18:15 +0000
committerIvan Zhakov <ivan@apache.org>2019-05-12 15:18:15 +0000
commit1b59dcee5f90414e735d8be6c749092aa639d03b (patch)
treeea56a01dcbc1b30cb311693e1d041f8d04f683db
parentf7c270db1d27febcb110a2b383568cbef9e18de2 (diff)
downloadapr-1b59dcee5f90414e735d8be6c749092aa639d03b.tar.gz
Add simple tests for apr_xml_parser_geterror().
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1859154 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--test/testxml.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/test/testxml.c b/test/testxml.c
index 9a376ca7b..65e247be6 100644
--- a/test/testxml.c
+++ b/test/testxml.c
@@ -274,6 +274,56 @@ static void test_xml_roundtrip(abts_case *tc, void *data)
__LINE__);
}
+static void get_xml_error(abts_case* tc,
+ char *errbuf,
+ apr_size_t errbufsize,
+ const char* xml)
+{
+ apr_xml_parser *parser;
+ apr_xml_doc *doc;
+ apr_status_t rv;
+ apr_size_t len = strlen(xml);
+ apr_pool_t *pool;
+
+ strcpy(errbuf, "");
+
+ apr_pool_create(&pool, p);
+
+ parser = apr_xml_parser_create(pool);
+
+ rv = apr_xml_parser_feed(parser, xml, len);
+
+ if (rv == APR_SUCCESS) {
+ rv = apr_xml_parser_done(parser, &doc);
+ ABTS_INT_EQUAL(tc, APR_EGENERAL, rv);
+ }
+
+ if (rv != APR_SUCCESS) {
+ apr_xml_parser_geterror(parser, errbuf, errbufsize);
+ }
+
+ apr_pool_destroy(pool);
+}
+
+static void test_xml_parser_geterror(abts_case *tc, void *data)
+{
+ char errbuf[256];
+
+ get_xml_error(tc, errbuf, sizeof(errbuf),
+ "<elem");
+
+#if APU_USE_EXPAT
+ ABTS_STR_EQUAL(tc, "XML parser error code: unclosed token (5)", errbuf);
+#endif
+
+ get_xml_error(tc, errbuf, sizeof(errbuf),
+ "<elem1><elem2></elem1>");
+
+#if APU_USE_EXPAT
+ ABTS_STR_EQUAL(tc, "XML parser error code: mismatched tag (7)", errbuf);
+#endif
+}
+
abts_suite *testxml(abts_suite *suite)
{
suite = ADD_SUITE(suite);
@@ -281,6 +331,7 @@ abts_suite *testxml(abts_suite *suite)
abts_run_test(suite, test_xml_parser, NULL);
abts_run_test(suite, test_billion_laughs, NULL);
abts_run_test(suite, test_xml_roundtrip, NULL);
+ abts_run_test(suite, test_xml_parser_geterror, NULL);
return suite;
}