mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2026-02-16 02:08:06 +01:00
Add regular expressions from vscode-markdownlint for error range in results.
This commit is contained in:
parent
09ae51fdaa
commit
dcf0462c22
12 changed files with 228 additions and 61 deletions
|
|
@ -5,7 +5,8 @@
|
|||
"ruleAlias": "header-increment",
|
||||
"ruleDescription": "Header levels should only increment by one level at a time",
|
||||
"errorDetail": "Expected: h3; Actual: h4",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 1,
|
||||
|
|
@ -13,7 +14,8 @@
|
|||
"ruleAlias": "first-header-h1",
|
||||
"ruleDescription": "First header should be a top level header",
|
||||
"errorDetail": "Expected: h1; Actual: h2",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 5,
|
||||
|
|
@ -21,7 +23,8 @@
|
|||
"ruleAlias": "header-style",
|
||||
"ruleDescription": "Header style",
|
||||
"errorDetail": "Expected: atx; Actual: atx_closed",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 10,
|
||||
|
|
@ -29,7 +32,8 @@
|
|||
"ruleAlias": "ul-style",
|
||||
"ruleDescription": "Unordered list style",
|
||||
"errorDetail": "Expected: asterisk; Actual: dash",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [1, 2]
|
||||
},
|
||||
{
|
||||
"lineNumber": 8,
|
||||
|
|
@ -37,7 +41,8 @@
|
|||
"ruleAlias": "list-indent",
|
||||
"ruleDescription": "Inconsistent indentation for list items at the same level",
|
||||
"errorDetail": "Expected: 0; Actual: 1",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [1, 3]
|
||||
},
|
||||
{
|
||||
"lineNumber": 12,
|
||||
|
|
@ -45,7 +50,8 @@
|
|||
"ruleAlias": "ul-start-left",
|
||||
"ruleDescription": "Consider starting bulleted lists at the beginning of the line",
|
||||
"errorDetail": "Expected: 0; Actual: 1",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [1, 3]
|
||||
},
|
||||
{
|
||||
"lineNumber": 12,
|
||||
|
|
@ -53,7 +59,8 @@
|
|||
"ruleAlias": "ul-indent",
|
||||
"ruleDescription": "Unordered list indentation",
|
||||
"errorDetail": "Expected: 2; Actual: 1",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [1, 3]
|
||||
},
|
||||
{
|
||||
"lineNumber": 15,
|
||||
|
|
@ -61,7 +68,8 @@
|
|||
"ruleAlias": "no-trailing-spaces",
|
||||
"ruleDescription": "Trailing spaces",
|
||||
"errorDetail": "Expected: 0; Actual: 1",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [5, 1]
|
||||
},
|
||||
{
|
||||
"lineNumber": 17,
|
||||
|
|
@ -69,6 +77,7 @@
|
|||
"ruleAlias": "no-hard-tabs",
|
||||
"ruleDescription": "Hard tabs",
|
||||
"errorDetail": "Column: 5",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [5, 1]
|
||||
}
|
||||
]
|
||||
|
|
@ -5,7 +5,8 @@
|
|||
"ruleAlias": "no-reversed-links",
|
||||
"ruleDescription": "Reversed link syntax",
|
||||
"errorDetail": "(reversed)[link]",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [3, 16]
|
||||
},
|
||||
{
|
||||
"lineNumber": 5,
|
||||
|
|
@ -13,7 +14,8 @@
|
|||
"ruleAlias": "no-multiple-blanks",
|
||||
"ruleDescription": "Multiple consecutive blank lines",
|
||||
"errorDetail": "Expected: 1; Actual: 2",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 6,
|
||||
|
|
@ -21,7 +23,8 @@
|
|||
"ruleAlias": "line-length",
|
||||
"ruleDescription": "Line length",
|
||||
"errorDetail": "Expected: 80; Actual: 99",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [81, 19]
|
||||
},
|
||||
{
|
||||
"lineNumber": 8,
|
||||
|
|
@ -29,7 +32,8 @@
|
|||
"ruleAlias": "commands-show-output",
|
||||
"ruleDescription": "Dollar signs used before commands without showing output",
|
||||
"errorDetail": null,
|
||||
"errorContext": "$ command with no output"
|
||||
"errorContext": "$ command with no output",
|
||||
"errorRange": [5, 2]
|
||||
},
|
||||
{
|
||||
"lineNumber": 10,
|
||||
|
|
@ -37,7 +41,8 @@
|
|||
"ruleAlias": "no-missing-space-atx",
|
||||
"ruleDescription": "No space after hash on atx style header",
|
||||
"errorDetail": null,
|
||||
"errorContext": "#No space A"
|
||||
"errorContext": "#No space A",
|
||||
"errorRange": [1, 2]
|
||||
},
|
||||
{
|
||||
"lineNumber": 12,
|
||||
|
|
@ -45,7 +50,8 @@
|
|||
"ruleAlias": "no-multiple-space-atx",
|
||||
"ruleDescription": "Multiple spaces after hash on atx style header",
|
||||
"errorDetail": null,
|
||||
"errorContext": "# Multiple spaces A"
|
||||
"errorContext": "# Multiple spaces A",
|
||||
"errorRange": [1, 4]
|
||||
},
|
||||
{
|
||||
"lineNumber": 14,
|
||||
|
|
@ -53,7 +59,8 @@
|
|||
"ruleAlias": "no-missing-space-closed-atx",
|
||||
"ruleDescription": "No space inside hashes on closed atx style header",
|
||||
"errorDetail": null,
|
||||
"errorContext": "#No space B#"
|
||||
"errorContext": "#No space B#",
|
||||
"errorRange": [1, 2]
|
||||
},
|
||||
{
|
||||
"lineNumber": 16,
|
||||
|
|
@ -61,6 +68,7 @@
|
|||
"ruleAlias": "no-multiple-space-closed-atx",
|
||||
"ruleDescription": "Multiple spaces inside hashes on closed atx style header",
|
||||
"errorDetail": null,
|
||||
"errorContext": "# Multiple spaces B #"
|
||||
"errorContext": "# Multiple spaces B #",
|
||||
"errorRange": [1, 4]
|
||||
}
|
||||
]
|
||||
|
|
@ -5,7 +5,8 @@
|
|||
"ruleAlias": "blanks-around-headers",
|
||||
"ruleDescription": "Headers should be surrounded by blank lines",
|
||||
"errorDetail": null,
|
||||
"errorContext": "# Heading"
|
||||
"errorContext": "# Heading",
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 1,
|
||||
|
|
@ -13,7 +14,8 @@
|
|||
"ruleAlias": "header-start-left",
|
||||
"ruleDescription": "Headers must start at the beginning of the line",
|
||||
"errorDetail": null,
|
||||
"errorContext": " # Heading"
|
||||
"errorContext": " # Heading",
|
||||
"errorRange": [1, 2]
|
||||
},
|
||||
{
|
||||
"lineNumber": 4,
|
||||
|
|
@ -21,7 +23,8 @@
|
|||
"ruleAlias": "no-duplicate-header",
|
||||
"ruleDescription": "Multiple headers with the same content",
|
||||
"errorDetail": null,
|
||||
"errorContext": "# Heading"
|
||||
"errorContext": "# Heading",
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 4,
|
||||
|
|
@ -29,7 +32,8 @@
|
|||
"ruleAlias": "single-h1",
|
||||
"ruleDescription": "Multiple top level headers in the same document",
|
||||
"errorDetail": null,
|
||||
"errorContext": "# Heading"
|
||||
"errorContext": "# Heading",
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 6,
|
||||
|
|
@ -37,7 +41,8 @@
|
|||
"ruleAlias": "no-trailing-punctuation",
|
||||
"ruleDescription": "Trailing punctuation in header",
|
||||
"errorDetail": "Punctuation: '.'",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [19, 1]
|
||||
},
|
||||
{
|
||||
"lineNumber": 8,
|
||||
|
|
@ -45,7 +50,8 @@
|
|||
"ruleAlias": "no-multiple-space-blockquote",
|
||||
"ruleDescription": "Multiple spaces after blockquote symbol",
|
||||
"errorDetail": null,
|
||||
"errorContext": "> Multiple spaces"
|
||||
"errorContext": "> Multiple spaces",
|
||||
"errorRange": [1, 4]
|
||||
},
|
||||
{
|
||||
"lineNumber": 9,
|
||||
|
|
@ -53,7 +59,8 @@
|
|||
"ruleAlias": "no-blanks-blockquote",
|
||||
"ruleDescription": "Blank line inside blockquote",
|
||||
"errorDetail": null,
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 13,
|
||||
|
|
@ -61,7 +68,8 @@
|
|||
"ruleAlias": "ol-prefix",
|
||||
"ruleDescription": "Ordered list item prefix",
|
||||
"errorDetail": "Expected: 1; Actual: 2",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [1, 4]
|
||||
},
|
||||
{
|
||||
"lineNumber": 13,
|
||||
|
|
@ -69,6 +77,7 @@
|
|||
"ruleAlias": "list-marker-space",
|
||||
"ruleDescription": "Spaces after list markers",
|
||||
"errorDetail": "Expected: 1; Actual: 2",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [1, 4]
|
||||
}
|
||||
]
|
||||
|
|
@ -5,7 +5,8 @@
|
|||
"ruleAlias": "blanks-around-fences",
|
||||
"ruleDescription": "Fenced code blocks should be surrounded by blank lines",
|
||||
"errorDetail": null,
|
||||
"errorContext": "```"
|
||||
"errorContext": "```",
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 4,
|
||||
|
|
@ -13,7 +14,8 @@
|
|||
"ruleAlias": "blanks-around-lists",
|
||||
"ruleDescription": "Lists should be surrounded by blank lines",
|
||||
"errorDetail": null,
|
||||
"errorContext": "* List"
|
||||
"errorContext": "* List",
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 6,
|
||||
|
|
@ -21,7 +23,8 @@
|
|||
"ruleAlias": "no-inline-html",
|
||||
"ruleDescription": "Inline HTML",
|
||||
"errorDetail": "Element: hr",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": [7, 5]
|
||||
},
|
||||
{
|
||||
"lineNumber": 8,
|
||||
|
|
@ -29,7 +32,8 @@
|
|||
"ruleAlias": "no-bare-urls",
|
||||
"ruleDescription": "Bare URL used",
|
||||
"errorDetail": null,
|
||||
"errorContext": "http://example.com"
|
||||
"errorContext": "http://example.com",
|
||||
"errorRange": [6, 18]
|
||||
},
|
||||
{
|
||||
"lineNumber": 11,
|
||||
|
|
@ -37,7 +41,8 @@
|
|||
"ruleAlias": "hr-style",
|
||||
"ruleDescription": "Horizontal rule style",
|
||||
"errorDetail": "Expected: ---; Actual: ***",
|
||||
"errorContext": null
|
||||
"errorContext": null,
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 13,
|
||||
|
|
@ -45,7 +50,8 @@
|
|||
"ruleAlias": "no-emphasis-as-header",
|
||||
"ruleDescription": "Emphasis used instead of a header",
|
||||
"errorDetail": null,
|
||||
"errorContext": "Emphasis"
|
||||
"errorContext": "Emphasis",
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 15,
|
||||
|
|
@ -53,7 +59,8 @@
|
|||
"ruleAlias": "no-space-in-emphasis",
|
||||
"ruleDescription": "Spaces inside emphasis markers",
|
||||
"errorDetail": null,
|
||||
"errorContext": "* inside *"
|
||||
"errorContext": "* inside *",
|
||||
"errorRange": [7, 10]
|
||||
},
|
||||
{
|
||||
"lineNumber": 17,
|
||||
|
|
@ -61,7 +68,8 @@
|
|||
"ruleAlias": "no-space-in-code",
|
||||
"ruleDescription": "Spaces inside code span elements",
|
||||
"errorDetail": null,
|
||||
"errorContext": "` inside `"
|
||||
"errorContext": "` inside `",
|
||||
"errorRange": [7, 10]
|
||||
},
|
||||
{
|
||||
"lineNumber": 19,
|
||||
|
|
@ -69,7 +77,8 @@
|
|||
"ruleAlias": "no-space-in-links",
|
||||
"ruleDescription": "Spaces inside link text",
|
||||
"errorDetail": null,
|
||||
"errorContext": "[ inside ]"
|
||||
"errorContext": "[ inside ]",
|
||||
"errorRange": [7, 10]
|
||||
},
|
||||
{
|
||||
"lineNumber": 21,
|
||||
|
|
@ -77,6 +86,7 @@
|
|||
"ruleAlias": "fenced-code-language",
|
||||
"ruleDescription": "Fenced code blocks should have a language specified",
|
||||
"errorDetail": null,
|
||||
"errorContext": "```"
|
||||
"errorContext": "```",
|
||||
"errorRange": null
|
||||
}
|
||||
]
|
||||
|
|
@ -5,7 +5,8 @@
|
|||
"ruleAlias": "first-line-h1",
|
||||
"ruleDescription": "First line in file should be a top level header",
|
||||
"errorDetail": null,
|
||||
"errorContext": "Not a header"
|
||||
"errorContext": "Not a header",
|
||||
"errorRange": null
|
||||
},
|
||||
{
|
||||
"lineNumber": 3,
|
||||
|
|
@ -13,7 +14,8 @@
|
|||
"ruleAlias": "no-empty-links",
|
||||
"ruleDescription": "No empty links",
|
||||
"errorDetail": null,
|
||||
"errorContext": "[empty]"
|
||||
"errorContext": "[empty]",
|
||||
"errorRange": [4, 7]
|
||||
},
|
||||
{
|
||||
"lineNumber": 4,
|
||||
|
|
@ -21,6 +23,7 @@
|
|||
"ruleAlias": "required-headers",
|
||||
"ruleDescription": "Required header structure",
|
||||
"errorDetail": null,
|
||||
"errorContext": "# Header"
|
||||
"errorContext": "# Header",
|
||||
"errorRange": null
|
||||
}
|
||||
]
|
||||
|
|
@ -220,7 +220,8 @@ module.exports.resultFormattingV1 = function resultFormattingV1(test) {
|
|||
"ruleDescription":
|
||||
"Multiple spaces inside hashes on closed atx style header",
|
||||
"errorDetail": null,
|
||||
"errorContext": "# Multiple spa...style header #" }
|
||||
"errorContext": "# Multiple spa...style header #",
|
||||
"errorRange": [ 1, 4 ] }
|
||||
],
|
||||
"./test/atx_header_spacing.md": [
|
||||
{ "lineNumber": 3,
|
||||
|
|
@ -228,25 +229,29 @@ module.exports.resultFormattingV1 = function resultFormattingV1(test) {
|
|||
"ruleAlias": "first-header-h1",
|
||||
"ruleDescription": "First header should be a top level header",
|
||||
"errorDetail": "Expected: h1; Actual: h2",
|
||||
"errorContext": null },
|
||||
"errorContext": null,
|
||||
"errorRange": null },
|
||||
{ "lineNumber": 1,
|
||||
"ruleName": "MD018",
|
||||
"ruleAlias": "no-missing-space-atx",
|
||||
"ruleDescription": "No space after hash on atx style header",
|
||||
"errorDetail": null,
|
||||
"errorContext": "#Header 1 {MD018}" },
|
||||
"errorContext": "#Header 1 {MD018}",
|
||||
"errorRange": [ 1, 2 ] },
|
||||
{ "lineNumber": 3,
|
||||
"ruleName": "MD019",
|
||||
"ruleAlias": "no-multiple-space-atx",
|
||||
"ruleDescription": "Multiple spaces after hash on atx style header",
|
||||
"errorDetail": null,
|
||||
"errorContext": "## Header 2 {MD019}" },
|
||||
"errorContext": "## Header 2 {MD019}",
|
||||
"errorRange": [ 1, 5 ] },
|
||||
{ "lineNumber": 5,
|
||||
"ruleName": "MD019",
|
||||
"ruleAlias": "no-multiple-space-atx",
|
||||
"ruleDescription": "Multiple spaces after hash on atx style header",
|
||||
"errorDetail": null,
|
||||
"errorContext": "## Header 3 {MD019}" }
|
||||
"errorContext": "## Header 3 {MD019}",
|
||||
"errorRange": [ 1, 6 ] }
|
||||
],
|
||||
"./test/first_header_bad_atx.md": [
|
||||
{ "lineNumber": 1,
|
||||
|
|
@ -254,7 +259,8 @@ module.exports.resultFormattingV1 = function resultFormattingV1(test) {
|
|||
"ruleAlias": "first-header-h1",
|
||||
"ruleDescription": "First header should be a top level header",
|
||||
"errorDetail": "Expected: h1; Actual: h2",
|
||||
"errorContext": null }
|
||||
"errorContext": null,
|
||||
"errorRange": null }
|
||||
]
|
||||
};
|
||||
test.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
|
|
@ -283,6 +289,38 @@ module.exports.resultFormattingV1 = function resultFormattingV1(test) {
|
|||
});
|
||||
};
|
||||
|
||||
module.exports.resultFormattingV1BadRegExp = function resultFormattingV1(test) {
|
||||
test.expect(3);
|
||||
var md010 = rules[8];
|
||||
test.equal(md010.name, "MD010", "Wrong rule.");
|
||||
var md010RegExp = md010.regexp;
|
||||
md010.regexp = /X/;
|
||||
var options = {
|
||||
"strings": {
|
||||
"tab": "\t."
|
||||
},
|
||||
"config": defaultConfig,
|
||||
"resultVersion": 1
|
||||
};
|
||||
markdownlint(options, function callback(err, actualResult) {
|
||||
test.ifError(err);
|
||||
var expectedResult = {
|
||||
"tab": [
|
||||
{ "lineNumber": 1,
|
||||
"ruleName": "MD010",
|
||||
"ruleAlias": "no-hard-tabs",
|
||||
"ruleDescription": "Hard tabs",
|
||||
"errorDetail": "Column: 1",
|
||||
"errorContext": null,
|
||||
"errorRange": null }
|
||||
]
|
||||
};
|
||||
test.deepEqual(actualResult, expectedResult, "Undetected issues.");
|
||||
md010.regexp = md010RegExp;
|
||||
test.done();
|
||||
});
|
||||
};
|
||||
|
||||
module.exports.stringInputLineEndings = function stringInputLineEndings(test) {
|
||||
test.expect(2);
|
||||
var options = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue