Skip to content

Commit 67c27b4

Browse files
committed
Ensure @scoped-packages are ignored in no-import-test-files
Only attempt to classify imports that are file paths. Fixes #253.
1 parent c8ddcc3 commit 67c27b4

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

rules/no-import-test-files.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22
const path = require('path');
33
const util = require('../util');
44

5-
const externalModuleRegExp = /^\w/;
6-
function isExternalModule(name) {
7-
return externalModuleRegExp.test(name);
8-
}
5+
// Assume absolute paths can be classified by AVA.
6+
const isFileImport = name => path.isAbsolute(name) || name.startsWith('./') || name.startsWith('../');
97

108
const create = context => {
119
const filename = context.getFilename();
@@ -24,8 +22,7 @@ const create = context => {
2422
return;
2523
}
2624

27-
const isImportingExternalModule = isExternalModule(importPath);
28-
if (isImportingExternalModule) {
25+
if (!isFileImport(importPath)) {
2926
return;
3027
}
3128

test/no-import-test-files.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ util.loadAvaHelper = () => ({
2121
switch (importPath) {
2222
case toPath('lib/foo.test.js'):
2323
return {isHelper: false, isSource: false, isTest: true};
24+
case toPath('../foo.test.js'):
25+
return {isHelper: false, isSource: false, isTest: true};
26+
case toPath('@foo/bar'): // Regression test for https://github.com/avajs/eslint-plugin-ava/issues/253
27+
return {isHelper: false, isSource: false, isTest: true};
2428
default:
2529
return {isHelper: false, isSource: false, isTest: false};
2630
}
@@ -36,6 +40,8 @@ const errors = [
3640
ruleTester.run('no-import-test-files', rule, {
3741
valid: [
3842
'import test from \'ava\';',
43+
'import foo from \'@foo/bar\';',
44+
'import foo from \'/foo/bar\';', // Classfied as not a test.
3945
'const test = require(\'ava\');',
4046
'console.log()',
4147
'const value = require(somePath);',
@@ -52,6 +58,11 @@ ruleTester.run('no-import-test-files', rule, {
5258
code: 'const test = require(\'./foo.test.js\');',
5359
filename: toPath('lib/foo.js'),
5460
errors
61+
},
62+
{
63+
code: 'const test = require(\'../foo.test.js\');',
64+
filename: toPath('foo.js'),
65+
errors
5566
}
5667
]
5768
});

0 commit comments

Comments
 (0)