forked from import-js/eslint-plugin-import
/
no-empty-named-blocks.js
98 lines (89 loc) · 2.81 KB
/
no-empty-named-blocks.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import { parsers, test } from '../utils';
import { RuleTester } from 'eslint';
const ruleTester = new RuleTester();
const rule = require('rules/no-empty-named-blocks');
function generateSuggestionsTestCases(cases, parser) {
return cases.map(code => test({
code,
parser,
errors: [{
suggestions: [
{
desc: 'Remove unused import',
output: '',
},
{
desc: 'Remove empty import block',
output: `import 'mod';`,
},
],
}],
}));
}
ruleTester.run('no-empty-named-blocks', rule, {
valid: [].concat(
test({ code: `import 'mod';` }),
test({ code: `import Default from 'mod';` }),
test({ code: `import { Named } from 'mod';` }),
test({ code: `import Default, { Named } from 'mod';` }),
test({ code: `import * as Namespace from 'mod';` }),
// Typescript
parsers.TS_NEW ? [
test({ code: `import type Default from 'mod';`, parser: parsers.TS_NEW }),
test({ code: `import type { Named } from 'mod';`, parser: parsers.TS_NEW }),
test({ code: `import type Default, { Named } from 'mod';`, parser: parsers.TS_NEW }),
test({ code: `import type * as Namespace from 'mod';`, parser: parsers.TS_NEW }),
] : [],
// Flow
test({ code: `import typeof Default from 'mod';`, parser: parsers.BABEL_OLD }),
test({ code: `import typeof { Named } from 'mod';`, parser: parsers.BABEL_OLD }),
test({ code: `import typeof Default, { Named } from 'mod';`, parser: parsers.BABEL_OLD }),
),
invalid: [].concat(
test({
code: `import Default, {} from 'mod';`,
output: `import Default from 'mod';`,
errors: ['Unexpected empty named import block'],
}),
generateSuggestionsTestCases([
`import {} from 'mod';`,
`import{}from'mod';`,
`import {} from'mod';`,
`import {}from 'mod';`,
]),
// Typescript
parsers.TS_NEW ? [].concat(
generateSuggestionsTestCases(
[
`import type {} from 'mod';`,
`import type {}from 'mod';`,
`import type{}from 'mod';`,
`import type {}from'mod';`,
],
parsers.TS_NEW,
),
test({
code: `import type Default, {} from 'mod';`,
output: `import type Default from 'mod';`,
parser: parsers.TS_NEW,
errors: ['Unexpected empty named import block'],
}),
) : [],
// Flow
generateSuggestionsTestCases(
[
`import typeof {} from 'mod';`,
`import typeof {}from 'mod';`,
`import typeof {} from'mod';`,
`import typeof{}from'mod';`,
],
parsers.BABEL_OLD,
),
test({
code: `import typeof Default, {} from 'mod';`,
output: `import typeof Default from 'mod';`,
parser: parsers.BABEL_OLD,
errors: ['Unexpected empty named import block'],
}),
),
});