diff --git a/package.json b/package.json index 264df28356d..b8d324bc683 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "bugs": "https://github.com/eslint/eslint/issues/", "dependencies": { "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.3", + "@humanwhocodes/config-array": "^0.11.5", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", diff --git a/tests/fixtures/ignores-subdirectory/eslint.config.js b/tests/fixtures/ignores-subdirectory/eslint.config.js new file mode 100644 index 00000000000..2e1db61e7fe --- /dev/null +++ b/tests/fixtures/ignores-subdirectory/eslint.config.js @@ -0,0 +1,3 @@ +module.exports = { + ignores: ["subdir"] +}; diff --git a/tests/fixtures/ignores-subdirectory/subdir/subsubdir/a.js b/tests/fixtures/ignores-subdirectory/subdir/subsubdir/a.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/lib/eslint/flat-eslint.js b/tests/lib/eslint/flat-eslint.js index 150bdd584ad..ed08b36ff13 100644 --- a/tests/lib/eslint/flat-eslint.js +++ b/tests/lib/eslint/flat-eslint.js @@ -1102,7 +1102,7 @@ describe("FlatESLint", () => { }); // https://github.com/eslint/eslint/issues/16354 - it("should skip subdirectory files when ignore pattern matches subdirectory", async () => { + it("should skip subdirectory files when ignore pattern matches deep subdirectory", async () => { eslint = new FlatESLint({ cwd: getFixturePath("ignores-directory") }); @@ -1124,6 +1124,34 @@ describe("FlatESLint", () => { }); + // https://github.com/eslint/eslint/issues/16414 + it("should skip subdirectory files when ignore pattern matches subdirectory", async () => { + eslint = new FlatESLint({ + cwd: getFixturePath("ignores-subdirectory") + }); + + await assert.rejects(async () => { + await eslint.lintFiles(["subdir/**/*.js"]); + }, /All files matched by 'subdir\/\*\*\/\*\.js' are ignored\./u); + + const results = await eslint.lintFiles(["subdir/subsubdir/a.js"]); + + assert.strictEqual(results.length, 1); + assert.strictEqual(results[0].filePath, getFixturePath("ignores-subdirectory/subdir/subsubdir/a.js")); + assert.strictEqual(results[0].warningCount, 1); + assert(results[0].messages[0].message.startsWith("File ignored"), "Should contain file ignored warning"); + + eslint = new FlatESLint({ + cwd: getFixturePath("ignores-subdirectory/subdir") + }); + + await assert.rejects(async () => { + await eslint.lintFiles(["subsubdir/**/*.js"]); + }, /All files matched by 'subsubdir\/\*\*\/\*\.js' are ignored\./u); + + + }); + // https://github.com/eslint/eslint/issues/16340 it("should lint files even when cwd directory name matches ignores pattern", async () => { eslint = new FlatESLint({