Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/eslint-plugin-import
Path: blob/main/tests/src/rules/max-dependencies.js
829 views
1
import { test, getTSParsers } from '../utils';
2
3
import { RuleTester } from 'eslint';
4
5
const ruleTester = new RuleTester();
6
const rule = require('rules/max-dependencies');
7
8
ruleTester.run('max-dependencies', rule, {
9
valid: [
10
test({ code: 'import "./foo.js"' }),
11
12
test({ code: 'import "./foo.js"; import "./bar.js";',
13
options: [{
14
max: 2,
15
}],
16
}),
17
18
test({ code: 'import "./foo.js"; import "./bar.js"; const a = require("./foo.js"); const b = require("./bar.js");',
19
options: [{
20
max: 2,
21
}],
22
}),
23
24
test({ code: 'import {x, y, z} from "./foo"' }),
25
],
26
invalid: [
27
test({
28
code: 'import { x } from \'./foo\'; import { y } from \'./foo\'; import {z} from \'./bar\';',
29
options: [{
30
max: 1,
31
}],
32
errors: [
33
'Maximum number of dependencies (1) exceeded.',
34
],
35
}),
36
37
test({
38
code: 'import { x } from \'./foo\'; import { y } from \'./bar\'; import { z } from \'./baz\';',
39
options: [{
40
max: 2,
41
}],
42
errors: [
43
'Maximum number of dependencies (2) exceeded.',
44
],
45
}),
46
47
test({
48
code: 'import { x } from \'./foo\'; require("./bar"); import { z } from \'./baz\';',
49
options: [{
50
max: 2,
51
}],
52
errors: [
53
'Maximum number of dependencies (2) exceeded.',
54
],
55
}),
56
57
test({
58
code: 'import { x } from \'./foo\'; import { z } from \'./foo\'; require("./bar"); const path = require("path");',
59
options: [{
60
max: 2,
61
}],
62
errors: [
63
'Maximum number of dependencies (2) exceeded.',
64
],
65
}),
66
67
test({
68
code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'',
69
parser: require.resolve('babel-eslint'),
70
options: [{
71
max: 1,
72
}],
73
errors: [
74
'Maximum number of dependencies (1) exceeded.',
75
],
76
}),
77
78
test({
79
code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'; import type { z } from \'./baz\'',
80
parser: require.resolve('babel-eslint'),
81
options: [{
82
max: 2,
83
ignoreTypeImports: false,
84
}],
85
errors: [
86
'Maximum number of dependencies (2) exceeded.',
87
],
88
}),
89
],
90
});
91
92
describe('TypeScript', () => {
93
getTSParsers()
94
// Type-only imports were added in TypeScript ESTree 2.23.0
95
.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))
96
.forEach((parser) => {
97
ruleTester.run(`max-dependencies (${parser.replace(process.cwd(), '.')})`, rule, {
98
valid: [
99
test({
100
code: 'import type { x } from \'./foo\'; import { y } from \'./bar\';',
101
parser,
102
options: [{
103
max: 1,
104
ignoreTypeImports: true,
105
}],
106
}),
107
],
108
invalid: [
109
test({
110
code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'',
111
parser,
112
options: [{
113
max: 1,
114
}],
115
errors: [
116
'Maximum number of dependencies (1) exceeded.',
117
],
118
}),
119
120
test({
121
code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'; import type { z } from \'./baz\'',
122
parser,
123
options: [{
124
max: 2,
125
ignoreTypeImports: false,
126
}],
127
errors: [
128
'Maximum number of dependencies (2) exceeded.',
129
],
130
}),
131
],
132
});
133
});
134
});
135
136