Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/eslint-plugin-import
Path: blob/main/tests/src/rules/no-useless-path-segments.js
829 views
1
import { test } from '../utils';
2
import { RuleTester } from 'eslint';
3
4
const ruleTester = new RuleTester();
5
const rule = require('rules/no-useless-path-segments');
6
7
function runResolverTests(resolver) {
8
ruleTester.run(`no-useless-path-segments (${resolver})`, rule, {
9
valid: [
10
// CommonJS modules with default options
11
test({ code: 'require("./../files/malformed.js")' }),
12
13
// ES modules with default options
14
test({ code: 'import "./malformed.js"' }),
15
test({ code: 'import "./test-module"' }),
16
test({ code: 'import "./bar/"' }),
17
test({ code: 'import "."' }),
18
test({ code: 'import ".."' }),
19
test({ code: 'import fs from "fs"' }),
20
21
// ES modules + noUselessIndex
22
test({ code: 'import "../index"' }), // noUselessIndex is false by default
23
test({ code: 'import "../my-custom-index"', options: [{ noUselessIndex: true }] }),
24
test({ code: 'import "./bar.js"', options: [{ noUselessIndex: true }] }), // ./bar/index.js exists
25
test({ code: 'import "./bar"', options: [{ noUselessIndex: true }] }),
26
test({ code: 'import "./bar/"', options: [{ noUselessIndex: true }] }), // ./bar.js exists
27
test({ code: 'import "./malformed.js"', options: [{ noUselessIndex: true }] }), // ./malformed directory does not exist
28
test({ code: 'import "./malformed"', options: [{ noUselessIndex: true }] }), // ./malformed directory does not exist
29
test({ code: 'import "./importType"', options: [{ noUselessIndex: true }] }), // ./importType.js does not exist
30
31
test({ code: 'import(".")',
32
parser: require.resolve('babel-eslint') }),
33
test({ code: 'import("..")',
34
parser: require.resolve('babel-eslint') }),
35
test({ code: 'import("fs").then(function(fs) {})',
36
parser: require.resolve('babel-eslint') }),
37
],
38
39
invalid: [
40
// CommonJS modules
41
test({
42
code: 'require("./../files/malformed.js")',
43
output: 'require("../files/malformed.js")',
44
options: [{ commonjs: true }],
45
errors: [ 'Useless path segments for "./../files/malformed.js", should be "../files/malformed.js"'],
46
}),
47
test({
48
code: 'require("./../files/malformed")',
49
output: 'require("../files/malformed")',
50
options: [{ commonjs: true }],
51
errors: [ 'Useless path segments for "./../files/malformed", should be "../files/malformed"'],
52
}),
53
test({
54
code: 'require("../files/malformed.js")',
55
output: 'require("./malformed.js")',
56
options: [{ commonjs: true }],
57
errors: [ 'Useless path segments for "../files/malformed.js", should be "./malformed.js"'],
58
}),
59
test({
60
code: 'require("../files/malformed")',
61
output: 'require("./malformed")',
62
options: [{ commonjs: true }],
63
errors: [ 'Useless path segments for "../files/malformed", should be "./malformed"'],
64
}),
65
test({
66
code: 'require("./test-module/")',
67
output: 'require("./test-module")',
68
options: [{ commonjs: true }],
69
errors: [ 'Useless path segments for "./test-module/", should be "./test-module"'],
70
}),
71
test({
72
code: 'require("./")',
73
output: 'require(".")',
74
options: [{ commonjs: true }],
75
errors: [ 'Useless path segments for "./", should be "."'],
76
}),
77
test({
78
code: 'require("../")',
79
output: 'require("..")',
80
options: [{ commonjs: true }],
81
errors: [ 'Useless path segments for "../", should be ".."'],
82
}),
83
test({
84
code: 'require("./deep//a")',
85
output: 'require("./deep/a")',
86
options: [{ commonjs: true }],
87
errors: [ 'Useless path segments for "./deep//a", should be "./deep/a"'],
88
}),
89
90
// CommonJS modules + noUselessIndex
91
test({
92
code: 'require("./bar/index.js")',
93
output: 'require("./bar/")',
94
options: [{ commonjs: true, noUselessIndex: true }],
95
errors: ['Useless path segments for "./bar/index.js", should be "./bar/"'], // ./bar.js exists
96
}),
97
test({
98
code: 'require("./bar/index")',
99
output: 'require("./bar/")',
100
options: [{ commonjs: true, noUselessIndex: true }],
101
errors: ['Useless path segments for "./bar/index", should be "./bar/"'], // ./bar.js exists
102
}),
103
test({
104
code: 'require("./importPath/")',
105
output: 'require("./importPath")',
106
options: [{ commonjs: true, noUselessIndex: true }],
107
errors: ['Useless path segments for "./importPath/", should be "./importPath"'], // ./importPath.js does not exist
108
}),
109
test({
110
code: 'require("./importPath/index.js")',
111
output: 'require("./importPath")',
112
options: [{ commonjs: true, noUselessIndex: true }],
113
errors: ['Useless path segments for "./importPath/index.js", should be "./importPath"'], // ./importPath.js does not exist
114
}),
115
test({
116
code: 'require("./importType/index")',
117
output: 'require("./importType")',
118
options: [{ commonjs: true, noUselessIndex: true }],
119
errors: ['Useless path segments for "./importType/index", should be "./importType"'], // ./importPath.js does not exist
120
}),
121
test({
122
code: 'require("./index")',
123
output: 'require(".")',
124
options: [{ commonjs: true, noUselessIndex: true }],
125
errors: ['Useless path segments for "./index", should be "."'],
126
}),
127
test({
128
code: 'require("../index")',
129
output: 'require("..")',
130
options: [{ commonjs: true, noUselessIndex: true }],
131
errors: ['Useless path segments for "../index", should be ".."'],
132
}),
133
test({
134
code: 'require("../index.js")',
135
output: 'require("..")',
136
options: [{ commonjs: true, noUselessIndex: true }],
137
errors: ['Useless path segments for "../index.js", should be ".."'],
138
}),
139
140
// ES modules
141
test({
142
code: 'import "./../files/malformed.js"',
143
output: 'import "../files/malformed.js"',
144
errors: [ 'Useless path segments for "./../files/malformed.js", should be "../files/malformed.js"'],
145
}),
146
test({
147
code: 'import "./../files/malformed"',
148
output: 'import "../files/malformed"',
149
errors: [ 'Useless path segments for "./../files/malformed", should be "../files/malformed"'],
150
}),
151
test({
152
code: 'import "../files/malformed.js"',
153
output: 'import "./malformed.js"',
154
errors: [ 'Useless path segments for "../files/malformed.js", should be "./malformed.js"'],
155
}),
156
test({
157
code: 'import "../files/malformed"',
158
output: 'import "./malformed"',
159
errors: [ 'Useless path segments for "../files/malformed", should be "./malformed"'],
160
}),
161
test({
162
code: 'import "./test-module/"',
163
output: 'import "./test-module"',
164
errors: [ 'Useless path segments for "./test-module/", should be "./test-module"'],
165
}),
166
test({
167
code: 'import "./"',
168
output: 'import "."',
169
errors: [ 'Useless path segments for "./", should be "."'],
170
}),
171
test({
172
code: 'import "../"',
173
output: 'import ".."',
174
errors: [ 'Useless path segments for "../", should be ".."'],
175
}),
176
test({
177
code: 'import "./deep//a"',
178
output: 'import "./deep/a"',
179
errors: [ 'Useless path segments for "./deep//a", should be "./deep/a"'],
180
}),
181
182
// ES modules + noUselessIndex
183
test({
184
code: 'import "./bar/index.js"',
185
output: 'import "./bar/"',
186
options: [{ noUselessIndex: true }],
187
errors: ['Useless path segments for "./bar/index.js", should be "./bar/"'], // ./bar.js exists
188
}),
189
test({
190
code: 'import "./bar/index"',
191
output: 'import "./bar/"',
192
options: [{ noUselessIndex: true }],
193
errors: ['Useless path segments for "./bar/index", should be "./bar/"'], // ./bar.js exists
194
}),
195
test({
196
code: 'import "./importPath/"',
197
output: 'import "./importPath"',
198
options: [{ noUselessIndex: true }],
199
errors: ['Useless path segments for "./importPath/", should be "./importPath"'], // ./importPath.js does not exist
200
}),
201
test({
202
code: 'import "./importPath/index.js"',
203
output: 'import "./importPath"',
204
options: [{ noUselessIndex: true }],
205
errors: ['Useless path segments for "./importPath/index.js", should be "./importPath"'], // ./importPath.js does not exist
206
}),
207
test({
208
code: 'import "./importPath/index"',
209
output: 'import "./importPath"',
210
options: [{ noUselessIndex: true }],
211
errors: ['Useless path segments for "./importPath/index", should be "./importPath"'], // ./importPath.js does not exist
212
}),
213
test({
214
code: 'import "./index"',
215
output: 'import "."',
216
options: [{ noUselessIndex: true }],
217
errors: ['Useless path segments for "./index", should be "."'],
218
}),
219
test({
220
code: 'import "../index"',
221
output: 'import ".."',
222
options: [{ noUselessIndex: true }],
223
errors: ['Useless path segments for "../index", should be ".."'],
224
}),
225
test({
226
code: 'import "../index.js"',
227
output: 'import ".."',
228
options: [{ noUselessIndex: true }],
229
errors: ['Useless path segments for "../index.js", should be ".."'],
230
}),
231
test({
232
code: 'import("./")',
233
output: 'import(".")',
234
errors: [ 'Useless path segments for "./", should be "."'],
235
parser: require.resolve('babel-eslint'),
236
}),
237
test({
238
code: 'import("../")',
239
output: 'import("..")',
240
errors: [ 'Useless path segments for "../", should be ".."'],
241
parser: require.resolve('babel-eslint'),
242
}),
243
test({
244
code: 'import("./deep//a")',
245
output: 'import("./deep/a")',
246
errors: [ 'Useless path segments for "./deep//a", should be "./deep/a"'],
247
parser: require.resolve('babel-eslint'),
248
}),
249
],
250
});
251
}
252
253
['node', 'webpack'].forEach(runResolverTests);
254
255