Skip to content

Commit bf91ae8

Browse files
committed
Fix: ensures to use absolute path. (refs #13)
1 parent 9e373e2 commit bf91ae8

File tree

6 files changed

+137
-2
lines changed

6 files changed

+137
-2
lines changed

lib/util/check-existence.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ var exists = require("./exists");
3131
* @returns {void}
3232
*/
3333
module.exports = function checkForExistence(context, filePath, targets) {
34-
var basedir = path.dirname(filePath);
35-
var opts = {basedir: basedir};
34+
var opts = {basedir: path.dirname(path.resolve(filePath))};
3635

3736
for (var i = 0; i < targets.length; ++i) {
3837
var target = targets[i];

tests/lib/rules/no-missing-import.js

+30
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,20 @@ ruleTester.run("no-missing-import", rule, {
136136
code: "export {foo, bar};",
137137
ecmaFeatures: {modules: true},
138138
parserOptions: {sourceType: "module"}
139+
},
140+
141+
// Should work fine if the filename is relative.
142+
{
143+
filename: "tests/fixtures/no-missing/test.js",
144+
code: "import eslint from 'eslint'",
145+
ecmaFeatures: {modules: true},
146+
parserOptions: {sourceType: "module"}
147+
},
148+
{
149+
filename: "tests/fixtures/no-missing/test.js",
150+
code: "import a from './a';",
151+
ecmaFeatures: {modules: true},
152+
parserOptions: {sourceType: "module"}
139153
}
140154
],
141155
invalid: [
@@ -173,6 +187,22 @@ ruleTester.run("no-missing-import", rule, {
173187
ecmaFeatures: {modules: true},
174188
parserOptions: {sourceType: "module"},
175189
errors: ["\"./a.json\" is not found."]
190+
},
191+
192+
// Should work fine if the filename is relative.
193+
{
194+
filename: "tests/fixtures/no-missing/test.js",
195+
code: "import eslint from 'no-exist-package-0';",
196+
ecmaFeatures: {modules: true},
197+
parserOptions: {sourceType: "module"},
198+
errors: ["\"no-exist-package-0\" is not found."]
199+
},
200+
{
201+
filename: "tests/fixtures/no-missing/test.js",
202+
code: "import c from './c';",
203+
ecmaFeatures: {modules: true},
204+
parserOptions: {sourceType: "module"},
205+
errors: ["\"./c\" is not found."]
176206
}
177207
]
178208
});

tests/lib/rules/no-missing-require.js

+26
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,18 @@ ruleTester.run("no-missing-require", rule, {
152152
filename: fixture("test.js"),
153153
code: "require(`foo${bar}`);",
154154
env: {node: true, es6: true}
155+
},
156+
157+
// Should work fine if the filename is relative.
158+
{
159+
filename: "tests/fixtures/no-missing/test.js",
160+
code: "require('eslint');",
161+
env: {node: true}
162+
},
163+
{
164+
filename: "tests/fixtures/no-missing/test.js",
165+
code: "require('./a');",
166+
env: {node: true}
155167
}
156168
],
157169
invalid: [
@@ -184,6 +196,20 @@ ruleTester.run("no-missing-require", rule, {
184196
code: "require('./a.json');",
185197
env: {node: true},
186198
errors: ["\"./a.json\" is not found."]
199+
},
200+
201+
// Should work fine if the filename is relative.
202+
{
203+
filename: "tests/fixtures/no-missing/test.js",
204+
code: "require('no-exist-package-0');",
205+
env: {node: true},
206+
errors: ["\"no-exist-package-0\" is not found."]
207+
},
208+
{
209+
filename: "tests/fixtures/no-missing/test.js",
210+
code: "require('./c');",
211+
env: {node: true},
212+
errors: ["\"./c\" is not found."]
187213
}
188214
]
189215
});

tests/lib/rules/no-unpublished-import.js

+30
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,20 @@ ruleTester.run("no-unpublished-import", rule, {
159159
code: "import b from './b';",
160160
ecmaFeatures: {modules: true},
161161
parserOptions: {sourceType: "module"}
162+
},
163+
164+
// Should work fine if the filename is relative.
165+
{
166+
filename: "tests/fixtures/no-unpublished/2/test.js",
167+
code: "import aaa from 'aaa';",
168+
ecmaFeatures: {modules: true},
169+
parserOptions: {sourceType: "module"}
170+
},
171+
{
172+
filename: "tests/fixtures/no-unpublished/2/test.js",
173+
code: "import a from './a';",
174+
ecmaFeatures: {modules: true},
175+
parserOptions: {sourceType: "module"}
162176
}
163177
],
164178
invalid: [
@@ -231,6 +245,22 @@ ruleTester.run("no-unpublished-import", rule, {
231245
errors: ["\"../test\" is not published."],
232246
ecmaFeatures: {modules: true},
233247
parserOptions: {sourceType: "module"}
248+
},
249+
250+
// Should work fine if the filename is relative.
251+
{
252+
filename: "tests/fixtures/no-unpublished/2/test.js",
253+
code: "import noDeps from 'no-deps';",
254+
errors: ["\"no-deps\" is not published."],
255+
ecmaFeatures: {modules: true},
256+
parserOptions: {sourceType: "module"}
257+
},
258+
{
259+
filename: "tests/fixtures/no-unpublished/2/test.js",
260+
code: "import ignore1 from './ignore1';",
261+
errors: ["\"./ignore1\" is not published."],
262+
ecmaFeatures: {modules: true},
263+
parserOptions: {sourceType: "module"}
234264
}
235265
]
236266
});

