diff --git a/lib/cli-engine/cli-engine.js b/lib/cli-engine/cli-engine.js index 9d2ef8cbcde..72d1fa4d5dc 100644 --- a/lib/cli-engine/cli-engine.js +++ b/lib/cli-engine/cli-engine.js @@ -276,7 +276,8 @@ function verifyText({ */ function createIgnoreResult(filePath, baseDir) { let message; - const isHidden = /^\./u.test(path.basename(filePath)); + const isHidden = filePath.split(path.sep) + .find(segment => /^\./u.test(segment)); const isInNodeModules = baseDir && path.relative(baseDir, filePath).startsWith("node_modules"); if (isHidden) { diff --git a/tests/lib/cli-engine/cli-engine.js b/tests/lib/cli-engine/cli-engine.js index 7a5ebf7f9b9..6880bf9f98f 100644 --- a/tests/lib/cli-engine/cli-engine.js +++ b/tests/lib/cli-engine/cli-engine.js @@ -1005,6 +1005,27 @@ describe("CLIEngine", () => { assert.strictEqual(report.results[0].messages[0].message, expectedMsg); }); + // https://github.com/eslint/eslint/issues/12873 + it("should not check files within a .hidden folder if they are passed explicitly without the --no-ignore flag", () => { + engine = new CLIEngine({ + cwd: getFixturePath("cli-engine"), + useEslintrc: false, + rules: { + quotes: [2, "single"] + } + }); + + const report = engine.executeOnFiles(["hidden/.hiddenfolder/double-quotes.js"]); + const expectedMsg = "File ignored by default. Use a negated ignore pattern (like \"--ignore-pattern '!'\") to override."; + + assert.strictEqual(report.results.length, 1); + assert.strictEqual(report.results[0].errorCount, 0); + assert.strictEqual(report.results[0].warningCount, 1); + assert.strictEqual(report.results[0].fixableErrorCount, 0); + assert.strictEqual(report.results[0].fixableWarningCount, 0); + assert.strictEqual(report.results[0].messages[0].message, expectedMsg); + }); + it("should check .hidden files if they are passed explicitly with --no-ignore flag", () => { engine = new CLIEngine({