From 7dccba302f9533d4d44413d92d756a6ca19f5536 Mon Sep 17 00:00:00 2001 From: David Anson Date: Sat, 2 Nov 2024 21:59:19 -0700 Subject: [PATCH] Add markdownlint-cli2-formatter-template output formatter (fixes #426). --- .github/dependabot.yml | 6 ++ .github/dictionary.txt | 1 + .github/workflows/ci.yml | 4 +- docker/Dockerfile | 1 + formatter-template/LICENSE | 21 ++++ formatter-template/README.md | 92 ++++++++++++++++++ .../markdownlint-cli2-formatter-template.js | 53 ++++++++++ formatter-template/package.json | 27 +++++ package.json | 1 + test/markdownlint-cli2-test.js | 2 + .../.markdownlint-cli2.jsonc | 3 +- .../.markdownlint-cli2.jsonc | 3 +- .../.markdownlint-cli2.jsonc | 4 +- .../outputFormatters/.markdownlint-cli2.jsonc | 3 +- .../markdownlint-cli2-test-exec.js.md | 41 +++++++- .../markdownlint-cli2-test-exec.js.snap | Bin 14626 -> 18391 bytes .../markdownlint-cli2-test-main.js.md | 26 ++++- .../markdownlint-cli2-test-main.js.snap | Bin 13476 -> 14230 bytes 18 files changed, 280 insertions(+), 8 deletions(-) create mode 100644 formatter-template/LICENSE create mode 100644 formatter-template/README.md create mode 100644 formatter-template/markdownlint-cli2-formatter-template.js create mode 100644 formatter-template/package.json diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 48473006..1f8246f9 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -53,3 +53,9 @@ updates: interval: "daily" target-branch: "next" versioning-strategy: "increase" + - package-ecosystem: "npm" + directory: "/formatter-template" + schedule: + interval: "daily" + target-branch: "next" + versioning-strategy: "increase" diff --git a/.github/dictionary.txt b/.github/dictionary.txt index 3973d66a..dd6a1024 100644 --- a/.github/dictionary.txt +++ b/.github/dictionary.txt @@ -26,6 +26,7 @@ markdownlint-cli2-formatter-junit markdownlint-cli2-formatter-pretty markdownlint-cli2-formatter-sarif markdownlint-cli2-formatter-summarize +markdownlint-cli2-formatter-template npm parsers POSIX diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 80721f55..5f5f8755 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,8 +65,10 @@ jobs: run: cd formatter-sarif && npm pack - name: Package formatter-summarize run: cd formatter-summarize && npm pack + - name: Package formatter-template + run: cd formatter-template && npm pack - name: Install formatters globally - run: sudo npm install --global --no-package-lock --production ./formatter-default/*.tgz ./formatter-codequality/*.tgz ./formatter-json/*.tgz ./formatter-junit/*.tgz ./formatter-pretty/*.tgz ./formatter-sarif/*.tgz ./formatter-summarize/*.tgz + run: sudo npm install --global --no-package-lock --production ./formatter-default/*.tgz ./formatter-codequality/*.tgz ./formatter-json/*.tgz ./formatter-junit/*.tgz ./formatter-pretty/*.tgz ./formatter-sarif/*.tgz ./formatter-summarize/*.tgz ./formatter-template/*.tgz - name: Lint with formatters run: cp test/outputFormatters-npm/.markdownlint-cli2.jsonc . && markdownlint-cli2 CONTRIBUTING.md README.md - name: Uninstall markdownlint-cli2 globally diff --git a/docker/Dockerfile b/docker/Dockerfile index cf657196..60a2346d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -11,6 +11,7 @@ RUN cd formatter-junit && npm pack --pack-destination=.. RUN cd formatter-pretty && npm pack --pack-destination=.. RUN cd formatter-sarif && npm pack --pack-destination=.. RUN cd formatter-summarize && npm pack --pack-destination=.. +RUN cd formatter-template && npm pack --pack-destination=.. FROM node:lts-alpine COPY --from=build /pack/markdownlint-cli2-*.tgz / diff --git a/formatter-template/LICENSE b/formatter-template/LICENSE new file mode 100644 index 00000000..75c778e5 --- /dev/null +++ b/formatter-template/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) David Anson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/formatter-template/README.md b/formatter-template/README.md new file mode 100644 index 00000000..5c341d9b --- /dev/null +++ b/formatter-template/README.md @@ -0,0 +1,92 @@ +# markdownlint-cli2-formatter-template + +> An output formatter for [`markdownlint-cli2`][markdownlint-cli2] that displays +> results using a template. + +[![npm version][npm-image]][npm-url] +[![License][license-image]][license-url] + +## Install + +```bash +npm install markdownlint-cli2-formatter-template --save-dev +``` + +## Use + +This output formatter makes it easy to custom-format linting violations. To +specify an output format, set the `template` parameter to a `string` with text +and one or more tokens representing any of the following elements. The specified +template will be applied once for each violation. + +These tokens are always defined: + +| Token | Meaning | +|-------------------|-----------------------| +| `fileName` | File name | +| `lineNumber` | Line number (1-based) | +| `ruleName` | Rule name (full) | +| `ruleDescription` | Rule description | +| `ruleInformation` | Informational URL | + +These tokens are sometimes defined (depending on the rule/violation): + +| Token | Meaning | +|----------------|-------------------------| +| `columnNumber` | Column number (1-based) | +| `errorContext` | Context information | +| `errorDetail` | Additional detail | + +In the simplest case, tokens are specified with the syntax `${token}`. This is +all that's needed for tokens that are always defined. To support scenarios where +a token may not be defined, the syntaxes `${token:text if present}` and +`${token!text if not present}` are also supported. This allows for templates to +accomodate missing data. Only one level of token nesting is supported. + +A few examples demonstrate the concept: + + + +| Template | Output if defined | Output if not defined | +|--------------------------------------------------------------------------|-------------------|-----------------------| +| `Column=${columnNumber}` | `Column=10` | `Column=` | +| `${columnNumber:Column=${columnNumber}}` | `Column=10` | | +| `${columnNumber!No column number}` | | `No column number` | +| `${columnNumber:Column=${columnNumber}}${columnNumber!No column number}` | `Column=10` | `No column number` | + + + +## Example + +To output in the [Azure Pipelines Task command LogIssue format][task-logissue], +use something like the following `.markdownlint-cli2.jsonc`: + +```json +{ + "outputFormatters": [ + [ + "markdownlint-cli2-formatter-template", + { + "template": "##vso[task.logissue type=error;sourcepath=${fileName};linenumber=${lineNumber};${columnNumber:columnumber=${columnNumber};}code=${ruleName}]${ruleDescription}" + } + ] + ] +} +``` + +Which produces output like: + +```text +##vso[task.logissue type=error;sourcepath=viewme.md;linenumber=3;columnumber=10;code=MD009/no-trailing-spaces]Trailing spaces +##vso[task.logissue type=error;sourcepath=viewme.md;linenumber=5;code=MD012/no-multiple-blanks]Multiple consecutive blank lines +##vso[task.logissue type=error;sourcepath=viewme.md;linenumber=6;code=MD025/single-title/single-h1]Multiple top-level headings in the same document +##vso[task.logissue type=error;sourcepath=viewme.md;linenumber=12;columnumber=4;code=MD019/no-multiple-space-atx]Multiple spaces after hash on atx style heading +##vso[task.logissue type=error;sourcepath=viewme.md;linenumber=14;columnumber=14;code=MD047/single-trailing-newline]Files should end with a single newline character +``` + +[license-image]: https://img.shields.io/npm/l/markdownlint-cli2-formatter-template.svg +[license-url]: https://opensource.org/licenses/MIT +[markdownlint-cli2]: https://github.com/DavidAnson/markdownlint-cli2 +[npm-image]: https://img.shields.io/npm/v/markdownlint-cli2-formatter-template.svg +[npm-url]: https://www.npmjs.com/package/markdownlint-cli2-formatter-template +[task-logissue]: https://learn.microsoft.com/en-us/azure/devops/pipelines/scripts/logging-commands?view=azure-devops&tabs=bash#logissue-log-an-error-or-warning diff --git a/formatter-template/markdownlint-cli2-formatter-template.js b/formatter-template/markdownlint-cli2-formatter-template.js new file mode 100644 index 00000000..012e3a9a --- /dev/null +++ b/formatter-template/markdownlint-cli2-formatter-template.js @@ -0,0 +1,53 @@ +// @ts-check + +"use strict"; + +// eslint-disable-next-line prefer-named-capture-group +const tokenRe = /\$\{([^:!}]+)(?:([:!])([^{}]*\{[^{}]+\}[^{}]*|[^}]+))?\}/igu; + +// Output markdownlint-cli2 results using a template +const outputFormatter = (options, params) => { + const { logError, results } = options; + const template = params?.template || + // eslint-disable-next-line no-template-curly-in-string + "fileName=\"${fileName}\" lineNumber=${lineNumber} ${columnNumber:columnNumber=${columnNumber} }ruleName=${ruleName} ruleDescription=\"${ruleDescription}\" ruleInformation=${ruleInformation} errorContext=\"${errorContext}\" errorDetail=\"${errorDetail}\""; + + for (const result of results) { + const tokenToResult = { + "fileName": result.fileName, + "lineNumber": result.lineNumber, + "columnNumber": result.errorRange?.[0], + "ruleName": result.ruleNames.join("/"), + "ruleDescription": result.ruleDescription, + "ruleInformation": result.ruleInformation, + "errorContext": result.errorContext, + "errorDetail": result.errorDetail + }; + + // eslint-disable-next-line unicorn/consistent-function-scoping + const replacer = (match, token, type, text) => { + const value = tokenToResult[token]; + switch (type) { + case ":": + { + return (value === undefined) ? "" : text; + } + case "!": + { + return (value === undefined) ? text : ""; + } + default: + { + return value ?? ""; + } + } + }; + + const output = template. + replaceAll(tokenRe, replacer). + replaceAll(tokenRe, replacer); + logError(output); + } +}; + +module.exports = outputFormatter; diff --git a/formatter-template/package.json b/formatter-template/package.json new file mode 100644 index 00000000..73be411e --- /dev/null +++ b/formatter-template/package.json @@ -0,0 +1,27 @@ +{ + "name": "markdownlint-cli2-formatter-template", + "version": "0.0.1", + "description": "An output formatter for markdownlint-cli2 that displays results using a template", + "author": { + "name": "David Anson", + "url": "https://dlaa.me/" + }, + "license": "MIT", + "main": "markdownlint-cli2-formatter-template.js", + "homepage": "https://github.com/DavidAnson/markdownlint-cli2", + "repository": { + "type": "git", + "url": "git+https://github.com/DavidAnson/markdownlint-cli2.git" + }, + "bugs": "https://github.com/DavidAnson/markdownlint-cli2/issues", + "funding": "https://github.com/sponsors/DavidAnson", + "files": [ + "markdownlint-cli2-formatter-template.js" + ], + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + }, + "keywords": [ + "markdownlint-cli2-formatter" + ] +} diff --git a/package.json b/package.json index fffd200b..064dd1a6 100644 --- a/package.json +++ b/package.json @@ -103,6 +103,7 @@ "markdownlint-cli2-formatter-pretty": "0.0.7", "markdownlint-cli2-formatter-sarif": "0.0.2", "markdownlint-cli2-formatter-summarize": "0.0.7", + "markdownlint-cli2-formatter-template": "0.0.1", "markdownlint-rule-extended-ascii": "0.1.0", "npm-run-all": "4.1.5" }, diff --git a/test/markdownlint-cli2-test.js b/test/markdownlint-cli2-test.js index 856d5d87..6f61afa2 100644 --- a/test/markdownlint-cli2-test.js +++ b/test/markdownlint-cli2-test.js @@ -56,6 +56,7 @@ test("README files", (t) => { "./formatter-pretty/README.md", "./formatter-sarif/README.md", "./formatter-summarize/README.md", + "./formatter-template/README.md", "./schema/ValidatingConfiguration.md" ]; return markdownlintCli2({ @@ -240,6 +241,7 @@ test("alternate file contents", (t) => { "./formatter-pretty/README.md", "./formatter-sarif/README.md", "./formatter-summarize/README.md", + "./formatter-template/README.md", "./test/all-ok/viewme.md", "./test/no-config/viewme.md", "./test/markdownlint-json/viewme.md", diff --git a/test/outputFormatters-clean/.markdownlint-cli2.jsonc b/test/outputFormatters-clean/.markdownlint-cli2.jsonc index 95fdfe97..356f8bd3 100644 --- a/test/outputFormatters-clean/.markdownlint-cli2.jsonc +++ b/test/outputFormatters-clean/.markdownlint-cli2.jsonc @@ -5,6 +5,7 @@ [ "../../formatter-json" ], [ "../../formatter-junit" ], [ "../../formatter-sarif" ], - [ "../../formatter-summarize" ] + [ "../../formatter-summarize" ], + [ "../../formatter-template" ] ] } diff --git a/test/outputFormatters-npm/.markdownlint-cli2.jsonc b/test/outputFormatters-npm/.markdownlint-cli2.jsonc index 5ab9187f..71dec0dd 100644 --- a/test/outputFormatters-npm/.markdownlint-cli2.jsonc +++ b/test/outputFormatters-npm/.markdownlint-cli2.jsonc @@ -6,6 +6,7 @@ [ "markdownlint-cli2-formatter-junit" ], [ "markdownlint-cli2-formatter-pretty" ], [ "markdownlint-cli2-formatter-sarif" ], - [ "markdownlint-cli2-formatter-summarize", { "byFile": true } ] + [ "markdownlint-cli2-formatter-summarize", { "byFile": true } ], + [ "markdownlint-cli2-formatter-template" ] ] } diff --git a/test/outputFormatters-params/.markdownlint-cli2.jsonc b/test/outputFormatters-params/.markdownlint-cli2.jsonc index 3aa0d785..f25f3a16 100644 --- a/test/outputFormatters-params/.markdownlint-cli2.jsonc +++ b/test/outputFormatters-params/.markdownlint-cli2.jsonc @@ -3,6 +3,8 @@ [ "../../formatter-codequality", { "name": "custom-name-codequality.json" } ], [ "../../formatter-json", { "name": "custom-name-results.json", "spaces": 1 } ], [ "../../formatter-junit", { "name": "custom-name-junit.xml" } ], - [ "../../formatter-sarif", { "name": "custom-name-sarif.sarif" } ] + [ "../../formatter-sarif", { "name": "custom-name-sarif.sarif" } ], + [ "../../formatter-template", { "template": "##vso[task.logissue type=error;sourcepath=${fileName};linenumber=${lineNumber};${columnNumber:columnumber=${columnNumber};}code=${ruleName}]${ruleDescription}" } ], + [ "../../formatter-template", { "template": "#Undefined=${undefined}#Column=${columnNumber}#${columnNumber:Column=${columnNumber}}#${columnNumber!No column number}#${columnNumber:Column=${columnNumber}}${columnNumber!No column number}#" } ] ] } diff --git a/test/outputFormatters/.markdownlint-cli2.jsonc b/test/outputFormatters/.markdownlint-cli2.jsonc index 6cace4cf..a82eb35f 100644 --- a/test/outputFormatters/.markdownlint-cli2.jsonc +++ b/test/outputFormatters/.markdownlint-cli2.jsonc @@ -4,6 +4,7 @@ [ "../../formatter-codequality" ], [ "../../formatter-json" ], [ "../../formatter-junit" ], - [ "../../formatter-sarif" ] + [ "../../formatter-sarif" ], + [ "../../formatter-template" ] ] } diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.md b/test/snapshots/markdownlint-cli2-test-exec.js.md index b3d5aa85..639f0ae4 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.js.md +++ b/test/snapshots/markdownlint-cli2-test-exec.js.md @@ -3779,7 +3779,21 @@ Generated by [AVA](https://avajs.dev). viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ viewme.md:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ - viewme.md:14:14 MD047/single-trailing-newline Files should end with a single newline character`, + viewme.md:14:14 MD047/single-trailing-newline Files should end with a single newline character␊ + fileName="dir/about.md" lineNumber=1 columnNumber=3 ruleName=MD021/no-multiple-space-closed-atx ruleDescription="Multiple spaces inside hashes on closed atx style heading" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md021.md errorContext="# About #" errorDetail=""␊ + fileName="dir/about.md" lineNumber=1 columnNumber=10 ruleName=MD021/no-multiple-space-closed-atx ruleDescription="Multiple spaces inside hashes on closed atx style heading" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md021.md errorContext="# About #" errorDetail=""␊ + fileName="dir/about.md" lineNumber=4 ruleName=MD032/blanks-around-lists ruleDescription="Lists should be surrounded by blank lines" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md032.md errorContext="1. List" errorDetail=""␊ + fileName="dir/about.md" lineNumber=5 columnNumber=1 ruleName=MD029/ol-prefix ruleDescription="Ordered list item prefix" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md029.md errorContext="" errorDetail="Expected: 2; Actual: 3; Style: 1/2/3"␊ + fileName="dir/subdir/info.md" lineNumber=1 ruleName=MD022/blanks-around-headings ruleDescription="Headings should be surrounded by blank lines" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md022.md errorContext="## Information" errorDetail="Expected: 1; Actual: 0; Below"␊ + fileName="dir/subdir/info.md" lineNumber=1 ruleName=MD041/first-line-heading/first-line-h1 ruleDescription="First line in a file should be a top-level heading" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md041.md errorContext="## Information" errorDetail=""␊ + fileName="dir/subdir/info.md" lineNumber=2 columnNumber=6 ruleName=MD038/no-space-in-code ruleDescription="Spaces inside code span elements" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md038.md errorContext="\` code1\`" errorDetail=""␊ + fileName="dir/subdir/info.md" lineNumber=2 columnNumber=20 ruleName=MD038/no-space-in-code ruleDescription="Spaces inside code span elements" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md038.md errorContext="\`code2 \`" errorDetail=""␊ + fileName="dir/subdir/info.md" lineNumber=4 ruleName=MD012/no-multiple-blanks ruleDescription="Multiple consecutive blank lines" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md012.md errorContext="" errorDetail="Expected: 1; Actual: 2"␊ + fileName="viewme.md" lineNumber=3 columnNumber=10 ruleName=MD009/no-trailing-spaces ruleDescription="Trailing spaces" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md009.md errorContext="" errorDetail="Expected: 0 or 2; Actual: 1"␊ + fileName="viewme.md" lineNumber=5 ruleName=MD012/no-multiple-blanks ruleDescription="Multiple consecutive blank lines" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md012.md errorContext="" errorDetail="Expected: 1; Actual: 2"␊ + fileName="viewme.md" lineNumber=6 ruleName=MD025/single-title/single-h1 ruleDescription="Multiple top-level headings in the same document" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md025.md errorContext="Description" errorDetail=""␊ + fileName="viewme.md" lineNumber=12 columnNumber=4 ruleName=MD019/no-multiple-space-atx ruleDescription="Multiple spaces after hash on atx style heading" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md019.md errorContext="## Summary" errorDetail=""␊ + fileName="viewme.md" lineNumber=14 columnNumber=14 ruleName=MD047/single-trailing-newline ruleDescription="Files should end with a single newline character" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md047.md errorContext="" errorDetail=""`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ @@ -4715,6 +4729,20 @@ Generated by [AVA](https://avajs.dev). viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ viewme.md:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ viewme.md:14:14 MD047/single-trailing-newline Files should end with a single newline character␊ + fileName="dir/about.md" lineNumber=1 columnNumber=3 ruleName=MD021/no-multiple-space-closed-atx ruleDescription="Multiple spaces inside hashes on closed atx style heading" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md021.md errorContext="# About #" errorDetail=""␊ + fileName="dir/about.md" lineNumber=1 columnNumber=10 ruleName=MD021/no-multiple-space-closed-atx ruleDescription="Multiple spaces inside hashes on closed atx style heading" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md021.md errorContext="# About #" errorDetail=""␊ + fileName="dir/about.md" lineNumber=4 ruleName=MD032/blanks-around-lists ruleDescription="Lists should be surrounded by blank lines" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md032.md errorContext="1. List" errorDetail=""␊ + fileName="dir/about.md" lineNumber=5 columnNumber=1 ruleName=MD029/ol-prefix ruleDescription="Ordered list item prefix" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md029.md errorContext="" errorDetail="Expected: 2; Actual: 3; Style: 1/2/3"␊ + fileName="dir/subdir/info.md" lineNumber=1 ruleName=MD022/blanks-around-headings ruleDescription="Headings should be surrounded by blank lines" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md022.md errorContext="## Information" errorDetail="Expected: 1; Actual: 0; Below"␊ + fileName="dir/subdir/info.md" lineNumber=1 ruleName=MD041/first-line-heading/first-line-h1 ruleDescription="First line in a file should be a top-level heading" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md041.md errorContext="## Information" errorDetail=""␊ + fileName="dir/subdir/info.md" lineNumber=2 columnNumber=6 ruleName=MD038/no-space-in-code ruleDescription="Spaces inside code span elements" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md038.md errorContext="\` code1\`" errorDetail=""␊ + fileName="dir/subdir/info.md" lineNumber=2 columnNumber=20 ruleName=MD038/no-space-in-code ruleDescription="Spaces inside code span elements" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md038.md errorContext="\`code2 \`" errorDetail=""␊ + fileName="dir/subdir/info.md" lineNumber=4 ruleName=MD012/no-multiple-blanks ruleDescription="Multiple consecutive blank lines" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md012.md errorContext="" errorDetail="Expected: 1; Actual: 2"␊ + fileName="viewme.md" lineNumber=3 columnNumber=10 ruleName=MD009/no-trailing-spaces ruleDescription="Trailing spaces" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md009.md errorContext="" errorDetail="Expected: 0 or 2; Actual: 1"␊ + fileName="viewme.md" lineNumber=5 ruleName=MD012/no-multiple-blanks ruleDescription="Multiple consecutive blank lines" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md012.md errorContext="" errorDetail="Expected: 1; Actual: 2"␊ + fileName="viewme.md" lineNumber=6 ruleName=MD025/single-title/single-h1 ruleDescription="Multiple top-level headings in the same document" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md025.md errorContext="Description" errorDetail=""␊ + fileName="viewme.md" lineNumber=12 columnNumber=4 ruleName=MD019/no-multiple-space-atx ruleDescription="Multiple spaces after hash on atx style heading" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md019.md errorContext="## Summary" errorDetail=""␊ + fileName="viewme.md" lineNumber=14 columnNumber=14 ruleName=MD047/single-trailing-newline ruleDescription="Files should end with a single newline character" ruleInformation=https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md047.md errorContext="" errorDetail=""␊ dir/about.md:1:3 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md021.mdMD021/no-multiple-space-closed-atx]8;; Multiple spaces inside hashes on closed atx style heading [Context: "# About #"]␊ dir/about.md:1:10 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md021.mdMD021/no-multiple-space-closed-atx]8;; Multiple spaces inside hashes on closed atx style heading [Context: "# About #"]␊ dir/about.md:4 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md032.mdMD032/blanks-around-lists]8;; Lists should be surrounded by blank lines [Context: "1. List"]␊ @@ -5101,7 +5129,16 @@ Generated by [AVA](https://avajs.dev). }␊ ]␊ }`, - stderr: '', + stderr: `##vso[task.logissue type=error;sourcepath=viewme.md;linenumber=3;columnumber=10;code=MD009/no-trailing-spaces]Trailing spaces␊ + ##vso[task.logissue type=error;sourcepath=viewme.md;linenumber=5;code=MD012/no-multiple-blanks]Multiple consecutive blank lines␊ + ##vso[task.logissue type=error;sourcepath=viewme.md;linenumber=6;code=MD025/single-title/single-h1]Multiple top-level headings in the same document␊ + ##vso[task.logissue type=error;sourcepath=viewme.md;linenumber=12;columnumber=4;code=MD019/no-multiple-space-atx]Multiple spaces after hash on atx style heading␊ + ##vso[task.logissue type=error;sourcepath=viewme.md;linenumber=14;columnumber=14;code=MD047/single-trailing-newline]Files should end with a single newline character␊ + #Undefined=#Column=10#Column=10##Column=10#␊ + #Undefined=#Column=##No column number#No column number#␊ + #Undefined=#Column=##No column number#No column number#␊ + #Undefined=#Column=4#Column=4##Column=4#␊ + #Undefined=#Column=14#Column=14##Column=14#`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.snap b/test/snapshots/markdownlint-cli2-test-exec.js.snap index fbd7565d905c1349d68948e8b6938943d2bc1b43..1eb224b036766ceee8707d6c2749762679ba2268 100644 GIT binary patch literal 18391 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
  • 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 K65$Of(EkB8G$qLZ