Copy range property of rule's onError object at time of call; add test to verify.

This commit is contained in:
David Anson 2020-01-13 19:49:51 -08:00
parent d15324478c
commit 5f6e17915a
2 changed files with 63 additions and 2 deletions

View file

@ -448,7 +448,7 @@ function lintContent(
"lineNumber": errorInfo.lineNumber + frontMatterLines.length,
"detail": errorInfo.detail || null,
"context": errorInfo.context || null,
"range": errorInfo.range || null,
"range": errorInfo.range ? [ ...errorInfo.range ] : null,
"fixInfo": fixInfo ? cleanFixInfo : null
});
}

View file

@ -3609,7 +3609,7 @@ tape("customRulesOnErrorLazy", (test) => {
"names": [ "name" ],
"description": "description",
"tags": [ "tag" ],
"function": function onErrorNull(params, onError) {
"function": function onErrorLazy(params, onError) {
onError({
"lineNumber": 1,
"detail": "",
@ -3643,6 +3643,67 @@ tape("customRulesOnErrorLazy", (test) => {
});
});
tape("customRulesOnErrorModified", (test) => {
test.plan(2);
const errorObject = {
"lineNumber": 1,
"detail": "detail",
"context": "context",
"range": [ 1, 2 ],
"fixInfo": {
"editColumn": 1,
"deleteCount": 2,
"insertText": "text"
}
};
const options = {
"customRules": [
{
"names": [ "name" ],
"description": "description",
"tags": [ "tag" ],
"function": function onErrorModified(params, onError) {
onError(errorObject);
errorObject.lineNumber = 2;
errorObject.detail = "changed";
errorObject.context = "changed";
errorObject.range[1] = 3;
errorObject.fixInfo.editColumn = 2;
errorObject.fixInfo.deleteCount = 3;
errorObject.fixInfo.insertText = "changed";
}
}
],
"strings": {
"string": "# Heading\n"
},
"resultVersion": 3
};
markdownlint(options, function callback(err, actualResult) {
test.ifError(err);
const expectedResult = {
"string": [
{
"lineNumber": 1,
"ruleNames": [ "name" ],
"ruleDescription": "description",
"ruleInformation": null,
"errorDetail": "detail",
"errorContext": "context",
"errorRange": [ 1, 2 ],
"fixInfo": {
"editColumn": 1,
"deleteCount": 2,
"insertText": "text"
}
}
]
};
test.deepEqual(actualResult, expectedResult, "Undetected issues.");
test.end();
});
});
tape("customRulesThrowForFileHandled", (test) => {
test.plan(2);
const exceptionMessage = "Test exception message";