Add support for delta line numbers to test scenario tagging syntax: {MD000:+3}.

This commit is contained in:
David Anson 2023-12-28 16:46:15 -08:00
parent c5be0ccd34
commit fa462fe3fc
6 changed files with 21 additions and 14 deletions

View file

@ -37,18 +37,25 @@ function createTestForFile(file) {
error.ruleInformation.replace(/v\d+\.\d+\.\d+/, "v0.0.0"); error.ruleInformation.replace(/v\d+\.\d+\.\d+/, "v0.0.0");
} }
// Match identified issues by MD### markers // Match identified issues by MD### markers
const marker = /\{(MD\d+)(?::(\d+))?\}/g; const marker = /\{(MD\d+)(?::([-+]?)(\d+))?\}/g;
const lines = content.split(helpers.newLineRe); const lines = content.split(helpers.newLineRe);
const expected = {}; const expected = {};
// @ts-ignore // @ts-ignore
for (const [ index, line ] of lines.entries()) { for (const [ index, line ] of lines.entries()) {
let match = null; let match = null;
while ((match = marker.exec(line))) { while ((match = marker.exec(line))) {
const rule = match[1]; const [ , rule, delta, value ] = match;
let lineNumber = index + 1;
if (value) {
const valueInt = Number.parseInt(value, 10);
if (delta) {
lineNumber += ((delta === "+") ? 1 : -1) * valueInt;
} else {
lineNumber = valueInt;
}
}
// eslint-disable-next-line no-multi-assign // eslint-disable-next-line no-multi-assign
const indices = expected[rule] = expected[rule] || []; const indices = expected[rule] = expected[rule] || [];
const lineNumber =
match[2] ? Number.parseInt(match[2], 10) : index + 1;
if (!indices.includes(lineNumber)) { if (!indices.includes(lineNumber)) {
indices.push(lineNumber); indices.push(lineNumber);
} }

View file

@ -16,7 +16,7 @@ Execute `via the node.js engine`
node.js is runtime node.js is runtime
```js ```js
javascript is code {MD046:18} javascript is code {MD046:-1}
node.js is runtime node.js is runtime
``` ```

View file

@ -50,7 +50,7 @@ Text [https://example.com/directory/text.file](https://example.com/directory/tex
Text [https://example.com/directory/text%20text.file](https://example.com/directory/text%20text.file) text Text [https://example.com/directory/text%20text.file](https://example.com/directory/text%20text.file) text
Text [https://example.com/directory/text%20text.file](https://example.com/directory/text%20text.file) text Text [https://example.com/directory/text%20text.file](https://example.com/directory/text%20text.file) text
{MD044:55} {MD044:+2}
<!-- markdownlint-configure-file { <!-- markdownlint-configure-file {
"proper-names": { "proper-names": {

View file

@ -50,7 +50,7 @@ HTML <u>javascript</u> {MD044}
node.js is runtime {MD044} node.js is runtime {MD044}
```javascript ```javascript
javascript is code {MD044} {MD046:52} javascript is code {MD044} {MD046:-1}
node.js is runtime {MD044} node.js is runtime {MD044}
``` ```
@ -92,7 +92,7 @@ Text referencing mULTIPLEcASE name.
<img src="img/javascript/image.png" alt="Description" error="{MD044}"> <img src="img/javascript/image.png" alt="Description" error="{MD044}">
<script type="text/javascript"> <script type="text/javascript">
{MD044:94} {MD044:-1}
javascript {MD044} javascript {MD044}
</script> </script>
@ -118,7 +118,7 @@ javascript {MD044}
javascript {MD044} javascript {MD044}
</div> </div>
{MD044:107} {MD044:109} {MD044:112} {MD044:117} {MD044:-14} {MD044:-12} {MD044:-9} {MD044:-4}
<!-- markdownlint-configure-file { <!-- markdownlint-configure-file {
"no-inline-html": false, "no-inline-html": false,

View file

@ -41815,7 +41815,7 @@ Generated by [AVA](https://avajs.dev).
node.js is runtime␊ node.js is runtime␊
\`\`\`js␊ \`\`\`js␊
javascript is code {MD046:18}␊ javascript is code {MD046:-1}␊
node.js is runtime␊ node.js is runtime␊
\`\`\`␊ \`\`\`␊
@ -42649,7 +42649,7 @@ Generated by [AVA](https://avajs.dev).
Text [https://example.com/directory/text%20text.file](https://example.com/directory/text%20text.file) text␊ Text [https://example.com/directory/text%20text.file](https://example.com/directory/text%20text.file) text␊
Text [https://example.com/directory/text%20text.file](https://example.com/directory/text%20text.file) text␊ Text [https://example.com/directory/text%20text.file](https://example.com/directory/text%20text.file) text␊
{MD044:55}␊ {MD044:+2}␊
<!-- markdownlint-configure-FILE {␊ <!-- markdownlint-configure-FILE {␊
"proper-names": {␊ "proper-names": {␊
@ -43560,7 +43560,7 @@ Generated by [AVA](https://avajs.dev).
Node.js is runtime {MD044}␊ Node.js is runtime {MD044}␊
\`\`\`javascript␊ \`\`\`javascript␊
JavaScript is code {MD044} {MD046:52}␊ JavaScript is code {MD044} {MD046:-1}␊
Node.js is runtime {MD044}␊ Node.js is runtime {MD044}␊
\`\`\`␊ \`\`\`␊
@ -43602,7 +43602,7 @@ Generated by [AVA](https://avajs.dev).
<img src="img/JavaScript/image.png" alt="Description" error="{MD044}"> <img src="img/JavaScript/image.png" alt="Description" error="{MD044}">
<script type="text/JavaScript"> <script type="text/JavaScript">
{MD044:94}␊ {MD044:-1}␊
JavaScript {MD044}␊ JavaScript {MD044}␊
</script> </script>
@ -43628,7 +43628,7 @@ Generated by [AVA](https://avajs.dev).
JavaScript {MD044}␊ JavaScript {MD044}␊
</div> </div>
{MD044:107} {MD044:109} {MD044:112} {MD044:117}␊ {MD044:-14} {MD044:-12} {MD044:-9} {MD044:-4}␊
<!-- markdownlint-configure-file {␊ <!-- markdownlint-configure-file {␊
"no-inline-html": false,␊ "no-inline-html": false,␊