Skip to content

Commit 8802a85

Browse files
committed
Removed hello-world rule. Bumped version to 0.1.0. Refactored tests to use eslint-tester.
1 parent e321dd9 commit 8802a85

File tree

8 files changed

+44
-75
lines changed

8 files changed

+44
-75
lines changed

files/foo.js

-1
This file was deleted.

files/tall.coffee

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
var foo = "foo";

index.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
exports.rules = {
2-
"test-import-visitor": require("./lib/rules/test-import-visitor"),
32
"valid-relative-path": require("./lib/rules/valid-relative-path")
43
};
4+
5+
exports.rulesConfig = {
6+
"valid-relative-path": [2, [".js", ".coffee", ".es6"]]
7+
};

lib/rules/test-import-visitor.js

-7
This file was deleted.

lib/rules/valid-relative-path.js

+8-3
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,20 @@ function resolveImportPath(context, importPath) {
2121
return path.resolve(path.dirname(context.getFilename()), importPath);
2222
}
2323

24-
function exists(resolvedPath) {
25-
return EXTENSIONS.some(function (ext) { return fs.existsSync(resolvedPath + ext); });
24+
function exists(resolvedPath, extensions) {
25+
return extensions.some(function (ext) { return fs.existsSync(resolvedPath + ext); });
26+
}
27+
28+
function extensionsFromOptions(options) {
29+
return options[0];
2630
}
2731

2832
module.exports = function (context) {
33+
var extensions = extensionsFromOptions(context.options) || EXTENSIONS;
2934
return {
3035
"ImportDeclaration": function (node) {
3136
var importPath = node.source.value;
32-
if (isRelative(importPath) && !exists(resolveImportPath(context, importPath))) {
37+
if (isRelative(importPath) && !exists(resolveImportPath(context, importPath), extensions)) {
3338
context.report(node, "Imported file does not exist.");
3439
}
3540
}

package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "eslint-plugin-import",
3-
"version": "0.0.1",
3+
"version": "0.1.0",
44
"description": "Import with sanity.",
55
"main": "index.js",
66
"directories": {
@@ -31,5 +31,8 @@
3131
"eslint-tester": "^0.6.0",
3232
"mocha": "^2.2.1",
3333
"object-assign": "^2.0.0"
34+
},
35+
"peerDependencies": {
36+
"eslint": ">=0.16.0"
3437
}
3538
}

tests/lib/rules/test-import-visitor.js

-20
This file was deleted.
+27-42
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,47 @@
11
"use strict";
22

33
var assign = require("object-assign");
4-
5-
var expect = require("chai").expect;
6-
74
var path = require("path");
85

96
var linter = require("eslint").linter,
10-
CLIEngine = require("eslint").CLIEngine,
117
ESLintTester = require("eslint-tester");
128

139
var eslintTester = new ESLintTester(linter);
1410

15-
function valid(c) {
16-
return {
17-
code: c,
18-
ecmaFeatures: { modules: true}
19-
};
20-
}
2111

22-
function invalid(c, errors) {
23-
return assign(valid(c), {errors: errors});
12+
var ecmaFeatures = {ecmaFeatures: { modules: true}};
13+
14+
function filename(f) {
15+
return path.join(process.cwd(), "./files", f);
2416
}
2517

2618
eslintTester.addRuleTest("lib/rules/valid-relative-path", {
2719
valid: [
28-
valid("import foo from 'bar';")
20+
assign({
21+
code: "import * as foo from 'bar';" // not relative
22+
}, ecmaFeatures),
23+
assign({
24+
code: "import foo from './bar';",
25+
filename: filename("foo.js")
26+
}, ecmaFeatures),
27+
assign({
28+
code: "import bar from './bar.js';",
29+
args: [1, [""]],
30+
filename: filename("foo.js"),
31+
errors: [{message: "Imported file does not exist."}]
32+
}, ecmaFeatures)
2933
],
3034

3135
invalid: [
32-
invalid("import foo from './bar/baz'",
33-
[ { message: "Imported file does not exist." } ])
36+
assign({
37+
code: "import bar from './bar.js';",
38+
filename: filename("foo.js"),
39+
errors: [{message: "Imported file does not exist."}]
40+
}, ecmaFeatures),
41+
assign({
42+
code: "import bar from './baz';",
43+
filename: filename("foo.js"),
44+
errors: [{message: "Imported file does not exist."}]
45+
}, ecmaFeatures)
3446
]
3547
});
36-
37-
function executeOnFile(filename) {
38-
return this.executeOnFiles([path.join(process.cwd(), "./files", filename)]);
39-
}
40-
41-
function checkErrorMessage(report, message) {
42-
return report.results[0].messages.some(function (result) { return result.message === message; });
43-
}
44-
45-
describe("valid-relative-path: against actual files", function () {
46-
var cli = new CLIEngine({
47-
rulePaths: [path.resolve(process.cwd(), "lib/rules")],
48-
rules: { "valid-relative-path": 2 }
49-
});
50-
cli.executeOnFile = executeOnFile;
51-
52-
it("should follow relative paths.", function () {
53-
var report = cli.executeOnFiles([path.join(__dirname, "../../../files/foo.js")]);
54-
expect(report.errorCount).to.equal(0);
55-
});
56-
57-
it("should fail for non-existent imports.", function () {
58-
var report = cli.executeOnFile("bar.js");
59-
expect(report.errorCount).to.equal(1);
60-
expect(checkErrorMessage(report, "Imported file does not exist.")).to.be.true;
61-
});
62-
});

0 commit comments

Comments
 (0)