From 714f17e4364f67b3927e812a40766e04bba541f7 Mon Sep 17 00:00:00 2001 From: David Anson Date: Tue, 2 May 2023 19:50:55 -0700 Subject: [PATCH 01/23] Remove support for end-of-life Node 14. --- .github/workflows/ci.yml | 5 +---- package.json | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7f6ad1b8..ea3ccef7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,13 +17,10 @@ jobs: fail-fast: false matrix: os: [ macos-latest, ubuntu-latest, windows-latest ] - node-version: [ 14, 16, 18, 20 ] + node-version: [ 16, 18, 20 ] steps: - uses: actions/checkout@v3 - - name: Edit .npmrc to avoid setup-node issue with Node 14 - if: ${{ matrix.node-version == '14' }} - run: perl -i -p -e 's/(ignore-scripts=true)/# $1/' .npmrc && git add .npmrc - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v3 with: diff --git a/package.json b/package.json index b55a9f6a..b1b261ca 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ "webworker-install": "npm run docker-npm-install -- --no-save path-browserify process setimmediate stream-browserify url util webpack-cli" }, "engines": { - "node": ">=14.18.0" + "node": ">=16" }, "files": [ "append-to-array.js", From c1e527cda978634f0a9cfdf5b405df259587f91d Mon Sep 17 00:00:00 2001 From: David Anson Date: Tue, 2 May 2023 20:15:56 -0700 Subject: [PATCH 02/23] Use AggregateError now that all supported versions of Node allow it. --- markdownlint-cli2.js | 7 +++++-- test/markdownlint-cli2-test-cases.js | 14 +++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/markdownlint-cli2.js b/markdownlint-cli2.js index 9c857fd0..c6353a06 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.js @@ -87,8 +87,11 @@ const importOrRequireResolve = async (dir, id) => { } catch (error) { errors.push(error); } - // Use AggregateError once available in Node 15+ - throw new Error(errors.map((error) => error.message).join(" / ")); + // @ts-ignore + throw new AggregateError( + errors, + `Unable to require or import module '${id}'.` + ); } return id; }; diff --git a/test/markdownlint-cli2-test-cases.js b/test/markdownlint-cli2-test-cases.js index f989f79b..ec62790c 100644 --- a/test/markdownlint-cli2-test-cases.js +++ b/test/markdownlint-cli2-test-cases.js @@ -287,14 +287,14 @@ const testCases = testCase({ "name": "markdownlint-cjs-invalid", "args": [ ".*" ], - "stderrRe": /Unexpected end of input/u, + "stderrRe": /Unable to require or import module '/u, "usesRequire": true }); testCase({ "name": "markdownlint-mjs-invalid", "args": [ ".*" ], - "stderrRe": /Unexpected end of input/u, + "stderrRe": /Unable to require or import module '/u, "usesRequire": true }); @@ -353,14 +353,14 @@ const testCases = testCase({ "name": "markdownlint-cli2-cjs-invalid", "args": [ ".*" ], - "stderrRe": /Unexpected end of input/u, + "stderrRe": /Unable to require or import module '/u, "usesRequire": true }); testCase({ "name": "markdownlint-cli2-mjs-invalid", "args": [ ".*" ], - "stderrRe": /Unexpected end of input/u, + "stderrRe": /Unable to require or import module '/u, "usesRequire": true }); @@ -599,7 +599,7 @@ const testCases = testCase({ "name": "customRules-missing", "args": [ ".*" ], - "stderrRe": /Cannot find module 'missing-package'/u, + "stderrRe": /Unable to require or import module 'missing-package'\./u, "usesRequire": true }); @@ -625,7 +625,7 @@ const testCases = testCase({ "name": "markdownItPlugins-missing", "args": [ ".*" ], - "stderrRe": /Cannot find module 'missing-package'/u, + "stderrRe": /Unable to require or import module 'missing-package'\./u, "usesRequire": true }); @@ -697,7 +697,7 @@ const testCases = testCase({ "name": "outputFormatters-missing", "args": [ ".*" ], - "stderrRe": /Cannot find module 'missing-package'/u, + "stderrRe": /Unable to require or import module 'missing-package'\./u, "usesRequire": true }); From df5d0c9b918b5db6adb411874935e62c337877a4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 3 May 2023 16:00:51 +0000 Subject: [PATCH 03/23] Bump cpy from 9.0.1 to 10.0.0 Bumps [cpy](https://github.com/sindresorhus/cpy) from 9.0.1 to 10.0.0. - [Release notes](https://github.com/sindresorhus/cpy/releases) - [Commits](https://github.com/sindresorhus/cpy/compare/v9.0.1...v10.0.0) --- updated-dependencies: - dependency-name: cpy dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b1b261ca..fc820681 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "@iktakahiro/markdown-it-katex": "4.0.1", "ava": "5.2.0", "c8": "7.13.0", - "cpy": "9.0.1", + "cpy": "10.0.0", "del": "7.0.0", "eslint": "8.39.0", "eslint-plugin-n": "15.7.0", From 26164fc99016d0f9917c4067fffce13849fef920 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 15:12:46 +0000 Subject: [PATCH 04/23] Bump eslint-plugin-unicorn from 46.0.0 to 47.0.0 Bumps [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) from 46.0.0 to 47.0.0. - [Release notes](https://github.com/sindresorhus/eslint-plugin-unicorn/releases) - [Commits](https://github.com/sindresorhus/eslint-plugin-unicorn/compare/v46.0.0...v47.0.0) --- updated-dependencies: - dependency-name: eslint-plugin-unicorn dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fc820681..978b3c53 100644 --- a/package.json +++ b/package.json @@ -76,7 +76,7 @@ "del": "7.0.0", "eslint": "8.39.0", "eslint-plugin-n": "15.7.0", - "eslint-plugin-unicorn": "46.0.0", + "eslint-plugin-unicorn": "47.0.0", "execa": "7.1.1", "markdown-it-emoji": "2.0.2", "markdown-it-for-inline": "0.1.1", From 1bf7fc2a2271f76e95c6c6ffaca9b9b077fc3d72 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 19:36:26 +0000 Subject: [PATCH 05/23] Bump eslint from 8.39.0 to 8.40.0 Bumps [eslint](https://github.com/eslint/eslint) from 8.39.0 to 8.40.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/v8.39.0...v8.40.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 978b3c53..16c34ce2 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "c8": "7.13.0", "cpy": "10.0.0", "del": "7.0.0", - "eslint": "8.39.0", + "eslint": "8.40.0", "eslint-plugin-n": "15.7.0", "eslint-plugin-unicorn": "47.0.0", "execa": "7.1.1", From 34a4382f94e0b5be63973e8e9231754b983e845e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 May 2023 16:08:35 +0000 Subject: [PATCH 06/23] Bump cpy from 10.0.0 to 10.1.0 Bumps [cpy](https://github.com/sindresorhus/cpy) from 10.0.0 to 10.1.0. - [Release notes](https://github.com/sindresorhus/cpy/releases) - [Commits](https://github.com/sindresorhus/cpy/compare/v10.0.0...v10.1.0) --- updated-dependencies: - dependency-name: cpy 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 16c34ce2..55c0f1f3 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "@iktakahiro/markdown-it-katex": "4.0.1", "ava": "5.2.0", "c8": "7.13.0", - "cpy": "10.0.0", + "cpy": "10.1.0", "del": "7.0.0", "eslint": "8.40.0", "eslint-plugin-n": "15.7.0", From bb1bf8f2393d4d293a2019cc0eef987afafb6b19 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 May 2023 16:01:16 +0000 Subject: [PATCH 07/23] Bump eslint-plugin-n from 15.7.0 to 16.0.0 Bumps [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) from 15.7.0 to 16.0.0. - [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases) - [Commits](https://github.com/eslint-community/eslint-plugin-n/compare/15.7.0...16.0.0) --- updated-dependencies: - dependency-name: eslint-plugin-n dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 55c0f1f3..81bdc02f 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,7 @@ "cpy": "10.1.0", "del": "7.0.0", "eslint": "8.40.0", - "eslint-plugin-n": "15.7.0", + "eslint-plugin-n": "16.0.0", "eslint-plugin-unicorn": "47.0.0", "execa": "7.1.1", "markdown-it-emoji": "2.0.2", From 218b57d3d88d27777913a0481e2dcfa37ae65ac6 Mon Sep 17 00:00:00 2001 From: David Anson Date: Fri, 19 May 2023 21:10:39 -0700 Subject: [PATCH 08/23] Add "pinning" requirement for package dependencies to CONTRIBUTING.md (refs #154). --- CONTRIBUTING.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b2f14bd9..472eaca3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,6 +13,11 @@ may not get used. Match the coding style of the files you edit. Although everyone has their own preferences and opinions, a pull request is not the right forum to debate them. +Package versions for `dependencies` and `devDependencies` should be specified +exactly (also known as "pinning"). The short explanation is that doing otherwise +eventually leads to inconsistent behavior and broken functionality. (See [Pin +your npm/yarn dependencies][pin-dependencies] for a longer explanation.) + Add tests for all new/changed functionality. Test positive and negative scenarios. Try to break the code now, or else it will get broken later. @@ -43,8 +48,7 @@ allowed. Thank you! - - [example-com]: https://en.wikipedia.org/wiki/Example.com [github-issues]: https://github.com/DavidAnson/markdownlint-cli2/issues [linking-pull-request]: https://docs.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword +[pin-dependencies]: https://maxleiter.com/blog/pin-dependencies From f83733e8feccd6b8aef5cb9adb85ac9e5717f2ee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 16:03:17 +0000 Subject: [PATCH 09/23] Bump eslint from 8.40.0 to 8.41.0 Bumps [eslint](https://github.com/eslint/eslint) from 8.40.0 to 8.41.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/v8.40.0...v8.41.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 81bdc02f..c50c9c58 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "c8": "7.13.0", "cpy": "10.1.0", "del": "7.0.0", - "eslint": "8.40.0", + "eslint": "8.41.0", "eslint-plugin-n": "16.0.0", "eslint-plugin-unicorn": "47.0.0", "execa": "7.1.1", From 7a10150f07072573509899bdff2f55d415407a6d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 May 2023 16:00:34 +0000 Subject: [PATCH 10/23] Bump yaml from 2.2.2 to 2.3.0 Bumps [yaml](https://github.com/eemeli/yaml) from 2.2.2 to 2.3.0. - [Release notes](https://github.com/eemeli/yaml/releases) - [Commits](https://github.com/eemeli/yaml/compare/v2.2.2...v2.3.0) --- updated-dependencies: - dependency-name: yaml dependency-type: direct:production 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 c50c9c58..d354bb06 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "markdownlint-cli2-formatter-default": "0.0.4", "micromatch": "4.0.5", "strip-json-comments": "5.0.0", - "yaml": "2.2.2" + "yaml": "2.3.0" }, "devDependencies": { "@iktakahiro/markdown-it-katex": "4.0.1", From e313b798298403e4f162c1d0eaf407e62df821a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 May 2023 16:00:50 +0000 Subject: [PATCH 11/23] Bump ava from 5.2.0 to 5.3.0 Bumps [ava](https://github.com/avajs/ava) from 5.2.0 to 5.3.0. - [Release notes](https://github.com/avajs/ava/releases) - [Commits](https://github.com/avajs/ava/compare/v5.2.0...v5.3.0) --- updated-dependencies: - dependency-name: ava 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 d354bb06..a330ebae 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ }, "devDependencies": { "@iktakahiro/markdown-it-katex": "4.0.1", - "ava": "5.2.0", + "ava": "5.3.0", "c8": "7.13.0", "cpy": "10.1.0", "del": "7.0.0", From 0eb82028e6031f5b2062d0d571fa57dda6048b08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 26 May 2023 16:00:33 +0000 Subject: [PATCH 12/23] Bump yaml from 2.3.0 to 2.3.1 Bumps [yaml](https://github.com/eemeli/yaml) from 2.3.0 to 2.3.1. - [Release notes](https://github.com/eemeli/yaml/releases) - [Commits](https://github.com/eemeli/yaml/compare/v2.3.0...v2.3.1) --- updated-dependencies: - dependency-name: yaml dependency-type: direct:production 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 a330ebae..54218d7f 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "markdownlint-cli2-formatter-default": "0.0.4", "micromatch": "4.0.5", "strip-json-comments": "5.0.0", - "yaml": "2.3.0" + "yaml": "2.3.1" }, "devDependencies": { "@iktakahiro/markdown-it-katex": "4.0.1", From 2a2f161839729171d876b842aa6fc952b7c9a7de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 16:01:39 +0000 Subject: [PATCH 13/23] Bump c8 from 7.13.0 to 7.14.0 Bumps [c8](https://github.com/bcoe/c8) from 7.13.0 to 7.14.0. - [Release notes](https://github.com/bcoe/c8/releases) - [Changelog](https://github.com/bcoe/c8/blob/main/CHANGELOG.md) - [Commits](https://github.com/bcoe/c8/compare/v7.13.0...v7.14.0) --- updated-dependencies: - dependency-name: c8 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 54218d7f..ce30b3e6 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "devDependencies": { "@iktakahiro/markdown-it-katex": "4.0.1", "ava": "5.3.0", - "c8": "7.13.0", + "c8": "7.14.0", "cpy": "10.1.0", "del": "7.0.0", "eslint": "8.41.0", From 7f3c2ac3096ba29af8ee2a1d35e7a4ffe06a5203 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Jun 2023 16:00:47 +0000 Subject: [PATCH 14/23] Bump markdownlint from 0.28.2 to 0.29.0 Bumps [markdownlint](https://github.com/DavidAnson/markdownlint) from 0.28.2 to 0.29.0. - [Changelog](https://github.com/DavidAnson/markdownlint/blob/main/CHANGELOG.md) - [Commits](https://github.com/DavidAnson/markdownlint/compare/v0.28.2...v0.29.0) --- updated-dependencies: - dependency-name: markdownlint dependency-type: direct:production 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 ce30b3e6..9e358c83 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ ], "dependencies": { "globby": "13.1.4", - "markdownlint": "0.28.2", + "markdownlint": "0.29.0", "markdownlint-cli2-formatter-default": "0.0.4", "micromatch": "4.0.5", "strip-json-comments": "5.0.0", From 31f5ebdfe285ec831dcfeb8951ebc17f7c2551f5 Mon Sep 17 00:00:00 2001 From: David Anson Date: Fri, 2 Jun 2023 21:49:44 -0700 Subject: [PATCH 15/23] Update npm scripts to use node:latest instead of node:16. --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 9e358c83..e5dfdaf2 100644 --- a/package.json +++ b/package.json @@ -29,8 +29,8 @@ "build-docker-image": "VERSION=$(node -e \"process.stdout.write(require('./package.json').version)\") && docker build -t davidanson/markdownlint-cli2:v$VERSION -f docker/Dockerfile --label org.opencontainers.image.version=v$VERSION .", "build-docker-image-rules": "VERSION=$(node -e \"process.stdout.write(require('./package.json').version)\") && docker build -t davidanson/markdownlint-cli2-rules:v$VERSION -f docker/Dockerfile-rules --build-arg VERSION=v$VERSION --label org.opencontainers.image.version=v$VERSION .", "ci": "npm-run-all --continue-on-error --parallel test-cover lint", - "docker-npm-install": "docker run --rm --tty --name npm-install --volume $PWD:/home/workdir --workdir /home/workdir --user node node:16 npm install", - "docker-npm-run-upgrade": "docker run --rm --tty --name npm-run-upgrade --volume $PWD:/home/workdir --workdir /home/workdir --user node node:16 npm run upgrade", + "docker-npm-install": "docker run --rm --tty --name npm-install --volume $PWD:/home/workdir --workdir /home/workdir --user node node:latest npm install", + "docker-npm-run-upgrade": "docker run --rm --tty --name npm-run-upgrade --volume $PWD:/home/workdir --workdir /home/workdir --user node node:latest npm run upgrade", "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", From 20013e4422db8821a0557daab354488f216ecb50 Mon Sep 17 00:00:00 2001 From: David Anson Date: Sat, 3 Jun 2023 17:45:14 -0700 Subject: [PATCH 16/23] Make exitCode explicit for all test case definitions. --- test/markdownlint-cli2-test-cases.js | 130 ++++++++++++++++++++++----- 1 file changed, 106 insertions(+), 24 deletions(-) diff --git a/test/markdownlint-cli2-test-cases.js b/test/markdownlint-cli2-test-cases.js index ec62790c..973a3759 100644 --- a/test/markdownlint-cli2-test-cases.js +++ b/test/markdownlint-cli2-test-cases.js @@ -20,7 +20,7 @@ const testCases = (host, invoke, absolute, includeNoRequire, includeEnv, includeScript, includeRequire) => { const testCase = (options) => { - const { name, script, args, cwd, env, stderrRe, pre, post, + const { name, script, args, exitCode, cwd, env, stderrRe, pre, post, noRequire, usesEnv, usesRequire, usesScript } = options; if ( (noRequire && !includeNoRequire) || @@ -31,7 +31,7 @@ const testCases = return; } test(`${name} (${host})`, (t) => { - t.plan(2); + t.plan(3); const directory = path.join(__dirname, cwd || name); return ((pre || noop)(name) || Promise.resolve()). then(invoke(directory, args, noRequire, env, script)). @@ -74,6 +74,7 @@ const testCases = formatterOutputJunit, formatterOutputJunitCustom ] = results; + t.is(child.exitCode, exitCode); const actual = { "exitCode": child.exitCode, "stdout": sanitize(child.stdout), @@ -117,6 +118,7 @@ const testCases = testCase({ "name": "no-arguments", "args": [], + "exitCode": 1, "cwd": "no-config" }); @@ -150,143 +152,169 @@ const testCases = testCase({ "name": "no-files", "args": [ "nothing-matches" ], + "exitCode": 0, "cwd": "no-config" }); testCase({ "name": "no-files-exclamation", "args": [ "!" ], + "exitCode": 0, "cwd": "no-config" }); testCase({ "name": "no-files-octothorpe", "args": [ "#" ], + "exitCode": 0, "cwd": "no-config" }); testCase({ "name": "all-ok", - "args": [ "**/*.md", "**/*.markdown" ] + "args": [ "**/*.md", "**/*.markdown" ], + "exitCode": 0 }); testCase({ "name": "no-config", - "args": [ "**" ] + "args": [ "**" ], + "exitCode": 1 }); testCase({ "name": "no-config-ignore", "args": [ "**", "!dir" ], + "exitCode": 1, "cwd": "no-config" }); testCase({ "name": "no-config-unignore", "args": [ "**", "!dir", "dir/subdir" ], + "exitCode": 1, "cwd": "no-config" }); testCase({ "name": "no-config-ignore-hash", "args": [ "**", "#dir" ], + "exitCode": 1, "cwd": "no-config" }); testCase({ "name": "file-paths-as-args", "args": [ "viewme.md", "./dir/subdir/info.md" ], + "exitCode": 1, "cwd": "no-config" }); testCase({ "name": "dot", - "args": [ "." ] + "args": [ "." ], + "exitCode": 1 }); testCase({ "name": "dotfiles", - "args": [ "**" ] + "args": [ "**" ], + "exitCode": 1 }); testCase({ "name": "dotfiles-exclude", "args": [ "**", "!.dir", "!**/.info.md" ], + "exitCode": 1, "cwd": "dotfiles" }); testCase({ "name": "globs", - "args": [] + "args": [], + "exitCode": 1 }); testCase({ "name": "globs-and-args", - "args": [ "**/*.markdown" ] + "args": [ "**/*.markdown" ], + "exitCode": 1 }); testCase({ "name": "globs-and-ignores", - "args": [] + "args": [], + "exitCode": 1 }); testCase({ "name": "markdownlint-json", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 1 }); testCase({ "name": "markdownlint-json-extends", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 1 }); testCase({ "name": "markdownlint-jsonc", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 1 }); testCase({ "name": "markdownlint-yaml", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 1 }); testCase({ "name": "markdownlint-yml", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 1 }); testCase({ "name": "markdownlint-cjs", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "markdownlint-mjs", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "markdownlint-json-yaml", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 1 }); testCase({ "name": "markdownlint-json-invalid", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /(?:Unexpected end)|(?:Expected property name)/u }); testCase({ "name": "markdownlint-yaml-invalid", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /Map keys must be unique/u }); testCase({ "name": "markdownlint-cjs-invalid", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /Unable to require or import module '/u, "usesRequire": true }); @@ -294,18 +322,21 @@ const testCases = testCase({ "name": "markdownlint-mjs-invalid", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /Unable to require or import module '/u, "usesRequire": true }); testCase({ "name": "markdownlint-cli2-jsonc", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 1 }); testCase({ "name": "markdownlint-cli2-jsonc-example", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": directoryName("markdownlint-cli2-jsonc-example"), "pre": copyDirectory, "post": deleteDirectory, @@ -315,17 +346,20 @@ const testCases = testCase({ "name": "markdownlint-cli2-jsonc-invalid", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /(?:Unexpected end)|(?:Expected property name)/u }); testCase({ "name": "markdownlint-cli2-yaml", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 1 }); testCase({ "name": "markdownlint-cli2-yaml-example", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": directoryName("markdownlint-cli2-yaml-example"), "pre": copyDirectory, "post": deleteDirectory, @@ -335,24 +369,28 @@ const testCases = testCase({ "name": "markdownlint-cli2-yaml-invalid", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /Map keys must be unique/u }); testCase({ "name": "markdownlint-cli2-cjs", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "markdownlint-cli2-mjs", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "markdownlint-cli2-cjs-invalid", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /Unable to require or import module '/u, "usesRequire": true }); @@ -360,6 +398,7 @@ const testCases = testCase({ "name": "markdownlint-cli2-mjs-invalid", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /Unable to require or import module '/u, "usesRequire": true }); @@ -367,37 +406,44 @@ const testCases = testCase({ "name": "markdownlint-cli2-extends", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "config-overrides-options", - "args": [ "viewme.md" ] + "args": [ "viewme.md" ], + "exitCode": 1 }); testCase({ "name": "ignores", - "args": [ "**/*.md", "**/*.markdown" ] + "args": [ "**/*.md", "**/*.markdown" ], + "exitCode": 1 }); testCase({ "name": "sibling-directory", - "args": [ "../markdownlint-json/**/*.md" ] + "args": [ "../markdownlint-json/**/*.md" ], + "exitCode": 1 }); testCase({ "name": "sibling-directory-options", - "args": [ "../no-config/**/*.md" ] + "args": [ "../no-config/**/*.md" ], + "exitCode": 1 }); testCase({ "name": "noInlineConfig", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 1 }); testCase({ "name": "frontMatter", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 0 }); testCase({ @@ -408,6 +454,7 @@ const testCases = ":dir(1)/viewme.md", ":dir(1)/(view)me.md" ], + "exitCode": 1, "cwd": "literal-files/sentinel" }); @@ -423,12 +470,14 @@ const testCases = `:${literalFilesAbsoluteFile}`, "sentinel/dir" ], + "exitCode": 1, "cwd": "literal-files" }); testCase({ "name": "fix", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": directoryName("fix"), "pre": copyDirectory, "post": deleteDirectory @@ -437,6 +486,7 @@ const testCases = testCase({ "name": "fix-scenarios", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": directoryName("fix-scenarios"), "pre": copyDirectory, "post": deleteDirectory @@ -446,6 +496,7 @@ const testCases = "name": "fix-default-true", "script": "markdownlint-cli2-fix.js", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": directoryName("fix-default-true"), "pre": copyDirectory, "post": deleteDirectory, @@ -456,6 +507,7 @@ const testCases = "name": "fix-default-true-override", "script": "markdownlint-cli2-fix.js", "args": [ "**/*.md" ], + "exitCode": 1, "usesScript": true }); @@ -578,6 +630,7 @@ const testCases = "name": "config-with-fix", "script": "markdownlint-cli2-config.js", "args": [ "config/.markdownlint-cli2.jsonc", "viewme.md", "info.md" ], + "exitCode": 0, "cwd": directoryName("config-with-fix"), "pre": copyDirectory, "post": deleteDirectory, @@ -587,18 +640,21 @@ const testCases = testCase({ "name": "customRules", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "customRules-pre-imported", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "customRules-missing", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /Unable to require or import module 'missing-package'\./u, "usesRequire": true }); @@ -606,6 +662,7 @@ const testCases = testCase({ "name": "customRules-invalid", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /Property 'names' of custom rule at index 0 is incorrect\./u, "usesRequire": true }); @@ -613,18 +670,21 @@ const testCases = testCase({ "name": "customRules-throws", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "markdownItPlugins", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "markdownItPlugins-missing", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /Unable to require or import module 'missing-package'\./u, "usesRequire": true }); @@ -632,6 +692,7 @@ const testCases = testCase({ "name": "outputFormatters", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": directoryName("outputFormatters"), "pre": copyDirectory, "post": deleteDirectory, @@ -641,6 +702,7 @@ const testCases = testCase({ "name": "outputFormatters-npm", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": directoryName("outputFormatters-npm"), "pre": copyDirectory, "post": deleteDirectory, @@ -655,6 +717,7 @@ const testCases = testCase({ "name": "outputFormatters-params", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": directoryName("outputFormatters-params"), "pre": copyDirectory, "post": deleteDirectory, @@ -664,6 +727,7 @@ const testCases = testCase({ "name": "outputFormatters-params-absolute", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": directoryName("outputFormatters-params-absolute"), "pre": copyDirectory, "post": deleteDirectory, @@ -673,6 +737,7 @@ const testCases = testCase({ "name": "outputFormatters-pre-imported", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": directoryName("outputFormatters-pre-imported"), "pre": copyDirectory, "post": deleteDirectory, @@ -682,6 +747,7 @@ const testCases = testCase({ "name": "outputFormatters-clean", "args": [ "**/*.md" ], + "exitCode": 0, "cwd": directoryName("outputFormatters-clean"), "pre": copyDirectory, "post": deleteDirectory, @@ -691,12 +757,14 @@ const testCases = testCase({ "name": "outputFormatters-file", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "outputFormatters-missing", "args": [ ".*" ], + "exitCode": 2, "stderrRe": /Unable to require or import module 'missing-package'\./u, "usesRequire": true }); @@ -704,12 +772,14 @@ const testCases = testCase({ "name": "formatter-summarize", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "formatter-pretty", "args": [ "**/*.md" ], + "exitCode": 1, "env": { "FORCE_COLOR": 1, "FORCE_HYPERLINK": 1 @@ -720,6 +790,7 @@ const testCases = testCase({ "name": "formatter-pretty-appendLink", "args": [ "**/*.md" ], + "exitCode": 1, "env": { "FORCE_COLOR": 1 }, @@ -728,24 +799,28 @@ const testCases = testCase({ "name": "nested-files", - "args": [ "**/*.md" ] + "args": [ "**/*.md" ], + "exitCode": 1 }); testCase({ "name": "nested-directories", "args": [ "**", "!a", "a/b", "#a/b/c", "a/b/c/d" ], + "exitCode": 1, "cwd": "nested-directories" }); testCase({ "name": "nested-options-config", "args": [ "**/*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "markdownlint-cjs-no-require", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": "markdownlint-cjs", "noRequire": true }); @@ -753,6 +828,7 @@ const testCases = testCase({ "name": "markdownlint-mjs-no-require", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": "markdownlint-mjs", "noRequire": true }); @@ -760,6 +836,7 @@ const testCases = testCase({ "name": "markdownlint-cli2-cjs-no-require", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": "markdownlint-cli2-cjs", "noRequire": true }); @@ -767,6 +844,7 @@ const testCases = testCase({ "name": "markdownlint-cli2-mjs-no-require", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": "markdownlint-cli2-mjs", "noRequire": true }); @@ -774,6 +852,7 @@ const testCases = testCase({ "name": "customRules-no-require", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": "customRules", "noRequire": true }); @@ -781,6 +860,7 @@ const testCases = testCase({ "name": "markdownItPlugins-no-require", "args": [ "**/*.md" ], + "exitCode": 1, "cwd": "markdownItPlugins", "noRequire": true }); @@ -790,12 +870,14 @@ const testCases = testCase({ "name": "tilde-paths-commonjs", "args": [ "*.md" ], + "exitCode": 1, "usesRequire": true }); testCase({ "name": "tilde-paths-module", "args": [ "*.md" ], + "exitCode": 1, "usesRequire": true }); From 112c947be9c1e168a75a32ca77aeb7b26d40e796 Mon Sep 17 00:00:00 2001 From: David Anson Date: Sat, 3 Jun 2023 17:57:54 -0700 Subject: [PATCH 17/23] Update exit code for scenarios that call showHelp to return 2 (linting not completed) instead of 1 (linting completed with errors). --- markdownlint-cli2.js | 2 +- test/markdownlint-cli2-test-cases.js | 8 ++++---- .../markdownlint-cli2-test-exec.js.md | 8 ++++---- .../markdownlint-cli2-test-exec.js.snap | Bin 10783 -> 10787 bytes .../snapshots/markdownlint-cli2-test-fs.js.md | 2 +- .../markdownlint-cli2-test-fs.js.snap | Bin 4373 -> 4376 bytes .../markdownlint-cli2-test-main.js.md | 2 +- .../markdownlint-cli2-test-main.js.snap | Bin 8890 -> 8893 bytes 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/markdownlint-cli2.js b/markdownlint-cli2.js index c6353a06..2ad1b908 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.js @@ -862,7 +862,7 @@ const main = async (params) => { ); if ((globPatterns.length === 0) && !nonFileContents) { showHelp(logMessage); - return 1; + return 2; } // Include any file overrides or non-file content const resolvedFileContents = {}; diff --git a/test/markdownlint-cli2-test-cases.js b/test/markdownlint-cli2-test-cases.js index 973a3759..a3f32061 100644 --- a/test/markdownlint-cli2-test-cases.js +++ b/test/markdownlint-cli2-test-cases.js @@ -118,7 +118,7 @@ const testCases = testCase({ "name": "no-arguments", "args": [], - "exitCode": 1, + "exitCode": 2, "cwd": "no-config" }); @@ -126,7 +126,7 @@ const testCases = "name": "no-arguments-fix", "script": "markdownlint-cli2-fix.js", "args": [], - "exitCode": 1, + "exitCode": 2, "cwd": "no-config", "usesScript": true }); @@ -135,7 +135,7 @@ const testCases = "name": "no-arguments-config", "script": "markdownlint-cli2-config.js", "args": [], - "exitCode": 1, + "exitCode": 2, "cwd": "no-config", "usesScript": true }); @@ -144,7 +144,7 @@ const testCases = "name": "one-argument-config", "script": "markdownlint-cli2-config.js", "args": [ "../config-files/cfg/.markdownlint-cli2.jsonc" ], - "exitCode": 1, + "exitCode": 2, "cwd": "no-config", "usesScript": true }); diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.md b/test/snapshots/markdownlint-cli2-test-exec.js.md index 4b644ca3..7c532418 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.js.md +++ b/test/snapshots/markdownlint-cli2-test-exec.js.md @@ -9,7 +9,7 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 { - exitCode: 1, + exitCode: 2, formatterCodeQuality: '', formatterJson: '', formatterJunit: '', @@ -59,7 +59,7 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 { - exitCode: 1, + exitCode: 2, formatterCodeQuality: '', formatterJson: '', formatterJunit: '', @@ -109,7 +109,7 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 { - exitCode: 1, + exitCode: 2, formatterCodeQuality: '', formatterJson: '', formatterJunit: '', @@ -159,7 +159,7 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 { - exitCode: 1, + exitCode: 2, formatterCodeQuality: '', formatterJson: '', formatterJunit: '', diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.snap b/test/snapshots/markdownlint-cli2-test-exec.js.snap index 6b2aa522ae22787ebd325d62ffc2e8c85b0e96be..175a16f944b8469ff4aad1a78007456eb9806f6b 100644 GIT binary patch literal 10787 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 XL&`TUFveg=|0WFkz(YaC1O@s(pSlsR literal 10783 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

9S0W==5*Vxuj|K0zL-BoSwf6ERM( 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 Snapshot 1 { - exitCode: 1, + exitCode: 2, formatterCodeQuality: '', formatterJson: '', formatterJunit: '', diff --git a/test/snapshots/markdownlint-cli2-test-fs.js.snap b/test/snapshots/markdownlint-cli2-test-fs.js.snap index 8bc2e564fc0503f751cf5f568be4e84bceefccb0..5a3a077bf1a04d7b963d8b9364418ce0c9a4e80b 100644 GIT binary patch literal 4376 zcmV+z5$EnfRzVCpF;Km0QtWQf%+9QLZI5#)gE4l> zHUvAx#o3BAl4eG`8ueH$?FB-mphzX*i7N7t7f5mW2Z1UQ_yu`RDn(L7Do=UMOWq*K z>6YfA(Pg!}(;8{2Da5c+tIz2^m+zczb@zLXx`CA~^4rq;nyuT0cE`k$Y&D&>X4(WT zHpr4rOu0i^*e0*Nr>e3ozj)&1V^hbc=s$%Mh2u}a?`61JaQz0ZKfv`5xW0nx8-=<1 z3v)zA%-&x(q3!DSlUUW*jhVvq(DMfx z*lNqRty#3tj~v<1?LF_|)KJ-bdu4w}uo+S4YyCowsoN2y=7_ComKF09JKcAuH;%Vu zYfHsDrlFg*q!@Y?ZNE@@vGfvJ9DL&4Tq?F~yF+T_a#OckPQ9eycKM>bt*aMI;JX~C ztXRCUXWH^^4F%~m4P0MAx9Cr01Klc>N*nH9*EfpD`zP?0)X;Yi`KE%+hTcT(57c95 zu@x1chF_%Zb}Wq$9h+3YEZjzR%YCoDhYY=L$=2Rdttg>oplB;CjUd_FL#ETNYZk%{ zq_kv9RzPOtaa4C~WMUhYq5Kc}MyyRq-xz%3`d1}*ekERie$sUI|PBs z009tFTb78{ffsB|1;&X@YgoY6!eA5O)p-POoIS+~=7qKm2)7WF(N&E07yv|rPRkRRPn9>5; z!Hz-M2aVLWHEYkUPB$54#jz})h*aGIv&Hb#wlodxv~;C~bb>k-uFG|xM|&2k&`ecR zf$SBN*qW?DC)%`FTkdqAk8B*q!*c1Bw)%MY{;LaK?X&=)eU7eqj~Hhpk~P{|e6WT* z?mmm|pXKERq{t>n067F&pu6oV7N2A)?||$<$Y@)aX=j%L6_hr?hL!L~dve zsxl!@+M8tf6_-SyJi8qzOKAp+?gbeM<$;keK51b>q>drm)Oph01Krc>I`zf07k+&G z$_t40=kvO$QiCBa%`gZx3VN4nCdgG$u*HlEltR@T4ULJ%azMi8(H#fd^jRN>K#4$b zAgHc}-N0>an1YJU$86LBDj;~*14y(g5ZvNpO9Qp-K=JcX+^KgbHoIxZ{8ps;C8R?zV(=n%4|)DMSN$ ziXpdM{aTz~qKZ7oF!WMOCM{cTqQz6gtb1AywJ0*ti022Wi$I>o0@3QsmF>uuiiiPK zp~dnN0%FwUy3z$Ibs53~_xVp49oexl2|pMekSA>B|rJF@|!=X#J<^+7zWU^TiEJoLSWey*cP~C32#M-=q(|l zC=oe_6_E#2-mh1*FSfNLVl%u`yB;o#a?#KyuA&a7${%jV)_Oe_Dc|lj# zDzyr_c5$UzDMP=t9mCc;5EYS*tY{!P3~{<7+q>wR_XM#gG;bh~KC!3?{sQE2%OYBq z*n3d01))6+(r!U?Z)>}D4WbW(E>OA%om$u^`q(&4nOLos>xOJ@5lObNW2zF(0|~my z{tGgsxfLW21kw-s7|21A%if@w3h*&Nt5Ra`4bxfkntQH{4GHo}nyx=%LH~5KPDlgW z$a`?>sof69TT^SOdLCU+Y!F!ut)53WXbWqoQm&R)T>`|Z(;wYzVAiXQ$Z&JKE+HYe zAxTD;y~oL#+UKp(=WXRYdP0N5dc)W4ryzxNRRv;%g=mIPSIQ0DBDO?Hbh-82s-R2s zFUA9ni)A-2>@zGw3eu4b$Qg}L4M@OBwYJWb;VjiiR}pm+Od8bfhEMs}Ehu0j4Psc9 ziwuyu&7N0oM-i#6jD!k(TtyL7m{wP+KGSk#-!~}mRYX%9Ti@0a2)MdY+}5?7wnnR8 ztyNefR?blhwk1Q_2oa@cqBp(2yCyqO;R?-02UNN;SnC>JrkQZ7Yh^E`WInt52k2Li zL_m*vgB3)E98bjx%Rl}8<)TIuOYeBf)hAl1x*A?N7vko^{F~eWugcsT%i?0a8n`tN zkNh-G!@ta|&h#4F6_Kg!FcZ4OvM$ejAlpPcI;54o5w~u!-bh+89(a|*18*N?SA!^9 zSq;Ff(}P(_Z<^SO3T2PIo&;^boSsm${i-0$RhVmpxi$}Pu4o=`rf;*Apv|rYOm?Sl zvY^0mMmzge5~JOkolv7SW<*FQLOK!B35*y&Mvx<71nTQ>A1L{IrJgV{juRogjsYV4T#OzahU*_WF!%`wOc0omCMI+a zoj3SD13oASv;hR-J_vl|wIoRJ--jm@3I6v`i6U$%10PWgF~adPiXlooKBRC-c=1aq zANg1e&tt&baBfDAyHRvTj=$lAxZtplR1TFdQ@WRu>ZPT5{1q=NSdto)@JEsy0!gND zBqbP03q{fck^EsumLMb@1W5@%Qo#>CBM2qVLkOj@j3Jc9F^Ev&Jc^K&Y&5lGlz%Ro z!&Ed=nP^IhXj*w_dTD6>vd}Cgq3PtHDW#yPWuO^JKqqlUSdOqGOVE)Ha-;+tso_TM zU?W4QA--f1v({qPdK9zP>L^wr0@Hz+>h)@H8De*)nr(yPs8K7L?tL)HjP)D$Oz4dD zFYXqDL}HLg3=(l1B+5_FC31CX6N=eeEUr*}Nk2izs1oN>9B%bXoAO^p+Au*)*qlZ{AA~0kO z7&86F)KT}|oF9z1qjusC5$S!MwN2ZwR*h9St{P!og{1-On)^QdUW7}9>n*rGhU@QB`&!oQK9)6|9m^V! zP5FSb3GZX-xkMk2x{n_Uycav@HT%mX7*Uwi{CryE=ORDP{d9B z5&l~s<*1SJWU!~>2C@ZE3ZN7~DS%P{Wj28FRJi*VI5}#ZeAqj_9dCmSz?_MMnUY6+ zVK@E9BuH7E)M3Zf!i0aPl)h`xk9@3c>}X(cU7HcVn(gk-lW6!ucTcE>KU|azyOM=q z(9Z|Q_2zy;Ji<;!Ay;u{B*$Y|78u6M=!4*JDkG1A!^m*?o&yL~bEk9R9FIrm0=#h1 zxezKmbS^+fY(1HejY>}EbY*!Q-{VEcp;gm>PJU$PMAjZYQ;};meGwKD#y$z?} zc7OM&Gwi=-y=D)D{~?15)k^UDW}??wMguQHBeAs?wXwxtlcWOYCw1eg@6MJ={&595 zSy9f2li!~=F6YKZQO#APm9!Ncj@C>}dGyC^CM3=02+lC#oK9SbCza+Y3Gtkycyhu% zjHEy6_3B}PGPEg&USJ(S!hME+=k7{^h})AoQMxk&-4D9z4w`2O2_tyogn)i(c|*Qf z?zte|J`{N%U7sX3kO?D^F1UnokSeHzGLSx)*hc`9eiIHiRZC2Kh1RY;$!dwhjam}i z`2D2f#z&d_z~+qjz-FR8u<28&=A`q*Cqbk7BxpUyYfeKBatujUIt>fD;Tm(jQQ!Z( z9)>baxZZ~A6S%&B>&yMW0on&;hP{0zKxUs0gt&ge6_l0*U7%UAA+fVJBji;qCy5HS z?wZi3z&HV}da<%pUZjS+Gn1RZ9YROp8 zIY2vg4N2kbR!U;Atu1j-4`1E9w8KXvUFGnRPE|MjlzFHIFSX#V5@S+_@u&iKHHe?N z|M1W=_q74eQEf=0*$toj>)jcE%-B?*8ZvKj(idGya-Cqqv7?T5pSzSK%zSrJ2cLd7 zLp0jGno;H)Z^qH#;vwP)rsy%^*htTV#B#yIqYM({7JNh!;jU2Q3P&P&7>_FP4^ZNf z=~stGrd!WmxOsUa#2(OK0}py|MT-uHN30`$DGAd2d1gY9<}b&5^9$=K&M%Dhw4%HW zw?}fEk>2Au@ls8D=7sYnoondXAg z^h&v*nTn<|%aK5Pn~vNB_-8j=+o>B^+3NYVmb^{!$)01( zuT$o=b_c>59b75txvP-d5dA#m-9iqXDhI>1;Xc9*U?jv%^-9a6`tE>mS${p~!;BI4Qt7iX`#Hrv(9Y*NPL~LG^zmEV9(2&uGBnKis z@<`z)~D7SP5u}^3xl+R#;DA7c~ zzkcQV(|rya7AQAZL>Lp5>Zp^m@1SaEZ&$eZWXR?uz1_hUJma7=t`FniT>&~=IxDTk SeQU9Y82ld{r=fU}8vy{P>tpu- literal 4373 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 P5QF~%(mDHDksAR3%t$U> diff --git a/test/snapshots/markdownlint-cli2-test-main.js.md b/test/snapshots/markdownlint-cli2-test-main.js.md index 6d89734a..2e2d8788 100644 --- a/test/snapshots/markdownlint-cli2-test-main.js.md +++ b/test/snapshots/markdownlint-cli2-test-main.js.md @@ -9,7 +9,7 @@ Generated by [AVA](https://avajs.dev). > Snapshot 1 { - exitCode: 1, + exitCode: 2, formatterCodeQuality: '', formatterJson: '', formatterJunit: '', diff --git a/test/snapshots/markdownlint-cli2-test-main.js.snap b/test/snapshots/markdownlint-cli2-test-main.js.snap index 6f3dfaefe1c69632bc0490a08cb962e18d793012..21d520ce7b2788ff5ecb10b31ba55ea54108ddb4 100644 GIT binary patch delta 7653 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 Date: Mon, 5 Jun 2023 16:03:43 +0000 Subject: [PATCH 18/23] Bump eslint from 8.41.0 to 8.42.0 Bumps [eslint](https://github.com/eslint/eslint) from 8.41.0 to 8.42.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/v8.41.0...v8.42.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 e5dfdaf2..94754b3d 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "c8": "7.14.0", "cpy": "10.1.0", "del": "7.0.0", - "eslint": "8.41.0", + "eslint": "8.42.0", "eslint-plugin-n": "16.0.0", "eslint-plugin-unicorn": "47.0.0", "execa": "7.1.1", From 6b4507d151883aa6261995f1fd569c51af03e959 Mon Sep 17 00:00:00 2001 From: David Anson Date: Wed, 7 Jun 2023 21:08:30 -0700 Subject: [PATCH 19/23] Simplify test case definition by removing redundant "usesEnv" and "usesScript" properties. --- test/markdownlint-cli2-test-cases.js | 53 ++++++++++------------------ 1 file changed, 19 insertions(+), 34 deletions(-) diff --git a/test/markdownlint-cli2-test-cases.js b/test/markdownlint-cli2-test-cases.js index a3f32061..64cb0732 100644 --- a/test/markdownlint-cli2-test-cases.js +++ b/test/markdownlint-cli2-test-cases.js @@ -21,7 +21,9 @@ const testCases = const testCase = (options) => { const { name, script, args, exitCode, cwd, env, stderrRe, pre, post, - noRequire, usesEnv, usesRequire, usesScript } = options; + noRequire, usesRequire } = options; + const usesEnv = Boolean(env); + const usesScript = Boolean(script); if ( (noRequire && !includeNoRequire) || (usesEnv && !includeEnv) || @@ -127,8 +129,7 @@ const testCases = "script": "markdownlint-cli2-fix.js", "args": [], "exitCode": 2, - "cwd": "no-config", - "usesScript": true + "cwd": "no-config" }); testCase({ @@ -136,8 +137,7 @@ const testCases = "script": "markdownlint-cli2-config.js", "args": [], "exitCode": 2, - "cwd": "no-config", - "usesScript": true + "cwd": "no-config" }); testCase({ @@ -145,8 +145,7 @@ const testCases = "script": "markdownlint-cli2-config.js", "args": [ "../config-files/cfg/.markdownlint-cli2.jsonc" ], "exitCode": 2, - "cwd": "no-config", - "usesScript": true + "cwd": "no-config" }); testCase({ @@ -499,16 +498,14 @@ const testCases = "exitCode": 1, "cwd": directoryName("fix-default-true"), "pre": copyDirectory, - "post": deleteDirectory, - "usesScript": true + "post": deleteDirectory }); testCase({ "name": "fix-default-true-override", "script": "markdownlint-cli2-fix.js", "args": [ "**/*.md" ], - "exitCode": 1, - "usesScript": true + "exitCode": 1 }); const configFiles = [ @@ -529,16 +526,14 @@ const testCases = "script": "markdownlint-cli2-config.js", "args": [ `cfg/${configFile}`, "**/*.md" ], "exitCode": 1, - "cwd": "config-files", - "usesScript": true + "cwd": "config-files" }); testCase({ "name": `config-files-${configFile}-alternate`, "script": "markdownlint-cli2-config.js", "args": [ `cfg/alternate${configFile}`, "**/*.md" ], "exitCode": 1, - "cwd": "config-files", - "usesScript": true + "cwd": "config-files" }); testCase({ "name": `config-files-${configFile}-absolute`, @@ -548,8 +543,7 @@ const testCases = "**/*.md" ], "exitCode": 1, - "cwd": "config-files", - "usesScript": true + "cwd": "config-files" }); } @@ -576,8 +570,7 @@ const testCases = "exitCode": 2, stderrRe, "cwd": "config-files", - "usesRequire": true, - "usesScript": true + "usesRequire": true }); } @@ -592,8 +585,7 @@ const testCases = "script": "markdownlint-cli2-config.js", "args": [ redundantConfigFile, "*.md" ], "exitCode": 1, - "cwd": redundantConfigFile.slice(1).replace(".", "-"), - "usesScript": true + "cwd": redundantConfigFile.slice(1).replace(".", "-") }); } @@ -605,8 +597,7 @@ const testCases = "stderrRe": // eslint-disable-next-line max-len /Configuration file "cfg\/unrecognized\.jsonc" is unrecognized; its name should be \(or end with\) one of the supported types \(e\.g\., "\.markdownlint\.json" or "example\.markdownlint-cli2\.jsonc"\)\./u, - "cwd": "config-files", - "usesScript": true + "cwd": "config-files" }); testCase({ @@ -614,16 +605,14 @@ const testCases = "script": "markdownlint-cli2-config.js", "args": [ "config/.markdownlint-cli2.jsonc", "viewme.md", "link.md" ], "exitCode": 1, - "usesRequire": true, - "usesScript": true + "usesRequire": true }); testCase({ "name": "config-relative-module", "script": "markdownlint-cli2-config.js", "args": [ "config/.markdownlint-cli2.jsonc", "viewme.md", "link.md" ], - "exitCode": 1, - "usesScript": true + "exitCode": 1 }); testCase({ @@ -633,8 +622,7 @@ const testCases = "exitCode": 0, "cwd": directoryName("config-with-fix"), "pre": copyDirectory, - "post": deleteDirectory, - "usesScript": true + "post": deleteDirectory }); testCase({ @@ -710,7 +698,6 @@ const testCases = "FORCE_COLOR": 1, "FORCE_HYPERLINK": 1 }, - "usesEnv": true, "usesRequire": true }); @@ -783,8 +770,7 @@ const testCases = "env": { "FORCE_COLOR": 1, "FORCE_HYPERLINK": 1 - }, - "usesEnv": true + } }); testCase({ @@ -793,8 +779,7 @@ const testCases = "exitCode": 1, "env": { "FORCE_COLOR": 1 - }, - "usesEnv": true + } }); testCase({ From c8c578307bbf0194274c5dd891e12dba0c04eaab Mon Sep 17 00:00:00 2001 From: David Anson Date: Fri, 9 Jun 2023 21:10:16 -0700 Subject: [PATCH 20/23] Add support for --config and --fix parameters, begin deprecating corresponding dedicated entry points. --- README.md | 59 +- markdownlint-cli2-config.js | 9 +- markdownlint-cli2-fix.js | 10 +- markdownlint-cli2.js | 39 +- test/markdownlint-cli2-test-cases.js | 227 ++- test/markdownlint-cli2-test-exec.js | 2 + .../markdownlint-cli2-test-exec.js.md | 1446 +++++++++++++++-- .../markdownlint-cli2-test-exec.js.snap | Bin 10787 -> 11909 bytes .../snapshots/markdownlint-cli2-test-fs.js.md | 208 ++- .../markdownlint-cli2-test-fs.js.snap | Bin 4376 -> 4734 bytes .../markdownlint-cli2-test-main.js.md | 208 ++- .../markdownlint-cli2-test-main.js.snap | Bin 8893 -> 9251 bytes 12 files changed, 2064 insertions(+), 144 deletions(-) diff --git a/README.md b/README.md index 2804db83..19cd9db5 100644 --- a/README.md +++ b/README.md @@ -67,9 +67,7 @@ As a [GitHub Action][github-action] via markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z) https://github.com/DavidAnson/markdownlint-cli2 -Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] - markdownlint-cli2-fix glob0 [glob1] [...] [globN] - markdownlint-cli2-config config-file glob0 [glob1] [...] [globN] +Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix] Glob expressions (from the globby library): - * matches any number of characters, but not / @@ -84,6 +82,10 @@ Dot-only glob: - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead +Optional parameters: +- --config specifies the path to a configuration file to define the base configuration +- --fix updates files to resolve fixable issues (can be overridden in configuration) + Configuration via: - .markdownlint-cli2.jsonc - .markdownlint-cli2.yaml @@ -116,28 +118,47 @@ markdownlint-cli2 "**/*.md" "#node_modules" ``` Because sharing the same configuration between "normal" and "fix" modes is -common, the following command defaults the `fix` property (see below) to `true`: +common, the `--fix` argument can be used to default the `fix` property (see +below) to `true` (though it can still be overridden by a configuration file): ```bash -markdownlint-cli2-fix "**/*.md" "#node_modules" +markdownlint-cli2 --fix "**/*.md" "#node_modules" ``` -Other than the default behavior of the `fix` property (which can be overridden), -these two commands behave identically. +> **Deprecated** +> +> The following command behaves similarly, defaulting the `fix` property to +> `true`: +> +> ```bash +> markdownlint-cli2-fix "**/*.md" "#node_modules" +> ``` +> +> Otherwise, `markdownlint-cli2-fix` behaves the same as `markdownlint-cli2`. In cases where it is not convenient to store a configuration file in the root -of a project, the `markdownlint-cli2-config` command can be used. This command -accepts a path to any supported configuration file as its first argument: +of a project, the `--config` argument can be used to provide a path to any +supported configuration file: ```bash -markdownlint-cli2-config "config/.markdownlint-cli2.jsonc" "**/*.md" "#node_modules" +markdownlint-cli2 --config "config/.markdownlint-cli2.jsonc" "**/*.md" "#node_modules" ``` -The configuration file name must be (or end with) one of the supported types +The configuration file name must be (or end with) one of the supported names above. For example, `.markdownlint.json` or `example.markdownlint-cli2.jsonc`. The specified configuration file will be loaded, parsed, and applied as a base configuration for the current directory - which will then be handled normally. -Otherwise, this command behaves identically to `markdownlint-cli2`. + +> **Deprecated** +> +> The following command behaves similarly, accepting a base configuration file +> path as its first parameter: +> +> ```bash +> markdownlint-cli2-config "config/.markdownlint-cli2.jsonc" "**/*.md" "#node_modules" +> ``` +> +> Otherwise, `markdownlint-cli2-config` behaves the same as `markdownlint-cli2`. ### Container Image @@ -165,12 +186,14 @@ Notes: docker run -w /myfolder -v $PWD:/myfolder davidanson/markdownlint-cli2:v0.7.1 "**/*.md" "#node_modules" ``` -To invoke the `markdownlint-cli2-config` or `markdownlint-cli2-fix` commands -instead, use Docker's `--entrypoint` flag: - -```bash -docker run -v $PWD:/workdir --entrypoint="markdownlint-cli2-fix" davidanson/markdownlint-cli2:v0.7.1 "**/*.md" "#node_modules" -``` +> **Deprecated** +> +> To invoke the `markdownlint-cli2-config` or `markdownlint-cli2-fix` commands +> instead, use Docker's `--entrypoint` flag: +> +> ```bash +> docker run -v $PWD:/workdir --entrypoint="markdownlint-cli2-fix" davidanson/markdownlint-cli2:v0.7.1 "**/*.md" "#node_modules" +> ``` For convenience, the container image [`davidanson/markdownlint-cli2-rules`][docker-hub-markdownlint-cli2-rules] diff --git a/markdownlint-cli2-config.js b/markdownlint-cli2-config.js index 41e6f945..347a5e13 100644 --- a/markdownlint-cli2-config.js +++ b/markdownlint-cli2-config.js @@ -6,6 +6,9 @@ const { run } = require("./markdownlint-cli2"); -run({ - "name": "markdownlint-cli2-config" -}); +run( + { + "name": "markdownlint-cli2-config" + }, + [ "--config" ] +); diff --git a/markdownlint-cli2-fix.js b/markdownlint-cli2-fix.js index 81be0a78..8f69f9aa 100644 --- a/markdownlint-cli2-fix.js +++ b/markdownlint-cli2-fix.js @@ -6,7 +6,9 @@ const { run } = require("./markdownlint-cli2"); -run({ - "fixDefault": true, - "name": "markdownlint-cli2-fix" -}); +run( + { + "name": "markdownlint-cli2-fix" + }, + [ "--fix" ] +); diff --git a/markdownlint-cli2.js b/markdownlint-cli2.js index 2ad1b908..a4f2fc61 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.js @@ -181,7 +181,7 @@ const removeIgnoredFiles = (dir, files, ignores) => { // Process/normalize command-line arguments and return glob patterns const processArgv = (argv) => { - const globPatterns = (argv || []).map( + const globPatterns = argv.map( (glob) => { if (glob.startsWith(":")) { return glob; @@ -208,9 +208,7 @@ const showHelp = (logMessage) => { /* eslint-disable max-len */ logMessage(`https://github.com/DavidAnson/markdownlint-cli2 -Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] - markdownlint-cli2-fix glob0 [glob1] [...] [globN] - markdownlint-cli2-config config-file glob0 [glob1] [...] [globN] +Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix] Glob expressions (from the globby library): - * matches any number of characters, but not / @@ -225,6 +223,10 @@ Dot-only glob: - Instead, it is mapped to "markdownlint-cli2 ${dotOnlySubstitute}" which lints all Markdown files in the current directory - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead +Optional parameters: +- --config specifies the path to a configuration file to define the base configuration +- --fix updates files to resolve fixable issues (can be overridden in configuration) + Configuration via: - .markdownlint-cli2.jsonc - .markdownlint-cli2.yaml @@ -818,7 +820,6 @@ const main = async (params) => { argv, optionsDefault, optionsOverride, - fixDefault, fileContents, nonFileContents, noErrors, @@ -838,17 +839,33 @@ const main = async (params) => { // eslint-disable-next-line max-len `${name || packageName} v${packageVersion} (${libraryName} v${libraryVersion})` ); + // Merge and process args/argv + let fixDefault = false; + // eslint-disable-next-line unicorn/no-useless-undefined + let configPath = undefined; + const argvFiltered = (argv || []).filter((arg) => { + if (configPath === null) { + configPath = arg; + return false; + } else if (arg === "--config") { + configPath = null; + return false; + } else if (arg === "--fix") { + fixDefault = true; + return false; + } + return true; + }); // Read argv configuration file (if relevant and present) let optionsArgv = null; let relativeDir = null; - const [ configPath ] = (argv || []); - if ((name === "markdownlint-cli2-config") && configPath) { + if (configPath) { optionsArgv = await readOptionsOrConfig(configPath, fs, noRequire); relativeDir = path.dirname(configPath); } // Process arguments and get base options - const globPatterns = processArgv(optionsArgv ? argv.slice(1) : argv); + const globPatterns = processArgv(argvFiltered); const { baseMarkdownlintOptions, dirToDirInfo } = await getBaseOptions( fs, @@ -921,11 +938,13 @@ const main = async (params) => { }; // Run function -const run = (overrides) => { +const run = (overrides, args) => { (async () => { + const argsAndArgv = args || []; + appendToArray(argsAndArgv, process.argv.slice(2)); try { const defaultParams = { - "argv": process.argv.slice(2), + "argv": argsAndArgv, "logMessage": console.log, "logError": console.error }; diff --git a/test/markdownlint-cli2-test-cases.js b/test/markdownlint-cli2-test-cases.js index 64cb0732..4756b370 100644 --- a/test/markdownlint-cli2-test-cases.js +++ b/test/markdownlint-cli2-test-cases.js @@ -9,6 +9,7 @@ const test = require("ava").default; const noop = () => null; const empty = () => ""; +const onlyRunViaExec = {}; const sanitize = (str) => str. replace(/\r/gu, ""). replace(/\bv\d+\.\d+\.\d+\b/gu, "vX.Y.Z"). @@ -20,7 +21,7 @@ const testCases = (host, invoke, absolute, includeNoRequire, includeEnv, includeScript, includeRequire) => { const testCase = (options) => { - const { name, script, args, exitCode, cwd, env, stderrRe, pre, post, + const { name, shadow, script, args, exitCode, cwd, env, stderrRe, pre, post, noRequire, usesRequire } = options; const usesEnv = Boolean(env); const usesScript = Boolean(script); @@ -35,7 +36,7 @@ const testCases = test(`${name} (${host})`, (t) => { t.plan(3); const directory = path.join(__dirname, cwd || name); - return ((pre || noop)(name) || Promise.resolve()). + return ((pre || noop)(name, shadow) || Promise.resolve()). then(invoke(directory, args, noRequire, env, script)). then((result) => Promise.all([ result, @@ -106,9 +107,9 @@ const testCases = const directoryName = (dir) => `${dir}-copy-${host}`; - const copyDirectory = (dir) => import("cpy").then((cpy) => ( + const copyDirectory = (dir, alt) => import("cpy").then((cpy) => ( cpy.default( - path.join(__dirname, dir, "**"), + path.join(__dirname, (alt || dir), "**"), path.join(__dirname, directoryName(dir)) ) )); @@ -148,6 +149,21 @@ const testCases = "cwd": "no-config" }); + testCase({ + "name": "no-arguments-config-arg", + "args": [ "--config" ], + "exitCode": 2, + "cwd": "no-config" + }); + + testCase({ + "name": "one-argument-config-arg", + "args": [ "--config", "../config-files/cfg/.markdownlint-cli2.jsonc" ], + "exitCode": 2, + "cwd": "no-config", + "env": onlyRunViaExec + }); + testCase({ "name": "no-files", "args": [ "nothing-matches" ], @@ -508,6 +524,23 @@ const testCases = "exitCode": 1 }); + testCase({ + "name": "fix-default-true-arg", + "shadow": "fix-default-true", + "args": [ "--fix", "**/*.md" ], + "exitCode": 1, + "cwd": directoryName("fix-default-true-arg"), + "pre": copyDirectory, + "post": deleteDirectory + }); + + testCase({ + "name": "fix-default-true-override-arg", + "args": [ "--fix", "**/*.md" ], + "exitCode": 1, + "cwd": "fix-default-true-override" + }); + const configFiles = [ ".markdownlint-cli2.jsonc", ".markdownlint-cli2.yaml", @@ -545,6 +578,31 @@ const testCases = "exitCode": 1, "cwd": "config-files" }); + testCase({ + "name": `config-files-${configFile}-arg`, + "args": [ "--config", `cfg/${configFile}`, "**/*.md" ], + "exitCode": 1, + "cwd": "config-files", + "env": onlyRunViaExec + }); + testCase({ + "name": `config-files-${configFile}-alternate-arg`, + "args": [ "--config", `cfg/alternate${configFile}`, "**/*.md" ], + "exitCode": 1, + "cwd": "config-files", + "env": onlyRunViaExec + }); + testCase({ + "name": `config-files-${configFile}-absolute-arg`, + "args": [ + "--config", + path.join(__dirname, "config-files", `cfg/${configFile}`), + "**/*.md" + ], + "exitCode": 1, + "cwd": "config-files", + "env": onlyRunViaExec + }); } const invalidConfigFiles = [ @@ -572,6 +630,15 @@ const testCases = "cwd": "config-files", "usesRequire": true }); + testCase({ + "name": `config-files-${invalidConfigFile}-invalid-arg`, + "args": [ "--config", `cfg/${invalidConfigFile}`, "**/*.md" ], + "exitCode": 2, + stderrRe, + "cwd": "config-files", + "env": onlyRunViaExec, + "usesRequire": true + }); } const redundantConfigFiles = [ @@ -587,6 +654,13 @@ const testCases = "exitCode": 1, "cwd": redundantConfigFile.slice(1).replace(".", "-") }); + testCase({ + "name": `config-files-${redundantConfigFile}-redundant-arg`, + "args": [ "--config", redundantConfigFile, "*.md" ], + "exitCode": 1, + "cwd": redundantConfigFile.slice(1).replace(".", "-"), + "env": onlyRunViaExec + }); } testCase({ @@ -625,6 +699,60 @@ const testCases = "post": deleteDirectory }); + testCase({ + "name": "config-file-unrecognized-arg", + "args": [ "--config", "cfg/unrecognized.jsonc", "**/*.md" ], + "exitCode": 2, + "stderrRe": + // eslint-disable-next-line max-len + /Configuration file "cfg\/unrecognized\.jsonc" is unrecognized; its name should be \(or end with\) one of the supported types \(e\.g\., "\.markdownlint\.json" or "example\.markdownlint-cli2\.jsonc"\)\./u, + "cwd": "config-files", + "env": onlyRunViaExec + }); + + testCase({ + "name": "config-relative-commonjs-arg", + "args": [ + "--config", + "config/.markdownlint-cli2.jsonc", + "viewme.md", + "link.md" + ], + "exitCode": 1, + "cwd": "config-relative-commonjs", + "usesRequire": true, + "env": onlyRunViaExec + }); + + testCase({ + "name": "config-relative-module-arg", + "args": [ + "--config", + "config/.markdownlint-cli2.jsonc", + "viewme.md", + "link.md" + ], + "exitCode": 1, + "cwd": "config-relative-module", + "env": onlyRunViaExec + }); + + testCase({ + "name": "config-with-fix-arg", + "shadow": "config-with-fix", + "args": [ + "--config", + "config/.markdownlint-cli2.jsonc", + "viewme.md", + "info.md" + ], + "exitCode": 0, + "cwd": directoryName("config-with-fix-arg"), + "pre": copyDirectory, + "post": deleteDirectory, + "env": onlyRunViaExec + }); + testCase({ "name": "customRules", "args": [ "**/*.md" ], @@ -868,6 +996,97 @@ const testCases = } + testCase({ + "name": "no-arg", + "args": [ "**/*.md" ], + "exitCode": 1, + "cwd": "no-config" + }); + + testCase({ + "name": "config-first-arg", + "args": [ + "--config", + "../config-files/cfg/.markdownlint-cli2.jsonc", + "**/*.md" + ], + "exitCode": 1, + "cwd": "no-config", + "env": onlyRunViaExec + }); + + testCase({ + "name": "config-last-arg", + "args": [ + "**/*.md", + "--config", + "../config-files/cfg/.markdownlint-cli2.jsonc" + ], + "exitCode": 1, + "cwd": "no-config", + "env": onlyRunViaExec + }); + + testCase({ + "name": "config-last-used-arg", + "args": [ + "--config", + "../config-files/cfg/invalid.markdownlint-cli2.jsonc", + "**/*.md", + "--config", + "../config-files/cfg/.markdownlint-cli2.jsonc" + ], + "exitCode": 1, + "cwd": "no-config", + "env": onlyRunViaExec + }); + + testCase({ + "name": "fix-first-arg", + "shadow": "no-config", + "args": [ "--fix", "**/*.md" ], + "exitCode": 1, + "cwd": directoryName("fix-first-arg"), + "pre": copyDirectory, + "post": deleteDirectory + }); + + testCase({ + "name": "fix-last-arg", + "shadow": "no-config", + "args": [ "**/*.md", "--fix" ], + "exitCode": 1, + "cwd": directoryName("fix-last-arg"), + "pre": copyDirectory, + "post": deleteDirectory + }); + + testCase({ + "name": "fix-multiple-arg", + "shadow": "no-config", + "args": [ "--fix", "**/*.md", "--fix" ], + "exitCode": 1, + "cwd": directoryName("fix-multiple-arg"), + "pre": copyDirectory, + "post": deleteDirectory + }); + + testCase({ + "name": "fix-and-config-arg", + "shadow": "no-config", + "args": [ + "--fix", + "**/*.md", + "--config", + "../config-with-fix/.markdownlint-cli2.jsonc" + ], + "exitCode": 1, + "cwd": directoryName("fix-and-config-arg"), + "pre": copyDirectory, + "post": deleteDirectory, + "env": onlyRunViaExec + }); + }; module.exports = testCases; diff --git a/test/markdownlint-cli2-test-exec.js b/test/markdownlint-cli2-test-exec.js index 34cdf00b..8b248019 100644 --- a/test/markdownlint-cli2-test-exec.js +++ b/test/markdownlint-cli2-test-exec.js @@ -2,10 +2,12 @@ "use strict"; +const fs = require("node:fs/promises"); const path = require("node:path"); 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"), diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.md b/test/snapshots/markdownlint-cli2-test-exec.js.md index 7c532418..724bf792 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.js.md +++ b/test/snapshots/markdownlint-cli2-test-exec.js.md @@ -17,9 +17,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ https://github.com/DavidAnson/markdownlint-cli2␊ ␊ - Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-fix glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-config config-file glob0 [glob1] [...] [globN]␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ ␊ Glob expressions (from the globby library):␊ - * matches any number of characters, but not /␊ @@ -34,6 +32,10 @@ Generated by [AVA](https://avajs.dev). - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ Configuration via:␊ - .markdownlint-cli2.jsonc␊ - .markdownlint-cli2.yaml␊ @@ -67,9 +69,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2-fix vX.Y.Z (markdownlint vX.Y.Z)␊ https://github.com/DavidAnson/markdownlint-cli2␊ ␊ - Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-fix glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-config config-file glob0 [glob1] [...] [globN]␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ ␊ Glob expressions (from the globby library):␊ - * matches any number of characters, but not /␊ @@ -84,6 +84,10 @@ Generated by [AVA](https://avajs.dev). - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ Configuration via:␊ - .markdownlint-cli2.jsonc␊ - .markdownlint-cli2.yaml␊ @@ -117,9 +121,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ https://github.com/DavidAnson/markdownlint-cli2␊ ␊ - Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-fix glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-config config-file glob0 [glob1] [...] [globN]␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ ␊ Glob expressions (from the globby library):␊ - * matches any number of characters, but not /␊ @@ -134,6 +136,10 @@ Generated by [AVA](https://avajs.dev). - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ Configuration via:␊ - .markdownlint-cli2.jsonc␊ - .markdownlint-cli2.yaml␊ @@ -167,9 +173,111 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ https://github.com/DavidAnson/markdownlint-cli2␊ ␊ - Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-fix glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-config config-file glob0 [glob1] [...] [globN]␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ + ␊ + Glob expressions (from the globby library):␊ + - * matches any number of characters, but not /␊ + - ? matches a single character, but not /␊ + - ** matches any number of characters, including /␊ + - {} 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␊ + ␊ + Dot-only glob:␊ + - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ + - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ + - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ + ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ + Configuration via:␊ + - .markdownlint-cli2.jsonc␊ + - .markdownlint-cli2.yaml␊ + - .markdownlint-cli2.cjs or .markdownlint-cli2.mjs␊ + - .markdownlint.jsonc or .markdownlint.json␊ + - .markdownlint.yaml or .markdownlint.yml␊ + - .markdownlint.cjs or .markdownlint.mjs␊ + ␊ + Cross-platform compatibility:␊ + - UNIX and Windows shells expand globs according to different rules; quoting arguments is recommended␊ + - Some Windows shells don't handle single-quoted (') arguments well; double-quote (") is recommended␊ + - Shells that expand globs do not support negated patterns (!node_modules); quoting is required here␊ + - Some UNIX shells parse exclamation (!) in double-quotes; hashtag (#) is recommended in these cases␊ + - The path separator is forward slash (/) on all platforms; backslash (\\) is automatically converted␊ + ␊ + The most compatible syntax for cross-platform support:␊ + $ markdownlint-cli2 "**/*.md" "#node_modules"␊ + `, + } + +## no-arguments-config-arg (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + https://github.com/DavidAnson/markdownlint-cli2␊ + ␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ + ␊ + Glob expressions (from the globby library):␊ + - * matches any number of characters, but not /␊ + - ? matches a single character, but not /␊ + - ** matches any number of characters, including /␊ + - {} 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␊ + ␊ + Dot-only glob:␊ + - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ + - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ + - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ + ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ + Configuration via:␊ + - .markdownlint-cli2.jsonc␊ + - .markdownlint-cli2.yaml␊ + - .markdownlint-cli2.cjs or .markdownlint-cli2.mjs␊ + - .markdownlint.jsonc or .markdownlint.json␊ + - .markdownlint.yaml or .markdownlint.yml␊ + - .markdownlint.cjs or .markdownlint.mjs␊ + ␊ + Cross-platform compatibility:␊ + - UNIX and Windows shells expand globs according to different rules; quoting arguments is recommended␊ + - Some Windows shells don't handle single-quoted (') arguments well; double-quote (") is recommended␊ + - Shells that expand globs do not support negated patterns (!node_modules); quoting is required here␊ + - Some UNIX shells parse exclamation (!) in double-quotes; hashtag (#) is recommended in these cases␊ + - The path separator is forward slash (/) on all platforms; backslash (\\) is automatically converted␊ + ␊ + The most compatible syntax for cross-platform support:␊ + $ markdownlint-cli2 "**/*.md" "#node_modules"␊ + `, + } + +## one-argument-config-arg (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + https://github.com/DavidAnson/markdownlint-cli2␊ + ␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ ␊ Glob expressions (from the globby library):␊ - * matches any number of characters, but not /␊ @@ -184,6 +292,10 @@ Generated by [AVA](https://avajs.dev). - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ Configuration via:␊ - .markdownlint-cli2.jsonc␊ - .markdownlint-cli2.yaml␊ @@ -1421,6 +1533,64 @@ Generated by [AVA](https://avajs.dev). `, } +## fix-default-true-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir/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"]␊ + dir2/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ + dir2/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ + dir2/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + dir2/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ + dir2/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + dir2/subdir/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ + dir2/subdir/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ + dir2/subdir/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + dir2/subdir/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ + dir2/subdir/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + dir3/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ + dir3/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ + dir3/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 7 file(s)␊ + Summary: 19 error(s)␊ + `, + } + +## fix-default-true-override-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ + 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:1 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␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 1 file(s)␊ + Summary: 5 error(s)␊ + `, + } + ## config-files-.markdownlint-cli2.jsonc (exec) > Snapshot 1 @@ -1487,7 +1657,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint-cli2.yaml (exec) +## config-files-.markdownlint-cli2.jsonc-arg (exec) > Snapshot 1 @@ -1502,14 +1672,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint-cli2.yaml-alternate (exec) +## config-files-.markdownlint-cli2.jsonc-alternate-arg (exec) > Snapshot 1 @@ -1524,14 +1694,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint-cli2.yaml-absolute (exec) +## config-files-.markdownlint-cli2.jsonc-absolute-arg (exec) > Snapshot 1 @@ -1546,14 +1716,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint-cli2.cjs (exec) +## config-files-.markdownlint-cli2.yaml (exec) > Snapshot 1 @@ -1575,7 +1745,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint-cli2.cjs-alternate (exec) +## config-files-.markdownlint-cli2.yaml-alternate (exec) > Snapshot 1 @@ -1597,7 +1767,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint-cli2.cjs-absolute (exec) +## config-files-.markdownlint-cli2.yaml-absolute (exec) > Snapshot 1 @@ -1619,7 +1789,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint-cli2.mjs (exec) +## config-files-.markdownlint-cli2.yaml-arg (exec) > Snapshot 1 @@ -1634,14 +1804,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint-cli2.mjs-alternate (exec) +## config-files-.markdownlint-cli2.yaml-alternate-arg (exec) > Snapshot 1 @@ -1656,14 +1826,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint-cli2.mjs-absolute (exec) +## config-files-.markdownlint-cli2.yaml-absolute-arg (exec) > Snapshot 1 @@ -1678,14 +1848,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.jsonc (exec) +## config-files-.markdownlint-cli2.cjs (exec) > Snapshot 1 @@ -1707,7 +1877,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint.jsonc-alternate (exec) +## config-files-.markdownlint-cli2.cjs-alternate (exec) > Snapshot 1 @@ -1729,7 +1899,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint.jsonc-absolute (exec) +## config-files-.markdownlint-cli2.cjs-absolute (exec) > Snapshot 1 @@ -1751,7 +1921,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint.json (exec) +## config-files-.markdownlint-cli2.cjs-arg (exec) > Snapshot 1 @@ -1766,14 +1936,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.json-alternate (exec) +## config-files-.markdownlint-cli2.cjs-alternate-arg (exec) > Snapshot 1 @@ -1788,14 +1958,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.json-absolute (exec) +## config-files-.markdownlint-cli2.cjs-absolute-arg (exec) > Snapshot 1 @@ -1810,14 +1980,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.yaml (exec) +## config-files-.markdownlint-cli2.mjs (exec) > Snapshot 1 @@ -1839,7 +2009,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint.yaml-alternate (exec) +## config-files-.markdownlint-cli2.mjs-alternate (exec) > Snapshot 1 @@ -1861,7 +2031,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint.yaml-absolute (exec) +## config-files-.markdownlint-cli2.mjs-absolute (exec) > Snapshot 1 @@ -1883,7 +2053,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint.yml (exec) +## config-files-.markdownlint-cli2.mjs-arg (exec) > Snapshot 1 @@ -1898,14 +2068,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.yml-alternate (exec) +## config-files-.markdownlint-cli2.mjs-alternate-arg (exec) > Snapshot 1 @@ -1920,14 +2090,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.yml-absolute (exec) +## config-files-.markdownlint-cli2.mjs-absolute-arg (exec) > Snapshot 1 @@ -1942,14 +2112,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.cjs (exec) +## config-files-.markdownlint.jsonc (exec) > Snapshot 1 @@ -1971,7 +2141,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint.cjs-alternate (exec) +## config-files-.markdownlint.jsonc-alternate (exec) > Snapshot 1 @@ -1993,7 +2163,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint.cjs-absolute (exec) +## config-files-.markdownlint.jsonc-absolute (exec) > Snapshot 1 @@ -2015,7 +2185,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint.mjs (exec) +## config-files-.markdownlint.jsonc-arg (exec) > Snapshot 1 @@ -2030,14 +2200,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.mjs-alternate (exec) +## config-files-.markdownlint.jsonc-alternate-arg (exec) > Snapshot 1 @@ -2052,14 +2222,14 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.mjs-absolute (exec) +## config-files-.markdownlint.jsonc-absolute-arg (exec) > Snapshot 1 @@ -2074,51 +2244,750 @@ 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"]␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: **/*.md␊ Linting: 3 file(s)␊ Summary: 5 error(s)␊ `, } -## config-files-invalid.markdownlint-cli2.jsonc-invalid (exec) +## config-files-.markdownlint.json (exec) > Snapshot 1 { - exitCode: 2, + exitCode: 1, formatterCodeQuality: '', formatterJson: '', formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ `, } -## config-files-invalid.markdownlint-cli2.cjs-invalid (exec) +## config-files-.markdownlint.json-alternate (exec) > Snapshot 1 { - exitCode: 2, + exitCode: 1, formatterCodeQuality: '', formatterJson: '', formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ `, } -## config-files-invalid.markdownlint-cli2.mjs-invalid (exec) +## config-files-.markdownlint.json-absolute (exec) > Snapshot 1 { - exitCode: 2, + exitCode: 1, formatterCodeQuality: '', formatterJson: '', formatterJunit: '', - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ - `, - } + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.json-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.json-alternate-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.json-absolute-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yaml (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yaml-alternate (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yaml-absolute (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yaml-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yaml-alternate-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yaml-absolute-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yml (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yml-alternate (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yml-absolute (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yml-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yml-alternate-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.yml-absolute-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.cjs (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.cjs-alternate (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.cjs-absolute (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.cjs-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.cjs-alternate-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.cjs-absolute-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.mjs (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.mjs-alternate (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.mjs-absolute (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.mjs-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.mjs-alternate-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-.markdownlint.mjs-absolute-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir1/viewme.md:5 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 5 error(s)␊ + `, + } + +## config-files-invalid.markdownlint-cli2.jsonc-invalid (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + +## config-files-invalid.markdownlint-cli2.jsonc-invalid-arg (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + +## config-files-invalid.markdownlint-cli2.cjs-invalid (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + +## config-files-invalid.markdownlint-cli2.cjs-invalid-arg (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + +## config-files-invalid.markdownlint-cli2.mjs-invalid (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + +## config-files-invalid.markdownlint-cli2.mjs-invalid-arg (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } ## config-files-invalid.markdownlint.json-invalid (exec) @@ -2133,6 +3002,19 @@ Generated by [AVA](https://avajs.dev). `, } +## config-files-invalid.markdownlint.json-invalid-arg (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + ## config-files-invalid.markdownlint.yaml-invalid (exec) > Snapshot 1 @@ -2146,6 +3028,19 @@ Generated by [AVA](https://avajs.dev). `, } +## config-files-invalid.markdownlint.yaml-invalid-arg (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + ## config-files-invalid.markdownlint.cjs-invalid (exec) > Snapshot 1 @@ -2155,11 +3050,176 @@ Generated by [AVA](https://avajs.dev). formatterCodeQuality: '', formatterJson: '', formatterJunit: '', - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + +## config-files-invalid.markdownlint.cjs-invalid-arg (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + +## config-files-invalid.markdownlint.mjs-invalid (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + +## config-files-invalid.markdownlint.mjs-invalid-arg (exec) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + `, + } + +## config-files-.markdownlint-cli2.jsonc-redundant (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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:1 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␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: *.md␊ + Linting: 1 file(s)␊ + Summary: 4 error(s)␊ + `, + } + +## config-files-.markdownlint-cli2.jsonc-redundant-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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:1 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␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: *.md␊ + Linting: 1 file(s)␊ + Summary: 4 error(s)␊ + `, + } + +## config-files-.markdownlint.json-redundant (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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:1 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␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: *.md␊ + Linting: 1 file(s)␊ + Summary: 4 error(s)␊ + `, + } + +## config-files-.markdownlint.json-redundant-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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:1 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␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: *.md␊ + Linting: 1 file(s)␊ + Summary: 4 error(s)␊ + `, + } + +## config-files-.markdownlint.cjs-redundant (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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:1 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␊ + `, + stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: *.md␊ + Linting: 1 file(s)␊ + Summary: 4 error(s)␊ + `, + } + +## config-files-.markdownlint.cjs-redundant-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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:1 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␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: *.md␊ + Linting: 1 file(s)␊ + Summary: 4 error(s)␊ `, } -## config-files-invalid.markdownlint.mjs-invalid (exec) +## config-file-unrecognized (exec) > Snapshot 1 @@ -2172,7 +3232,7 @@ Generated by [AVA](https://avajs.dev). `, } -## config-files-.markdownlint-cli2.jsonc-redundant (exec) +## config-relative-commonjs (exec) > Snapshot 1 @@ -2181,19 +3241,20 @@ Generated by [AVA](https://avajs.dev). formatterCodeQuality: '', formatterJson: '', formatterJunit: '', - 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:1 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␊ + stderr: `viewme.md 3 any-blockquote␊ + 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␊ `, stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ - Finding: *.md␊ - Linting: 1 file(s)␊ - Summary: 4 error(s)␊ + Finding: viewme.md link.md␊ + Linting: 2 file(s)␊ + Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.json-redundant (exec) +## config-relative-module (exec) > Snapshot 1 @@ -2202,40 +3263,37 @@ Generated by [AVA](https://avajs.dev). formatterCodeQuality: '', formatterJson: '', formatterJunit: '', - 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:1 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␊ + stderr: `viewme.md 3 any-blockquote␊ + 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␊ `, stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ - Finding: *.md␊ - Linting: 1 file(s)␊ - Summary: 4 error(s)␊ + Finding: viewme.md link.md␊ + Linting: 2 file(s)␊ + Summary: 5 error(s)␊ `, } -## config-files-.markdownlint.cjs-redundant (exec) +## config-with-fix (exec) > Snapshot 1 { - exitCode: 1, + exitCode: 0, formatterCodeQuality: '', formatterJson: '', formatterJunit: '', - 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:1 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␊ - `, + stderr: '', stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ - Finding: *.md␊ - Linting: 1 file(s)␊ - Summary: 4 error(s)␊ + Finding: viewme.md info.md␊ + Linting: 2 file(s)␊ + Summary: 0 error(s)␊ `, } -## config-file-unrecognized (exec) +## config-file-unrecognized-arg (exec) > Snapshot 1 @@ -2244,11 +3302,11 @@ Generated by [AVA](https://avajs.dev). formatterCodeQuality: '', formatterJson: '', formatterJunit: '', - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ `, } -## config-relative-commonjs (exec) +## config-relative-commonjs-arg (exec) > Snapshot 1 @@ -2263,14 +3321,14 @@ Generated by [AVA](https://avajs.dev). viewme.md 12 MD019/no-multiple-space-atx␊ viewme.md 14 MD047/single-trailing-newline␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md link.md␊ Linting: 2 file(s)␊ Summary: 5 error(s)␊ `, } -## config-relative-module (exec) +## config-relative-module-arg (exec) > Snapshot 1 @@ -2285,14 +3343,14 @@ Generated by [AVA](https://avajs.dev). viewme.md 12 MD019/no-multiple-space-atx␊ viewme.md 14 MD047/single-trailing-newline␊ `, - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md link.md␊ Linting: 2 file(s)␊ Summary: 5 error(s)␊ `, } -## config-with-fix (exec) +## config-with-fix-arg (exec) > Snapshot 1 @@ -2302,7 +3360,7 @@ Generated by [AVA](https://avajs.dev). formatterJson: '', formatterJunit: '', stderr: '', - stdout: `markdownlint-cli2-config vX.Y.Z (markdownlint vX.Y.Z)␊ + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ Finding: viewme.md info.md␊ Linting: 2 file(s)␊ Summary: 0 error(s)␊ @@ -4378,3 +5436,193 @@ Generated by [AVA](https://avajs.dev). Summary: 6 error(s)␊ `, } + +## no-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir/about.md:1:1 MD021/no-multiple-space-closed-atx Multiple spaces inside hashes on closed atx style heading [Context: "# About #"]␊ + dir/about.md:4 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "1. List"]␊ + dir/about.md:5:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ + dir/subdir/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [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"]␊ + dir/subdir/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + 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:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ + 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:1 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␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 13 error(s)␊ + `, + } + +## config-first-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir/about.md:1:1 MD021/no-multiple-space-closed-atx Multiple spaces inside hashes on closed atx style heading [Context: "# About #"]␊ + dir/about.md:4 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "1. List"]␊ + dir/about.md:5:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ + dir/subdir/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [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"]␊ + dir/subdir/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 10 error(s)␊ + `, + } + +## config-last-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir/about.md:1:1 MD021/no-multiple-space-closed-atx Multiple spaces inside hashes on closed atx style heading [Context: "# About #"]␊ + dir/about.md:4 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "1. List"]␊ + dir/about.md:5:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ + dir/subdir/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [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"]␊ + dir/subdir/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 10 error(s)␊ + `, + } + +## config-last-used-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir/about.md:1:1 MD021/no-multiple-space-closed-atx Multiple spaces inside hashes on closed atx style heading [Context: "# About #"]␊ + dir/about.md:4 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "1. List"]␊ + dir/about.md:5:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ + dir/subdir/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [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"]␊ + dir/subdir/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 10 error(s)␊ + `, + } + +## fix-first-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 3 error(s)␊ + `, + } + +## fix-last-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 3 error(s)␊ + `, + } + +## fix-multiple-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 3 error(s)␊ + `, + } + +## fix-and-config-arg (exec) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 2 error(s)␊ + `, + } diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.snap b/test/snapshots/markdownlint-cli2-test-exec.js.snap index 175a16f944b8469ff4aad1a78007456eb9806f6b..a6b00b295058cae8787bbf83b53fc10fabfcc59a 100644 GIT binary patch literal 11909 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 XL&`TUFveg=|0WFkz(YaC1O@s(pSlsR diff --git a/test/snapshots/markdownlint-cli2-test-fs.js.md b/test/snapshots/markdownlint-cli2-test-fs.js.md index a942b6de..f40df219 100644 --- a/test/snapshots/markdownlint-cli2-test-fs.js.md +++ b/test/snapshots/markdownlint-cli2-test-fs.js.md @@ -17,9 +17,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ https://github.com/DavidAnson/markdownlint-cli2␊ ␊ - Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-fix glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-config config-file glob0 [glob1] [...] [globN]␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ ␊ Glob expressions (from the globby library):␊ - * matches any number of characters, but not /␊ @@ -34,6 +32,62 @@ Generated by [AVA](https://avajs.dev). - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ + Configuration via:␊ + - .markdownlint-cli2.jsonc␊ + - .markdownlint-cli2.yaml␊ + - .markdownlint-cli2.cjs or .markdownlint-cli2.mjs␊ + - .markdownlint.jsonc or .markdownlint.json␊ + - .markdownlint.yaml or .markdownlint.yml␊ + - .markdownlint.cjs or .markdownlint.mjs␊ + ␊ + Cross-platform compatibility:␊ + - UNIX and Windows shells expand globs according to different rules; quoting arguments is recommended␊ + - Some Windows shells don't handle single-quoted (') arguments well; double-quote (") is recommended␊ + - Shells that expand globs do not support negated patterns (!node_modules); quoting is required here␊ + - Some UNIX shells parse exclamation (!) in double-quotes; hashtag (#) is recommended in these cases␊ + - The path separator is forward slash (/) on all platforms; backslash (\\) is automatically converted␊ + ␊ + The most compatible syntax for cross-platform support:␊ + $ markdownlint-cli2 "**/*.md" "#node_modules"␊ + `, + } + +## no-arguments-config-arg (fs) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + https://github.com/DavidAnson/markdownlint-cli2␊ + ␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ + ␊ + Glob expressions (from the globby library):␊ + - * matches any number of characters, but not /␊ + - ? matches a single character, but not /␊ + - ** matches any number of characters, including /␊ + - {} 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␊ + ␊ + Dot-only glob:␊ + - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ + - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ + - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ + ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ Configuration via:␊ - .markdownlint-cli2.jsonc␊ - .markdownlint-cli2.yaml␊ @@ -998,6 +1052,64 @@ Generated by [AVA](https://avajs.dev). `, } +## fix-default-true-arg (fs) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir/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"]␊ + dir2/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ + dir2/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ + dir2/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + dir2/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ + dir2/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + dir2/subdir/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ + dir2/subdir/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ + dir2/subdir/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + dir2/subdir/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ + dir2/subdir/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + dir3/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ + dir3/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ + dir3/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 7 file(s)␊ + Summary: 19 error(s)␊ + `, + } + +## fix-default-true-override-arg (fs) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ + 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:1 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␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 1 file(s)␊ + Summary: 5 error(s)␊ + `, + } + ## nested-files (fs) > Snapshot 1 @@ -1240,3 +1352,93 @@ Generated by [AVA](https://avajs.dev). Summary: 9 error(s)␊ `, } + +## no-arg (fs) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir/about.md:1:1 MD021/no-multiple-space-closed-atx Multiple spaces inside hashes on closed atx style heading [Context: "# About #"]␊ + dir/about.md:4 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "1. List"]␊ + dir/about.md:5:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ + dir/subdir/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [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"]␊ + dir/subdir/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + 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:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ + 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:1 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␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 13 error(s)␊ + `, + } + +## fix-first-arg (fs) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 3 error(s)␊ + `, + } + +## fix-last-arg (fs) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 3 error(s)␊ + `, + } + +## fix-multiple-arg (fs) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 3 error(s)␊ + `, + } diff --git a/test/snapshots/markdownlint-cli2-test-fs.js.snap b/test/snapshots/markdownlint-cli2-test-fs.js.snap index 5a3a077bf1a04d7b963d8b9364418ce0c9a4e80b..ea51829028d870c82091cc0af8482049a05a02b6 100644 GIT binary patch literal 4734 zcmV-^5`pbORzVef(|wE+$FVzp zq_I1BxSARSKoSxN&{#l^rkPGM>9ozMGwGq1q?5<7w!#I`Y+JQRrtdkDuGu?Y;>1AS`?`6*i%laW)0cXg97D51a?M~{Q7vmos_AsTo&5N4 zOR_c;bIZ^*!!F3WRzaID6kja9gy#EGyq634rfs)zwNz?ocGIa9WwTW}FKuedIRp4E z1q#dOukRSPv|U9(It|^dEuov_Pk9a9EEbDv?ysxxw@{ExqpmejUDH+iyRL1o<@3)# zI#RdWmWr`v8l=-LvxV%YO3SP5AYH3jlC`r?%@@!jkhSHeijidOAj4_ZR12APBsV2X zlA$5-6R76c$S`eGg8bj<d(0trD)BNbw`16=qE3~f+Srxw=jZ!1Om`@ zEvbOjHhf^K3NVgsQo@{R&GlCiKAlDI#R(+Yw4yb&p&14#7II6dO+~^$hT4E~Xb#F6 zd{+&AqA8#&T3w@c1c_8FNvDlW%4z2F=S{m{8u|`xPSS=q;B(5Vp`f{7FBa#}mg(q( zeGn6MQ?+*7;xvO&mL1Ciib&Bc&?OU6ZA(?rR#TIkNW-XYnKh{f^hnD>5vrl63Xr{I zU|W?GXhfT2Yf0@kw2^JHcvvjH+)|$CynkiRE1hJ(q|MP4FNt!7Ls=uWHTPDLC)~8~ z_E}t2Mblzb0YTpNp0Y3WUf%P8;kZlYFOO*oK~f3S;a*%Dl(6 z2~A;X3djv<3SYSk`TSEpZZv-@JmqZ{x zeI3Y4Xa=+H1Q}uSK*{HyvP_H%ZC$d7VJ1QVout(?V&_RKeE;gD7Z4GP=QTqidXJl` zu4AIxwQTE`a=jymb`iy4g|(DJZ7# zxQ&`X1-jEUWCcYSOw`E;wx$-qXyFi4n zpJ8aFri7ce)Ijqm23hx%m*@j11@_Dt)g{mHLf2~4B5z5Sg0K!nq50AR0%F8+bb1%4 z)Ff~{-1Hw%I+A0XgfAH~?hwTQMS;ra^Mppr1Z&xFG*aOG4wlK;`}Qvi7=dB}%s$pk|)?%kH_u--;5< ze=>96U_O_`uABUH8lsPqRD=G4rmmK&Wpw5IQl(sic56Aht+l}`!fi=bq328pHwu!y zjjnhph^CP62SXG{y(aht$m8ZkBrmpiAY&6E6yl`a1n=Hfx9uu;9|)ZzbP+l+x0d&@ zags2xTq)Ib$=JXJ$ub>7DUfg$qs#Qa(1#>MgkSpHA=$(QFHO2{)hKhWH8Gu_~&ZMdxH2x~z(p&!X$3hE-H9 zRZ7b)0qoSsAI+$nv{fmQ!RmNTf*G$NazhurF@EpYYLFkikGI_^>n<=_7TErk8Jp5veSVgbGQnpb#ols>>ChYPo&i zQz)=iSd|@HgXnqp4z8@_H#K#urIO;8t7Te=r89(rZAlO|f=B78=ne08M`im8Tq4nE zpGcScOI_j1H0|8VO34c;sm<>E0Qu^Y2*^=)%mqsj<0+<0<4?bRIj>^b(%PPI^@x@$ zu7sD*Fw7jwzDaeks?@yEC~l}#1GDDgk)P&C_?N2HscvOEU1X?RRD~|ksLN9yh&Iud z24Q7);INaeJ0O@J4!rXIfwzaU%R!VaF9%@O>B4M5YZ#^#=E@#=EehJ+nan8K-pvVh z73vzIu8sYxE1CtI>FI1asIw~pmEG#8EC}#0rJcSTMQJytGpe-ulyK>UOD9}9ff3`! z2z)?{Ks_1m!9|7P;xR@nzc%RO6=>@TM^89SF4w473d-?boxY}G+F_#t|A+z>&t(-Xu1~p5>UBoKae~3? z7$CyW#puytu>6q&gP(xF1c3>0VnTc0af5#~^Ik!q1t2hNLEs~=MnQuAKAce`_}}p& zLD*sf7Euf^!f_eJ03{v^DO?hs|58jxJT`>qG2ktmo6+NL7@d*hFPjh-9QKh)q3|V2 z_F@vfxFnCi;3Wl1VuKR?NRmPzNfeI61S4^wNPHlYJ`70`gv5g&F#$*{_`zocp~!g% zp*WT?gyJ{`5sI8g5t0&(#ukk7k3~}$iY6)&jVTa~D-Mk>3{77Ynxr5!o)|Qy5Hz+3 zG$8?K7I%cD2s@Gl9q}MXOu!KvZln%25`-FJC6k!77PHo)n6*|$u?rEH4$M@qR)X6Q zJ2Tbv7!*ed+tGC2Ls4d|U%xk_GuA)7M+_2)K_W3o#Bq=)Jx-U1)kUl>Vs&wPi-?;< z+$7?r?iO< z;EBMKbmGYfVn08y_#(l*#(sWqBll;8ohtM1DDa|X6<*e-k{JGpi8e92l|*zB@WC$} zX&w+gh6f;w<7FQSKtur=1u7C2iA?`13RK+6DpW`UDg;z;hYAs32!u!oLTm*9LJm88 z{6rLFcq^-ikH5|R@NuD5i98*AK&=?3gP+_bGN+eVi^yC==EB_)k+}efL;^(IewY9L z-knf@5MGy1s?;h~%wE^_vEXRe5Z_CvmQXFBS`k%?F_5eon;^MLh<4=``m}52+wk{1 zJPJI&gy%ze{x-3zW=-#+S(C}ptiHY}?XhpzZA>heXyZ}0@$tZSLkGR4e-;HJa#@Yf zCq;ZN;`7u`hX_9;4SonCZax$ALmmyW-vTK|jg-fNEj?@?TL7g1N&%DtCBD!k-Sb%#2|s>MMkV~=yrkRZBshb9J~-|-_Y>mbc2Wwd@;gI09>cak7B8cBg4t9? z?gg{Ra9Pg*ges|%IX1`Rk+}dbTx5O|?* z6f{4`syk?&AS4Xoi4y|)sih71hH}pZ@phre1L=Asxq%FeM7-d_;viN~VKNXunAisZ zlU^0}H&u%b^AagteTtS6h8xu=xbeHJ;>HJwTwrrbEU?Mc0-GL{N=h1EED0LblAzTT z?>S{$;R-dqVe5ZhW1&m~o;Tt72%gX3xwHEkpj}XA(Ap;gWOi8~#B~K% zu(vE|0@afA0=;`Pq`&f|C|<$F(TsWp`VlbI^W}xoJW=F@(HlZW@mv-yG3dl-c^TB> zGr=t4obKi%boc;fpm3g2G8S|W(2iX~Vz|4NkeF|&3mnA5S2i!{@DYhuIDDjIl?^{- z9-_fZEVzrrn8aZ`qQG4YhR@u;zwep*Y9HsQIv~;Xh0pwT-}FJ|&`_Yln726Q^DYZg z4V$`Shh6PHb0LbG`F2(ZpMEoiRnokwUgGR;4x_`xLJT7qqs17;Mtl}zC>J~|N&uwUs#QCeqpS)6{TgkJ(S~wv>wlimrC3-FPsnQT!{~m;u=_HIRB@E1Iu76 z3RqSR$5Wxa}O)>@uf5S6`?OQpJM$f`m$rvTF1aHIynKYi)yPE9xEjjmm5N}I$^ zbaP^majmXF=66@)@-*Uq6~G?<)zcq{stIgzLxI=i}|{arW{kg|w}rO3c<>7B8HnES5E0 zv2ER5PLHrHCqc@V`HI&vXSrIAL7)<15)v3Tk8b(gDaNQJ<4CQ!fQQ>T^J$2ydx*KB zZqU`elhxy%?s7k6K9h$?i8JvIe2D!@K!I;VmqT9dz_m7a_Cm=Bh$Jhj8TtdNF zAVe@Ig251|-`PLZqge@o@WLNr){tl1hM(mU3=g-FpM!N=fcCc3+YWdGVQ#>aQQUw} zvUI;)z+i#F0)qtx3k((*90LX)lO1fE zt>+waF4nHdd+%ZtS};vN;~B%yHg5 z%b>zh<~Z-A6%mGrFt|q;rx|DOG9rxGPO+ElXLY9mI zA2wVacJ196pCKZtc)${ocZkSbzwq63U$24W)g417g3qDoj>44GmbtEZrpG<_>tv~I znQhf77@(CHJxhNe_ecN1R77!Q(;}OZkSw(|8(RNI6bSl_#`P=Ux(6}~? ze{%)saA~Z#HutSWxo2+!suq4ugP1}Q136+KM-1eobs$FsI3mDF$P@}aVA!<};dndw z&nS3%E34-sNjVCpF;Km0QtWQf%+9QLZI5#)gE4l> zHUvAx#o3BAl4eG`8ueH$?FB-mphzX*i7N7t7f5mW2Z1UQ_yu`RDn(L7Do=UMOWq*K z>6YfA(Pg!}(;8{2Da5c+tIz2^m+zczb@zLXx`CA~^4rq;nyuT0cE`k$Y&D&>X4(WT zHpr4rOu0i^*e0*Nr>e3ozj)&1V^hbc=s$%Mh2u}a?`61JaQz0ZKfv`5xW0nx8-=<1 z3v)zA%-&x(q3!DSlUUW*jhVvq(DMfx z*lNqRty#3tj~v<1?LF_|)KJ-bdu4w}uo+S4YyCowsoN2y=7_ComKF09JKcAuH;%Vu zYfHsDrlFg*q!@Y?ZNE@@vGfvJ9DL&4Tq?F~yF+T_a#OckPQ9eycKM>bt*aMI;JX~C ztXRCUXWH^^4F%~m4P0MAx9Cr01Klc>N*nH9*EfpD`zP?0)X;Yi`KE%+hTcT(57c95 zu@x1chF_%Zb}Wq$9h+3YEZjzR%YCoDhYY=L$=2Rdttg>oplB;CjUd_FL#ETNYZk%{ zq_kv9RzPOtaa4C~WMUhYq5Kc}MyyRq-xz%3`d1}*ekERie$sUI|PBs z009tFTb78{ffsB|1;&X@YgoY6!eA5O)p-POoIS+~=7qKm2)7WF(N&E07yv|rPRkRRPn9>5; z!Hz-M2aVLWHEYkUPB$54#jz})h*aGIv&Hb#wlodxv~;C~bb>k-uFG|xM|&2k&`ecR zf$SBN*qW?DC)%`FTkdqAk8B*q!*c1Bw)%MY{;LaK?X&=)eU7eqj~Hhpk~P{|e6WT* z?mmm|pXKERq{t>n067F&pu6oV7N2A)?||$<$Y@)aX=j%L6_hr?hL!L~dve zsxl!@+M8tf6_-SyJi8qzOKAp+?gbeM<$;keK51b>q>drm)Oph01Krc>I`zf07k+&G z$_t40=kvO$QiCBa%`gZx3VN4nCdgG$u*HlEltR@T4ULJ%azMi8(H#fd^jRN>K#4$b zAgHc}-N0>an1YJU$86LBDj;~*14y(g5ZvNpO9Qp-K=JcX+^KgbHoIxZ{8ps;C8R?zV(=n%4|)DMSN$ ziXpdM{aTz~qKZ7oF!WMOCM{cTqQz6gtb1AywJ0*ti022Wi$I>o0@3QsmF>uuiiiPK zp~dnN0%FwUy3z$Ibs53~_xVp49oexl2|pMekSA>B|rJF@|!=X#J<^+7zWU^TiEJoLSWey*cP~C32#M-=q(|l zC=oe_6_E#2-mh1*FSfNLVl%u`yB;o#a?#KyuA&a7${%jV)_Oe_Dc|lj# zDzyr_c5$UzDMP=t9mCc;5EYS*tY{!P3~{<7+q>wR_XM#gG;bh~KC!3?{sQE2%OYBq z*n3d01))6+(r!U?Z)>}D4WbW(E>OA%om$u^`q(&4nOLos>xOJ@5lObNW2zF(0|~my z{tGgsxfLW21kw-s7|21A%if@w3h*&Nt5Ra`4bxfkntQH{4GHo}nyx=%LH~5KPDlgW z$a`?>sof69TT^SOdLCU+Y!F!ut)53WXbWqoQm&R)T>`|Z(;wYzVAiXQ$Z&JKE+HYe zAxTD;y~oL#+UKp(=WXRYdP0N5dc)W4ryzxNRRv;%g=mIPSIQ0DBDO?Hbh-82s-R2s zFUA9ni)A-2>@zGw3eu4b$Qg}L4M@OBwYJWb;VjiiR}pm+Od8bfhEMs}Ehu0j4Psc9 ziwuyu&7N0oM-i#6jD!k(TtyL7m{wP+KGSk#-!~}mRYX%9Ti@0a2)MdY+}5?7wnnR8 ztyNefR?blhwk1Q_2oa@cqBp(2yCyqO;R?-02UNN;SnC>JrkQZ7Yh^E`WInt52k2Li zL_m*vgB3)E98bjx%Rl}8<)TIuOYeBf)hAl1x*A?N7vko^{F~eWugcsT%i?0a8n`tN zkNh-G!@ta|&h#4F6_Kg!FcZ4OvM$ejAlpPcI;54o5w~u!-bh+89(a|*18*N?SA!^9 zSq;Ff(}P(_Z<^SO3T2PIo&;^boSsm${i-0$RhVmpxi$}Pu4o=`rf;*Apv|rYOm?Sl zvY^0mMmzge5~JOkolv7SW<*FQLOK!B35*y&Mvx<71nTQ>A1L{IrJgV{juRogjsYV4T#OzahU*_WF!%`wOc0omCMI+a zoj3SD13oASv;hR-J_vl|wIoRJ--jm@3I6v`i6U$%10PWgF~adPiXlooKBRC-c=1aq zANg1e&tt&baBfDAyHRvTj=$lAxZtplR1TFdQ@WRu>ZPT5{1q=NSdto)@JEsy0!gND zBqbP03q{fck^EsumLMb@1W5@%Qo#>CBM2qVLkOj@j3Jc9F^Ev&Jc^K&Y&5lGlz%Ro z!&Ed=nP^IhXj*w_dTD6>vd}Cgq3PtHDW#yPWuO^JKqqlUSdOqGOVE)Ha-;+tso_TM zU?W4QA--f1v({qPdK9zP>L^wr0@Hz+>h)@H8De*)nr(yPs8K7L?tL)HjP)D$Oz4dD zFYXqDL}HLg3=(l1B+5_FC31CX6N=eeEUr*}Nk2izs1oN>9B%bXoAO^p+Au*)*qlZ{AA~0kO z7&86F)KT}|oF9z1qjusC5$S!MwN2ZwR*h9St{P!og{1-On)^QdUW7}9>n*rGhU@QB`&!oQK9)6|9m^V! zP5FSb3GZX-xkMk2x{n_Uycav@HT%mX7*Uwi{CryE=ORDP{d9B z5&l~s<*1SJWU!~>2C@ZE3ZN7~DS%P{Wj28FRJi*VI5}#ZeAqj_9dCmSz?_MMnUY6+ zVK@E9BuH7E)M3Zf!i0aPl)h`xk9@3c>}X(cU7HcVn(gk-lW6!ucTcE>KU|azyOM=q z(9Z|Q_2zy;Ji<;!Ay;u{B*$Y|78u6M=!4*JDkG1A!^m*?o&yL~bEk9R9FIrm0=#h1 zxezKmbS^+fY(1HejY>}EbY*!Q-{VEcp;gm>PJU$PMAjZYQ;};meGwKD#y$z?} zc7OM&Gwi=-y=D)D{~?15)k^UDW}??wMguQHBeAs?wXwxtlcWOYCw1eg@6MJ={&595 zSy9f2li!~=F6YKZQO#APm9!Ncj@C>}dGyC^CM3=02+lC#oK9SbCza+Y3Gtkycyhu% zjHEy6_3B}PGPEg&USJ(S!hME+=k7{^h})AoQMxk&-4D9z4w`2O2_tyogn)i(c|*Qf z?zte|J`{N%U7sX3kO?D^F1UnokSeHzGLSx)*hc`9eiIHiRZC2Kh1RY;$!dwhjam}i z`2D2f#z&d_z~+qjz-FR8u<28&=A`q*Cqbk7BxpUyYfeKBatujUIt>fD;Tm(jQQ!Z( z9)>baxZZ~A6S%&B>&yMW0on&;hP{0zKxUs0gt&ge6_l0*U7%UAA+fVJBji;qCy5HS z?wZi3z&HV}da<%pUZjS+Gn1RZ9YROp8 zIY2vg4N2kbR!U;Atu1j-4`1E9w8KXvUFGnRPE|MjlzFHIFSX#V5@S+_@u&iKHHe?N z|M1W=_q74eQEf=0*$toj>)jcE%-B?*8ZvKj(idGya-Cqqv7?T5pSzSK%zSrJ2cLd7 zLp0jGno;H)Z^qH#;vwP)rsy%^*htTV#B#yIqYM({7JNh!;jU2Q3P&P&7>_FP4^ZNf z=~stGrd!WmxOsUa#2(OK0}py|MT-uHN30`$DGAd2d1gY9<}b&5^9$=K&M%Dhw4%HW zw?}fEk>2Au@ls8D=7sYnoondXAg z^h&v*nTn<|%aK5Pn~vNB_-8j=+o>B^+3NYVmb^{!$)01( zuT$o=b_c>59b75txvP-d5dA#m-9iqXDhI>1;Xc9*U?jv%^-9a6`tE>mS${p~!;BI4Qt7iX`#Hrv(9Y*NPL~LG^zmEV9(2&uGBnKis z@<`z)~D7SP5u}^3xl+R#;DA7c~ zzkcQV(|rya7AQAZL>Lp5>Zp^m@1SaEZ&$eZWXR?uz1_hUJma7=t`FniT>&~=IxDTk SeQU9Y82ld{r=fU}8vy{P>tpu- diff --git a/test/snapshots/markdownlint-cli2-test-main.js.md b/test/snapshots/markdownlint-cli2-test-main.js.md index 2e2d8788..ee8d705a 100644 --- a/test/snapshots/markdownlint-cli2-test-main.js.md +++ b/test/snapshots/markdownlint-cli2-test-main.js.md @@ -17,9 +17,7 @@ Generated by [AVA](https://avajs.dev). stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ https://github.com/DavidAnson/markdownlint-cli2␊ ␊ - Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-fix glob0 [glob1] [...] [globN]␊ - markdownlint-cli2-config config-file glob0 [glob1] [...] [globN]␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ ␊ Glob expressions (from the globby library):␊ - * matches any number of characters, but not /␊ @@ -34,6 +32,62 @@ Generated by [AVA](https://avajs.dev). - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ + Configuration via:␊ + - .markdownlint-cli2.jsonc␊ + - .markdownlint-cli2.yaml␊ + - .markdownlint-cli2.cjs or .markdownlint-cli2.mjs␊ + - .markdownlint.jsonc or .markdownlint.json␊ + - .markdownlint.yaml or .markdownlint.yml␊ + - .markdownlint.cjs or .markdownlint.mjs␊ + ␊ + Cross-platform compatibility:␊ + - UNIX and Windows shells expand globs according to different rules; quoting arguments is recommended␊ + - Some Windows shells don't handle single-quoted (') arguments well; double-quote (") is recommended␊ + - Shells that expand globs do not support negated patterns (!node_modules); quoting is required here␊ + - Some UNIX shells parse exclamation (!) in double-quotes; hashtag (#) is recommended in these cases␊ + - The path separator is forward slash (/) on all platforms; backslash (\\) is automatically converted␊ + ␊ + The most compatible syntax for cross-platform support:␊ + $ markdownlint-cli2 "**/*.md" "#node_modules"␊ + `, + } + +## no-arguments-config-arg (main) + +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + https://github.com/DavidAnson/markdownlint-cli2␊ + ␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ + ␊ + Glob expressions (from the globby library):␊ + - * matches any number of characters, but not /␊ + - ? matches a single character, but not /␊ + - ** matches any number of characters, including /␊ + - {} 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␊ + ␊ + Dot-only glob:␊ + - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ + - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ + - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ + ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ Configuration via:␊ - .markdownlint-cli2.jsonc␊ - .markdownlint-cli2.yaml␊ @@ -1213,6 +1267,64 @@ Generated by [AVA](https://avajs.dev). `, } +## fix-default-true-arg (main) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir/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"]␊ + dir2/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ + dir2/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ + dir2/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + dir2/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ + dir2/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + dir2/subdir/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ + dir2/subdir/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ + dir2/subdir/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + dir2/subdir/info.md:2:20 MD038/no-space-in-code Spaces inside code span elements [Context: "\`code2 \`"]␊ + dir2/subdir/info.md:4 MD012/no-multiple-blanks Multiple consecutive blank lines [Expected: 1; Actual: 2]␊ + dir3/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [Context: "## Information"]␊ + dir3/info.md:1 MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "## Information"]␊ + dir3/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 7 file(s)␊ + Summary: 19 error(s)␊ + `, + } + +## fix-default-true-override-arg (main) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `viewme.md:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ + 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:1 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␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 1 file(s)␊ + Summary: 5 error(s)␊ + `, + } + ## customRules (main) > Snapshot 1 @@ -2909,3 +3021,93 @@ Generated by [AVA](https://avajs.dev). Summary: 6 error(s)␊ `, } + +## no-arg (main) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: `dir/about.md:1:1 MD021/no-multiple-space-closed-atx Multiple spaces inside hashes on closed atx style heading [Context: "# About #"]␊ + dir/about.md:4 MD032/blanks-around-lists Lists should be surrounded by blank lines [Context: "1. List"]␊ + dir/about.md:5:1 MD029/ol-prefix Ordered list item prefix [Expected: 2; Actual: 3; Style: 1/2/3]␊ + dir/subdir/info.md:1 MD022/blanks-around-headings/blanks-around-headers Headings should be surrounded by blank lines [Expected: 1; Actual: 0; Below] [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"]␊ + dir/subdir/info.md:2:6 MD038/no-space-in-code Spaces inside code span elements [Context: "\` code1\`"]␊ + 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:3:10 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1]␊ + 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:1 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␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 13 error(s)␊ + `, + } + +## fix-first-arg (main) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 3 error(s)␊ + `, + } + +## fix-last-arg (main) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 3 error(s)␊ + `, + } + +## fix-multiple-arg (main) + +> Snapshot 1 + + { + exitCode: 1, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + 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"]␊ + `, + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + Finding: **/*.md␊ + Linting: 3 file(s)␊ + Summary: 3 error(s)␊ + `, + } diff --git a/test/snapshots/markdownlint-cli2-test-main.js.snap b/test/snapshots/markdownlint-cli2-test-main.js.snap index 21d520ce7b2788ff5ecb10b31ba55ea54108ddb4..7ac9e22910bf9fb08f45a9e0beec713b0a5f74d8 100644 GIT binary patch literal 9251 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 literal 8893 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 Date: Fri, 9 Jun 2023 21:15:53 -0700 Subject: [PATCH 21/23] Update to version 0.8.0. --- CHANGELOG.md | 6 ++++++ README.md | 8 ++++---- markdownlint-cli2.js | 2 +- package.json | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9bde6208..7205929d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.8.0 + +- Add support for `--config` and `--fix` parameters +- Update dependencies (including `markdownlint`) +- Remove support for end-of-life Node 14 + ## 0.7.1 - Update dependencies (including `markdownlint`) diff --git a/README.md b/README.md index 19cd9db5..18f1097a 100644 --- a/README.md +++ b/README.md @@ -166,7 +166,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.7.1 "**/*.md" "#node_modules" +docker run -v $PWD:/workdir davidanson/markdownlint-cli2:v0.8.0 "**/*.md" "#node_modules" ``` Notes: @@ -183,7 +183,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.7.1 "**/*.md" "#node_modules" + docker run -w /myfolder -v $PWD:/myfolder davidanson/markdownlint-cli2:v0.8.0 "**/*.md" "#node_modules" ``` > **Deprecated** @@ -192,7 +192,7 @@ Notes: > instead, use Docker's `--entrypoint` flag: > > ```bash -> docker run -v $PWD:/workdir --entrypoint="markdownlint-cli2-fix" davidanson/markdownlint-cli2:v0.7.1 "**/*.md" "#node_modules" +> docker run -v $PWD:/workdir --entrypoint="markdownlint-cli2-fix" davidanson/markdownlint-cli2:v0.8.0 "**/*.md" "#node_modules" > ``` For convenience, the container image @@ -401,7 +401,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.7.1 + rev: v0.8.0 hooks: - id: markdownlint-cli2 ``` diff --git a/markdownlint-cli2.js b/markdownlint-cli2.js index a4f2fc61..1ac8a24f 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.js @@ -25,7 +25,7 @@ const resolveAndRequire = require("./resolve-and-require"); // Variables const packageName = "markdownlint-cli2"; -const packageVersion = "0.7.1"; +const packageVersion = "0.8.0"; const libraryName = "markdownlint"; const libraryVersion = markdownlintLibrary.getVersion(); const dotOnlySubstitute = "*.{md,markdown}"; diff --git a/package.json b/package.json index 94754b3d..3ffe6fb6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "markdownlint-cli2", - "version": "0.7.1", + "version": "0.8.0", "description": "A fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the `markdownlint` library", "author": { "name": "David Anson", From ea2b4ff6206116987379c77dcc3d65aa511265ac Mon Sep 17 00:00:00 2001 From: David Anson Date: Sun, 11 Jun 2023 11:40:35 -0700 Subject: [PATCH 22/23] Return exitCode 2 (linting not completed) for --config with missing configPath (i.e., last parameter). --- markdownlint-cli2.js | 5 +- test/markdownlint-cli2-test-cases.js | 7 +++ .../markdownlint-cli2-test-exec.js.md | 52 ++++++++++++++++++ .../markdownlint-cli2-test-exec.js.snap | Bin 11909 -> 11940 bytes .../snapshots/markdownlint-cli2-test-fs.js.md | 52 ++++++++++++++++++ .../markdownlint-cli2-test-fs.js.snap | Bin 4734 -> 4761 bytes .../markdownlint-cli2-test-main.js.md | 52 ++++++++++++++++++ .../markdownlint-cli2-test-main.js.snap | Bin 9251 -> 9281 bytes 8 files changed, 167 insertions(+), 1 deletion(-) diff --git a/markdownlint-cli2.js b/markdownlint-cli2.js index 1ac8a24f..545c1f52 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.js @@ -877,7 +877,10 @@ const main = async (params) => { noGlobs, noRequire ); - if ((globPatterns.length === 0) && !nonFileContents) { + if ( + ((globPatterns.length === 0) && !nonFileContents) || + (configPath === null) + ) { showHelp(logMessage); return 2; } diff --git a/test/markdownlint-cli2-test-cases.js b/test/markdownlint-cli2-test-cases.js index 4756b370..c7d6ae42 100644 --- a/test/markdownlint-cli2-test-cases.js +++ b/test/markdownlint-cli2-test-cases.js @@ -156,6 +156,13 @@ const testCases = "cwd": "no-config" }); + testCase({ + "name": "missing-argument-config-arg", + "args": [ "**", "--config" ], + "exitCode": 2, + "cwd": "no-config" + }); + testCase({ "name": "one-argument-config-arg", "args": [ "--config", "../config-files/cfg/.markdownlint-cli2.jsonc" ], diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.md b/test/snapshots/markdownlint-cli2-test-exec.js.md index 724bf792..54fc3187 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.js.md +++ b/test/snapshots/markdownlint-cli2-test-exec.js.md @@ -214,6 +214,58 @@ Generated by [AVA](https://avajs.dev). ## no-arguments-config-arg (exec) +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + https://github.com/DavidAnson/markdownlint-cli2␊ + ␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ + ␊ + Glob expressions (from the globby library):␊ + - * matches any number of characters, but not /␊ + - ? matches a single character, but not /␊ + - ** matches any number of characters, including /␊ + - {} 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␊ + ␊ + Dot-only glob:␊ + - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ + - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ + - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ + ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ + Configuration via:␊ + - .markdownlint-cli2.jsonc␊ + - .markdownlint-cli2.yaml␊ + - .markdownlint-cli2.cjs or .markdownlint-cli2.mjs␊ + - .markdownlint.jsonc or .markdownlint.json␊ + - .markdownlint.yaml or .markdownlint.yml␊ + - .markdownlint.cjs or .markdownlint.mjs␊ + ␊ + Cross-platform compatibility:␊ + - UNIX and Windows shells expand globs according to different rules; quoting arguments is recommended␊ + - Some Windows shells don't handle single-quoted (') arguments well; double-quote (") is recommended␊ + - Shells that expand globs do not support negated patterns (!node_modules); quoting is required here␊ + - Some UNIX shells parse exclamation (!) in double-quotes; hashtag (#) is recommended in these cases␊ + - The path separator is forward slash (/) on all platforms; backslash (\\) is automatically converted␊ + ␊ + The most compatible syntax for cross-platform support:␊ + $ markdownlint-cli2 "**/*.md" "#node_modules"␊ + `, + } + +## missing-argument-config-arg (exec) + > Snapshot 1 { diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.snap b/test/snapshots/markdownlint-cli2-test-exec.js.snap index a6b00b295058cae8787bbf83b53fc10fabfcc59a..235ad586d50b9a23f1c4ace8552dc0fab1e4af90 100644 GIT binary patch delta 9503 zcmZvi1yEc|*RBU2B)Hq)F2UX19fG?C&)|f?ogjk*f_or9a0tQOJy-|<26uP3$@#u} zZr#8B{Zy@bS9hivL64To3*v4qK?9m2S< zV({R!*-(@yal8DKlj3ZtJ;}Q!WX_W^=p?@$z$Do82@GNDC0RDLf}Q!xxip45=jI(R zo)eH;5d=qvp_{7Ci-69`_SN#3?QWam{U$k%%E5|2xq7gNGX-hWRn?jn{xo6d z^)4jP=HQX=Y3;gbWyc&6+F8@HgDu{Pln3hB(fECV6DZ#J{@A{0vYmca$2K4!;CWIb z=p1UilIZ4=x3c`Kaym9q)(l!&7JuMbNvs&mda5fZpNQaD5mC935PLnA?66Xy1iFui z5u7{3yV?FRQ=d4Q_vAM^MS}I->TF7O!FfPuhs{_^jc22pEAt8By%V*gQ0QmQ_2IIh zbcN5a{0!F3c?5BJ$r!dhp}5&dTa{U%G=B1blB~yKoau0m-xugd$vQ8@+^j|+U0H4S zDqPv{$U}S(A|}-i`&j^KX@gBXKR>VTH4Ch}RWXp=ONvk-xReX8p)8-RuC8+SzAvOq zRGY8kl|gC3QniN29?Hx+Y6w%ysBz0(z?31)^3~GKO@ZY`vU3{I;v`BHO7U>XSaLe4 zAxS^@Xw;kw$@o9_UYMJRYOtwE5Ld)0JZYGz%`}vb_Qt>;2};~;Kgg0}CeX$KKm`c- ztBPL?_lbinD$y{0);XdFM7Hka&^%tkhnSnt6&|VTYGXloP0Pl6W@$)7XbSL5#e%)F z8M6zzPwu<(9MBx%_@}akLS-vT1;Np(D?&e4+Z`AAWI(xsuwvftuOxgTD_Ctfhx(ty zJZ)4X!M9Wl`v~)*nfzsY>XYYvyaft{4h*{~a6T?Ndc)HN3?STb8td64S=9TY)CdM$ zQ!RqsYd*+oot_pP&GKb!vLGcwf-|i%hQUpzkaqQWb!X>JlRD@t)A%siF}uAD;X4O# zll-?BlTW{_XLt7J#c1M$-Gf!xK8En;EF2#jTa&e*_mw?@KI>XBweEy!e5qy8Adzd! z|5-3w<|%WcA?fh@W|q3gOOC?fKJ_8R;q!A@wzm`{1o*UOgV6%4Qg?)tK$7B##L{hX z$H)#wHU5EkY~mf|0$^5EgKI4)K5Y!J^|`TKbD(sf$>|FU#(cN|fMBP_j2jNbK?)uA zTEkeaJm2iuUu>4;e*5is{x)2;Kb?mDmXsd+4eorXb9|%kB8u;VHl_;~^Y$}ZEr z?H7QUKhR6}Z&YSgYqmFI&aY1uep9Q_MnX7Cwe1DJ4&~M&!_ZY28AE-&Bkbp9wRrif zXDoyx_%Y=BIQ~{Tmv%;gCdN~W8fF2J#SZ?EQv-8S=V(T?uaQXTU`_8Pp5rxQ>vtde zVyI)=HTCZpx7*ltrfNQt#8Il3DbcSN-Q5y~{<{6wO1=70|uQm5H8!%nYf=xPFM8O7rpT&c<-*99LeS^Vs ze${`6eW%DvVD+ki*|Rk$Led^z$nIx^868e`;@(q@$Wt`lO8#cbdN*DLaX!=QyH(R= z$lwrwH!lWpE7Tf=VmIT-b91J;^T8xK`DdGdV~`i5_%OLW&P@6E=$raf@&c+SIC~HH z#3d}Ps<4X{`XNb16&yK5B5e=Mq5h93Kb)94gNnNiAz_uuT;@$vTM5g)i1tx??!}1X z+{^Cb6=;P2N2IMWa)Z4f$N2xY{42zY#i#43{b>B*d~nt|Xu#1^)Y4HvihqQ^19@RP z&MvDaSV${e9YcaGLtAX#MxT z?ZL=#6)G{(MYvh$88JgU|AkdvmPge#)Rhngf+RGwk>A3C!dbkv1bvrFV)1e$(@S1C zRL5QKjM!zub6lT!NnwKp4)`kiCNUZhjLKHp5{2!C1Q zpuO-80uyc|ePe*~E|hGDI3zhxVO^>a;xOn#-@ZT_#(E z7rTy%68y+`i%jTn&sH#Lbd4(N3#>)+S~w2QbE_Qm20da+n-xFddU~83SGy6b2?IlF zRAjUuoo@58vmbYr6Ofw-{Z{WdPm_@2u=U?yYfP_9QOF)ma60TFZJu8CABl7tAD3;Z zHya2<@&QvF9WK&QFEb;iu@^o>2W(Dce4tK&AN-=MhjQ zLm8%v%}0?++IN($aht7j8mz7>>CDJ-2EM9(mlu!$ZAYPpkcgFE*+p{|2%#l}!ZG|Q`vPbiBaeo$b|Tt zpO!;r=#-V!RH*b+56x5xV!qxNtQD#iErwaG_${U(cYHem{t4&QA*bK23?|J3UI%PH zs?yk;a4n}o8u$4@Y|7bHdLmIps`%a>vzr=phV{>li3Z^D`vr+eh$D?Eo@Ex(An){c ziz#uHb;E~g;oR-eWITCwVxcrfPk;9;PpNOeR5?uAg(rE~LqB`JPTyDwdE+D~R+?tW z`9=j-@@c$+FgQ@;4QC5UBh_>-N7(pKjWk_h<>L{`kA!>z!!UxSyT+>7+(EzYgLn1n zJF5Ds+#d1DYKXA7FA#Z&8pc`?wY+5OJ`9fsb5XzXZy~*`2>@l^z%@qUE zveqF3G(OfLTFA@Mb&JuA&>(bGVVXMAUEhMuhz~@{jYziBAMbHLsl1WsvQlDF@-)kz?E@2^p<>6y9i8H{!U}=h zImk`uvU0evWFr4(t2F1_7^>#+^&zWA$1jf#XvVs9o=Mhc(pJH+mbW&NTCX@-aQz+C zgfkK$m0kF};8E_fD;_B$g%d{E8jN=C%aJKonVK);W=lIgaO64M;1O;w{5PJF;)dJB zLBfjrLphPVDFrH#93CwAShFpT9*ZwbCT_-!zPj2zxxz9_vA?&ROJ;2RiFPd z#9NbxvJ3j|6({K0+&w39R7=)IGwF%|Hq60o8>do;Gi=#o!v378$iv=&Tu17KAH?CSz+t0wEuqqc#v?@h=$JlRRDWyL-*r{WB_b9h$}LPhEt4y?BuqVBHOKP^tCn2$aY<+;-3CuJC@*eHLgh(c%wp8C_r)UwkPJx9-%y-VjYMn_50(s;)U>54XGDO9jG<5=Qz7fJ zgRnmlUJfDv|6x8X#I?c#p!Ju0ebpUuf~SJlrGyg)g#n0fizbRD z47g7dN1xYm|2jzaOHpl{x)UL~BLTPoT=^r!*jk`NE5N{W`5*M+o;K?sA72y@B@xTH z;bnCZAKD>^fIkH9!%6DigVyNcg%gF%m&zqro)S56Ao73a)E6j8^(Q;QlE;w5C>KYT zEqOVc@BV8yAOBP|^K$#cLKYw!TtWNSz??W95Dd`t0Nk4311zpVdX#z{g;Efk4J_zO zG+Z=X+F)?>yRI_g;8w`rIbf0LN)rTjwSXEyjh#*&f5-8>00BV2JTgGM-~f_%{}*$y zr$pt)(OZ5CT|eEsSoue-7zl|uVmxs$v8EqJ^xrN_i+`q6MpAdfd|=_F@Ve;Qfb005 zs%`VX@8^W@Pglls;d9ZmfzeA5?hCEzW6?;_hym}$pK*z=&l3Oj`2hc*#aMs{bVW68n&ntCw#YFMLmMc9Qx}l?xlHkL%*j|QN{+6OCm9u zz-7~hXu#(mGN1(V7ieRQ}0{hjV-gH#sd8;Q>l*Nrth&P3k}kJ1WN zuv|FuM-{q^6t?6*pRz&~y0sNE*m8vULjK;he4^cjiw$5^*AN~!%t~{pPK@zcWfySF_)Supi z8wXc3)UMmV*6i_~HAGyzx1l-Hng)rxDJXssv8-@#*%$9|M`P zXr_L|8>T{9Aj@J(9TBJ;Ew86BI8-lnoXjra>7|Zjj#e~}bo9+|O{9(r&0Y>*hEsC| zb$V}>epv2j#du*RknfxFT~%w+68S7rEDO#xq8%&?JDdDO<#E{1JYuQ#j>u}6^uMg) zpH|c3#{?gdv6SxCYfMi%xKzj_yNXAG66GT)J)9u}6UIvJhbSuq{k0(1ae`#vpOXov znW?0cP5~}wuZ4iP2)Ep*MY3KoERR6^4qs4wcQ`SDgm{UqDF)*4+RbONJO_~*p3y=< z?$qHV)0TwL=+KW*RO0SiNk*z)r3RfVFQh&KD7$tLSbR_Km;=S*n?9bYQ@f6#b1E9t_6wF!AA;_Oc0Gg$oi;3@o>i1o>C_(h zlG9=O9qQ%fM|Lokr_H)kZWyx$+X`{JSOF?N;f^@LNUQB{!H3VW@Pn;+dc5@<%3Yj{ z)JR}H_O|WfRHpUl_e{%ux`UC9#sD@Q8a&AE$Z)-oh6vI`+p~9RD{n4(H;SLbn>jyp zrO%GvN|-C4I$>^+>ZOwdbPGVg@`1aCXl zQS&wAQ~rGHe%3>oM(hwrlIudUE@YhwLpo|deq0#;q4c^oX76XDk|JZD0anLHxaJec zqpRN~dq#BoH?A)UYH9MX-7>qx(n3k6OzY=yJluReD{~tv{_b|b2Y+`v8H_U%;i5;5 zm4Ejl^b-pr6F%qMCc97-9_gewnBD~`7!DQ%0cB-K zBeP8Da;2#)Ptn+VkG2ZBJe?mx_6a-(+dGIK3rJSVKRurE3ALx^OA+01)9e=Vu^5cv zimDVwndqyyU++g3#hM8f7&>?+bXtqq`>z3D?+J^E!Ta zQYXAlmU$`db`d_U!c&GP{WIt`0V>cT3qMFi;}OV3Ge|`LPP!?Y**P1CPLFF@fQ>^K zi?c2#km;W`ny^y>3T(pE@O{VHDlE+)zWIe97vP972-5g5c6lZ#V#sYclzzQFUQ*U> z59--3zBxoP91-c~L)5^7OwRh489jb-DwPu~LjmsIy#MVJ_LC4RGRuut&hF<(z+07L z#%Npo=_)@Sbxx??<>NyDw3_dDtgaO7%cF&NL$-}Xu|z>nQn&RQQ7HG4W>B$y_v_Lqgug1v8`^cHcUK4D z%l=Ut#rgeyYUX}iXG&Q1(H;irQ3-mO;{8BlmV9lmG`1>Earp^sj_Yo^J- zAcwBpgWCVrbLYCiPR*LxS60mPaJ%-4u){CLX5L_zWPkb@7@&&EsC(v3_vDz-`|;-y zchCGioT1Zsx}j4yNTt#E`AL(#w1I)bfY`X6xxzx$`28a9K!xF~R2};{!47(6kcaK2 zW?;T>4<}hE>Ks*_;1B1IqXK=*;cWOPKgep@pGzXn4QVZ4tE(0_RpN}WsV7#q&Z~I= z^MH%dI2;VX6*#HltCV|d{+PZ<*}mar zr(jnn$UP)oudhCBh-*Nkru!}gO;U8HbXxjaGk&e*Jl#CKb@apQ(1{*TIo){}ZYC@# z2{hKi&jmGn@|1D*o^P7NT|QD*I6O0z(iRyHnRASRD1X8WSgjULGFFq?wn5E(s~F0p zsLhe;W+&-)GVvKma4I@4afDpi&|pADVRqCgoWg|R?^LOx^wZ&5x1`tS)?35%owf>2 zTbO!VC5v*=Du6=EXk4m(#Yw;zJ_G&8*lFm0J3x zfi!duf=gcw2cVzf1UQOi;%$X2W3L4IP`wi~+(o09@@rgmzGyE#ymW&xV~pS)GFb3% zcPBou9?B_>(tKrOr)r!^`&MOEwuJ1WbE{v!f-P)SSv8X5EwfG+^AimXoO$`54c^OR+mRrQaF%M}CT;#$eT7kOLT4|kZ zXV-A?Um6*>Y6-W}I?nD+I0Q!yF4VmDr_o$>HM8usy zI}s~=vKj7RH~#J`H_s!p=GlE-f6p@X+U%d2_+C@+)j%<=;@bQff&lmh9V8r@?xsaj zuyI1^Pc>LTsWl)YLe8$HNLChMZ0%Bqv!mEH43SbSfsm|%1^5c{x7nfe*H;``aXMtm zZG+8p(eOq9CGtT&n+`_4Z`nT~$;)-hMa|@k*jBMVCk#s8jsx#%eCr~3P5ftVRTURc zFxJ)VX~~Y}+7%ZB_7Zm&kH?S?V8}$)iDMkXSgThJ-tS^o%f_i^_}f2?6^#G)HU}VU zO>;ClP#&Zcn9t0)FG;qB3iNVxP`q;NXu+H^1Tnwn!_vx*e^Q%=AajMMUk$tOwy#$+ z9<%F_`h)z85zo%C6F((a?G=qlij+c6mE$U=c+cFqXNVr%=WNTD_eTf%k_}uv5SYrc zu8;0~OM6>eh$_B+4lf{~#ena`j{FL?%f=|4FteL@7h)cR!|hRj0xyl^Gtd=72S^659|omq;I|tG@B^x_Ymd?NGB_6Z5T+? z*yE8i)|Oy>Yr@u+USuhe5l+m(=P%B|&iHAwr6JX1B7r$U*42e7uf0M*WI>T5O`apD zncOZnCC;N86|!$c079I!j;DN+hc9_sjB#^2j4`k@P)wmQN76DQbWXz$W`+ z#ltvt>XxYW>cW7vUcpPpy6WiOv=E&dWo$a%(R_v#SRuvYgzd%43!V#~9n`%#^X&HQh2^+kHbijp!sy`Q8SSxWE7KOE_pGqK(XYU9c0vKBab1KkuHpx0##}oTT zEM3=)GiMgb^;L<(O$WS7=j|F#?+Br&YuFhU+@p@MCAH}2KV5vwaDIX^R!z{XRVx7l zUvHdBGBsy3y&XecI$1Yaqb8Efzf@_m-nw~Mu5-^_U^I^#hv%%S(l(LP*EusIlxz+2 z6G5$A2F9K4$332?S;_-?LU%`Cpd9wi?CALx>2>x` zwJNypo9~yn!T%-LPof=c@K|B|wF|7s6i4(r>pZLfQw8~N?Hi&_Kd&>5RU9K)&cg19 zU%=;C$}9U9n1V^4-uYaPnf2w|>haY9iLdP3vDY$;wa%x)RC>@2*&(M|=) z{$b6p^z2++yp{r8)!TJ!MzujN8vD{t`gd*lFQxkUN|8ZXLT|?(K}qa3={yW&ynANS z#gN)#xQ$}Iv$th$-XUY62BLAM&9o6o*$DEn-%eE?#fKD$AbiM2-zZVc7Qp@Z(sMTK zv>j-zQ!0KlFry)6-PScuMLP#YYmC7tV?o34J(1n1R@i+EcW<2h*qD$h2E0;gpEdK; zK&Z#KFOMl(t`KD9k*BdI>%C*D5e0uhrGQ*wPmb@DFy`_RVXBjmakw&cebJ;I$w`PI z?NObl0V}FU+s$nqs`}d7^<-W-jJQ;{tK z+u4O{1@j`!uZ+om<$%bqoqzxS$~6YD;hMyJ7~L_nk1`Dezdh*JaCI4$Xl}f!%ByE* zu!4h_yiRkj;B(>SSJgDKqr9s%x7fV7!7&%b-Wi}AESpAL-VMVU~ zS17?RyuSI;FtNe|x1&Z`Q8;nA?A<}J-AK{3)4YB$`TJsL#n{;1Tm7Js9m+i7xbmwN z>d;LM6O!Mzd>fFkv+b{gl~DW{5;eCvFF*}&M6_+eNnI~P;6BVg>B3)MD1uM?&;JoM zO`}A(VA1-lm+qFA1Rb1_Q4P^{I3VyiFN$rUBY zuzQm2rVDts+#e1og+%}7am*Kt+=S%rob#dlD2UKZ#n@6O>2LsS1| zqSsEi4!2CX>}05~rd3z&dWy(QMI>A<9v!6DXr-9I*7mLt%Obmvd)1Qb(-U;*j_-Z`}likBF#*$faB+K`4?(Vv zr&5qwq%Hi%1WQ?Eea-og<71UH>v&eI@-rj~EDAL1YINcqesUOrsM-!I;`#2?zRQ;5 zoW&H#xDj6658o_wn2sDa(?YpiLFF6*Sw?oVID;#C;Z((?5#|R59|iG1`i`u+0SK?o zoTcw<7&4n`#-bEWRr-MoPr^pN=3O`|;+Cf0%<^s{=&Bb$;$~_KZ+F%LMVHP#`69FC zcE{R(-5~k$|H-!{Z({ywC6Ea7diYw-d+v;C;U)yEirM5ELs)K|{Gjk6sw8?p!N@|I z*zw>C-DPft(}NbWXux4X&sl`wTA=K#F7z60*K6*+79koXSiIgLD~$^&Er6E|bOJB9 z=dF3>_uDXS-h*6dC#yA_B$SqIi&bN3SySt+^|W|#IB^2T6J;B+qk>W$+?__{eQCza ze!y&8d0wz6@%hsY1C)n78ZNNO~ts;h=8Pj9Hka7tcO)?&@5lU?V{4wG^$EqnWdtjT4O4gC7e86jJ2|^S7agfxcYLy6i{z z@L90{nW{TUU&F||parTDkF@4qG4tLNo3c&=celKVVkW)ug#Lij z2LCDErHHCfPRZz{0NP@e;z|ncbpeUt_sJM1fZBh+AIsk8Sj2}Wzf0&|y$g8vF~TBk z0Jwe_c>cKZ8z(o5PNM8#`1k#fcXk&V)vz4q6byKL;T&mwF?G=i$x@{&`7Ghi;(DFXm7A6l?7WUlT=y?wzM68gOajcVrM18f7qunicJHJ@Qysy38?f!_p#1Cq_i-C}AQLuo&p*$zd_ zKHFr>s~VN+^Ir{=N1)Gvi!DwWYw@%4ZW$t@$|ve+mG*LiLt%|Q78k%=8cjM)_$ErX z$XIBKaqIXggLp{b3Rhn1K;7J{rTQG$`CYF;kJUeaEX}aU4Nu#R3o*G zz31hxaL34>K7{*QrZx(=uAvVrhY4c0x3`}8ON&9R)hYJdC^urwiT^+=2Tupl+q zIcU};-8lrkbq@o`X3gZBm2}$#6Mj!wMbPm%Y&m;g=9x|5_`F|@gO42v-OWEK{1Mko zOLlqL8_)Y>Y$fn>0lv@S(h==0U8I!yARDc%YKkx{BLgiPD9 zuSiog+~ssK=cWMIz-u|QFq`q8FIV5=2vkIu@ft2XZYtCZH9jn+&x!i9Wec!4)zzlP z>kVd&&QR*?6g@}5F* zOX7n7*HE>Le%xjWq%8j>^-%B>iF@Xb)}eCtx0?*tSu_BR{tSTgF4I?uenYz>MjaxD zYOi$gIwLdN>k-wt%}~`K6 zsIFV&m?YMRw_B?3;I?G`TWJIS*0ve#^6CL7m{ft|_lE;{W_s1f8da=3T67?0+k}@c z>91DEmH_XAWH3o&>AME$^F>kZP?^YGp=Ko#oGz^--0^mBzpMj~1{EtmOIzyR`a-zb z_(yDhj0VsN#)**DCxadZqeCg)Gi9OYLB@V*TC_!@d6ExYCJn2$2Vm+}yjbPO#c`|J#>pWWUuUzYx2E z-O`7;=u*UR5jb%c=WnPZa=v>TwKxZ3WqGzqev=s$t?EW`yvjB1Ao2Ici`+>jurX|8{EA^Q+7>kQ4iY&|?*h-L~%O zX$#OWpdh@N2|r=SP{A@yE(W5N8y^l&>0Y}2-krReypOMtzu@}7T3@>-DkX2s(mU#s z$8h#@8_Y|UB>@(d#^W7*B5e&$ql1MY{t;OfVlqF~Z=2}I#6RPW0xv_ub|CkskkH<5 zEH|>-L|N)VP=bGjwr@r+ViKs=`cKb)#97#lYzAH*(I|FZB-oQ6OC|`9KvZ@c@>h)J ztU-bq!x41Sp8s z^oLj$IPe~@T;sZ>Ty*e^6$UEvx5W9|9_B(rp1+Q_w6vN5`_)^CoAU37^)iyenTz=P z1m7H*T#llx=_`^8qw7S@Ji0t!D|Xy0NqFv-`8Gxk&Rvh{g~{w@qXLvDZ!hbi@{4sd z%k`ofjsj0+XUXpv>^S<_j)wi(a+qg-uH#olu*z49La#a;xCkYyPF#uTg(J@Xi;0ZaOLj(b%<2Wv)KhHruEm|w_4j| zC^)3wm`RDtImviJssXXq%q+5~&T+EZ-*=An8A)Ob#tY=XXf^V(h76by)}$|G48`aV zqs2@_Llm$mE1@f;a5BrMZ+@|KxVuIUm#No@nvmsDy&(#J7(Me}(U{z^@Dk-xERGw1 zbjIs0%=P6pkUy;@H&_$(Qlz4g_w=!71@j(jYq#l6o8#B@O{!p|*v<&fcH39AC{ua` z`?~c=zOZnikmEw6NL^YAh z(+axACtqwqJ!9eX7)(flaAa^P&QD*#@aB8d{OpU1PIxnz96z5_ADfV}q}EzOCA$`X z7`_gsLz;o3W75$0FH(Q_xP6dS8*24-$ZEB;wa3_;C^pe&J_G5;f}Kpog(4YOnktgg68X75rzscp5=E*Wvxj7N5_Nc82I-27C}E@G%0D+CQYQH=`;O8g{n-+ssfR! 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 YQbYMm-VL(1H;+gxOEApLGZfH&0fW0X6951J diff --git a/test/snapshots/markdownlint-cli2-test-fs.js.md b/test/snapshots/markdownlint-cli2-test-fs.js.md index f40df219..98681ec9 100644 --- a/test/snapshots/markdownlint-cli2-test-fs.js.md +++ b/test/snapshots/markdownlint-cli2-test-fs.js.md @@ -58,6 +58,58 @@ Generated by [AVA](https://avajs.dev). ## no-arguments-config-arg (fs) +> Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + https://github.com/DavidAnson/markdownlint-cli2␊ + ␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ + ␊ + Glob expressions (from the globby library):␊ + - * matches any number of characters, but not /␊ + - ? matches a single character, but not /␊ + - ** matches any number of characters, including /␊ + - {} 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␊ + ␊ + Dot-only glob:␊ + - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ + - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ + - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ + ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ + Configuration via:␊ + - .markdownlint-cli2.jsonc␊ + - .markdownlint-cli2.yaml␊ + - .markdownlint-cli2.cjs or .markdownlint-cli2.mjs␊ + - .markdownlint.jsonc or .markdownlint.json␊ + - .markdownlint.yaml or .markdownlint.yml␊ + - .markdownlint.cjs or .markdownlint.mjs␊ + ␊ + Cross-platform compatibility:␊ + - UNIX and Windows shells expand globs according to different rules; quoting arguments is recommended␊ + - Some Windows shells don't handle single-quoted (') arguments well; double-quote (") is recommended␊ + - Shells that expand globs do not support negated patterns (!node_modules); quoting is required here␊ + - Some UNIX shells parse exclamation (!) in double-quotes; hashtag (#) is recommended in these cases␊ + - The path separator is forward slash (/) on all platforms; backslash (\\) is automatically converted␊ + ␊ + The most compatible syntax for cross-platform support:␊ + $ markdownlint-cli2 "**/*.md" "#node_modules"␊ + `, + } + +## missing-argument-config-arg (fs) + > Snapshot 1 { diff --git a/test/snapshots/markdownlint-cli2-test-fs.js.snap b/test/snapshots/markdownlint-cli2-test-fs.js.snap index ea51829028d870c82091cc0af8482049a05a02b6..e07c12ea62fb87f023277b259aef3da2592ab900 100644 GIT binary patch literal 4761 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 literal 4734 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 Snapshot 1 + + { + exitCode: 2, + formatterCodeQuality: '', + formatterJson: '', + formatterJunit: '', + stderr: '', + stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ + https://github.com/DavidAnson/markdownlint-cli2␊ + ␊ + Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix]␊ + ␊ + Glob expressions (from the globby library):␊ + - * matches any number of characters, but not /␊ + - ? matches a single character, but not /␊ + - ** matches any number of characters, including /␊ + - {} 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␊ + ␊ + Dot-only glob:␊ + - The command "markdownlint-cli2 ." would lint every file in the current directory tree which is probably not intended␊ + - Instead, it is mapped to "markdownlint-cli2 *.{md,markdown}" which lints all Markdown files in the current directory␊ + - To lint every file in the current directory tree, the command "markdownlint-cli2 **" can be used instead␊ + ␊ + Optional parameters:␊ + - --config specifies the path to a configuration file to define the base configuration␊ + - --fix updates files to resolve fixable issues (can be overridden in configuration)␊ + ␊ + Configuration via:␊ + - .markdownlint-cli2.jsonc␊ + - .markdownlint-cli2.yaml␊ + - .markdownlint-cli2.cjs or .markdownlint-cli2.mjs␊ + - .markdownlint.jsonc or .markdownlint.json␊ + - .markdownlint.yaml or .markdownlint.yml␊ + - .markdownlint.cjs or .markdownlint.mjs␊ + ␊ + Cross-platform compatibility:␊ + - UNIX and Windows shells expand globs according to different rules; quoting arguments is recommended␊ + - Some Windows shells don't handle single-quoted (') arguments well; double-quote (") is recommended␊ + - Shells that expand globs do not support negated patterns (!node_modules); quoting is required here␊ + - Some UNIX shells parse exclamation (!) in double-quotes; hashtag (#) is recommended in these cases␊ + - The path separator is forward slash (/) on all platforms; backslash (\\) is automatically converted␊ + ␊ + The most compatible syntax for cross-platform support:␊ + $ markdownlint-cli2 "**/*.md" "#node_modules"␊ + `, + } + +## missing-argument-config-arg (main) + > Snapshot 1 { diff --git a/test/snapshots/markdownlint-cli2-test-main.js.snap b/test/snapshots/markdownlint-cli2-test-main.js.snap index 7ac9e22910bf9fb08f45a9e0beec713b0a5f74d8..3fc0964aa27aa7a60d2b78bcdd6e6571e2c2bd35 100644 GIT binary patch delta 9152 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 K8#*PCPyzr^@VOoU delta 9101 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 Date: Sun, 11 Jun 2023 16:10:19 -0700 Subject: [PATCH 23/23] Update to version 0.8.1. --- CHANGELOG.md | 4 ++++ README.md | 8 ++++---- markdownlint-cli2.js | 2 +- package.json | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7205929d..79f6dbf5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## 0.8.1 + +- Handle `--config` edge case + ## 0.8.0 - Add support for `--config` and `--fix` parameters diff --git a/README.md b/README.md index 18f1097a..1bd209d4 100644 --- a/README.md +++ b/README.md @@ -166,7 +166,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.8.0 "**/*.md" "#node_modules" +docker run -v $PWD:/workdir davidanson/markdownlint-cli2:v0.8.1 "**/*.md" "#node_modules" ``` Notes: @@ -183,7 +183,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.8.0 "**/*.md" "#node_modules" + docker run -w /myfolder -v $PWD:/myfolder davidanson/markdownlint-cli2:v0.8.1 "**/*.md" "#node_modules" ``` > **Deprecated** @@ -192,7 +192,7 @@ Notes: > instead, use Docker's `--entrypoint` flag: > > ```bash -> docker run -v $PWD:/workdir --entrypoint="markdownlint-cli2-fix" davidanson/markdownlint-cli2:v0.8.0 "**/*.md" "#node_modules" +> docker run -v $PWD:/workdir --entrypoint="markdownlint-cli2-fix" davidanson/markdownlint-cli2:v0.8.1 "**/*.md" "#node_modules" > ``` For convenience, the container image @@ -401,7 +401,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.8.0 + rev: v0.8.1 hooks: - id: markdownlint-cli2 ``` diff --git a/markdownlint-cli2.js b/markdownlint-cli2.js index 545c1f52..30d7c19b 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.js @@ -25,7 +25,7 @@ const resolveAndRequire = require("./resolve-and-require"); // Variables const packageName = "markdownlint-cli2"; -const packageVersion = "0.8.0"; +const packageVersion = "0.8.1"; const libraryName = "markdownlint"; const libraryVersion = markdownlintLibrary.getVersion(); const dotOnlySubstitute = "*.{md,markdown}"; diff --git a/package.json b/package.json index 3ffe6fb6..686b52fc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "markdownlint-cli2", - "version": "0.8.0", + "version": "0.8.1", "description": "A fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files with the `markdownlint` library", "author": { "name": "David Anson",