mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-21 21:30:47 +02:00
Add test case for custom rule that imports an ESM module (refs #477).
This commit is contained in:
parent
b1aef98220
commit
23d8ed7c01
5 changed files with 87 additions and 2 deletions
|
@ -1143,6 +1143,32 @@ test.cb("customRulesLintJavaScript", (t) => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test.cb("customRulesValidateJson", (t) => {
|
||||||
|
t.plan(2);
|
||||||
|
const options = {
|
||||||
|
"customRules": customRules.validateJson,
|
||||||
|
"files": "test/validate-json.md"
|
||||||
|
};
|
||||||
|
markdownlint(options, (err, actual) => {
|
||||||
|
t.falsy(err);
|
||||||
|
const expected = {
|
||||||
|
"test/validate-json.md": [
|
||||||
|
{
|
||||||
|
"lineNumber": 22,
|
||||||
|
"ruleNames": [ "validate-json" ],
|
||||||
|
"ruleDescription": "Rule that validates JSON code",
|
||||||
|
"ruleInformation": null,
|
||||||
|
"errorDetail": "Unexpected end of JSON input",
|
||||||
|
"errorContext": null,
|
||||||
|
"errorRange": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
t.deepEqual(actual, expected, "Unexpected issues.");
|
||||||
|
t.end();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test("customRulesAsyncThrowsInSyncContext", (t) => {
|
test("customRulesAsyncThrowsInSyncContext", (t) => {
|
||||||
t.plan(1);
|
t.plan(1);
|
||||||
const options = {
|
const options = {
|
||||||
|
|
|
@ -1109,7 +1109,7 @@ test("allBuiltInRulesHaveValidUrl", (t) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("someCustomRulesHaveValidUrl", (t) => {
|
test("someCustomRulesHaveValidUrl", (t) => {
|
||||||
t.plan(7);
|
t.plan(8);
|
||||||
customRules.all.forEach(function forRule(rule) {
|
customRules.all.forEach(function forRule(rule) {
|
||||||
t.true(!rule.information ||
|
t.true(!rule.information ||
|
||||||
(Object.getPrototypeOf(rule.information) === URL.prototype));
|
(Object.getPrototypeOf(rule.information) === URL.prototype));
|
||||||
|
|
|
@ -17,10 +17,14 @@ module.exports.lettersEX = lettersEX;
|
||||||
const lintJavaScript = require("./lint-javascript");
|
const lintJavaScript = require("./lint-javascript");
|
||||||
module.exports.lintJavaScript = lintJavaScript;
|
module.exports.lintJavaScript = lintJavaScript;
|
||||||
|
|
||||||
|
const validateJson = require("./validate-json");
|
||||||
|
module.exports.validateJson = validateJson;
|
||||||
|
|
||||||
module.exports.all = [
|
module.exports.all = [
|
||||||
anyBlockquote,
|
anyBlockquote,
|
||||||
everyNLines,
|
everyNLines,
|
||||||
firstLine,
|
firstLine,
|
||||||
lettersEX,
|
lettersEX,
|
||||||
lintJavaScript
|
lintJavaScript,
|
||||||
|
validateJson
|
||||||
];
|
];
|
||||||
|
|
28
test/rules/validate-json.js
Normal file
28
test/rules/validate-json.js
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
// @ts-check
|
||||||
|
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
const { filterTokens } = require("markdownlint-rule-helpers");
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
"names": [ "validate-json" ],
|
||||||
|
"description": "Rule that validates JSON code",
|
||||||
|
"tags": [ "test", "validate", "json" ],
|
||||||
|
"asynchronous": true,
|
||||||
|
"function": async(params, onError) => {
|
||||||
|
// eslint-disable-next-line max-len, node/no-unsupported-features/es-syntax
|
||||||
|
const { "default": stripJsonComments } = await import("strip-json-comments");
|
||||||
|
filterTokens(params, "fence", (fence) => {
|
||||||
|
if (/jsonc?/i.test(fence.info)) {
|
||||||
|
try {
|
||||||
|
JSON.parse(stripJsonComments(fence.content));
|
||||||
|
} catch (error) {
|
||||||
|
onError({
|
||||||
|
"lineNumber": fence.lineNumber,
|
||||||
|
"detail": error.message
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
27
test/validate-json.md
Normal file
27
test/validate-json.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# Validate JSON
|
||||||
|
|
||||||
|
Text
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"property": "value"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Text
|
||||||
|
|
||||||
|
```jsonc
|
||||||
|
{
|
||||||
|
// Comment
|
||||||
|
"property": "value"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Text
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"property": "value"
|
||||||
|
```
|
||||||
|
|
||||||
|
Text
|
Loading…
Add table
Add a link
Reference in a new issue