Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/eslint-plugin-import
Path: blob/main/tests/src/rules/no-mutable-exports.js
829 views
1
import { test } from '../utils';
2
import { RuleTester } from 'eslint';
3
import rule from 'rules/no-mutable-exports';
4
5
const ruleTester = new RuleTester();
6
7
ruleTester.run('no-mutable-exports', rule, {
8
valid: [
9
test({ code: 'export const count = 1' }),
10
test({ code: 'export function getCount() {}' }),
11
test({ code: 'export class Counter {}' }),
12
test({ code: 'export default count = 1' }),
13
test({ code: 'export default function getCount() {}' }),
14
test({ code: 'export default class Counter {}' }),
15
test({ code: 'const count = 1\nexport { count }' }),
16
test({ code: 'const count = 1\nexport { count as counter }' }),
17
test({ code: 'const count = 1\nexport default count' }),
18
test({ code: 'const count = 1\nexport { count as default }' }),
19
test({ code: 'function getCount() {}\nexport { getCount }' }),
20
test({ code: 'function getCount() {}\nexport { getCount as getCounter }' }),
21
test({ code: 'function getCount() {}\nexport default getCount' }),
22
test({ code: 'function getCount() {}\nexport { getCount as default }' }),
23
test({ code: 'class Counter {}\nexport { Counter }' }),
24
test({ code: 'class Counter {}\nexport { Counter as Count }' }),
25
test({ code: 'class Counter {}\nexport default Counter' }),
26
test({ code: 'class Counter {}\nexport { Counter as default }' }),
27
test({
28
parser: require.resolve('babel-eslint'),
29
code: 'export Something from "./something";',
30
}),
31
test({
32
parser: require.resolve('babel-eslint'),
33
code: 'type Foo = {}\nexport type {Foo}',
34
}),
35
],
36
invalid: [
37
test({
38
code: 'export let count = 1',
39
errors: ['Exporting mutable \'let\' binding, use \'const\' instead.'],
40
}),
41
test({
42
code: 'export var count = 1',
43
errors: ['Exporting mutable \'var\' binding, use \'const\' instead.'],
44
}),
45
test({
46
code: 'let count = 1\nexport { count }',
47
errors: ['Exporting mutable \'let\' binding, use \'const\' instead.'],
48
}),
49
test({
50
code: 'var count = 1\nexport { count }',
51
errors: ['Exporting mutable \'var\' binding, use \'const\' instead.'],
52
}),
53
test({
54
code: 'let count = 1\nexport { count as counter }',
55
errors: ['Exporting mutable \'let\' binding, use \'const\' instead.'],
56
}),
57
test({
58
code: 'var count = 1\nexport { count as counter }',
59
errors: ['Exporting mutable \'var\' binding, use \'const\' instead.'],
60
}),
61
test({
62
code: 'let count = 1\nexport default count',
63
errors: ['Exporting mutable \'let\' binding, use \'const\' instead.'],
64
}),
65
test({
66
code: 'var count = 1\nexport default count',
67
errors: ['Exporting mutable \'var\' binding, use \'const\' instead.'],
68
}),
69
70
// todo: undeclared globals
71
// test({
72
// code: 'count = 1\nexport { count }',
73
// errors: ['Exporting mutable global binding, use \'const\' instead.'],
74
// }),
75
// test({
76
// code: 'count = 1\nexport default count',
77
// errors: ['Exporting mutable global binding, use \'const\' instead.'],
78
// }),
79
],
80
});
81
82