Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/eslint-plugin-import
Path: blob/main/tests/src/rules/no-namespace.js
829 views
1
import { RuleTester } from 'eslint';
2
import eslintPkg from 'eslint/package.json';
3
import semver from 'semver';
4
import { test } from '../utils';
5
6
const ERROR_MESSAGE = 'Unexpected namespace import.';
7
8
const ruleTester = new RuleTester();
9
10
// --fix functionality requires ESLint 5+
11
const FIX_TESTS = semver.satisfies(eslintPkg.version, '>5.0.0') ? [
12
test({
13
code: `
14
import * as foo from './foo';
15
florp(foo.bar);
16
florp(foo['baz']);
17
`.trim(),
18
output: `
19
import { bar, baz } from './foo';
20
florp(bar);
21
florp(baz);
22
`.trim(),
23
errors: [ {
24
line: 1,
25
column: 8,
26
message: ERROR_MESSAGE,
27
}],
28
}),
29
test({
30
code: `
31
import * as foo from './foo';
32
const bar = 'name conflict';
33
const baz = 'name conflict';
34
const foo_baz = 'name conflict';
35
florp(foo.bar);
36
florp(foo['baz']);
37
`.trim(),
38
output: `
39
import { bar as foo_bar, baz as foo_baz_1 } from './foo';
40
const bar = 'name conflict';
41
const baz = 'name conflict';
42
const foo_baz = 'name conflict';
43
florp(foo_bar);
44
florp(foo_baz_1);
45
`.trim(),
46
errors: [ {
47
line: 1,
48
column: 8,
49
message: ERROR_MESSAGE,
50
}],
51
}),
52
test({
53
code: `
54
import * as foo from './foo';
55
function func(arg) {
56
florp(foo.func);
57
florp(foo['arg']);
58
}
59
`.trim(),
60
output: `
61
import { func as foo_func, arg as foo_arg } from './foo';
62
function func(arg) {
63
florp(foo_func);
64
florp(foo_arg);
65
}
66
`.trim(),
67
errors: [ {
68
line: 1,
69
column: 8,
70
message: ERROR_MESSAGE,
71
}],
72
}),
73
] : [];
74
75
ruleTester.run('no-namespace', require('rules/no-namespace'), {
76
valid: [
77
{ code: 'import { a, b } from \'foo\';', parserOptions: { ecmaVersion: 2015, sourceType: 'module' } },
78
{ code: 'import { a, b } from \'./foo\';', parserOptions: { ecmaVersion: 2015, sourceType: 'module' } },
79
{ code: 'import bar from \'bar\';', parserOptions: { ecmaVersion: 2015, sourceType: 'module' } },
80
{ code: 'import bar from \'./bar\';', parserOptions: { ecmaVersion: 2015, sourceType: 'module' } },
81
{ code: 'import * as bar from \'./ignored-module.ext\';', parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, options: [{ ignore: ['*.ext'] }] },
82
],
83
84
invalid: [
85
test({
86
code: 'import * as foo from \'foo\';',
87
output: 'import * as foo from \'foo\';',
88
errors: [ {
89
line: 1,
90
column: 8,
91
message: ERROR_MESSAGE,
92
} ],
93
}),
94
test({
95
code: 'import defaultExport, * as foo from \'foo\';',
96
output: 'import defaultExport, * as foo from \'foo\';',
97
errors: [ {
98
line: 1,
99
column: 23,
100
message: ERROR_MESSAGE,
101
} ],
102
}),
103
test({
104
code: 'import * as foo from \'./foo\';',
105
output: 'import * as foo from \'./foo\';',
106
errors: [ {
107
line: 1,
108
column: 8,
109
message: ERROR_MESSAGE,
110
} ],
111
}),
112
...FIX_TESTS,
113
],
114
});
115
116