Skip to content

Commit 284c14e

Browse files
committed
Add tests for existing behavior and syntax of micromark directive extensions.
1 parent 820c631 commit 284c14e

6 files changed

Lines changed: 104 additions & 2 deletions
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Link Fragments Inline Directive
2+
3+
## Time 12\:34
4+
5+
[Time](#time-1234)
6+
7+
## Ratio 16\:9
8+
9+
[Ratio](#ratio-169)
10+
11+
## Stock NYSE\:MSFT
12+
13+
[Stock](#stock-nysemsft)
14+
15+
## Spreadsheet A1\:B2
16+
17+
[Spreadsheet](#spreadsheet-a1b2)

test/markdownlint-test-micromark.mjs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ import { newLineRe } from "../helpers/helpers.cjs";
77
import { filterByPredicate, filterByTypes } from "../helpers/micromark-helpers.cjs";
88
import { getEvents, parse } from "../lib/micromark-parse.mjs";
99

10+
const normalize = (/** @type {string} */ content) => content.split(newLineRe).join("\n");
11+
1012
const testContent = new Promise((resolve, reject) => {
1113
fs
1214
.readFile("./test/every-markdown-syntax.md", "utf8")
13-
.then((content) => content.split(newLineRe).join("\n"))
15+
.then(normalize)
1416
.then(resolve, reject);
1517
});
1618

@@ -92,4 +94,10 @@ test.suite(import.meta.url.replace(/^.*?\/(?<name>[^/]*)$/u, "$<name>"), () => {
9294
t.assert.deepEqual(byPredicate, byTypes);
9395
});
9496

97+
test("micromark directive extension syntax", async(t) => {
98+
t.plan(1);
99+
const tokens = parse(normalize(await fs.readFile("./test/micromark-directive-extension-syntax.md", "utf8")));
100+
t.assert.snapshot(stringifySafe(tokens));
101+
});
102+
95103
});

test/markdownlint-test-micromark.mjs.snapshot

Lines changed: 4 additions & 0 deletions
Large diffs are not rendered by default.

test/markdownlint-test-scenarios.mjs.snapshot

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21516,6 +21516,13 @@ exports[`markdownlint-test-scenarios.mjs > link-fragments-ignored-pattern-presen
2151621516
}
2151721517
`;
2151821518

21519+
exports[`markdownlint-test-scenarios.mjs > link-fragments-inline-directive.md 1`] = `
21520+
{
21521+
"errors": [],
21522+
"fixed": "# Link Fragments Inline Directive\\n\\n## Time 12\\\\:34\\n\\n[Time](#time-1234)\\n\\n## Ratio 16\\\\:9\\n\\n[Ratio](#ratio-169)\\n\\n## Stock NYSE\\\\:MSFT\\n\\n[Stock](#stock-nysemsft)\\n\\n## Spreadsheet A1\\\\:B2\\n\\n[Spreadsheet](#spreadsheet-a1b2)\\n"
21523+
}
21524+
`;
21525+
2151921526
exports[`markdownlint-test-scenarios.mjs > link-fragments-malformed-uri.md 1`] = `
2152021527
{
2152121528
"errors": [],
@@ -34993,6 +35000,13 @@ exports[`markdownlint-test-scenarios.mjs > md052-invalid-range-bug.md 1`] = `
3499335000
}
3499435001
`;
3499535002

35003+
exports[`markdownlint-test-scenarios.mjs > micromark-directive-extension-syntax.md 1`] = `
35004+
{
35005+
"errors": [],
35006+
"fixed": "# micromark Directive Extension Syntax\\n\\n## Inline\\n\\n### Valid\\n\\n:name[content]{key=val}\\n\\n:name[content]\\n\\n:name{key=val}\\n\\n:name\\n\\nprefix:name\\n\\n## Leaf Block\\n\\n### Valid\\n\\n::name[content]{key=val}\\n\\n::name[content]\\n\\n::name{key=val}\\n\\n::name\\n\\n### Invalid\\n\\nprefix::name\\n\\n## Container Block\\n\\n### Valid\\n\\n:::name[inline-content]{key=val}\\ncontents\\n:::\\n\\n:::name[inline-content]\\ncontents\\n:::\\n\\n:::name{key=val}\\ncontents\\n:::\\n\\n:::name\\ncontents\\n:::\\n\\n### Invalid\\n\\nprefix:::name[inline-content]{key=val}\\ncontents\\n:::\\n\\n<!-- markdownlint-configure-file { \\"no-duplicate-heading\\": false } -->\\n"
35007+
}
35008+
`;
35009+
3499635010
exports[`markdownlint-test-scenarios.mjs > micromark-regressions.md 1`] = `
3499735011
{
3499835012
"errors": [],

test/markdownlint-test.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1101,7 +1101,7 @@ test.suite(import.meta.url.replace(/^.*?\/(?<name>[^/]*)$/u, "$<name>"), () => {
11011101
});
11021102

11031103
test("validateJsonUsingConfigSchemaStrict", async(t) => {
1104-
t.plan(234);
1104+
t.plan(235);
11051105
// @ts-ignore
11061106
const ajv = new Ajv(ajvOptions);
11071107
const validateSchemaStrict = ajv.compile(configSchemaStrict);
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# micromark Directive Extension Syntax
2+
3+
## Inline
4+
5+
### Valid
6+
7+
:name[content]{key=val}
8+
9+
:name[content]
10+
11+
:name{key=val}
12+
13+
:name
14+
15+
prefix:name
16+
17+
## Leaf Block
18+
19+
### Valid
20+
21+
::name[content]{key=val}
22+
23+
::name[content]
24+
25+
::name{key=val}
26+
27+
::name
28+
29+
### Invalid
30+
31+
prefix::name
32+
33+
## Container Block
34+
35+
### Valid
36+
37+
:::name[inline-content]{key=val}
38+
contents
39+
:::
40+
41+
:::name[inline-content]
42+
contents
43+
:::
44+
45+
:::name{key=val}
46+
contents
47+
:::
48+
49+
:::name
50+
contents
51+
:::
52+
53+
### Invalid
54+
55+
prefix:::name[inline-content]{key=val}
56+
contents
57+
:::
58+
59+
<!-- markdownlint-configure-file { "no-duplicate-heading": false } -->

0 commit comments

Comments
 (0)