From ce4359222f1f35edc9de918f804fa7fec7a5b885 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20=C4=8C=C3=AD=C5=BEek?= Date: Fri, 10 Apr 2020 23:11:46 +0200 Subject: [PATCH] Add test for broken multiline strikethrough. Restore adapted extension sourcepos tests unfortunately removed with #49. --- api_test/main.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 97 insertions(+), 1 deletion(-) diff --git a/api_test/main.c b/api_test/main.c index e13937500..8a793c35b 100755 --- a/api_test/main.c +++ b/api_test/main.c @@ -6,6 +6,7 @@ #include "cmark-gfm.h" #include "node.h" #include "../extensions/cmark-gfm-core-extensions.h" +#include "registry.h" #include "harness.h" #include "cplusplus.h" @@ -1035,7 +1036,7 @@ static void source_pos(test_batch_runner *runner) { " \n" " \n" " \n" - " \n" + " \n" " \n" " Okay.\n" " \n" @@ -1476,6 +1477,97 @@ static void ref_source_pos(test_batch_runner *runner) { cmark_node_free(doc); } +static void ext_source_pos(test_batch_runner *runner) { + static const char *extensions[3] = { + "strikethrough", + "table", + "autolink", + }; + + static const char markdown[] = + "Hi ~~friend~~ and ~~other\n" + "friend~~.\n" + "\n" + "> www.github.com\n" + "\n" + "1. | a | b | *c* |\n" + " | - | - | --: |\n" + " | 1 | 2 | ~3~ |\n"; + + int options = CMARK_OPT_DEFAULT | CMARK_OPT_SOURCEPOS; + cmark_parser *parser = cmark_parser_new(options); + + for (int i = 0; i < (int)(sizeof(extensions) / sizeof(*extensions)); ++i) { + cmark_syntax_extension *ext = cmark_find_syntax_extension(extensions[i]); + cmark_parser_attach_syntax_extension(parser, ext); + } + + cmark_parser_feed(parser, markdown, sizeof(markdown) - 1); + + cmark_node *doc = cmark_parser_finish(parser); + char *xml = cmark_render_xml(doc, options); + STR_EQ(runner, xml, "\n" + "\n" + "\n" + " \n" + " Hi \n" + " \n" + " friend\n" + " \n" + " and \n" + " \n" + " other\n" + " \n" + " friend\n" + " \n" + " .\n" + " \n" + " \n" + " \n" + " \n" + " www.github.com\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " a\n" + " \n" + " \n" + " b\n" + " \n" + " \n" + " \n" + " c\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " 1\n" + " \n" + " \n" + " 2\n" + " \n" + " \n" + " \n" + " 3\n" + " \n" + " \n" + " \n" + "
\n" + "
\n" + "
\n" + "
\n", + "sourcepos are as expected"); + free(xml); + cmark_node_free(doc); + cmark_parser_free(parser); +} + int main() { int retval; test_batch_runner *runner = test_batch_runner_new(); @@ -1507,6 +1599,10 @@ int main() { source_pos_inlines(runner); ref_source_pos(runner); + cmark_gfm_core_extensions_ensure_registered(); + ext_source_pos(runner); + cmark_release_plugins(); + test_print_summary(runner); retval = test_ok(runner) ? 0 : 1; free(runner);