Skip to content

Commit

Permalink
fix: Correct ignore message for "node_modules" subfolders (#17217)
Browse files Browse the repository at this point in the history
* fix: Correct ignore message for "node_modules" subfolders

* Use `path.sep` as a separator

Co-authored-by: Milos Djermanovic <milos.djermanovic@gmail.com>

---------

Co-authored-by: Milos Djermanovic <milos.djermanovic@gmail.com>
  • Loading branch information
fasttime and mdjermanovic committed May 24, 2023
1 parent 5b68d51 commit c4fad17
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 2 deletions.
2 changes: 1 addition & 1 deletion lib/eslint/eslint-helpers.js
Expand Up @@ -591,7 +591,7 @@ function isErrorMessage(message) {
*/
function createIgnoreResult(filePath, baseDir) {
let message;
const isInNodeModules = baseDir && path.relative(baseDir, filePath).startsWith("node_modules");
const isInNodeModules = baseDir && path.dirname(path.relative(baseDir, filePath)).split(path.sep).includes("node_modules");

if (isInNodeModules) {
message = "File ignored by default because it is located under the node_modules directory. Use ignore pattern \"!**/node_modules/\" to override.";
Expand Down
1 change: 1 addition & 0 deletions tests/fixtures/cli-engine/node_modules_cleaner.js
@@ -0,0 +1 @@
// not implemented
40 changes: 39 additions & 1 deletion tests/lib/eslint/flat-eslint.js
Expand Up @@ -1191,7 +1191,7 @@ describe("FlatESLint", () => {

describe("Ignoring Files", () => {

it("should report on all files passed explicitly, even if ignored by default", async () => {
it("should report on a file in the node_modules folder passed explicitly, even if ignored by default", async () => {
eslint = new FlatESLint({
cwd: getFixturePath("cli-engine")
});
Expand All @@ -1204,6 +1204,44 @@ describe("FlatESLint", () => {
assert.strictEqual(results[0].fatalErrorCount, 0);
assert.strictEqual(results[0].fixableErrorCount, 0);
assert.strictEqual(results[0].fixableWarningCount, 0);
assert.strictEqual(results[0].messages[0].severity, 1);
assert.strictEqual(results[0].messages[0].message, expectedMsg);
assert.strictEqual(results[0].suppressedMessages.length, 0);
});

it("should report on a file in a node_modules subfolder passed explicitly, even if ignored by default", async () => {
eslint = new FlatESLint({
cwd: getFixturePath("cli-engine")
});
const results = await eslint.lintFiles(["nested_node_modules/subdir/node_modules/text.js"]);
const expectedMsg = "File ignored by default because it is located under the node_modules directory. Use ignore pattern \"!**/node_modules/\" to override.";

assert.strictEqual(results.length, 1);
assert.strictEqual(results[0].errorCount, 0);
assert.strictEqual(results[0].warningCount, 1);
assert.strictEqual(results[0].fatalErrorCount, 0);
assert.strictEqual(results[0].fixableErrorCount, 0);
assert.strictEqual(results[0].fixableWarningCount, 0);
assert.strictEqual(results[0].messages[0].severity, 1);
assert.strictEqual(results[0].messages[0].message, expectedMsg);
assert.strictEqual(results[0].suppressedMessages.length, 0);
});

it("should report on an ignored file with \"node_modules\" in its name", async () => {
eslint = new FlatESLint({
cwd: getFixturePath("cli-engine"),
ignorePatterns: ["*.js"]
});
const results = await eslint.lintFiles(["node_modules_cleaner.js"]);
const expectedMsg = "File ignored because of a matching ignore pattern. Use \"--no-ignore\" to override.";

assert.strictEqual(results.length, 1);
assert.strictEqual(results[0].errorCount, 0);
assert.strictEqual(results[0].warningCount, 1);
assert.strictEqual(results[0].fatalErrorCount, 0);
assert.strictEqual(results[0].fixableErrorCount, 0);
assert.strictEqual(results[0].fixableWarningCount, 0);
assert.strictEqual(results[0].messages[0].severity, 1);
assert.strictEqual(results[0].messages[0].message, expectedMsg);
assert.strictEqual(results[0].suppressedMessages.length, 0);
});
Expand Down

0 comments on commit c4fad17

Please sign in to comment.