From 02e57f2ffac74c0895b95d8dbd904f0ff50fea53 Mon Sep 17 00:00:00 2001 From: David Anson Date: Fri, 6 Sep 2024 22:50:19 -0700 Subject: [PATCH 01/55] Add CI job to run Playwright tests of main browser families against webworker QUnit test page. --- .github/workflows/ci.yml | 16 +++++++++++----- package.json | 5 +++++ webworker/playwright.config.mjs | 28 ++++++++++++++++++++++++++++ webworker/playwright.shared.mjs | 5 +++++ webworker/playwright.spec.mjs | 17 +++++++++++++++++ 5 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 webworker/playwright.config.mjs create mode 100644 webworker/playwright.shared.mjs create mode 100644 webworker/playwright.spec.mjs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 467e08e7..80721f55 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,14 +29,20 @@ jobs: run: npm install --no-package-lock - name: Run All Validations run: npm run ci - - name: Install Dependencies for Web Worker - run: npm run webworker-install - - name: Run Webpack for Web Worker - run: npm run webworker - install-global: + run-tests-webworker: runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + - run: npm install --no-package-lock + - run: npm run webworker-install + - run: npm run webworker + - run: npm run playwright-install-bare + - run: npm run playwright-test-docker + install-global: + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Package markdownlint-cli2 diff --git a/package.json b/package.json index 6fba34aa..3caf9cfc 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,10 @@ "lint": "eslint --max-warnings 0", "lint-dockerfile": "docker run --rm -i hadolint/hadolint:latest-alpine < docker/Dockerfile", "lint-watch": "git ls-files | entr npm run lint", + "playwright-install-bare": "npm run playwright-install-npm && playwright install", + "playwright-install-npm": "npm install --no-save playwright@1.46.1", + "playwright-test": "playwright test --config ./webworker/playwright.config.mjs", + "playwright-test-docker": "docker run --rm --volume $PWD:/home/workdir --workdir /home/workdir --ipc=host mcr.microsoft.com/playwright:latest npm run playwright-test", "schema": "cpy ./node_modules/markdownlint/schema/markdownlint-config-schema.json ./schema --flat", "test": "ava --timeout=1m test/append-to-array-test.js test/fs-mock-test.js test/fs-virtual-test.js test/markdownlint-cli2-test.js test/markdownlint-cli2-test-exec.js test/markdownlint-cli2-test-exports.js test/markdownlint-cli2-test-fs.js test/markdownlint-cli2-test-main.js test/merge-options-test.js test/resolve-and-require-test.js", "test-cover": "c8 --100 npm test", @@ -78,6 +82,7 @@ "devDependencies": { "@eslint/js": "9.9.1", "@iktakahiro/markdown-it-katex": "4.0.1", + "@playwright/test": "1.46.1", "@stylistic/eslint-plugin": "2.7.2", "ajv": "8.17.1", "ava": "6.1.3", diff --git a/webworker/playwright.config.mjs b/webworker/playwright.config.mjs new file mode 100644 index 00000000..00c2e5eb --- /dev/null +++ b/webworker/playwright.config.mjs @@ -0,0 +1,28 @@ +// @ts-check + +import { defineConfig, devices } from "@playwright/test"; +import { testPort, testUrl } from "./playwright.shared.mjs"; + +export default defineConfig({ + "testDir": ".", + "projects": [ + { + "name": "Pixel 7 (chromium)", + "use": { ...devices["Pixel 7"] } + }, + { + "name": "Desktop Firefox (firefox)", + "use": { ...devices["Desktop Firefox"] } + }, + { + "name": "iPhone 13 (webkit)", + "use": { ...devices["iPhone 13"] } + } + ], + "webServer": [ + { + "command": `npm exec --yes -- serve --listen ${testPort}`, + "url": testUrl + } + ] +}); diff --git a/webworker/playwright.shared.mjs b/webworker/playwright.shared.mjs new file mode 100644 index 00000000..2583a238 --- /dev/null +++ b/webworker/playwright.shared.mjs @@ -0,0 +1,5 @@ +// @ts-check + +const domain = "localhost"; +export const testPort = 3000; +export const testUrl = `http://${domain}:${testPort}/`; diff --git a/webworker/playwright.spec.mjs b/webworker/playwright.spec.mjs new file mode 100644 index 00000000..4758256e --- /dev/null +++ b/webworker/playwright.spec.mjs @@ -0,0 +1,17 @@ +// @ts-check + +import { expect, test } from "@playwright/test"; +import { testUrl } from "./playwright.shared.mjs"; + +const bannerId = "qunit-banner"; +const failClass = "qunit-fail"; +const passClass = "qunit-pass"; +const failSelector = `#${bannerId}.${failClass}`; +const passSelector = `#${bannerId}.${passClass}`; + +test("Test site QUnit", async ({ page }) => { + await page.goto(testUrl); + const bannerLocator = page.locator(`${passSelector}, ${failSelector}`); + await bannerLocator.waitFor(); + await expect(bannerLocator).toHaveClass(passClass, { "timeout": 1 }); +}); From 948a032007425a1ac141c3a54ee8f17d9067eada Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 15:26:51 +0000 Subject: [PATCH 02/55] Bump eslint from 9.9.1 to 9.10.0 Bumps [eslint](https://github.com/eslint/eslint) from 9.9.1 to 9.10.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v9.9.1...v9.10.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3caf9cfc..e215445a 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "cpy": "11.1.0", "cpy-cli": "5.0.0", "del": "7.1.0", - "eslint": "9.9.1", + "eslint": "9.10.0", "eslint-plugin-jsdoc": "50.2.2", "eslint-plugin-n": "17.10.2", "eslint-plugin-unicorn": "55.0.0", From a2a1eb2185d63fa9384b0a8d78dc9555dcb8a9de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 15:27:20 +0000 Subject: [PATCH 03/55] Bump @eslint/js from 9.9.1 to 9.10.0 Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.9.1 to 9.10.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/commits/v9.10.0/packages/js) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e215445a..3360e968 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "micromatch": "4.0.8" }, "devDependencies": { - "@eslint/js": "9.9.1", + "@eslint/js": "9.10.0", "@iktakahiro/markdown-it-katex": "4.0.1", "@playwright/test": "1.46.1", "@stylistic/eslint-plugin": "2.7.2", From f44f955f98e60f17f328fe45214f7d73463bcb29 Mon Sep 17 00:00:00 2001 From: David Anson Date: Mon, 9 Sep 2024 22:26:43 -0700 Subject: [PATCH 04/55] Bind all Playwright versions to 1.47.0 to prevent failures because that project's Docker "latest" tag has not been updated. --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 3360e968..e532c841 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,9 @@ "lint-dockerfile": "docker run --rm -i hadolint/hadolint:latest-alpine < docker/Dockerfile", "lint-watch": "git ls-files | entr npm run lint", "playwright-install-bare": "npm run playwright-install-npm && playwright install", - "playwright-install-npm": "npm install --no-save playwright@1.46.1", + "playwright-install-npm": "npm install --no-save playwright@1.47.0", "playwright-test": "playwright test --config ./webworker/playwright.config.mjs", - "playwright-test-docker": "docker run --rm --volume $PWD:/home/workdir --workdir /home/workdir --ipc=host mcr.microsoft.com/playwright:latest npm run playwright-test", + "playwright-test-docker": "docker run --rm --volume $PWD:/home/workdir --workdir /home/workdir --ipc=host mcr.microsoft.com/playwright:v1.47.0 npm run playwright-test", "schema": "cpy ./node_modules/markdownlint/schema/markdownlint-config-schema.json ./schema --flat", "test": "ava --timeout=1m test/append-to-array-test.js test/fs-mock-test.js test/fs-virtual-test.js test/markdownlint-cli2-test.js test/markdownlint-cli2-test-exec.js test/markdownlint-cli2-test-exports.js test/markdownlint-cli2-test-fs.js test/markdownlint-cli2-test-main.js test/merge-options-test.js test/resolve-and-require-test.js", "test-cover": "c8 --100 npm test", @@ -82,7 +82,7 @@ "devDependencies": { "@eslint/js": "9.10.0", "@iktakahiro/markdown-it-katex": "4.0.1", - "@playwright/test": "1.46.1", + "@playwright/test": "1.47.0", "@stylistic/eslint-plugin": "2.7.2", "ajv": "8.17.1", "ava": "6.1.3", From 83d8104b037d2276bb7c955a5b8532ff44b6eed7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 10 Sep 2024 15:09:59 +0000 Subject: [PATCH 05/55] Bump @stylistic/eslint-plugin from 2.7.2 to 2.8.0 Bumps [@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin) from 2.7.2 to 2.8.0. - [Release notes](https://github.com/eslint-stylistic/eslint-stylistic/releases) - [Changelog](https://github.com/eslint-stylistic/eslint-stylistic/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint-stylistic/eslint-stylistic/commits/v2.8.0/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@stylistic/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e532c841..74d079ac 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,7 @@ "@eslint/js": "9.10.0", "@iktakahiro/markdown-it-katex": "4.0.1", "@playwright/test": "1.47.0", - "@stylistic/eslint-plugin": "2.7.2", + "@stylistic/eslint-plugin": "2.8.0", "ajv": "8.17.1", "ava": "6.1.3", "c8": "10.1.2", From 35bc4ce5fe611d76a1c7c8b560cc9816e578ff25 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 13 Sep 2024 15:29:21 +0000 Subject: [PATCH 06/55] Bump eslint-plugin-jsdoc from 50.2.2 to 50.2.3 Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.2.2 to 50.2.3. - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Changelog](https://github.com/gajus/eslint-plugin-jsdoc/blob/main/.releaserc) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.2.2...v50.2.3) --- updated-dependencies: - dependency-name: eslint-plugin-jsdoc dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 74d079ac..a3f78410 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "cpy-cli": "5.0.0", "del": "7.1.0", "eslint": "9.10.0", - "eslint-plugin-jsdoc": "50.2.2", + "eslint-plugin-jsdoc": "50.2.3", "eslint-plugin-n": "17.10.2", "eslint-plugin-unicorn": "55.0.0", "execa": "9.3.1", From 861a7b3980014d66bff07143c9e0032a06fcab1d Mon Sep 17 00:00:00 2001 From: David Anson Date: Mon, 16 Sep 2024 20:53:26 -0700 Subject: [PATCH 07/55] Update dependency: @playwright/test to 1.47.1. --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index a3f78410..3f42ae99 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,9 @@ "lint-dockerfile": "docker run --rm -i hadolint/hadolint:latest-alpine < docker/Dockerfile", "lint-watch": "git ls-files | entr npm run lint", "playwright-install-bare": "npm run playwright-install-npm && playwright install", - "playwright-install-npm": "npm install --no-save playwright@1.47.0", + "playwright-install-npm": "npm install --no-save playwright@1.47.1", "playwright-test": "playwright test --config ./webworker/playwright.config.mjs", - "playwright-test-docker": "docker run --rm --volume $PWD:/home/workdir --workdir /home/workdir --ipc=host mcr.microsoft.com/playwright:v1.47.0 npm run playwright-test", + "playwright-test-docker": "docker run --rm --volume $PWD:/home/workdir --workdir /home/workdir --ipc=host mcr.microsoft.com/playwright:v1.47.1 npm run playwright-test", "schema": "cpy ./node_modules/markdownlint/schema/markdownlint-config-schema.json ./schema --flat", "test": "ava --timeout=1m test/append-to-array-test.js test/fs-mock-test.js test/fs-virtual-test.js test/markdownlint-cli2-test.js test/markdownlint-cli2-test-exec.js test/markdownlint-cli2-test-exports.js test/markdownlint-cli2-test-fs.js test/markdownlint-cli2-test-main.js test/merge-options-test.js test/resolve-and-require-test.js", "test-cover": "c8 --100 npm test", @@ -82,7 +82,7 @@ "devDependencies": { "@eslint/js": "9.10.0", "@iktakahiro/markdown-it-katex": "4.0.1", - "@playwright/test": "1.47.0", + "@playwright/test": "1.47.1", "@stylistic/eslint-plugin": "2.8.0", "ajv": "8.17.1", "ava": "6.1.3", From 4099caf0abf3fff4e00a69bf912b91f88cfd1b54 Mon Sep 17 00:00:00 2001 From: David Anson Date: Tue, 17 Sep 2024 20:07:01 -0700 Subject: [PATCH 08/55] Replace dev dependency execa with nano-spawn (smaller, 0 dependencies). --- package.json | 2 +- test/markdownlint-cli2-test-exec.js | 22 +- .../markdownlint-cli2-test-exec.js.md | 762 ++++++------------ .../markdownlint-cli2-test-exec.js.snap | Bin 14619 -> 14626 bytes 4 files changed, 269 insertions(+), 517 deletions(-) diff --git a/package.json b/package.json index 3f42ae99..d8703b31 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "eslint-plugin-jsdoc": "50.2.3", "eslint-plugin-n": "17.10.2", "eslint-plugin-unicorn": "55.0.0", - "execa": "9.3.1", + "nano-spawn": "0.1.0", "markdown-it-emoji": "3.0.0", "markdown-it-for-inline": "2.0.1", "markdownlint-cli2-formatter-codequality": "0.0.5", diff --git a/test/markdownlint-cli2-test-exec.js b/test/markdownlint-cli2-test-exec.js index 01520f23..95c1573d 100644 --- a/test/markdownlint-cli2-test-exec.js +++ b/test/markdownlint-cli2-test-exec.js @@ -8,17 +8,23 @@ const testCases = require("./markdownlint-cli2-test-cases"); const invoke = (directory, args, noRequire, env, script) => async () => { await fs.access(directory); - const { execaNode } = await import("execa"); - return execaNode( - path.join(__dirname, "..", script || "markdownlint-cli2.js"), - args, + const { "default": spawn } = await import("nano-spawn"); + return spawn( + "node", + [ + path.join(__dirname, "..", script || "markdownlint-cli2.js"), + ...args + ], { "cwd": directory, - "env": env || {}, - "reject": false, - "stripFinalNewline": false + "env": env || {} } - ); + ). + then((subprocess) => ({ + ...subprocess, + "exitCode": 0 + })). + catch((error) => error); }; const absolute = (rootDir, file) => path.join(rootDir, file); diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.md b/test/snapshots/markdownlint-cli2-test-exec.js.md index d5747bd1..b3d5aa85 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.js.md +++ b/test/snapshots/markdownlint-cli2-test-exec.js.md @@ -57,8 +57,7 @@ Generated by [AVA](https://avajs.dev). - On any platform, passing the parameter "--" causes all remaining parameters to be treated literally␊ ␊ The most compatible syntax for cross-platform support:␊ - $ markdownlint-cli2 "**/*.md" "#node_modules"␊ - `, + $ markdownlint-cli2 "**/*.md" "#node_modules"`, } ## no-arguments-config-arg (exec) @@ -114,8 +113,7 @@ Generated by [AVA](https://avajs.dev). - On any platform, passing the parameter "--" causes all remaining parameters to be treated literally␊ ␊ The most compatible syntax for cross-platform support:␊ - $ markdownlint-cli2 "**/*.md" "#node_modules"␊ - `, + $ markdownlint-cli2 "**/*.md" "#node_modules"`, } ## missing-argument-config-arg (exec) @@ -171,8 +169,7 @@ Generated by [AVA](https://avajs.dev). - On any platform, passing the parameter "--" causes all remaining parameters to be treated literally␊ ␊ The most compatible syntax for cross-platform support:␊ - $ markdownlint-cli2 "**/*.md" "#node_modules"␊ - `, + $ markdownlint-cli2 "**/*.md" "#node_modules"`, } ## one-argument-config-arg (exec) @@ -228,8 +225,7 @@ Generated by [AVA](https://avajs.dev). - On any platform, passing the parameter "--" causes all remaining parameters to be treated literally␊ ␊ The most compatible syntax for cross-platform support:␊ - $ markdownlint-cli2 "**/*.md" "#node_modules"␊ - `, + $ markdownlint-cli2 "**/*.md" "#node_modules"`, } ## no-files (exec) @@ -246,8 +242,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: nothing-matches␊ Linting: 0 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## no-files-exclamation (exec) @@ -264,8 +259,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: !␊ Linting: 0 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## no-files-octothorpe (exec) @@ -282,8 +276,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: !␊ Linting: 0 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## all-ok (exec) @@ -300,8 +293,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md **/*.markdown␊ Linting: 5 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## no-config (exec) @@ -332,13 +324,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **␊ Linting: 4 file(s)␊ - Summary: 19 error(s)␊ - `, + Summary: 19 error(s)`, } ## no-config-ignore (exec) @@ -355,13 +345,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: ** !dir␊ Linting: 1 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## no-config-unignore (exec) @@ -383,13 +371,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: ** !dir dir/subdir␊ Linting: 2 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## no-config-ignore-hash (exec) @@ -406,13 +392,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: ** !dir␊ Linting: 1 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## file-paths-as-args (exec) @@ -434,13 +418,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md ./dir/subdir/info.md␊ Linting: 2 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## dot (exec) @@ -462,13 +444,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: *.{md,markdown}␊ Linting: 2 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## dotfiles (exec) @@ -546,13 +526,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **␊ Linting: 14 file(s)␊ - Summary: 66 error(s)␊ - `, + Summary: 66 error(s)`, } ## dotfiles-exclude (exec) @@ -592,13 +570,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: ** !.dir !**/.info.md␊ Linting: 6 file(s)␊ - Summary: 28 error(s)␊ - `, + Summary: 28 error(s)`, } ## globs (exec) @@ -620,13 +596,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md !dir/about.md **/*.markdown␊ Linting: 2 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## globs-and-args (exec) @@ -652,13 +626,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.markdown **/*.md␊ Linting: 3 file(s)␊ - Summary: 14 error(s)␊ - `, + Summary: 14 error(s)`, } ## no-globs-and-args (exec) @@ -679,13 +651,11 @@ Generated by [AVA](https://avajs.dev). dir/subdir/info.markdown:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ dir/subdir/info.markdown:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ dir/subdir/info.markdown:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ - dir/subdir/info.markdown:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ - `, + dir/subdir/info.markdown:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: dir/about.md dir/**/*.markdown␊ Linting: 2 file(s)␊ - Summary: 9 error(s)␊ - `, + Summary: 9 error(s)`, } ## no-globs-and-empty-args (exec) @@ -741,8 +711,7 @@ Generated by [AVA](https://avajs.dev). - On any platform, passing the parameter "--" causes all remaining parameters to be treated literally␊ ␊ The most compatible syntax for cross-platform support:␊ - $ markdownlint-cli2 "**/*.md" "#node_modules"␊ - `, + $ markdownlint-cli2 "**/*.md" "#node_modules"`, } ## globs-and-ignores (exec) @@ -764,13 +733,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md **/*.markdown !dir/about.md␊ Linting: 2 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## markdownlint-json (exec) @@ -793,13 +760,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 11 error(s)␊ - `, + Summary: 11 error(s)`, } ## markdownlint-json-extends (exec) @@ -822,13 +787,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 11 error(s)␊ - `, + Summary: 11 error(s)`, } ## markdownlint-jsonc (exec) @@ -844,13 +807,11 @@ Generated by [AVA](https://avajs.dev). stderr: `viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 4 error(s)␊ - `, + Summary: 4 error(s)`, } ## markdownlint-yaml (exec) @@ -873,13 +834,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 11 error(s)␊ - `, + Summary: 11 error(s)`, } ## markdownlint-yml (exec) @@ -895,13 +854,11 @@ Generated by [AVA](https://avajs.dev). stderr: `viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 4 error(s)␊ - `, + Summary: 4 error(s)`, } ## markdownlint-cjs (exec) @@ -924,13 +881,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 11 error(s)␊ - `, + Summary: 11 error(s)`, } ## markdownlint-mjs (exec) @@ -953,13 +908,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 11 error(s)␊ - `, + Summary: 11 error(s)`, } ## markdownlint-json-yaml (exec) @@ -975,13 +928,11 @@ Generated by [AVA](https://avajs.dev). stderr: `viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 4 error(s)␊ - `, + Summary: 4 error(s)`, } ## markdownlint-json-invalid (exec) @@ -994,8 +945,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-yaml-invalid (exec) @@ -1008,8 +958,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-cjs-invalid (exec) @@ -1022,8 +971,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-mjs-invalid (exec) @@ -1036,8 +984,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-json-mismatch (exec) @@ -1054,8 +1001,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md␊ Linting: 1 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## markdownlint-yaml-mismatch (exec) @@ -1072,8 +1018,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md␊ Linting: 1 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## markdownlint-cli2-jsonc-mismatch (exec) @@ -1086,8 +1031,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-cli2-yaml-mismatch (exec) @@ -1100,8 +1044,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-json-mismatch-config (exec) @@ -1118,8 +1061,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md␊ Linting: 1 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## markdownlint-yaml-mismatch-config (exec) @@ -1136,8 +1078,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md␊ Linting: 1 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## markdownlint-cli2-jsonc-mismatch-config (exec) @@ -1150,8 +1091,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-cli2-yaml-mismatch-config (exec) @@ -1164,8 +1104,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-cli2-jsonc (exec) @@ -1187,13 +1126,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## markdownlint-cli2-jsonc-example (exec) @@ -1207,8 +1144,7 @@ Generated by [AVA](https://avajs.dev). formatterJunit: '', formatterSarif: '', stderr: `extended-ascii.md:1:9 extended-ascii Only extended ASCII characters are allowed [Blocked character: '✅']␊ - viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ - `, + viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: '', } @@ -1222,8 +1158,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-cli2-yaml (exec) @@ -1245,13 +1180,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## markdownlint-cli2-yaml-example (exec) @@ -1265,8 +1198,7 @@ Generated by [AVA](https://avajs.dev). formatterJunit: '', formatterSarif: '', stderr: `extended-ascii.md:1:9 extended-ascii Only extended ASCII characters are allowed [Blocked character: '✅']␊ - viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ - `, + viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: '', } @@ -1280,8 +1212,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-cli2-cjs (exec) @@ -1303,13 +1234,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## markdownlint-cli2-mjs (exec) @@ -1331,13 +1260,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## markdownlint-cli2-cjs-invalid (exec) @@ -1350,8 +1277,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-cli2-mjs-invalid (exec) @@ -1364,8 +1290,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## markdownlint-cli2-extends (exec) @@ -1385,13 +1310,11 @@ Generated by [AVA](https://avajs.dev). package/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ package/viewme.md:14:14 MD047/single-trailing-newline Files should end with a single newline character␊ yaml/viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ - yaml/viewme.md:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ - `, + yaml/viewme.md:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 4 file(s)␊ - Summary: 8 error(s)␊ - `, + Summary: 8 error(s)`, } ## config-option-extends (exec) @@ -1408,8 +1331,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md␊ Linting: 1 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## config-overrides-options (exec) @@ -1424,13 +1346,11 @@ Generated by [AVA](https://avajs.dev). formatterSarif: '', stderr: `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: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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md␊ Linting: 1 file(s)␊ - Summary: 3 error(s)␊ - `, + Summary: 3 error(s)`, } ## ignores (exec) @@ -1465,13 +1385,11 @@ Generated by [AVA](https://avajs.dev). dir4/subdir/info.markdown:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ dir4/subdir/info.markdown:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ dir4/subdir/info.markdown:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ - dir4/subdir/info.markdown:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ - `, + dir4/subdir/info.markdown:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md **/*.markdown !*.md !dir*/*/*.md !dir7 !dir8/subdir␊ Linting: 13 file(s)␊ - Summary: 23 error(s)␊ - `, + Summary: 23 error(s)`, } ## sibling-directory (exec) @@ -1494,13 +1412,11 @@ Generated by [AVA](https://avajs.dev). ../markdownlint-json/viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ ../markdownlint-json/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ ../markdownlint-json/viewme.md:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ - ../markdownlint-json/viewme.md:14:14 MD047/single-trailing-newline Files should end with a single newline character␊ - `, + ../markdownlint-json/viewme.md:14:14 MD047/single-trailing-newline Files should end with a single newline character`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: ../markdownlint-json/**/*.md␊ Linting: 3 file(s)␊ - Summary: 11 error(s)␊ - `, + Summary: 11 error(s)`, } ## sibling-directory-options (exec) @@ -1522,13 +1438,11 @@ Generated by [AVA](https://avajs.dev). ../no-config/viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ ../no-config/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ ../no-config/viewme.md:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ - ../no-config/viewme.md:14:14 MD047/single-trailing-newline Files should end with a single newline character␊ - `, + ../no-config/viewme.md:14:14 MD047/single-trailing-newline Files should end with a single newline character`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: ../no-config/**/*.md␊ Linting: 3 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## noInlineConfig (exec) @@ -1551,13 +1465,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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:16:14 MD047/single-trailing-newline Files should end with a single newline character␊ - `, + viewme.md:16:14 MD047/single-trailing-newline Files should end with a single newline character`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 4 file(s)␊ - Summary: 11 error(s)␊ - `, + Summary: 11 error(s)`, } ## showFound (exec) @@ -1576,8 +1488,7 @@ Generated by [AVA](https://avajs.dev). dir/subdir2/info.md:1 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Found:␊ @@ -1586,8 +1497,7 @@ Generated by [AVA](https://avajs.dev). dir/subdir2/info.md␊ viewme.md␊ Linting: 4 file(s)␊ - Summary: 7 error(s)␊ - `, + Summary: 7 error(s)`, } ## frontMatter (exec) @@ -1604,8 +1514,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## gitignore (exec) @@ -1626,13 +1535,11 @@ Generated by [AVA](https://avajs.dev). dir/UPPER.MD:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ dir/UPPER.MD:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir/UPPER.MD:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ - dir/UPPER.MD:14:14 MD047/single-trailing-newline Files should end with a single newline character␊ - `, + dir/UPPER.MD:14:14 MD047/single-trailing-newline Files should end with a single newline character`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.{md,MD}␊ Linting: 2 file(s)␊ - Summary: 9 error(s)␊ - `, + Summary: 9 error(s)`, } ## gitignore-root-only (exec) @@ -1658,13 +1565,11 @@ Generated by [AVA](https://avajs.dev). dir/UPPER.MD:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ dir/UPPER.MD:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir/UPPER.MD:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ - dir/UPPER.MD:14:14 MD047/single-trailing-newline Files should end with a single newline character␊ - `, + dir/UPPER.MD:14:14 MD047/single-trailing-newline Files should end with a single newline character`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.{md,MD}␊ Linting: 3 file(s)␊ - Summary: 14 error(s)␊ - `, + Summary: 14 error(s)`, } ## literal-files (exec) @@ -1696,13 +1601,11 @@ Generated by [AVA](https://avajs.dev). view(me).md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ view(me).md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ view(me).md:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ - view(me).md:14:14 MD047/single-trailing-newline Files should end with a single newline character␊ - `, + view(me).md:14:14 MD047/single-trailing-newline Files should end with a single newline character`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: :view(me).md :dir/view(me).md :dir(1)/viewme.md :dir(1)/(view)me.md␊ Linting: 4 file(s)␊ - Summary: 20 error(s)␊ - `, + Summary: 20 error(s)`, } ## literal-files-absolute (exec) @@ -1724,13 +1627,11 @@ Generated by [AVA](https://avajs.dev). sentinel/dir/view(me).md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ sentinel/dir/view(me).md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ sentinel/dir/view(me).md:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ - sentinel/dir/view(me).md:14:14 MD047/single-trailing-newline Files should end with a single newline character␊ - `, + sentinel/dir/view(me).md:14:14 MD047/single-trailing-newline Files should end with a single newline character`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: :[PATH]/dir(1)/(view)me.md sentinel/dir␊ Linting: 2 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## fix (exec) @@ -1750,13 +1651,11 @@ Generated by [AVA](https://avajs.dev). dir/subdir2/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ dir/subdir2/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ dir/subdir2/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ - viewme.md:5 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ - `, + viewme.md:5 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 4 file(s)␊ - Summary: 8 error(s)␊ - `, + Summary: 8 error(s)`, } ## fix-scenarios (exec) @@ -1774,13 +1673,11 @@ Generated by [AVA](https://avajs.dev). no-fixable-issues.md:9 MD036/no-emphasis-as-heading Emphasis used instead of a heading [Context: "Emphasis as heading"]␊ some-fixable-issues.md:3:13 MD033/no-inline-html Inline HTML [Element: br]␊ some-fixable-issues.md:7 MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "\`\`\`"]␊ - some-fixable-issues.md:13 MD036/no-emphasis-as-heading Emphasis used instead of a heading [Context: "Emphasis as heading"]␊ - `, + some-fixable-issues.md:13 MD036/no-emphasis-as-heading Emphasis used instead of a heading [Context: "Emphasis as heading"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 4 file(s)␊ - Summary: 6 error(s)␊ - `, + Summary: 6 error(s)`, } ## fix-default-true-arg (exec) @@ -1811,13 +1708,11 @@ Generated by [AVA](https://avajs.dev). dir3/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ dir3/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ dir3/subdir/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ - viewme.md:5 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ - `, + viewme.md:5 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 7 file(s)␊ - Summary: 19 error(s)␊ - `, + Summary: 19 error(s)`, } ## fix-default-true-override-arg (exec) @@ -1834,13 +1729,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.jsonc-arg (exec) @@ -1857,13 +1750,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.jsonc-alternate-arg (exec) @@ -1880,13 +1771,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.jsonc-absolute-arg (exec) @@ -1903,13 +1792,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.yaml-arg (exec) @@ -1926,13 +1813,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.yaml-alternate-arg (exec) @@ -1949,13 +1834,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.yaml-absolute-arg (exec) @@ -1972,13 +1855,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.cjs-arg (exec) @@ -1995,13 +1876,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.cjs-alternate-arg (exec) @@ -2018,13 +1897,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.cjs-absolute-arg (exec) @@ -2041,13 +1918,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.mjs-arg (exec) @@ -2064,13 +1939,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.mjs-alternate-arg (exec) @@ -2087,13 +1960,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint-cli2.mjs-absolute-arg (exec) @@ -2110,13 +1981,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.jsonc-arg (exec) @@ -2133,13 +2002,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.jsonc-alternate-arg (exec) @@ -2156,13 +2023,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.jsonc-absolute-arg (exec) @@ -2179,13 +2044,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.json-arg (exec) @@ -2202,13 +2065,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.json-alternate-arg (exec) @@ -2225,13 +2086,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.json-absolute-arg (exec) @@ -2248,13 +2107,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.yaml-arg (exec) @@ -2271,13 +2128,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.yaml-alternate-arg (exec) @@ -2294,13 +2149,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.yaml-absolute-arg (exec) @@ -2317,13 +2170,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.yml-arg (exec) @@ -2340,13 +2191,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.yml-alternate-arg (exec) @@ -2363,13 +2212,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.yml-absolute-arg (exec) @@ -2386,13 +2233,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.cjs-arg (exec) @@ -2409,13 +2254,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.cjs-alternate-arg (exec) @@ -2432,13 +2275,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.cjs-absolute-arg (exec) @@ -2455,13 +2296,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.mjs-arg (exec) @@ -2478,13 +2317,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.mjs-alternate-arg (exec) @@ -2501,13 +2338,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-.markdownlint.mjs-absolute-arg (exec) @@ -2524,13 +2359,11 @@ Generated by [AVA](https://avajs.dev). dir1/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ dir2/viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## config-files-invalid.markdownlint-cli2.jsonc-invalid-arg (exec) @@ -2543,8 +2376,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## config-files-invalid.markdownlint-cli2.cjs-invalid-arg (exec) @@ -2557,8 +2389,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## config-files-invalid.markdownlint-cli2.mjs-invalid-arg (exec) @@ -2571,8 +2402,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## config-files-invalid.markdownlint.json-invalid-arg (exec) @@ -2585,8 +2415,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## config-files-invalid.markdownlint.yaml-invalid-arg (exec) @@ -2599,8 +2428,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## config-files-invalid.markdownlint.cjs-invalid-arg (exec) @@ -2613,8 +2441,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## config-files-invalid.markdownlint.mjs-invalid-arg (exec) @@ -2627,8 +2454,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## config-files-.markdownlint-cli2.jsonc-redundant-arg (exec) @@ -2644,13 +2470,11 @@ Generated by [AVA](https://avajs.dev). stderr: `viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: *.md␊ Linting: 1 file(s)␊ - Summary: 4 error(s)␊ - `, + Summary: 4 error(s)`, } ## config-files-.markdownlint.json-redundant-arg (exec) @@ -2666,13 +2490,11 @@ Generated by [AVA](https://avajs.dev). stderr: `viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: *.md␊ Linting: 1 file(s)␊ - Summary: 4 error(s)␊ - `, + Summary: 4 error(s)`, } ## config-files-.markdownlint.cjs-redundant-arg (exec) @@ -2688,13 +2510,11 @@ Generated by [AVA](https://avajs.dev). stderr: `viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: *.md␊ Linting: 1 file(s)␊ - Summary: 4 error(s)␊ - `, + Summary: 4 error(s)`, } ## config-file-unrecognized-arg (exec) @@ -2707,8 +2527,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## config-relative-commonjs-arg (exec) @@ -2727,13 +2546,11 @@ Generated by [AVA](https://avajs.dev). viewme.md 3 MD009/no-trailing-spaces␊ viewme.md 5 MD012/no-multiple-blanks␊ viewme.md 12 MD019/no-multiple-space-atx␊ - viewme.md 14 MD047/single-trailing-newline␊ - `, + viewme.md 14 MD047/single-trailing-newline`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md link.md␊ Linting: 2 file(s)␊ - Summary: 7 error(s)␊ - `, + Summary: 7 error(s)`, } ## config-relative-module-arg (exec) @@ -2752,13 +2569,11 @@ Generated by [AVA](https://avajs.dev). viewme.md 3 MD009/no-trailing-spaces␊ viewme.md 5 MD012/no-multiple-blanks␊ viewme.md 12 MD019/no-multiple-space-atx␊ - viewme.md 14 MD047/single-trailing-newline␊ - `, + viewme.md 14 MD047/single-trailing-newline`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md link.md␊ Linting: 2 file(s)␊ - Summary: 7 error(s)␊ - `, + Summary: 7 error(s)`, } ## config-with-fix-arg (exec) @@ -2775,8 +2590,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md info.md␊ Linting: 2 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## package-json (exec) @@ -2798,13 +2612,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## package-json-fix (exec) @@ -2818,13 +2630,11 @@ Generated by [AVA](https://avajs.dev). formatterJunit: '', formatterSarif: '', stderr: `dir/about.md:5:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ - viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ - `, + viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 2 error(s)␊ - `, + Summary: 2 error(s)`, } ## package-json-invalid (exec) @@ -2837,8 +2647,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', formatterSarif: '', - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: 'markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)', } ## package-json-nested (exec) @@ -2860,13 +2669,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 10 error(s)␊ - `, + Summary: 10 error(s)`, } ## customRules (exec) @@ -2922,13 +2729,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 9 file(s)␊ - Summary: 44 error(s)␊ - `, + Summary: 44 error(s)`, } ## customRules-pre-imported (exec) @@ -2946,13 +2751,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 6 error(s)␊ - `, + Summary: 6 error(s)`, } ## customRules-missing (exec) @@ -2966,8 +2769,7 @@ Generated by [AVA](https://avajs.dev). formatterJunit: '', formatterSarif: '', stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - Finding: .*␊ - `, + Finding: .*`, } ## customRules-invalid (exec) @@ -2982,8 +2784,7 @@ Generated by [AVA](https://avajs.dev). formatterSarif: '', stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: .*␊ - Linting: 1 file(s)␊ - `, + Linting: 1 file(s)`, } ## customRules-throws (exec) @@ -3001,13 +2802,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 6 error(s)␊ - `, + Summary: 6 error(s)`, } ## markdownItPlugins (exec) @@ -3031,13 +2830,11 @@ Generated by [AVA](https://avajs.dev). multiple/emoji.md:15 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ pre-imported/link.md:3:7 MD039/no-space-in-links Spaces inside link text [Context: "[ link ]"]␊ pre-imported/link.md:3:12 MD039/no-space-in-links Spaces inside link text [Context: "[ link ]"]␊ - single/emoji.md:15 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ - `, + single/emoji.md:15 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 6 file(s)␊ - Summary: 12 error(s)␊ - `, + Summary: 12 error(s)`, } ## markdownItPlugins-missing (exec) @@ -3051,8 +2848,7 @@ Generated by [AVA](https://avajs.dev). formatterJunit: '', formatterSarif: '', stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - Finding: .*␊ - `, + Finding: .*`, } ## outputFormatters (exec) @@ -3983,13 +3779,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 14 error(s)␊ - `, + Summary: 14 error(s)`, } ## outputFormatters-npm (exec) @@ -4934,8 +4728,7 @@ Generated by [AVA](https://avajs.dev). viewme.md:5 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md012.mdMD012/no-multiple-blanks]8;; Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ viewme.md:6 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md025.mdMD025/single-title/single-h1]8;; Multiple top-level headings in the same document [Context: "Description"]␊ viewme.md:12:4 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md019.mdMD019/no-multiple-space-atx]8;; Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ - viewme.md:14:14 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md047.mdMD047/single-trailing-newline]8;; Files should end with a single newline character␊ - `, + viewme.md:14:14 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md047.mdMD047/single-trailing-newline]8;; Files should end with a single newline character`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ @@ -4944,8 +4737,7 @@ Generated by [AVA](https://avajs.dev). 4 dir/about.md␊ 5 dir/subdir/info.md␊ 5 viewme.md␊ - 14 [Total]␊ - `, + 14 [Total]`, } ## outputFormatters-params (exec) @@ -5313,8 +5105,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## outputFormatters-params-absolute (exec) @@ -5682,8 +5473,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## outputFormatters-pre-imported (exec) @@ -5792,8 +5582,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## outputFormatters-clean (exec) @@ -5831,8 +5620,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 0 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## outputFormatters-file (exec) @@ -5849,13 +5637,11 @@ Generated by [AVA](https://avajs.dev). viewme.md 5 MD012/no-multiple-blanks␊ viewme.md 6 MD025/single-title/single-h1␊ viewme.md 12 MD019/no-multiple-space-atx␊ - viewme.md 14 MD047/single-trailing-newline␊ - `, + viewme.md 14 MD047/single-trailing-newline`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## outputFormatters-module (exec) @@ -5877,13 +5663,11 @@ Generated by [AVA](https://avajs.dev). mjs: viewme.md 5 MD012/no-multiple-blanks␊ mjs: viewme.md 6 MD025/single-title/single-h1␊ mjs: viewme.md 12 MD019/no-multiple-space-atx␊ - mjs: viewme.md 14 MD047/single-trailing-newline␊ - `, + mjs: viewme.md 14 MD047/single-trailing-newline`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 1 file(s)␊ - Summary: 5 error(s)␊ - `, + Summary: 5 error(s)`, } ## outputFormatters-missing (exec) @@ -5899,8 +5683,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: .*␊ Linting: 1 file(s)␊ - Summary: 0 error(s)␊ - `, + Summary: 0 error(s)`, } ## formatter-summarize (exec) @@ -6001,8 +5784,7 @@ Generated by [AVA](https://avajs.dev). MD047/single-trailing-newline␊ Count File␊ 1 viewme.md␊ - 1 [Total]␊ - `, + 1 [Total]`, } ## formatter-pretty (exec) @@ -6028,13 +5810,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:5 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md012.mdMD012/no-multiple-blanks]8;; Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ viewme.md:6 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md025.mdMD025/single-title/single-h1]8;; Multiple top-level headings in the same document [Context: "Description"]␊ viewme.md:12:4 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md019.mdMD019/no-multiple-space-atx]8;; Multiple spaces after hash on atx style heading [Context: "## Summary"]␊ - viewme.md:14:14 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md047.mdMD047/single-trailing-newline]8;; Files should end with a single newline character␊ - `, + viewme.md:14:14 ]8;;https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md047.mdMD047/single-trailing-newline]8;; Files should end with a single newline character`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 14 error(s)␊ - `, + Summary: 14 error(s)`, } ## formatter-pretty-appendLink (exec) @@ -6061,13 +5841,11 @@ Generated by [AVA](https://avajs.dev). viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2] https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md012.md␊ viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"] https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md025.md␊ viewme.md:12:4 MD019/no-multiple-space-atx Multiple spaces after hash on atx style heading [Context: "## Summary"] https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md019.md␊ - viewme.md:14:14 MD047/single-trailing-newline Files should end with a single newline character https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md047.md␊ - `, + viewme.md:14:14 MD047/single-trailing-newline Files should end with a single newline character https://github.com/DavidAnson/markdownlint/blob/vX.Y.Z/doc/md047.md`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 15 error(s)␊ - `, + Summary: 15 error(s)`, } ## nested-files (exec) @@ -6087,13 +5865,11 @@ Generated by [AVA](https://avajs.dev). markdownlint-json/dir/subdir/info.md:1 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ markdownlint-json/dir/subdir/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ markdownlint-json/dir/subdir/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ - markdownlint-json/dir/subdir/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ - `, + markdownlint-json/dir/subdir/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 2 file(s)␊ - Summary: 8 error(s)␊ - `, + Summary: 8 error(s)`, } ## nested-directories (exec) @@ -6120,13 +5896,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: ** !a a/b !a/b/c a/b/c/d␊ Linting: 3 file(s)␊ - Summary: 15 error(s)␊ - `, + Summary: 15 error(s)`, } ## nested-options-config (exec) @@ -6218,13 +5992,11 @@ Generated by [AVA](https://avajs.dev). options-config-overlap/info.md:1 first-line Rule that reports an error for the first line␊ options-config-overlap/info.md:1 MD022/blanks-around-headings Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ options-config-overlap/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ - options-config-overlap/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ - `, + options-config-overlap/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 24 file(s)␊ - Summary: 80 error(s)␊ - `, + Summary: 80 error(s)`, } ## tilde-paths-commonjs (exec) @@ -6254,13 +6026,11 @@ Generated by [AVA](https://avajs.dev). cjs: viewme.md 5 MD012/no-multiple-blanks␊ cjs: viewme.md 6 MD025/single-title/single-h1␊ cjs: viewme.md 12 MD019/no-multiple-space-atx␊ - cjs: viewme.md 14 MD047/single-trailing-newline␊ - `, + cjs: viewme.md 14 MD047/single-trailing-newline`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: *.md␊ Linting: 3 file(s)␊ - Summary: 9 error(s)␊ - `, + Summary: 9 error(s)`, } ## tilde-paths-module (exec) @@ -6290,13 +6060,11 @@ Generated by [AVA](https://avajs.dev). cjs: viewme.md 5 MD012/no-multiple-blanks␊ cjs: viewme.md 6 MD025/single-title/single-h1␊ cjs: viewme.md 12 MD019/no-multiple-space-atx␊ - cjs: viewme.md 14 MD047/single-trailing-newline␊ - `, + cjs: viewme.md 14 MD047/single-trailing-newline`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: *.md␊ Linting: 3 file(s)␊ - Summary: 9 error(s)␊ - `, + Summary: 9 error(s)`, } ## no-arg (exec) @@ -6322,13 +6090,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 14 error(s)␊ - `, + Summary: 14 error(s)`, } ## config-first-arg (exec) @@ -6351,13 +6117,11 @@ Generated by [AVA](https://avajs.dev). dir/subdir/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ dir/subdir/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 11 error(s)␊ - `, + Summary: 11 error(s)`, } ## config-last-arg (exec) @@ -6380,13 +6144,11 @@ Generated by [AVA](https://avajs.dev). dir/subdir/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ dir/subdir/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 11 error(s)␊ - `, + Summary: 11 error(s)`, } ## config-last-used-arg (exec) @@ -6409,13 +6171,11 @@ Generated by [AVA](https://avajs.dev). dir/subdir/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ dir/subdir/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ 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:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 11 error(s)␊ - `, + Summary: 11 error(s)`, } ## fix-first-arg (exec) @@ -6430,13 +6190,11 @@ Generated by [AVA](https://avajs.dev). formatterSarif: '', stderr: `dir/about.md:6:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ dir/subdir/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ - viewme.md:5 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ - `, + viewme.md:5 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 3 error(s)␊ - `, + Summary: 3 error(s)`, } ## fix-last-arg (exec) @@ -6451,13 +6209,11 @@ Generated by [AVA](https://avajs.dev). formatterSarif: '', stderr: `dir/about.md:6:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ dir/subdir/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ - viewme.md:5 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ - `, + viewme.md:5 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 3 error(s)␊ - `, + Summary: 3 error(s)`, } ## fix-multiple-arg (exec) @@ -6472,13 +6228,11 @@ Generated by [AVA](https://avajs.dev). formatterSarif: '', stderr: `dir/about.md:6:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ dir/subdir/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ - viewme.md:5 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]␊ - `, + viewme.md:5 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "Description"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 3 error(s)␊ - `, + Summary: 3 error(s)`, } ## fix-and-config-arg (exec) @@ -6492,13 +6246,11 @@ Generated by [AVA](https://avajs.dev). formatterJunit: '', formatterSarif: '', stderr: `dir/about.md:6:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ - dir/subdir/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ - `, + dir/subdir/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ - Summary: 2 error(s)␊ - `, + Summary: 2 error(s)`, } ## modulePaths (exec) @@ -6527,13 +6279,11 @@ Generated by [AVA](https://avajs.dev). cjs: viewme.md 5 MD012/no-multiple-blanks␊ cjs: viewme.md 6 MD025/single-title/single-h1␊ cjs: viewme.md 12 MD019/no-multiple-space-atx␊ - cjs: viewme.md 14 MD047/single-trailing-newline␊ - `, + cjs: viewme.md 14 MD047/single-trailing-newline`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 5 file(s)␊ - Summary: 17 error(s)␊ - `, + Summary: 17 error(s)`, } ## modulePaths-non-root (exec) @@ -6564,13 +6314,11 @@ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 6 file(s)␊ - Summary: 19 error(s)␊ - `, + Summary: 19 error(s)`, } ## jsonc-trailing-comma (exec) @@ -6590,11 +6338,9 @@ Generated by [AVA](https://avajs.dev). viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ 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`, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 2 file(s)␊ - Summary: 8 error(s)␊ - `, + Summary: 8 error(s)`, } diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.snap b/test/snapshots/markdownlint-cli2-test-exec.js.snap index 5219605ff0703ae63cf357b6cedd3dc9ff2878e5..fbd7565d905c1349d68948e8b6938943d2bc1b43 100644 GIT binary patch delta 14350 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 delta 14329 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 + +| 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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
  • R~YqvVoP#AA6DiXpnjn0gFZqEvUll{wrHm|i6$!K>KZhGwWt|8%(Kj=>)P+L+q z_ zwRBw2;e0ivz}@i*rKUk?r)8XPi9SgFx?l>MV%qP*7!&cE8yiVNW+Gj@BJ-GrrQeOS zz2>|uSXTJKwCWfk3JOX^5%wb@dPq})br;w%(oGE2<8BNn5zDVNP< zymI!h8#va%l!NP)yvrRlt0ryK4Ks8{!zI!M+dmg6Y2t&z#HciUBuARK7bUa5?U|Wq zy@@=MmSfhpF(tVuv++YiqA`qpA`TzUF3!AB3d1u}Ki;j_d9QA->;0bQf;3-&c;&8H zd*{IvQ2v*QJ+fq{D7%AzaYyNpyJqiQ2ebd*B68dsn;ZE58TDUrCj0p0L^!nRm&iO* zc)HP!wD?Ui4{>1oePRvM5HLepTlyIp@Yd^Lz0He84Aq zHq>0#U-I`>O3IfShk{m30w+mc!_tZj=gjW}cZ0e7b%1SUb{_=500gzS{sx7yQOv$K^dg< z0#EvPhpt`k8?|@bJQS&u?Ym-PZ0nlLW{-bGvFb$dJ72Uzjn~^|GbUJdvaJeC&!GoEe+ogzi;oLEPD$en^I`UcX=Zvjal1B3!QQPIY?}jbIylY0GmrD?wZI#N7M|R zG)CU|CEEFi(A6uMY=llT1pHflbk7 z6Yr2lqFwv^ANO#fVYbe;f5{9cNncaTVqwj-@rZYpZ;A$l?I*tC&k9ri7^MC=-Vm)u zoaFStP1_znj=6*`wmP2N&x5k@F33pP%qKnEgXT4wwS67M0*yAU$*k0b$9yAx-~=3D zLUW+vH9eJ{w-Ohh(yb~&dLbgR9L2K@auZ`a?nw}oK4o34J|%=XWDA$fRC6T>4#w-J zz);4IzZag)kV40sH@!yf8!#Ttc^*|Z1N^K zg{cb)WAUhQfY7m%=9s16z02<4--$GDTBCTs!&9_TJl7ojtFK=>OD4vax;81^*p4%~ z;Nw)f$-*bnJ^dvJ`0)GMP(OR>uSdiYv{96{0SW=L|b$ zuw)j%Lp@mj8l`~RFV9MN^hsL{tkksrbA$IxzI(W3Z6zj6$+pJ^OhTz+5b{aCr4|wy zhzHm$pPPqCkEaLn@Lc(#mD+GwgvCEhPxMF2&^_5^!75M8Z5fg|H* z-Tp+EJ{w)_y55(>-@~mLf6LBZ7)QO8-{VG6LzBFoyxBd9`_ywF<7dxv@_gXq{o5=i z-O^A`O2A@gcd+AesI6x4@o;!b1gwn=iSij~TjD1Hu;0LFq=GMe|3;}MH@r{O9-(Ng zrI(-Imv+;g!zYSoc4+?vy!urx_z`f{4+s1nPs$PaVx73|t}1Y-f!uqMPfS*?)3+US z(3D@YMUP5td;ys`J4NO#Cs=k~A^(p&;^p8Y;O}-}Ig$i{Ij`w~uf33pvL#}I55Gx3 zUkSpx?Qwb=<4EBpz=VBhO|YHX8nbqu%G$EZyz`EuP{8_;q%SggXC_Cn(o~1;J3P#4 zdotc(v*42#_F@$;l94L|mF-7fjrAt5j>rAs&1h^eB%g;BGy+?p!B??NL9!$x-$ip< zz0ao8-PyiqcD7!)g$9MK**}gef{p2%ZmgSZ@H4002YeM_#P8=iq#cQgK#$krhCeT) zb~WlA_!J3eY%$=2+6_NwO#&vP#}#ZDNms%Fuh$i9-8El#7z&et5n#~K;}LKJvZv<1 z=lYy(u_$46i9bgW_sRL7t@*H~C3})wCeWWzMtZt41)7Tw@CY_c8TVu8Jr`F_cz z8m0*tU>@o|Rvq6J+iEn##?EGso%lo@{TLM49wvXeX?5^JTu~x$ll_U8X*yh3@{m@N z;!G~cEb^(8h4YkTm}buid&d`I$p0N>7rwv4 z|BsB)I9LaNVMiBo-tiLK;WlTFt*67AauOZa17eFZzD5-}PVWm8&Cl3k7=mi@bzy^- z6BEz--`R0e6DGU{4xX4BV>MAdS#Zop^-yJr9on0}oE>j}7P!;HSE%<}J)CG)hCGxf zw)v@DQaeTIqobg-`(benpm1kPiJLuz-eIT1taoO;>tjAKLPV^kRFu&VAShl_wJF3p zWebQj<9B!+#axAH|B~CqmzF`jKSujrf+3r}d?4z*Y_AKro04#6P|wH~W%Ys#KRW9C9Zu`%T z(7QH60e`ph&6-^P?+kVA0JG9ydQl6>Jg>RH9r{UcQ^!+-wTWXJT2w04D8~}Nk+dne ztt!U)BusPT(UIuX>E1X{tGTM_0N|Sup0D_x10!m!@&4J$mAN_Y8NQgY<(k<7`6vYN zekr^FfEoLSx@Pt9P?W{CNiV_k=i_-Tu~ieiB6zy)pb)HC={+YxEZH={b9G#EvZoBd zzz-;q@n-@4yzszmx_(Y1Yw92yKV@x+K_Zfrw!Rc<`aHQ-errxMRPXmVH zsSdWeDpqx)3u*jpGUKa8G^OLKFsV%?HGaub&4J6vjP6m+QmWPdB3t+byfh%$9U8s- zLQ1Y1NRcd$Vo^p3OAe$eHJrHIVt5U7Ji_WUd-qzm78JP85_tP-{YIRdMn*x8{f5hL zUz&h2NmV9gvd$Qb-2WR!e;NnkmDNn9B%R2oyvsk&?(gtBkM?T4$J_j!4R@0r(t zi@Dju^p`jQW|XJWzpi8der$Wp<39) z4pOZQwkQ&%LbRwq`lSz%c!Ce=_HMA{%|5|w)+FX_j-hS}06783^LK%1>m9Fk+Z}$V zDsu5kdN*3e82qI5+!?1gGPEkUc~~9bh*fC9ob5^=CRb0UUOYCdAI+s;zT zWwA>X<*nOu$0g~qeVi$>`M#H(>`Lz$6Hi(6aBXVXHZ!uWf_!y$pg%L%J}q4$^nm34 zea(F2vG06%UH7){QZLbhbyn3dIZIPUONt@)zG~qpHDE8<9!SANE@)02^GQtXATHRPZS1{JN z%VNf~nOgX2$gKt-W>67lj~j?qtkUI|rWel}3QK6=CR&z8 zj1k-_Y=!qDPWD3Z>s#bT1RgVm6xR|~Y7?{(#bhUeEQAqy^_r`$?95@kkH&=)xjpBF z6x`YkpVlm*Cvs#euJ<9|4rr<|!CIS;2e@-qAGnHrO}bU{_?%UUQPPAh(XUd-{ZWBV zDL|@#)tQ4(!dohc$%j3^L7|-#lOk1a z$BFv_SHVy*g09J(5p~*?_OOe*-)d?{zj*6ScBt*6{S;R@cql)V#?_HKES+EjuQ~-e zS5`+8F3pbKf>e9h$$pgNv(aLntu4hK4L_@AI2b(C=c->^@u?}tsf_muBa3cO9nU}- zcRtNRv&$*oEkC7)SV4hn#YvdKLD=eu#P7Vc8bp*j+!MEvh)IIZehfQiR>H-zw$$9p z-SG{y<3Z4)OFSmCfC0nZGe=cIr>mrjUyPTwm$^IH@>YE?8imj5jdZy-Va79-Y1CfH z0LAgz^bRp|S=Cvj%QOJTBKfuV+j>&HXnyt0KOJph_Xy|4f>_QsGq?qyuoNr zu1H>2vUDRC4YM6B*{BNHpmcIJ+UT-U#WVK^ihdR04Vet0e!%g9=!-Q5K1OqB6Gmcf zROy!=)9&chm4KwH<+Kk)wanYD+m8wVE*1HcsnRY*L!PQB8hVT9*1kL(wTBq@-thLo zE{wdcBi;F=s>d&?>b0#cyGDOY4JEmzz%gz&5m(m@^5Y!-ne}bAznH%;4@Ds-$%|qx zU@?GeK)%^+Fd8JJQ1=M-0z&)8IuzOkZOLzpXb?f5Z)_+8O+>@WG!7)rs69SE6^4p%ALuvG?-i@x zBd}cLh)zKKK>Ri|{3ao|D3Dx0RR3TWiGlis3xo=Us)K+kkN}HXlMC7d++o0ka( zk7xrV3nXj9Aq%<62pkXb8|?Rh`k#RZ*d!pEf2_#cjNB3uP5~tWC9Sw6ZL=tW^uYo_ z0fkpWgf}pPK8Ay`1F_pMuonbl)rjFLf_y{FH}P|G2MGBeq04iEAo;LAA%2F~28XDA z0SEpY{0%(}Dd7-M6j0QPRg`2T)Alvhzdn`0Aq|+IQ`sPKK;KA4Gi{Gh^+0|T_T4O> z31R_cv7&A9um5kV|HKJj`0kzt@*M{#>e&d0MD+t}NtNtoNa5;DwP(e18#D^0`a79{ z=w~zzG4u;JOuJ%+z54;%pS3;;7I}wdQ0qO{(>Hwh7-5rBe+I*~DyAaYQ-RV~0mW#2 zH-T-!Jia*$9aSdqCo3DMrv#3rEO(NUQH3H%!6477r`T|*b+#(j4%xJbMzeXo|CQr5 zdV8X*Hdk$-XYW2OURQ2utw|u9)pLvVwnC|*r9|ViyI6jiNDY@TD zI_f0S3sw9hz+nx`17zL9p zy~HbLF9k+nq8V&CSU=)~& zW3fZ|B!jhgiI2)yb&1oaLil`!U>PI_@abz|c&CtDAKF2Q>Y|2uDG|1zro4vdO*Gt_ zI>vd%y(H4!<=&d)yuy4xw$kjJje|d^`Wd&rQ&I2l+_r~tLX7%+)r~`BrGM8Y(1fp_ z5~IgPjQ~q);!-qC4*ZGgF9lsjh@{Ewiy1)lZK<_Vob|3EKf{(5i)Gz$J{11a!3I`y zB*Re2pPgJ#(N#t*421|WatP9HJxUQcPbZ09ICV1v_lt2u(RzOG7+%X9GpH%Av4|Y2 zH1xQu6fse;qRysZ%_Ojc!3QaqVP)^z>`1yrthKG0YzM1I7yY_r?IG!F)H}BOkGEot zbkxc86^el^1*XL^Zz+mOig!=~fBHYZN5tagan%g%X?~x`-Ud+e)sOQu8%i)f$cfgw zkqjd|r05yRh1*20>6aW|hH%Jbs$b9_86sEU#0rq>3hFET^z{}|(b!3#-9mYPMd~u& z>pi2#^l{gnIcLQW1ego|9J?)YJ1ONp1^-;}I$MpiSQE`ZQ2|yz9;lOIrs!b-pGM_X zxt8ty7Oed&YzOJ4IEl^X_jC#8qr+c%0Powe;pVj*pW7cnf-xg3M)-|c1+=w@*`_A3 zwb8Q7Y_jXZs>xIm8zIMkafk3@)L_!>oD*?5FW^mgO9l}yP~NJ_5;?-7sr=)th&F4G z#Q&tz&yyPl1&Wthu1-F3;9xcd^z=Kd)-6p=@X9K zz7e(E_BQ)pO5+ypNg4lU$iYS)^C_c=9Mrh)@jRxUS$vtdK8}C#S^Zjx!ZN5)akr&e zDSV@q2$dly4s+)R#!qBn4X|aqe7Bmd9H-CXb+NL_0XDNnu>=ZHs^89Xmh+nRX4e^)E}hKTErWR*Sno&$))uEcJ$8 z+0iYB=(jj#s+x5nnmhf438f{*iMh+E#%cB}$PH{k+uGFLK!!dYOGRD9-TDa9%)IE@ z&@5r5E+?r_i32pa8RI`~q4LuXaHCdfFF%4nelUB5J+UmmFct1I zHSXu$9eh~G=M~DA3>4E+XZupwBVTJYz3Ki5())?|Gi^;s)^QM&saicXWTO)7XJbyznsUwIEmNafKB=VfkpvkF(nH z^W}nlQlRq;fv7`EFT><2fSH9#Jziuu1j|c(|5h-2f>qX+!mMgX1v8EW8QUPON@Qn512!*P)v#E7f~hu=zAIQeQ$YbK{{R9 zR8$k~20Ru-5lOVu+pO5Jm;Dlw;HI}5!Ix|t9q`Ea%H}bkgS;rUlnq~77wPO^np=L5BG-|hQF zak<(0^k*C?N_J0B;L`*P3O*-Y3TpGsy6AirN*`4T1lrBw%J48C^72M=*i;BOQZ5bi-EH!7+QrqQ1v@w>lH@pnz z@I5lV>D0ZA1aSNamSW6+?0lek&gD_3Z{h2&dxJ>IvcALwpFO61a#d;oiSohGBpUoxA+dj1$#5j|6QJKn@>p zGjSw^wHnWS&KNdH8E7UrWJu6;JromD;NKYmsmc|Po?jTKOz7s~$-YEx`Qv%j6-*J=?)5!LoJ8?9bxsXaDfRk)i zC~hHv4V&BZ%HoU@Q$M9{5jYL^&8Nhxou|+%q>1|Fr-9nWt24IY9+~!5FqeZWPWoY@ zX~8v9MtfREO!M>_Q6b5feo>okr-05~CtOfPJeI||yP7j|hMaPLP{pW-T1E4OmNFvU zJ)gYd2S5ie$D|1=#&wk+r5(T7+rd^-F0Zp7mDUs5f9_hig7*qsL4tr@MtjBU3T-Ej z_coF+BnwCLR5xnZt5Oi>%UeE!^V%($-*H-xfvcq~qNW-25ye4Zv2IakU&2#IZX-5i ziWd*0jTQeRq=EhLrdK*|EQS?Xv7#cWu^%kd-0!X>wq4jI=mmn*4vL@3xwBE4b)Cbg z>=A$_+O)3bv9aUbnbQ;N6|sO9)`?GX?}gVokFqMHAHN#Y2R~p}J^olb0;Md0YQ?`( z+v{_iG|Wy=Metrd28S&|xobiAFd(FWegi2}z_2Hzq3R)z9ri~)S3?wV8UyhmA4~Zz?5;^{kb+0aXF3qRVbFu%0YGh! zAVl!0qjg&Wgp!C3>E@!DV9|iqk{AI}$cR#v0JQ%586JLb3qW^cg2=%+vae%5abUSY zkb>h$rSNF)Ib$$Z@lOz5^$LT)gU!QNP)K8N;8uD|h9m#z2J~CWQVuxFX-~@B=qCCx z>w1DasNqBMX`M*%0n=#ib5>CLrbFfvK58}fk198_oJK>24)RaBUlUJ1Fz)(a3Yf!l;Ir&8j!6{_zIfu+ zliGd5V?LJT-I3~+sRY{rpK!btyiEBGW`l&z<(bDphAsI%>2R>Pqqa&I?FG^ceS+9` zho_#xbm_eNdmg2o_Jnfx=b5yT#7P}rU!9G_A%t@A^cbI15>(`Y5|m9C(_r+l=iE;F z*PW-nTS|z`6YtQ#uiGia%Sm!%CMu;XBD(J10{OXEz}2eDso-gc zmotR`9JW_{WzJNg;u@LuC{ms4{&0AczA!mA(wiVPKH!3GoxnVIV7W{fk21+Cb#2C5 z-KQH>vgu>@3|9FE&!mQe-2i~Zj>2Xc-#fLtLcMx=+mcqHFu4Hc3G&vruBNfv0)*3o zGpsTI!b$fGYr-0d_l1`^`u5X_P;i7t0`TBBf4Lh-7%FP4_t<|v@hQ9Pj!qjJ2dRGWw`d|!*x)xMzNXlrc zY+XNVlM6#V_r_OBrtC>8)@sa}MZ*x0ABL9Olog@Tk-2EF(Kaar#P|8y7=XtS z`1d899ZLT5v&!BzS?6YQnN_diTp5xTy}yB00L#=Swg-4eKmq`Pu~OUy38KN(NRQITJp$VwLv zoW;3M4@i-k2l^9zGE~yCc^~2{tbJb`(`@3*v+%^SqOQDwfjKMSL-91r&6x@)Y%u}q6Rn-n3Pqj zqSpzi%hYKL<)QH(1%uX87U(x!cPv|q+}_!I^v{)TE{K1b78gNWLOp7Du&>`x5HJ1p zVSMsclRaITaGrg)`L+rM6`!J7^EpEv)F`}K8%t6iJ|?hnitr|Mex1yXJ__GI>=h{H zUP(YOXIN_E4Kb0gxtQjVrxvg&myoff9Vuf?I9GF$U#9FmZarM!12XGhf_ja(v^rh+DQU3*=T}~ z2kXi;=LT!9F|o-CaCib-cl}RqJQ%v)aqq?#Ia|f8@-+QYn11%PP~#5wJ%Rdn;mu6+Aat%aE{5&p)zYc^xB!!ozT%j6oEnJdOX zCKQ_o$FP@JcUhC5{+*L+HqhojBM!#KIx&WRO*!I5+qM0f_1zY|K(Le^{y4g+oF5y_ zNmwXmyd8YO*);wQXydL8QgqN0*33>`q~=KDXMfmLyupM%q1g^I{xfrjIwz9p9Z*?e z?d)`rr8j$NG`k<^jP9)jc;)A_`;|*SG{+jwHh*pqNE^533~h#-U@XUwi=E!GN0I1* zweS8x^M1wtafOvOKWMj$d(w6CJfdt`u^DYA_}JK2R2fraQ`{t6!sVQfsc9eE5P7|o z{_&AyM~9OsU(>h&K(P|C2%$dkE)G3@TyY>6PpCOA=~vE@7_<9H8EpQN6h2p1#l10F z2c?tE80^%x+Ly$`hK-0{jc=|4E-`|bMLla=L)@R}RQW=k+?2Sr3F|lPPXH33y_%(F zXq22}|M^<&F5;@_I-ICDE5CSH!u^7%{vf5UKoo@e+*MhM`Rn#*)hI4G5uVW(K-{u< ze#pFn_vJg&6t>E55j<3AQhF1?AY_$Kr=EyS&*QT5x)=`EUZ#-HSeKwG-a6@|@@J&5 z-fACNyI!jDt&$-&l`IRqo}H;Q`PH|w9t#NSAY8^wRtGOrWIThWhU+NbpeNwE(s^Mu zlrs7zd}{ao4f?@b4W(w6+K6)~D|O4BY-^P^mnlzZMwpZvF%lgOM8e{QO(DbRqj207 zDUlZA`_xGMND4|5p^)Ws?uLR~XaqyLhbNJp(Wq?$w*e%{Z>aTZ(7RRoU<> zdA1X#^H5&%ZXZ2>!==vfoT`iINVRLrfz^_1$|aGDMc-43vyLO4r8VY^?ylx9TFmL> zaN*!Qqp^|vv0f;Y5i`o+8S!^E1rfV9X*Ntv-Zc^AfdUUP$@_~Vk>V1#gJ!xb^G<#y zKqv|xEM{Xe=LrqgJ3aK`F#GXZsGaF2Sw*0RaJ<98VbY!_n?95zk2puXjx`sMDgN)w zL_JG0Q!;kX;)5alWErmHr>u?CsY-u&yJdeH+val>r#qFP`OEDFo^KaIzPf_XVAea|>iDurx|;mIqMvGG!aUmXQR85LH_+K9d z$QAKm7Hj{1cJ05R7i%vO^0?87q5rUQ{QbXob=Ho3_@eLF&RIAbIuutdNE8Z7kV`0??e$kfp6&|Y z)u*N*hM$XHPq#T+rfL3O-;tjt96Q^uRSUV?dD>&07PW^PWJ=oC*0s7XBOWw_UB{~0 z#}p>@QRVEK5IR8K{fPUewRoi6F6K?*m`Es2hvzGo4^ zcD!Vq$h}-(*q3dh7F*BR^dF~vM;M?0NHla{{~*(6+_z5hlZ&e+8ZXql*t1V_#8Vi$ z;8w$#JwD(@5lJtEJjWub?)kjAREIh5UWw1u6iJe?5}{KO9bi}h5<0dJcJ7|9D?nCNB*`Uzw5}p z3&^-qZ8fIMOHMAOR8$CX3SC!Q-1(A&n5ueI<;QY>RCX`QXh%O{u!!yn;UdH|-Izz6)aa03Vbw}MnICYKbp%_wq$ zY?JP)WWG*>s%oi0Ct%F91Bu}74j;(EZd->?lXZW+@OAE&05xr8O2a=k3%bw zKuif&XZQ!V_f7(i7wiS(Jm0 za4N2(2!2grv7>Q{4*$gqWJo_~IT_BYq#VHdCEh=KS+3=UMCXG1ecRQY90R4iWC=C4Mh{>PtTaX51wxkx29rbA5!gA!kc?;im9hgrwi4Va)QP#L*bf=p_OF_%RTA z(d;}dnZc-6sZk+XOr5}zD#xqKP<1Fhu{T-Hp@3M93yQnW@uDOF!S$$j=&*YVr9NJ& z^z4@^7uFDqk(GybxO04{I^S*18Jy1@aT4FmguD0hIS3y7k{ z{Ig2lMiygwX={g#w7L~9U1nNBhP*_n3etpGN|v`y=!%(U?W-imNcI?~GjmHFRE%l? z6@`!ldljDAZQdpC%F25x@007DfOBl48M87#N{7EJSfk;9NT-xJsRWWj4C=HDXc6WM z0<2p)kAbbZ3!+jxY&}GIp;cT7O-CL~hP@}o%4HwSVz}rbUzmI$3pg|5-HD>>uu3^Q zp^hs=z0f9!0)s-7+=?0jX9KSQy_rWcY!x5XSyAGcw2?wxhC`eDWlWYW5#hY$`puK( z=ho_Fv@pjMO&8vTh}*~!Cnu5e@+G)zLru13L&K(RrqWK#f7eEC2f&Lgt^ce!afBR| z5d7UfmD~E$QYv!O*$<;=9#0%TPw+`DI89V230v8gS?DhY|Kx*hs>XGm{ow;N|6^X| zBlIVwO-wHhP&H5o$Tf5V+<5}LhVkgG6{)r^S>2!-iLS2N+~Bfi+cUNlhJLuq&7vd* z0ur1kD+PBxmM94}J$ZgB@6}_>M+*D8#)GcoWrBM&L|N#!ylkotJG#@Lwl>!l$4gY{u_VoRZWyl$o6D(^c5B42Dh=Fa}2;#0J7X+K}#48JPL%)!2#Xqbh_f#{R{?MXjF zzumxyJL>ZG3AP^2wq8*=nzfAQQ!8hcNne`xi}vMarLq=LS;FoiJTzh!pl$sN{1f>< z%nb=z=70bBLB8b!HYlZ-1vVa60}C}C7dIBF`WY^Ba6}`|eH|0z2uwVQ$N81%xfy_S z)Vzkr=?uRC?C_%p56ImBZrn>7_KCa_7pK-~nwO^7kkQFtzh@*M9+c#V_+=7SYd^-j zy4|4xUK%%}tHEi{LO>~~ihG1?HlH$ra{=wN4{3GyTkvKjyQBVJD1%B(q9r?^8R4~7 z&xch872oHuM@?04W)-5}y#JU5XDQ=_QGtgB`=%iQ1kW$Q3UMjxyWy>}gZn=G zVku9+ut_SEopNTDkD^Ft`UAc4LZ1HgbJ`R9<)U7PZe)3i6RpwDQrsp+RO3%gZlOto zk+yrkSCdVmo|>G_0c|><)>2VP$xEB&!<_4$rxui+C_rTcA>ocg2Otg5l`q0cOgtH+ z6?k^2Da7#_XNBcKLd<>h0tmi$V>DwU`aglt3S|8~_%SRFyJrjLwaqJ9RIg+6d5`V2 z&!-Pa;$+|a8?jY@d)`>nIa+fILc?I1-7}E<2SOLi3+N5VfIx8cug*p<6cbO9zK0Q3 zTZa#Wm7RkV=NpD+XLHa6y!lmjX?Zlwa(9#xVtva50fuwlJu>STf$jub K65$Of(EkB8G$qLZ From a9a5bdf1409bdf3746c281d97b95b41393b8d95c Mon Sep 17 00:00:00 2001 From: David Anson Date: Sat, 2 Nov 2024 22:04:26 -0700 Subject: [PATCH 44/55] Address spelling issues introduced in previous commit (refs #426). --- .github/dictionary.txt | 4 +++- formatter-template/README.md | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/dictionary.txt b/.github/dictionary.txt index dd6a1024..c8aaa7fb 100644 --- a/.github/dictionary.txt +++ b/.github/dictionary.txt @@ -1,6 +1,6 @@ Async -CJS Changelog +CJS CLI CodeClimate CommonJS @@ -18,6 +18,7 @@ JSON JSONC JUnit LLMs +LogIssue markdownlint-cli2 markdownlint-cli2-formatter-codequality markdownlint-cli2-formatter-default @@ -34,4 +35,5 @@ pre-commit SARIF schemas subdirectories +syntaxes YAML diff --git a/formatter-template/README.md b/formatter-template/README.md index 5c341d9b..1f0809be 100644 --- a/formatter-template/README.md +++ b/formatter-template/README.md @@ -41,7 +41,7 @@ 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. +accommodate missing data. Only one level of token nesting is supported. A few examples demonstrate the concept: From 3d018227d22ab6297eaee897e4418f0d0cd22365 Mon Sep 17 00:00:00 2001 From: David Anson Date: Sat, 2 Nov 2024 22:25:05 -0700 Subject: [PATCH 45/55] Add a GitHub issue template with suggestions to improve issue quality (based on a proposal by @nschonni). --- .github/issue_template.md | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/issue_template.md diff --git a/.github/issue_template.md b/.github/issue_template.md new file mode 100644 index 00000000..46976a2a --- /dev/null +++ b/.github/issue_template.md @@ -0,0 +1,40 @@ +--- +name: markdownlint issue template +about: This template helps report issues with the markdownlint family of tools. +title: '' +labels: '' +assignees: '' +--- + + From 44cee76df18b163b78a8ff9477dfe1ae228e4ccc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 15:38:18 +0000 Subject: [PATCH 46/55] Bump eslint from 9.13.0 to 9.14.0 Bumps [eslint](https://github.com/eslint/eslint) from 9.13.0 to 9.14.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v9.13.0...v9.14.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 064dd1a6..68455a86 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "cpy": "11.1.0", "cpy-cli": "5.0.0", "del": "8.0.0", - "eslint": "9.13.0", + "eslint": "9.14.0", "eslint-plugin-jsdoc": "50.4.3", "eslint-plugin-n": "17.12.0", "eslint-plugin-unicorn": "56.0.0", From 212db1fb54209cf3904a08d8fdd57ec7760b9d99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Nov 2024 15:38:05 +0000 Subject: [PATCH 47/55] Bump @eslint/js from 9.13.0 to 9.14.0 Bumps [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) from 9.13.0 to 9.14.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/commits/v9.14.0/packages/js) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 68455a86..0be2ea5b 100644 --- a/package.json +++ b/package.json @@ -80,7 +80,7 @@ "micromatch": "4.0.8" }, "devDependencies": { - "@eslint/js": "9.13.0", + "@eslint/js": "9.14.0", "@iktakahiro/markdown-it-katex": "4.0.1", "@playwright/test": "1.48.2", "@stylistic/eslint-plugin": "2.10.1", From d3265d74492126cdaa9b08b1f068761460d0545e Mon Sep 17 00:00:00 2001 From: David Anson Date: Wed, 6 Nov 2024 21:18:51 -0800 Subject: [PATCH 48/55] Add support for input from stdin via "-" glob (fixes #414). --- README.md | 1 + markdownlint-cli2.js | 33 +++- test/markdownlint-cli2-test-exec.js | 156 +++++++++++++++++- test/markdownlint-cli2-test.js | 17 +- .../markdownlint-cli2-test-exec.js.md | 5 + .../markdownlint-cli2-test-exec.js.snap | Bin 18391 -> 18420 bytes .../snapshots/markdownlint-cli2-test-fs.js.md | 5 + .../markdownlint-cli2-test-fs.js.snap | Bin 6255 -> 6282 bytes .../markdownlint-cli2-test-main.js.md | 5 + .../markdownlint-cli2-test-main.js.snap | Bin 14230 -> 14259 bytes test/stdin-globs/.markdownlint-cli2.jsonc | 9 + test/stdin-globs/viewme.md | 13 ++ test/stdin/.markdownlint.jsonc | 3 + .../{stream-promises.js => module-empty.js} | 0 webworker/url-stub.js | 5 - webworker/webpack.config.js | 8 +- 16 files changed, 237 insertions(+), 23 deletions(-) create mode 100644 test/stdin-globs/.markdownlint-cli2.jsonc create mode 100644 test/stdin-globs/viewme.md create mode 100644 test/stdin/.markdownlint.jsonc rename webworker/{stream-promises.js => module-empty.js} (100%) delete mode 100644 webworker/url-stub.js diff --git a/README.md b/README.md index a871211c..a4644bd5 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,7 @@ Glob expressions (from the globby library): - {} allows for a comma-separated list of "or" expressions - ! or # at the beginning of a pattern negate the match - : at the beginning identifies a literal file path +- - as a glob represents standard input (stdin) Dot-only glob: - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended diff --git a/markdownlint-cli2.js b/markdownlint-cli2.js index 3f8299e7..6327fa14 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.js @@ -263,6 +263,7 @@ Glob expressions (from the globby library): - {} allows for a comma-separated list of "or" expressions - ! or # at the beginning of a pattern negate the match - : at the beginning identifies a literal file path +- - as a glob represents standard input (stdin) Dot-only glob: - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended @@ -807,7 +808,8 @@ const lintFiles = (fs, dirInfos, fileContents) => { task = task.then((results) => { options.files = []; const subTasks = []; - const errorFiles = Object.keys(results); + const errorFiles = Object.keys(results). + filter((result) => filteredFiles.includes(result)); for (const fileName of errorFiles) { const errorInfos = results[fileName]. filter((errorInfo) => errorInfo.fixInfo); @@ -909,11 +911,12 @@ const main = async (params) => { optionsDefault, optionsOverride, fileContents, - nonFileContents, - noRequire + noRequire, + allowStdin } = params; let { - noGlobs + noGlobs, + nonFileContents } = params; const logMessage = params.logMessage || noop; const logError = params.logError || noop; @@ -926,6 +929,7 @@ const main = async (params) => { let fixDefault = false; // eslint-disable-next-line unicorn/no-useless-undefined let configPath = undefined; + let useStdin = false; let sawDashDash = false; let shouldShowHelp = false; const argvFiltered = (argv || []).filter((arg) => { @@ -933,6 +937,8 @@ const main = async (params) => { return true; } else if (configPath === null) { configPath = arg; + } else if ((arg === "-") && allowStdin) { + useStdin = true; // eslint-disable-next-line unicorn/prefer-switch } else if (arg === "--") { sawDashDash = true; @@ -983,22 +989,30 @@ const main = async (params) => { } } if ( - ((globPatterns.length === 0) && !nonFileContents) || + ((globPatterns.length === 0) && !useStdin && !nonFileContents) || (configPath === null) ) { return showHelp(logMessage, false); } + // Add stdin as a non-file input if necessary + if (useStdin) { + const key = pathPosix.join(baseDir, "stdin"); + const { text } = require("node:stream/consumers"); + nonFileContents = { + ...nonFileContents, + [key]: await text(process.stdin) + }; + } // Include any file overrides or non-file content - const { baseMarkdownlintOptions, dirToDirInfo } = baseOptions; const resolvedFileContents = {}; for (const file in fileContents) { const resolvedFile = posixPath(pathDefault.resolve(baseDirSystem, file)); - resolvedFileContents[resolvedFile] = - fileContents[file]; + resolvedFileContents[resolvedFile] = fileContents[file]; } for (const nonFile in nonFileContents) { resolvedFileContents[nonFile] = nonFileContents[nonFile]; } + const { baseMarkdownlintOptions, dirToDirInfo } = baseOptions; appendToArray( dirToDirInfo[baseDir].files, Object.keys(nonFileContents || {}) @@ -1079,7 +1093,8 @@ const run = (overrides, args) => { const defaultParams = { "argv": argsAndArgv, "logMessage": console.log, - "logError": console.error + "logError": console.error, + "allowStdin": true }; const params = { ...defaultParams, diff --git a/test/markdownlint-cli2-test-exec.js b/test/markdownlint-cli2-test-exec.js index 95c1573d..394262f5 100644 --- a/test/markdownlint-cli2-test-exec.js +++ b/test/markdownlint-cli2-test-exec.js @@ -4,15 +4,19 @@ const fs = require("node:fs/promises"); const path = require("node:path"); +const test = require("ava").default; const testCases = require("./markdownlint-cli2-test-cases"); +const absolute = (rootDir, file) => path.join(rootDir, file); +const repositoryPath = (name) => path.join(__dirname, "..", name); + const invoke = (directory, args, noRequire, env, script) => async () => { await fs.access(directory); const { "default": spawn } = await import("nano-spawn"); return spawn( "node", [ - path.join(__dirname, "..", script || "markdownlint-cli2.js"), + repositoryPath(script || "markdownlint-cli2.js"), ...args ], { @@ -27,8 +31,6 @@ const invoke = (directory, args, noRequire, env, script) => async () => { catch((error) => error); }; -const absolute = (rootDir, file) => path.join(rootDir, file); - testCases({ "host": "exec", invoke, @@ -39,3 +41,151 @@ testCases({ "includeRequire": true, "includeAbsolute": true }); + +const invokeStdin = async (args, stdin, cwd) => { + const { "default": spawn } = await import("nano-spawn"); + return spawn( + "node", + [ + repositoryPath("markdownlint-cli2.js"), + ...args + ], + { + cwd, + "stdin": { "string": stdin } + } + ); +}; + +const validInput = "# Heading\n\nText\n"; +const invalidInput = "# Heading\n\nText"; + +test("- parameter with empty input from stdin", (t) => { + t.plan(1); + return invokeStdin( + [ "-" ], + "" + ). + then(() => t.pass()). + catch(() => t.fail()); +}); + +test("- parameter with valid input from stdin", (t) => { + t.plan(1); + return invokeStdin( + [ "-" ], + validInput + ). + then(() => t.pass()). + catch(() => t.fail()); +}); + +test("- parameter with invalid input from stdin", (t) => { + t.plan(2); + return invokeStdin( + [ "-" ], + invalidInput + ). + then(() => t.fail()). + catch((error) => { + t.is(error.exitCode, 1); + t.is("", error.stderr.replace(/^stdin:1:3 MD019\/.*$[\n\r]+^stdin:3:4 MD047\/.*$/mu, "")); + }); +}); + +test("- parameter with invalid input from stdin and --fix", (t) => { + t.plan(2); + return invokeStdin( + [ "-", "--fix" ], + invalidInput + ). + then(() => t.fail()). + catch((error) => { + t.is(error.exitCode, 1); + t.is("", error.stderr.replace(/^stdin:1:3 MD019\/.*$[\n\r]+^stdin:3:4 MD047\/.*$/mu, "")); + }); +}); + +test("- parameter multiple times with invalid input", (t) => { + t.plan(2); + return invokeStdin( + [ "-", "-" ], + invalidInput + ). + then(() => t.fail()). + catch((error) => { + t.is(error.exitCode, 1); + t.is("", error.stderr.replace(/^stdin:1:3 MD019\/.*$[\n\r]+^stdin:3:4 MD047\/.*$/mu, "")); + }); +}); + +test("- parameter with valid input combined with valid globs", (t) => { + t.plan(1); + return invokeStdin( + [ repositoryPath("CONTRIBUTING.md"), "-", repositoryPath("README.md") ], + validInput + ). + then(() => t.pass()). + catch(() => t.fail()); +}); + +test("- parameter with invalid input combined with valid globs", (t) => { + t.plan(2); + return invokeStdin( + [ repositoryPath("CONTRIBUTING.md"), repositoryPath("README.md"), "-" ], + invalidInput + ). + then(() => t.fail()). + catch((error) => { + t.is(error.exitCode, 1); + t.is("", error.stderr.replace(/^stdin:1:3 MD019\/.*$[\n\r]+^stdin:3:4 MD047\/.*$/mu, "")); + }); +}); + +test("- parameter with invalid input combined with invalid glob", (t) => { + t.plan(2); + return invokeStdin( + [ "-", repositoryPath("LICENSE") ], + invalidInput + ). + then(() => t.fail()). + catch((error) => { + t.is(error.exitCode, 1); + t.is("", error.stderr.replace(/^LICENSE:1 MD041\/.*$[\n\r]+^stdin:1:3 MD019\/.*$[\n\r]+^stdin:3:4 MD047\/.*$/mu, "")); + }); +}); + +test("- parameter uses base directory configuration", (t) => { + t.plan(2); + return invokeStdin( + [ "-" ], + invalidInput, + path.join(__dirname, "stdin") + ). + then(() => t.fail()). + catch((error) => { + t.is(error.exitCode, 1); + t.is("", error.stderr.replace(/^stdin:1:3 MD019\/.*$/mu, "")); + }); +}); + +test("- parameter not treated as stdin in configuration file globs", (t) => { + t.plan(1); + return invokeStdin( + [], + invalidInput, + path.join(__dirname, "stdin-globs") + ). + then(() => t.pass()). + catch(() => t.fail()); +}); + +test("- parameter ignored after --", (t) => { + t.plan(1); + return invokeStdin( + [ "--", "-" ], + invalidInput + ). + then(() => t.pass()). + catch(() => t.fail()); +}); diff --git a/test/markdownlint-cli2-test.js b/test/markdownlint-cli2-test.js index 6f61afa2..b08503ca 100644 --- a/test/markdownlint-cli2-test.js +++ b/test/markdownlint-cli2-test.js @@ -67,7 +67,7 @@ test("README files", (t) => { }); test("validateMarkdownlintConfigSchema", async (t) => { - t.plan(26); + t.plan(27); // Validate schema // @ts-ignore @@ -111,7 +111,7 @@ test("validateMarkdownlintConfigSchema", async (t) => { }); test("validateMarkdownlintCli2ConfigSchema", async (t) => { - t.plan(90); + t.plan(91); // Validate schema // @ts-ignore @@ -696,3 +696,16 @@ test("-- stops matching parameters per POSIX Utility Conventions 12.2 Guideline files.push([ "/--", "# Title" ]); await scenario([ "--", "--" ], 1); }); + +test ("- not supported by main entry point", (t) => { + t.plan(2); + return markdownlintCli2({ + "argv": [ "-" ], + "optionsOverride": { + "outputFormatters": [ [ outputFormatterLengthIs(t, 0) ] ] + } + }). + then((exitCode) => { + t.is(exitCode, 0); + }); +}); diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.md b/test/snapshots/markdownlint-cli2-test-exec.js.md index 639f0ae4..c6b5e6e6 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.js.md +++ b/test/snapshots/markdownlint-cli2-test-exec.js.md @@ -27,6 +27,7 @@ Generated by [AVA](https://avajs.dev). - {} allows for a comma-separated list of "or" expressions␊ - ! or # at the beginning of a pattern negate the match␊ - : at the beginning identifies a literal file path␊ + - - as a glob represents standard input (stdin)␊ ␊ Dot-only glob:␊ - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ @@ -83,6 +84,7 @@ Generated by [AVA](https://avajs.dev). - {} allows for a comma-separated list of "or" expressions␊ - ! or # at the beginning of a pattern negate the match␊ - : at the beginning identifies a literal file path␊ + - - as a glob represents standard input (stdin)␊ ␊ Dot-only glob:␊ - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ @@ -139,6 +141,7 @@ Generated by [AVA](https://avajs.dev). - {} allows for a comma-separated list of "or" expressions␊ - ! or # at the beginning of a pattern negate the match␊ - : at the beginning identifies a literal file path␊ + - - as a glob represents standard input (stdin)␊ ␊ Dot-only glob:␊ - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ @@ -195,6 +198,7 @@ Generated by [AVA](https://avajs.dev). - {} allows for a comma-separated list of "or" expressions␊ - ! or # at the beginning of a pattern negate the match␊ - : at the beginning identifies a literal file path␊ + - - as a glob represents standard input (stdin)␊ ␊ Dot-only glob:␊ - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ @@ -681,6 +685,7 @@ Generated by [AVA](https://avajs.dev). - {} allows for a comma-separated list of "or" expressions␊ - ! or # at the beginning of a pattern negate the match␊ - : at the beginning identifies a literal file path␊ + - - as a glob represents standard input (stdin)␊ ␊ Dot-only glob:␊ - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.snap b/test/snapshots/markdownlint-cli2-test-exec.js.snap index 1eb224b036766ceee8707d6c2749762679ba2268..fed06ee8c246d744cf53ec87e8a1d399dec6d449 100644 GIT binary patch delta 18003 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 VGP5I@xuJT~{~t8msLVEl1OSQy+Z6x+ literal 18391 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 literal 6255 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 B8FK&t diff --git a/test/snapshots/markdownlint-cli2-test-main.js.md b/test/snapshots/markdownlint-cli2-test-main.js.md index 5e7236b9..c76a91bd 100644 --- a/test/snapshots/markdownlint-cli2-test-main.js.md +++ b/test/snapshots/markdownlint-cli2-test-main.js.md @@ -27,6 +27,7 @@ Generated by [AVA](https://avajs.dev). - {} allows for a comma-separated list of "or" expressions␊ - ! or # at the beginning of a pattern negate the match␊ - : at the beginning identifies a literal file path␊ + - - as a glob represents standard input (stdin)␊ ␊ Dot-only glob:␊ - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ @@ -84,6 +85,7 @@ Generated by [AVA](https://avajs.dev). - {} allows for a comma-separated list of "or" expressions␊ - ! or # at the beginning of a pattern negate the match␊ - : at the beginning identifies a literal file path␊ + - - as a glob represents standard input (stdin)␊ ␊ Dot-only glob:␊ - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ @@ -141,6 +143,7 @@ Generated by [AVA](https://avajs.dev). - {} allows for a comma-separated list of "or" expressions␊ - ! or # at the beginning of a pattern negate the match␊ - : at the beginning identifies a literal file path␊ + - - as a glob represents standard input (stdin)␊ ␊ Dot-only glob:␊ - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ @@ -198,6 +201,7 @@ Generated by [AVA](https://avajs.dev). - {} allows for a comma-separated list of "or" expressions␊ - ! or # at the beginning of a pattern negate the match␊ - : at the beginning identifies a literal file path␊ + - - as a glob represents standard input (stdin)␊ ␊ Dot-only glob:␊ - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ @@ -711,6 +715,7 @@ Generated by [AVA](https://avajs.dev). - {} allows for a comma-separated list of "or" expressions␊ - ! or # at the beginning of a pattern negate the match␊ - : at the beginning identifies a literal file path␊ + - - as a glob represents standard input (stdin)␊ ␊ Dot-only glob:␊ - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ diff --git a/test/snapshots/markdownlint-cli2-test-main.js.snap b/test/snapshots/markdownlint-cli2-test-main.js.snap index 8483910134277dfc43c90aaadcee560f9a7feaf7..fe8d01fbfcc22cc739440b6e2885b54d3ebee8b8 100644 GIT binary patch delta 13935 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 delta 13859 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 Tagline + +## Description + +Text text text +Text text text +Text text text + +## Summary + +Text text text diff --git a/test/stdin/.markdownlint.jsonc b/test/stdin/.markdownlint.jsonc new file mode 100644 index 00000000..35c7d6f6 --- /dev/null +++ b/test/stdin/.markdownlint.jsonc @@ -0,0 +1,3 @@ +{ + "single-trailing-newline": false +} diff --git a/webworker/stream-promises.js b/webworker/module-empty.js similarity index 100% rename from webworker/stream-promises.js rename to webworker/module-empty.js diff --git a/webworker/url-stub.js b/webworker/url-stub.js deleted file mode 100644 index 6d30054f..00000000 --- a/webworker/url-stub.js +++ /dev/null @@ -1,5 +0,0 @@ -// @ts-check - -"use strict"; - -module.exports = {}; diff --git a/webworker/webpack.config.js b/webworker/webpack.config.js index 69935fb7..2fcc75ee 100644 --- a/webworker/webpack.config.js +++ b/webworker/webpack.config.js @@ -27,11 +27,11 @@ module.exports = { resource.request = module; } ), - // Intercept "node:stream/promises" lacking a browserify entry + // Intercept "node:stream/consumers" and "node:stream/promises" lacking a browserify entry new webpack.NormalModuleReplacementPlugin( - /^stream\/promises$/u, + /^stream\/(?:consumers|promises)$/u, (resource) => { - resource.request = require.resolve("./stream-promises.js"); + resource.request = require.resolve("./module-empty.js"); } ), // Intercept existing "unicorn-magic" package to provide missing import @@ -55,7 +55,7 @@ module.exports = { "process": require.resolve("./process-stub.js"), "process-wrapper": require.resolve("./process-stub.js"), "stream": require.resolve("stream-browserify"), - "url": require.resolve("./url-stub.js") + "url": require.resolve("./module-empty.js") } } }; From 3c78c9f9f6e064ad794fd6adaef2625afcd16e6c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2024 15:45:47 +0000 Subject: [PATCH 49/55] Bump eslint-plugin-n from 17.12.0 to 17.13.1 Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 17.12.0 to 17.13.1. - [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases) - [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md) - [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/v17.12.0...v17.13.1) --- updated-dependencies: - dependency-name: eslint-plugin-n dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0be2ea5b..d561b255 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "del": "8.0.0", "eslint": "9.14.0", "eslint-plugin-jsdoc": "50.4.3", - "eslint-plugin-n": "17.12.0", + "eslint-plugin-n": "17.13.1", "eslint-plugin-unicorn": "56.0.0", "nano-spawn": "0.2.0", "markdown-it-emoji": "3.0.0", From 358d2dca03872ee7b7de750fa3d158090e5489bb Mon Sep 17 00:00:00 2001 From: David Anson Date: Thu, 7 Nov 2024 21:24:17 -0800 Subject: [PATCH 50/55] Remove outdated module export "run" and outdated "@ts-ignore"s, refactor to simplify. --- markdownlint-cli2.js | 50 ++++++++++++++++---------------------------- 1 file changed, 18 insertions(+), 32 deletions(-) diff --git a/markdownlint-cli2.js b/markdownlint-cli2.js index 6327fa14..d1d54a7a 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.js @@ -56,7 +56,6 @@ const negateGlob = (glob) => `!${glob}`; const throwForConfigurationFile = (file, error) => { throw new Error( `Unable to use configuration file '${file}'; ${error?.message}`, - // @ts-ignore { "cause": error } ); }; @@ -115,7 +114,6 @@ const importOrRequireResolve = async (dirOrDirs, id, noRequire) => { } catch (error) { errors.push(error); } - // @ts-ignore throw new AggregateError( errors, `Unable to require or import module '${id}'.` @@ -778,6 +776,7 @@ const lintFiles = (fs, dirInfos, fileContents) => { const filteredFiles = filesAfterIgnores.filter( (file) => fileContents[file] === undefined ); + /** @type {Record} */ const filteredStrings = {}; for (const file of filesAfterIgnores) { if (fileContents[file] !== undefined) { @@ -785,6 +784,7 @@ const lintFiles = (fs, dirInfos, fileContents) => { } } // Create markdownlint options object + /** @type {import("markdownlint").Options} */ const options = { "files": filteredFiles, "strings": filteredStrings, @@ -801,7 +801,6 @@ const lintFiles = (fs, dirInfos, fileContents) => { fs }; // Invoke markdownlint - // @ts-ignore let task = markdownlint(options); // For any fixable errors, read file, apply fixes, and write it back if (markdownlintOptions.fix) { @@ -825,7 +824,6 @@ const lintFiles = (fs, dirInfos, fileContents) => { } } return Promise.all(subTasks). - // @ts-ignore then(() => markdownlint(options)). then((fixResults) => ({ ...results, @@ -1084,38 +1082,26 @@ const main = async (params) => { return errorsPresent ? 1 : 0; }; -// Run function -const run = (overrides, args) => { - (async () => { - const argsAndArgv = args || []; - appendToArray(argsAndArgv, process.argv.slice(2)); - try { - const defaultParams = { - "argv": argsAndArgv, - "logMessage": console.log, - "logError": console.error, - "allowStdin": true - }; - const params = { - ...defaultParams, - ...overrides - }; - process.exitCode = await main(params); - } catch (error) { - console.error(error); - process.exitCode = 2; - } - })(); -}; - // Export functions module.exports = { - main, - run + main }; // Run if invoked as a CLI -// @ts-ignore if (require.main === module) { - run(); + const params = { + "argv": process.argv.slice(2), + "logMessage": console.log, + "logError": console.error, + "allowStdin": true + }; + main(params). + then((exitCode) => { + process.exitCode = exitCode; + }). + // eslint-disable-next-line unicorn/prefer-top-level-await + catch((error) => { + console.error(error); + process.exitCode = 2; + }); } From f4462c63828771afad1aa07adaf7b35fd2a7c598 Mon Sep 17 00:00:00 2001 From: David Anson Date: Fri, 8 Nov 2024 20:19:14 -0800 Subject: [PATCH 51/55] Attempt to fix polynomial regular expression warning in formatter-template by making the pattern more explicit. --- .../markdownlint-cli2-formatter-template.js | 2 +- .../markdownlint-cli2-test-exec.js.md | 10 +++++----- .../markdownlint-cli2-test-exec.js.snap | Bin 18420 -> 18428 bytes .../markdownlint-cli2-test-main.js.md | 10 +++++----- .../markdownlint-cli2-test-main.js.snap | Bin 14259 -> 14265 bytes 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/formatter-template/markdownlint-cli2-formatter-template.js b/formatter-template/markdownlint-cli2-formatter-template.js index 012e3a9a..9d1b72b3 100644 --- a/formatter-template/markdownlint-cli2-formatter-template.js +++ b/formatter-template/markdownlint-cli2-formatter-template.js @@ -3,7 +3,7 @@ "use strict"; // eslint-disable-next-line prefer-named-capture-group -const tokenRe = /\$\{([^:!}]+)(?:([:!])([^{}]*\{[^{}]+\}[^{}]*|[^}]+))?\}/igu; +const tokenRe = /\$\{(fileName|lineNumber|columnNumber|ruleName|ruleDescription|ruleInformation|errorContext|errorDetail)(?:([:!])([^{}]*\{[^{}]+\}[^{}]*|[^}]+))?\}/igu; // Output markdownlint-cli2 results using a template const outputFormatter = (options, params) => { diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.md b/test/snapshots/markdownlint-cli2-test-exec.js.md index c6b5e6e6..deb37bd3 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.js.md +++ b/test/snapshots/markdownlint-cli2-test-exec.js.md @@ -5139,11 +5139,11 @@ Generated by [AVA](https://avajs.dev). ##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#`, + #Undefined=${undefined}#Column=10#Column=10##Column=10#␊ + #Undefined=${undefined}#Column=##No column number#No column number#␊ + #Undefined=${undefined}#Column=##No column number#No column number#␊ + #Undefined=${undefined}#Column=4#Column=4##Column=4#␊ + #Undefined=${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 fed06ee8c246d744cf53ec87e8a1d399dec6d449..8fd8469d7efbb81371c843e4baf6612d896dcb8d 100644 GIT binary patch delta 14103 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 delta 14218 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 KoF^0t?Ee7=ripa` diff --git a/test/snapshots/markdownlint-cli2-test-main.js.md b/test/snapshots/markdownlint-cli2-test-main.js.md index c76a91bd..2b3b0bcf 100644 --- a/test/snapshots/markdownlint-cli2-test-main.js.md +++ b/test/snapshots/markdownlint-cli2-test-main.js.md @@ -4377,11 +4377,11 @@ Generated by [AVA](https://avajs.dev). ##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#␊ + #Undefined=${undefined}#Column=10#Column=10##Column=10#␊ + #Undefined=${undefined}#Column=##No column number#No column number#␊ + #Undefined=${undefined}#Column=##No column number#No column number#␊ + #Undefined=${undefined}#Column=4#Column=4##Column=4#␊ + #Undefined=${undefined}#Column=14#Column=14##Column=14#␊ `, stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ diff --git a/test/snapshots/markdownlint-cli2-test-main.js.snap b/test/snapshots/markdownlint-cli2-test-main.js.snap index fe8d01fbfcc22cc739440b6e2885b54d3ebee8b8..a0735ece5154d7b25e7d4bdd2805131ca891387f 100644 GIT binary patch delta 11278 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 From 70a3324e2d2ebf1a676dabc0f0fe494a7200ba6f Mon Sep 17 00:00:00 2001 From: David Anson Date: Fri, 8 Nov 2024 20:34:08 -0800 Subject: [PATCH 52/55] Add pattern-matching test cases for formatter-template. --- .../.markdownlint-cli2.jsonc | 14 +++++++++ test/formatter-template/simple.md | 1 + test/markdownlint-cli2-test-cases.js | 7 +++++ test/markdownlint-cli2-test.js | 2 +- .../markdownlint-cli2-test-exec.js.md | 26 ++++++++++++++++ .../markdownlint-cli2-test-exec.js.snap | Bin 18428 -> 18517 bytes .../markdownlint-cli2-test-main.js.md | 28 ++++++++++++++++++ .../markdownlint-cli2-test-main.js.snap | Bin 14265 -> 14374 bytes 8 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 test/formatter-template/.markdownlint-cli2.jsonc create mode 100644 test/formatter-template/simple.md diff --git a/test/formatter-template/.markdownlint-cli2.jsonc b/test/formatter-template/.markdownlint-cli2.jsonc new file mode 100644 index 00000000..ed2849c2 --- /dev/null +++ b/test/formatter-template/.markdownlint-cli2.jsonc @@ -0,0 +1,14 @@ +{ + "outputFormatters": [ + [ "../../formatter-template", { "template": "${invalid}" } ], + [ "../../formatter-template", { "template": "${fileName}" } ], + [ "../../formatter-template", { "template": "${fileName}${fileName}${fileName}" } ], + [ "../../formatter-template", { "template": "${fileName:text{text}text}" } ], + [ "../../formatter-template", { "template": "${fileName:text{text}" } ], + [ "../../formatter-template", { "template": "${fileName:text}text}" } ], + [ "../../formatter-template", { "template": "${fileName:text${invalid}text}" } ], + [ "../../formatter-template", { "template": "${fileName:text${fileName}text}" } ], + [ "../../formatter-template", { "template": "${fileName:${fileName}}" } ], + [ "../../formatter-template", { "template": "${fileName:${fileName:${fileName}}}" } ] + ] +} diff --git a/test/formatter-template/simple.md b/test/formatter-template/simple.md new file mode 100644 index 00000000..d9b3ffed --- /dev/null +++ b/test/formatter-template/simple.md @@ -0,0 +1 @@ +# Heading \ No newline at end of file diff --git a/test/markdownlint-cli2-test-cases.js b/test/markdownlint-cli2-test-cases.js index 5cafa9ce..11fdfad6 100644 --- a/test/markdownlint-cli2-test-cases.js +++ b/test/markdownlint-cli2-test-cases.js @@ -960,6 +960,13 @@ const testCases = ({ } }); + testCase({ + "name": "formatter-template", + "args": [ "*.md" ], + "exitCode": 1, + "usesRequire": true + }); + testCase({ "name": "nested-files", "args": [ "**/*.md" ], diff --git a/test/markdownlint-cli2-test.js b/test/markdownlint-cli2-test.js index b08503ca..43c3f4b7 100644 --- a/test/markdownlint-cli2-test.js +++ b/test/markdownlint-cli2-test.js @@ -111,7 +111,7 @@ test("validateMarkdownlintConfigSchema", async (t) => { }); test("validateMarkdownlintCli2ConfigSchema", async (t) => { - t.plan(91); + t.plan(92); // Validate schema // @ts-ignore diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.md b/test/snapshots/markdownlint-cli2-test-exec.js.md index deb37bd3..9981bbff 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.js.md +++ b/test/snapshots/markdownlint-cli2-test-exec.js.md @@ -5890,6 +5890,32 @@ Generated by [AVA](https://avajs.dev). Summary: 15 error(s)`, } +## formatter-template (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + formatterSarif: '', + stderr: `${invalid}␊ + simple.md␊ + simple.mdsimple.mdsimple.md␊ + text{text}text␊ + text{text␊ + texttext}␊ + text${invalid}text␊ + textsimple.mdtext␊ + simple.md␊ + ${fileName}`, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: *.md␊ + Linting: 1 file(s)␊ + Summary: 1 error(s)`, + } + ## nested-files (exec) > Snapshot 1 diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.snap b/test/snapshots/markdownlint-cli2-test-exec.js.snap index 8fd8469d7efbb81371c843e4baf6612d896dcb8d..3c13475f84445bd08d527a13fbd45f14ac661a22 100644 GIT binary patch delta 17494 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 DC^E)} diff --git a/test/snapshots/markdownlint-cli2-test-main.js.md b/test/snapshots/markdownlint-cli2-test-main.js.md index 2b3b0bcf..2262b32b 100644 --- a/test/snapshots/markdownlint-cli2-test-main.js.md +++ b/test/snapshots/markdownlint-cli2-test-main.js.md @@ -5078,6 +5078,34 @@ Generated by [AVA](https://avajs.dev). `, } +## formatter-template (main) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + formatterSarif: '', + stderr: `${invalid}␊ + simple.md␊ + simple.mdsimple.mdsimple.md␊ + text{text}text␊ + text{text␊ + texttext}␊ + text${invalid}text␊ + textsimple.mdtext␊ + simple.md␊ + ${fileName}␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: *.md␊ + Linting: 1 file(s)␊ + Summary: 1 error(s)␊ + `, + } + ## nested-files (main) > Snapshot 1 diff --git a/test/snapshots/markdownlint-cli2-test-main.js.snap b/test/snapshots/markdownlint-cli2-test-main.js.snap index a0735ece5154d7b25e7d4bdd2805131ca891387f..798533a3c6a3cd9798b6b081c68c6baf064e28dd 100644 GIT binary patch literal 14374 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 Date: Fri, 8 Nov 2024 21:27:08 -0800 Subject: [PATCH 53/55] Attempt to fix polynomial regular expression warning in formatter-template by using separate patterns. --- .../markdownlint-cli2-formatter-template.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/formatter-template/markdownlint-cli2-formatter-template.js b/formatter-template/markdownlint-cli2-formatter-template.js index 9d1b72b3..8344e453 100644 --- a/formatter-template/markdownlint-cli2-formatter-template.js +++ b/formatter-template/markdownlint-cli2-formatter-template.js @@ -2,15 +2,17 @@ "use strict"; -// eslint-disable-next-line prefer-named-capture-group -const tokenRe = /\$\{(fileName|lineNumber|columnNumber|ruleName|ruleDescription|ruleInformation|errorContext|errorDetail)(?:([:!])([^{}]*\{[^{}]+\}[^{}]*|[^}]+))?\}/igu; +// eslint-disable-next-line no-template-curly-in-string +const defaultTemplate = "fileName=\"${fileName}\" lineNumber=${lineNumber} ${columnNumber:columnNumber=${columnNumber} }ruleName=${ruleName} ruleDescription=\"${ruleDescription}\" ruleInformation=${ruleInformation} errorContext=\"${errorContext}\" errorDetail=\"${errorDetail}\""; + +// Use separate regular expressions to avoid a polynomial worst case +const tokenRes = [ "fileName", "lineNumber", "columnNumber", "ruleName", "ruleDescription", "ruleInformation", "errorContext", "errorDetail" ]. + map((token) => new RegExp(`\\$\\{(${token})(?:([:!])([^{}]*\\{[^{}]+\\}[^{}]*|[^}]+))?\\}`, "gu")); // 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}\""; + const template = params?.template || defaultTemplate; for (const result of results) { const tokenToResult = { @@ -43,9 +45,10 @@ const outputFormatter = (options, params) => { } }; - const output = template. - replaceAll(tokenRe, replacer). - replaceAll(tokenRe, replacer); + let output = template; + for (const tokenRe of tokenRes) { + output = output.replaceAll(tokenRe, replacer).replaceAll(tokenRe, replacer); + } logError(output); } }; From 5834b281284448197119e4f9c5a5c8039ae1485e Mon Sep 17 00:00:00 2001 From: David Anson Date: Fri, 8 Nov 2024 21:33:40 -0800 Subject: [PATCH 54/55] Update formatter-template to version 0.0.2. --- formatter-template/package.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/formatter-template/package.json b/formatter-template/package.json index 73be411e..f7917287 100644 --- a/formatter-template/package.json +++ b/formatter-template/package.json @@ -1,6 +1,6 @@ { "name": "markdownlint-cli2-formatter-template", - "version": "0.0.1", + "version": "0.0.2", "description": "An output formatter for markdownlint-cli2 that displays results using a template", "author": { "name": "David Anson", diff --git a/package.json b/package.json index d561b255..11e50924 100644 --- a/package.json +++ b/package.json @@ -103,7 +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-cli2-formatter-template": "0.0.2", "markdownlint-rule-extended-ascii": "0.1.0", "npm-run-all": "4.1.5" }, From 5e920a94ae1997fdd4efb48dfb4b36b950b24903 Mon Sep 17 00:00:00 2001 From: David Anson Date: Sat, 9 Nov 2024 14:52:12 -0800 Subject: [PATCH 55/55] Update to version 0.15.0. --- CHANGELOG.md | 6 +++++ README.md | 6 ++--- markdownlint-cli2.js | 2 +- package.json | 2 +- schema/markdownlint-cli2-config-schema.json | 30 ++++++++++----------- 5 files changed, 26 insertions(+), 20 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e08870a2..46eeb0e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.15.0 + +- Add support for `stdin` input via `-` glob +- Add output formatter based on string templates +- Update dependencies (including `markdownlint`) + ## 0.14.0 - Handle `--` parameter per POSIX convention diff --git a/README.md b/README.md index a4644bd5..35e43fec 100644 --- a/README.md +++ b/README.md @@ -149,7 +149,7 @@ A container image [`davidanson/markdownlint-cli2`][docker-hub-markdownlint-cli2] can also be used (e.g., as part of a CI pipeline): ```bash -docker run -v $PWD:/workdir davidanson/markdownlint-cli2:v0.14.0 "**/*.md" "#node_modules" +docker run -v $PWD:/workdir davidanson/markdownlint-cli2:v0.15.0 "**/*.md" "#node_modules" ``` Notes: @@ -166,7 +166,7 @@ Notes: - A custom working directory can be specified with Docker's `-w` flag: ```bash - docker run -w /myfolder -v $PWD:/myfolder davidanson/markdownlint-cli2:v0.14.0 "**/*.md" "#node_modules" + docker run -w /myfolder -v $PWD:/myfolder davidanson/markdownlint-cli2:v0.15.0 "**/*.md" "#node_modules" ``` For convenience, the container image @@ -413,7 +413,7 @@ reference to the `repos` list in that project's `.pre-commit-config.yaml` like: ```yaml - repo: https://github.com/DavidAnson/markdownlint-cli2 - rev: v0.14.0 + rev: v0.15.0 hooks: - id: markdownlint-cli2 ``` diff --git a/markdownlint-cli2.js b/markdownlint-cli2.js index d1d54a7a..2ae120d6 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.js @@ -30,7 +30,7 @@ const resolveAndRequire = require("./resolve-and-require"); // Variables const packageName = "markdownlint-cli2"; -const packageVersion = "0.14.0"; +const packageVersion = "0.15.0"; const libraryName = "markdownlint"; const libraryVersion = getLibraryVersion(); const bannerMessage = `${packageName} v${packageVersion} (${libraryName} v${libraryVersion})`; diff --git a/package.json b/package.json index 11e50924..4e0ae1e0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "markdownlint-cli2", - "version": "0.14.0", + "version": "0.15.0", "description": "A fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the `markdownlint` library", "author": { "name": "David Anson", diff --git a/schema/markdownlint-cli2-config-schema.json b/schema/markdownlint-cli2-config-schema.json index b23b1913..b6737449 100644 --- a/schema/markdownlint-cli2-config-schema.json +++ b/schema/markdownlint-cli2-config-schema.json @@ -1,13 +1,13 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.14.0/schema/markdownlint-cli2-config-schema.json", + "$id": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.15.0/schema/markdownlint-cli2-config-schema.json", "title": "markdownlint-cli2 configuration schema", "type": "object", "properties": { "$schema": { "description": "JSON Schema URI (expected by some editors)", "type": "string", - "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.14.0/schema/markdownlint-cli2-config-schema.json" + "default": "https://raw.githubusercontent.com/DavidAnson/markdownlint-cli2/v0.15.0/schema/markdownlint-cli2-config-schema.json" }, "config": { "description": "markdownlint configuration schema : https://github.com/DavidAnson/markdownlint/blob/v0.36.1/schema/.markdownlint.jsonc", @@ -15,7 +15,7 @@ "default": {} }, "customRules": { - "description": "Module names or paths of custom rules to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Module names or paths of custom rules to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -25,18 +25,18 @@ } }, "fix": { - "description": "Whether to enable fixing of linting errors reported by rules that emit fix information : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to enable fixing of linting errors reported by rules that emit fix information : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "frontMatter": { - "description": "Regular expression used to match and ignore any front matter at the beginning of a document : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Regular expression used to match and ignore any front matter at the beginning of a document : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "string", "minLength": 1, "default": "" }, "gitignore": { - "description": "Whether to ignore files referenced by .gitignore (or glob expression) (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to ignore files referenced by .gitignore (or glob expression) (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": [ "boolean", "string" @@ -44,7 +44,7 @@ "default": false }, "globs": { - "description": "Glob expressions to include when linting (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Glob expressions to include when linting (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -54,7 +54,7 @@ } }, "ignores": { - "description": "Glob expressions to ignore when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Glob expressions to ignore when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -64,7 +64,7 @@ } }, "markdownItPlugins": { - "description": "markdown-it plugins to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "markdown-it plugins to load and use when linting : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -84,7 +84,7 @@ } }, "modulePaths": { - "description": "Additional paths to resolve module locations from : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Additional paths to resolve module locations from : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -94,22 +94,22 @@ } }, "noBanner": { - "description": "Whether to disable the display of the banner message and version numbers on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to disable the display of the banner message and version numbers on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "noInlineConfig": { - "description": "Whether to disable support of HTML comments within Markdown content : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to disable support of HTML comments within Markdown content : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "noProgress": { - "description": "Whether to disable the display of progress on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to disable the display of progress on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }, "outputFormatters": { - "description": "Output formatters to load and use to customize markdownlint-cli2 output (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Output formatters to load and use to customize markdownlint-cli2 output (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "array", "default": [], "items": { @@ -129,7 +129,7 @@ } }, "showFound": { - "description": "Whether to show the list of found files on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.14.0/README.md#markdownlint-cli2jsonc", + "description": "Whether to show the list of found files on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.15.0/README.md#markdownlint-cli2jsonc", "type": "boolean", "default": false }