tests/lib/rules/no-unpublished-require.js

+26
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,18 @@ ruleTester.run("no-unpublished-require", rule, {
175175
filename: fixture("1/test.js"),
176176
code: "require(`foo${bar}`);",
177177
env: {node: true, es6: true}
178+
},
179+
180+
// Should work fine if the filename is relative.
181+
{
182+
filename: "tests/fixtures/no-unpublished/2/test.js",
183+
code: "require('aaa');",
184+
env: {node: true}
185+
},
186+
{
187+
filename: "tests/fixtures/no-unpublished/2/test.js",
188+
code: "require('./a');",
189+
env: {node: true}
178190
}
179191
],
180192
invalid: [
@@ -259,6 +271,20 @@ ruleTester.run("no-unpublished-require", rule, {
259271
options: [{
260272
convertPath: {"src/**/*.jsx": ["src/(.+?)\\.jsx", "pub/$1.js"]}
261273
}]
274+
},
275+
276+
// Should work fine if the filename is relative.
277+
{
278+
filename: "tests/fixtures/no-unpublished/2/test.js",
279+
code: "require('no-deps');",
280+
errors: ["\"no-deps\" is not published."],
281+
env: {node: true}
282+
},
283+
{
284+
filename: "tests/fixtures/no-unpublished/2/test.js",
285+
code: "require('./ignore1');",
286+
errors: ["\"./ignore1\" is not published."],
287+
env: {node: true}
262288
}
263289
]
264290
});

tests/lib/rules/shebang.js

+24
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,16 @@ ruleTester.run("shebang", rule, {
9191
filename: fixture("no-bin-field/src/lib/test.js"),
9292
code: "hello();",
9393
options: [{"convertPath": {"src/**": ["^src/(.+)$", "$1"]}}]
94+
},
95+
96+
// Should work fine if the filename is relative.
97+
{
98+
filename: "tests/fixtures/shebang/string-bin/bin/test.js",
99+
code: "#!/usr/bin/env node\nhello();"
100+
},
101+
{
102+
filename: "tests/fixtures/shebang/string-bin/lib/test.js",
103+
code: "hello();"
94104
}
95105
],
96106
invalid: [
@@ -193,6 +203,20 @@ ruleTester.run("shebang", rule, {
193203
output: "hello();",
194204
options: [{"convertPath": {"src/**": ["^src/(.+)$", "$1"]}}],
195205
errors: ["This file needs no shebang."]
206+
},
207+
208+
// Should work fine if the filename is relative.
209+
{
210+
filename: "tests/fixtures/shebang/string-bin/bin/test.js",
211+
code: "hello();",
212+
output: "#!/usr/bin/env node\nhello();",
213+
errors: ["This file needs shebang \"#!/usr/bin/env node\"."]
214+
},
215+
{
216+
filename: "tests/fixtures/shebang/string-bin/lib/test.js",
217+
code: "#!/usr/bin/env node\nhello();",
218+
output: "hello();",
219+
errors: ["This file needs no shebang."]
196220
}
197221
]
198222
});

0 commit comments

Comments
 (0)