From 1db3f95e71ec0e575eac1c1bc2a94e13518895d7 Mon Sep 17 00:00:00 2001 From: Vitaly Puzrin Date: Fri, 20 Nov 2020 23:01:45 +0300 Subject: [PATCH] Track cmark pathological tests updates --- package.json | 1 + test/pathological.js | 59 ++++++++++++++++++++++++++---------------- test/pathological.json | 1 + 3 files changed, 38 insertions(+), 23 deletions(-) create mode 100644 test/pathological.json diff --git a/package.json b/package.json index 8f17706..afe84f1 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ "markdown-it-testgen": "^0.1.3", "mocha": "^8.0.1", "ndoc": "^6.0.0", + "needle": "^2.5.2", "nyc": "^15.0.1", "pug-cli": "^1.0.0-alpha6", "rollup": "^2.29.0", diff --git a/test/pathological.js b/test/pathological.js index aec445e..2074513 100644 --- a/test/pathological.js +++ b/test/pathological.js @@ -1,72 +1,85 @@ 'use strict'; -var markdownit = require('../'); - - -describe('Pathological sequences speed', function () { +const markdownit = require('../'); +const needle = require('needle'); +const assert = require('assert'); +const crypto = require('crypto'); + +describe('Pathological sequences speed', () => { + + // Ported from cmark, https://github.com/commonmark/cmark/blob/master/test/pathological_tests.py + describe('Cmark', () => { + + it('verify original source crc', async () => { + /* eslint-disable max-len */ + const src = await needle('get', 'https://raw.githubusercontent.com/commonmark/cmark/master/test/pathological_tests.py'); + const src_md5 = crypto.createHash('md5').update(src.body).digest('hex'); + + assert.strictEqual( + src_md5, + require('./pathological.json').md5, + 'CRC or cmark pathological tests hanged. Verify and update pathological.json' + ); + }); - describe('Cmark', function () { - // - // Ported from cmark, https://github.com/commonmark/cmark/blob/master/test/pathological_tests.py - // - it('nested strong emph', function () { + it('nested strong emph', () => { markdownit().render('*a **a '.repeat(5000) + 'b' + ' a** a*'.repeat(5000)); }); - it('many emph closers with no openers', function () { + it('many emph closers with no openers', () => { markdownit().render('a_ '.repeat(30000)); }); - it('many emph openers with no closers', function () { + it('many emph openers with no closers', () => { markdownit().render('_a '.repeat(30000)); }); - it('many link closers with no openers', function () { + it('many link closers with no openers', () => { markdownit().render('a]'.repeat(10000)); }); - it('many link openers with no closers', function () { + it('many link openers with no closers', () => { markdownit().render('[a'.repeat(10000)); }); - it('mismatched openers and closers', function () { + it('mismatched openers and closers', () => { markdownit().render('*a_ '.repeat(50000)); }); - it('openers and closers multiple of 3', function () { + it('openers and closers multiple of 3', () => { markdownit().render('a**b' + ('c* '.repeat(50000))); }); - it('link openers and emph closers', function () { + it('link openers and emph closers', () => { markdownit().render('[ a_'.repeat(10000)); }); - it('pattern [ (]( repeated', function () { + it('pattern [ (]( repeated', () => { markdownit().render('[ (]('.repeat(40000)); }); - it('nested brackets', function () { + it('nested brackets', () => { markdownit().render('['.repeat(20000) + 'a' + ']'.repeat(20000)); }); - it('nested block quotes', function () { + it('nested block quotes', () => { markdownit().render('> '.repeat(50000) + 'a'); }); - it('deeply nested lists', function () { + it('deeply nested lists', () => { markdownit().render(Array(1000).fill(0).map(function (_, x) { return ' '.repeat(x) + '* a\n'; }).join('')); }); - it('backticks', function () { + it('backticks', () => { markdownit().render(Array(3000).fill(0).map(function (_, x) { return 'e' + '`'.repeat(x); }).join('')); }); - it('unclosed links A', function () { + it('unclosed links A', () => { markdownit().render('[a]( { markdownit().render('[a](b'.repeat(30000)); }); }); diff --git a/test/pathological.json b/test/pathological.json new file mode 100644 index 0000000..30751ac --- /dev/null +++ b/test/pathological.json @@ -0,0 +1 @@ +{ "md5": "69375a833e1a93f9e990a040cbfb9672" }