From e7672ddcea7061755c23a5c3a97160d1cdc68397 Mon Sep 17 00:00:00 2001 From: nobkd <44443899+nobkd@users.noreply.github.com> Date: Thu, 14 Nov 2024 19:22:11 +0100 Subject: [PATCH] test: cmark-spec --- packages/nuemark/package.json | 3 +++ packages/nuemark/test/cmark.test.js | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 packages/nuemark/test/cmark.test.js diff --git a/packages/nuemark/package.json b/packages/nuemark/package.json index e33f72a6..6721cbe9 100644 --- a/packages/nuemark/package.json +++ b/packages/nuemark/package.json @@ -19,6 +19,9 @@ "marked": "^13.0.3", "nue-glow": "*" }, + "devDependencies": { + "commonmark-spec": "^0.31.2" + }, "jest": { "setupFilesAfterEnv": [ "jest-extended/all", diff --git a/packages/nuemark/test/cmark.test.js b/packages/nuemark/test/cmark.test.js new file mode 100644 index 00000000..fb245b2a --- /dev/null +++ b/packages/nuemark/test/cmark.test.js @@ -0,0 +1,20 @@ +import { tests } from 'commonmark-spec' +import { nuemark } from '../index.js' + +tests.forEach(v => { + v.markdown = v.markdown.replaceAll('→', '\t').trimEnd() + v.html = v.html.replaceAll('→', '\t').trimEnd() +}) + +const skipSections = ['Tabs', 'Indented code blocks', 'Raw HTML', 'HTML blocks'] +const skipNumbers = [] + +for (const testCase of tests) { + if (skipSections.includes(testCase.section) || + skipNumbers.includes(testCase.number)) continue + + test(`cmark spec: ${testCase.section}; ${testCase.number}`, () => { + console.log(testCase.number, JSON.stringify(testCase.markdown)) + expect(nuemark(testCase.markdown)).toEqual(testCase.html) + }) +}