2024-10-06 17:24:44 -07:00
|
|
|
// @ts-check
|
|
|
|
|
2024-11-28 20:36:44 -08:00
|
|
|
import test from "ava";
|
2024-12-03 19:58:28 -08:00
|
|
|
import { applyFix, applyFixes } from "markdownlint";
|
2024-10-06 17:24:44 -07:00
|
|
|
|
|
|
|
test("applyFix", (t) => {
|
|
|
|
t.plan(4);
|
|
|
|
const testCases = [
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
{
|
|
|
|
"editColumn": 12,
|
|
|
|
"deleteCount": 1
|
|
|
|
},
|
|
|
|
undefined,
|
|
|
|
"Hello world"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
{
|
|
|
|
"editColumn": 13,
|
|
|
|
"insertText": "\n"
|
|
|
|
},
|
|
|
|
undefined,
|
|
|
|
"Hello world.\n"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
{
|
|
|
|
"editColumn": 13,
|
|
|
|
"insertText": "\n"
|
|
|
|
},
|
|
|
|
"\n",
|
|
|
|
"Hello world.\n"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
{
|
|
|
|
"editColumn": 13,
|
|
|
|
"insertText": "\n"
|
|
|
|
},
|
|
|
|
"\r\n",
|
|
|
|
"Hello world.\r\n"
|
|
|
|
]
|
|
|
|
];
|
|
|
|
for (const testCase of testCases) {
|
|
|
|
const [ line, fixInfo, lineEnding, expected ] = testCase;
|
|
|
|
// @ts-ignore
|
2024-12-03 19:58:28 -08:00
|
|
|
const actual = applyFix(line, fixInfo, lineEnding);
|
2024-10-06 17:24:44 -07:00
|
|
|
t.is(actual, String(expected), "Incorrect fix applied.");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
test("applyFixes", (t) => {
|
|
|
|
t.plan(30);
|
|
|
|
const testCases = [
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
[],
|
|
|
|
"Hello world."
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello world."
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"insertText": "Very "
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Very Hello world."
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 7,
|
|
|
|
"insertText": "big "
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello big world."
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"deleteCount": 6
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"world."
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 7,
|
|
|
|
"deleteCount": 5,
|
|
|
|
"insertText": "there"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello there."
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 12,
|
|
|
|
"deleteCount": 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 6,
|
|
|
|
"deleteCount": 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Helloworld"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world.",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 13,
|
|
|
|
"insertText": " Hi."
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello world. Hi."
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello\nworld",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"deleteCount": -1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"world"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello\nworld",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 2,
|
|
|
|
"fixInfo": {
|
|
|
|
"deleteCount": -1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello\nworld",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 2,
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"deleteCount": -1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"world"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello\nworld",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 2,
|
|
|
|
"deleteCount": -1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 4,
|
|
|
|
"deleteCount": 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 10,
|
|
|
|
"deleteCount": 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Helo word"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 10,
|
|
|
|
"deleteCount": 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 4,
|
|
|
|
"deleteCount": 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Helo word"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello\nworld",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"deleteCount": -1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"insertText": "Big "
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"world"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello\nworld",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"deleteCount": -1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 2,
|
|
|
|
"deleteCount": -1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
""
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"insertText": "aa"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"insertText": "b"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"aaHello world"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"insertText": "a"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"insertText": "bb"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"bbHello world"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 6,
|
|
|
|
"insertText": " big"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 7,
|
|
|
|
"deleteCount": 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello big orld"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 8,
|
|
|
|
"deleteCount": 2
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 7,
|
|
|
|
"deleteCount": 2
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello wld"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 7,
|
|
|
|
"deleteCount": 2
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 8,
|
|
|
|
"deleteCount": 2
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello wld"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 7,
|
|
|
|
"deleteCount": 1,
|
|
|
|
"insertText": "z"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello zorld"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 7,
|
|
|
|
"deleteCount": 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 7,
|
|
|
|
"insertText": "z"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello zorld"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 7,
|
|
|
|
"insertText": "z"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 1,
|
|
|
|
"editColumn": 7,
|
|
|
|
"deleteCount": 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello zorld"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello\nworld\nhello\rworld",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 4,
|
|
|
|
"editColumn": 6,
|
|
|
|
"insertText": "\n"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello\nworld\nhello\nworld\n"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello\r\nworld\r\nhello\nworld",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 4,
|
|
|
|
"editColumn": 6,
|
|
|
|
"insertText": "\n"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello\r\nworld\r\nhello\r\nworld\r\n"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello\rworld\rhello\nworld",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"fixInfo": {
|
|
|
|
"lineNumber": 4,
|
|
|
|
"editColumn": 6,
|
|
|
|
"insertText": "\n"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello\rworld\rhello\rworld\r"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello\r\nworld",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 2,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 6,
|
|
|
|
"insertText": "\n\n"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello\r\nworld\r\n\r\n"
|
|
|
|
],
|
|
|
|
[
|
|
|
|
"Hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"insertText": "x"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"deleteCount": -1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
""
|
|
|
|
],
|
|
|
|
[
|
|
|
|
" hello world",
|
|
|
|
[
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 1,
|
|
|
|
"deleteCount": 1
|
|
|
|
}
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"lineNumber": 1,
|
|
|
|
"fixInfo": {
|
|
|
|
"editColumn": 2,
|
|
|
|
"deleteCount": 1,
|
|
|
|
"insertText": "H"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"Hello world"
|
|
|
|
]
|
|
|
|
];
|
|
|
|
for (const testCase of testCases) {
|
|
|
|
const [ input, errors, expected ] = testCase;
|
|
|
|
// @ts-ignore
|
2024-12-03 19:58:28 -08:00
|
|
|
const actual = applyFixes(input, errors);
|
2024-10-06 17:24:44 -07:00
|
|
|
t.is(actual, String(expected), "Incorrect fix applied.");
|
|
|
|
}
|
|
|
|
});
|