From db266b44e1227b7fcc0012bfcf8a73f6f044d2bb 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 --- bun.lock | 5 +++++ packages/nuemark/package.json | 3 +++ packages/nuemark/test/cmark.test.js | 20 ++++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 100644 packages/nuemark/test/cmark.test.js diff --git a/bun.lock b/bun.lock index be853c2a..5596bc5a 100644 --- a/bun.lock +++ b/bun.lock @@ -56,6 +56,9 @@ "js-yaml": "^4.1.0", "nue-glow": "*", }, + "devDependencies": { + "commonmark-spec": "^0.31.2", + }, }, }, "packages": { @@ -111,6 +114,8 @@ "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "commonmark-spec": ["commonmark-spec@0.31.2", "", {}, "sha512-vXKxmclzJPymhOJYD26G0oBjVmIcKC8p5m2DvHIq1A1btr1m0r0dT/PzRA5/nwxUbCAPedMNPEoiQE+zvuOcOw=="], + "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], "diff-dom": ["diff-dom@5.1.4", "", {}, "sha512-TSEaVdVGictY1KHg7VpVw2nuM02YKC9C8/qBkGiCnkiAybVbu1zQTMj2/dnVLRO7Z62UsqzHGpXweiOj5/jaZg=="], diff --git a/packages/nuemark/package.json b/packages/nuemark/package.json index 51ee5041..b026664f 100644 --- a/packages/nuemark/package.json +++ b/packages/nuemark/package.json @@ -18,6 +18,9 @@ "js-yaml": "^4.1.0", "nue-glow": "*" }, + "devDependencies": { + "commonmark-spec": "^0.31.2" + }, "jest": { "setupFilesAfterEnv": [ "/../../setup-jest.js" 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) + }) +}