Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/eslint-plugin-import
Path: blob/main/tests/src/rules/no-dynamic-require.js
829 views
1
import { test } from '../utils';
2
3
import { RuleTester } from 'eslint';
4
5
const ruleTester = new RuleTester();
6
const rule = require('rules/no-dynamic-require');
7
8
const error = {
9
message: 'Calls to require() should use string literals',
10
};
11
12
const dynamicImportError = {
13
message: 'Calls to import() should use string literals',
14
};
15
16
ruleTester.run('no-dynamic-require', rule, {
17
valid: [
18
test({ code: 'import _ from "lodash"' }),
19
test({ code: 'require("foo")' }),
20
test({ code: 'require(`foo`)' }),
21
test({ code: 'require("./foo")' }),
22
test({ code: 'require("@scope/foo")' }),
23
test({ code: 'require()' }),
24
test({ code: 'require("./foo", "bar" + "okay")' }),
25
test({ code: 'var foo = require("foo")' }),
26
test({ code: 'var foo = require(`foo`)' }),
27
test({ code: 'var foo = require("./foo")' }),
28
test({ code: 'var foo = require("@scope/foo")' }),
29
30
//dynamic import
31
test({
32
code: 'import("foo")',
33
parser: require.resolve('babel-eslint'),
34
options: [{ esmodule: true }],
35
}),
36
test({
37
code: 'import(`foo`)',
38
parser: require.resolve('babel-eslint'),
39
options: [{ esmodule: true }],
40
}),
41
test({
42
code: 'import("./foo")',
43
parser: require.resolve('babel-eslint'),
44
options: [{ esmodule: true }],
45
}),
46
test({
47
code: 'import("@scope/foo")',
48
parser: require.resolve('babel-eslint'),
49
options: [{ esmodule: true }],
50
}),
51
test({
52
code: 'var foo = import("foo")',
53
parser: require.resolve('babel-eslint'),
54
options: [{ esmodule: true }],
55
}),
56
test({
57
code: 'var foo = import(`foo`)',
58
parser: require.resolve('babel-eslint'),
59
options: [{ esmodule: true }],
60
}),
61
test({
62
code: 'var foo = import("./foo")',
63
parser: require.resolve('babel-eslint'),
64
options: [{ esmodule: true }],
65
}),
66
test({
67
code: 'var foo = import("@scope/foo")',
68
parser: require.resolve('babel-eslint'),
69
options: [{ esmodule: true }],
70
}),
71
test({
72
code: 'import("../" + name)',
73
errors: [dynamicImportError],
74
parser: require.resolve('babel-eslint'),
75
options: [{ esmodule: false }],
76
}),
77
test({
78
code: 'import(`../${name}`)',
79
errors: [dynamicImportError],
80
parser: require.resolve('babel-eslint'),
81
}),
82
],
83
invalid: [
84
test({
85
code: 'require("../" + name)',
86
errors: [error],
87
}),
88
test({
89
code: 'require(`../${name}`)',
90
errors: [error],
91
}),
92
test({
93
code: 'require(name)',
94
errors: [error],
95
}),
96
test({
97
code: 'require(name())',
98
errors: [error],
99
}),
100
test({
101
code: 'require(name + "foo", "bar")',
102
errors: [error],
103
options: [{ esmodule: true }],
104
}),
105
106
// dynamic import
107
test({
108
code: 'import("../" + name)',
109
errors: [dynamicImportError],
110
parser: require.resolve('babel-eslint'),
111
options: [{ esmodule: true }],
112
}),
113
test({
114
code: 'import(`../${name}`)',
115
errors: [dynamicImportError],
116
parser: require.resolve('babel-eslint'),
117
options: [{ esmodule: true }],
118
}),
119
test({
120
code: 'import(name)',
121
errors: [dynamicImportError],
122
parser: require.resolve('babel-eslint'),
123
options: [{ esmodule: true }],
124
}),
125
test({
126
code: 'import(name())',
127
errors: [dynamicImportError],
128
parser: require.resolve('babel-eslint'),
129
options: [{ esmodule: true }],
130
}),
131
test({
132
code: 'require(`foo${x}`)',
133
errors: [error],
134
}),
135
test({
136
code: 'var foo = require(`foo${x}`)',
137
errors: [error],
138
}),
139
],
140
});
141
142