@@ -4,22 +4,24 @@ const proxyquire = require('proxyquire');
4
4
5
5
let ModuleResolver ;
6
6
try {
7
- // eslint 7.12+
8
- ModuleResolver = require ( '@eslint/eslintrc/lib/shared/relative-module-resolver' ) ;
7
+ // ESLint 7.12+
8
+ ModuleResolver = require ( '@eslint/eslintrc' ) . Legacy . ModuleResolver ;
9
9
} catch ( err ) {
10
10
if ( err . code !== 'MODULE_NOT_FOUND' ) {
11
11
throw err ;
12
12
}
13
+
13
14
try {
14
- // eslint v6 - v7.11: load the actual module
15
+ // ESLint v6 - v7.11: load the actual module
15
16
ModuleResolver = require ( 'eslint/lib/shared/relative-module-resolver' ) ;
16
17
} catch ( err ) {
17
18
if ( err . code !== 'MODULE_NOT_FOUND' ) {
18
19
throw err ;
19
20
}
20
- // eslint < 6: ModuleResolver is `undefined`, which is okay. The proxyquire
21
+
22
+ // ESLint < 6: ModuleResolver is `undefined`, which is okay. The proxyquire
21
23
// override for ../shared/relative-module-resolver won't be used because
22
- // eslint < 6 does not have that module and so does not try to load it.
24
+ // ESLint < 6 does not have that module and so does not try to load it.
23
25
ModuleResolver = undefined ;
24
26
}
25
27
}
@@ -54,27 +56,41 @@ const moduleResolver = {
54
56
55
57
const getRuleFinder = proxyquire ( '../../src/lib/rule-finder' , {
56
58
eslint : {
57
- linter : {
59
+ linter : ( ) => ( {
60
+ getRules ( ) {
61
+ return new Map ( )
62
+ . set ( 'foo-rule' , { } )
63
+ . set ( 'old-rule' , { meta : { deprecated : true } } )
64
+ . set ( 'bar-rule' , { } )
65
+ . set ( 'baz-rule' , { } ) ;
66
+ }
67
+ } ) ,
68
+ Linter : ( ) => ( {
58
69
getRules ( ) {
59
70
return new Map ( )
60
71
. set ( 'foo-rule' , { } )
61
72
. set ( 'old-rule' , { meta : { deprecated : true } } )
62
73
. set ( 'bar-rule' , { } )
63
74
. set ( 'baz-rule' , { } ) ;
64
75
}
76
+ } )
77
+ } ,
78
+ '@eslint/eslintrc' : {
79
+ Legacy : {
80
+ ModuleResolver : moduleResolver ,
65
81
}
66
82
} ,
67
83
//
68
- // This following module override is needed for eslint v6 and over. The module
69
- // path that we pass here is literally the one used in eslint (specifically in
84
+ // This following module override is needed for ESLint v6 and over. The module
85
+ // path that we pass here is literally the one used in ESLint (specifically in
70
86
// eslint/lib/cli-engine/config-array-factory.js)
71
87
//
72
88
// The stock `resolve` method attempts to resolve to a file path the module
73
89
// name passed in `name` relative to the path in `relative`. We have to
74
- // override that function, otherwise eslint fails to "load" our plugins.
90
+ // override that function, otherwise ESLint fails to "load" our plugins.
75
91
//
76
- '../shared/relative-module-resolver' : moduleResolver , // in eslint < 7.12, from eslint/lib/cli-engine/config-array-factory.js
77
- './shared/relative-module-resolver' : moduleResolver , // in eslint 7.12+, from @eslint/eslintrc/lib/config-array-factory.js
92
+ '../shared/relative-module-resolver' : moduleResolver , // in ESLint < 7.12, from eslint/lib/cli-engine/config-array-factory.js
93
+ './shared/relative-module-resolver' : moduleResolver , // in ESLint 7.12+, from @eslint/eslintrc/lib/config-array-factory.js
78
94
'eslint-plugin-plugin' : {
79
95
rules : {
80
96
'foo-rule' : { } ,
@@ -156,19 +172,34 @@ const dedupeModuleResolver = {
156
172
} ;
157
173
const getRuleFinderForDedupeTests = proxyquire ( '../../src/lib/rule-finder' , {
158
174
eslint : {
159
- linter : {
175
+ linter : ( ) => ( {
176
+ getRules ( ) {
177
+ return new Map ( )
178
+ . set ( 'foo-rule' , { } )
179
+ . set ( 'bar-rule' , { } )
180
+ . set ( 'plugin/duplicate-foo-rule' , { } )
181
+ . set ( 'plugin/duplicate-bar-rule' , { } ) ;
182
+ }
183
+ } ) ,
184
+ Linter : ( ) => ( {
160
185
getRules ( ) {
161
186
return new Map ( )
162
187
. set ( 'foo-rule' , { } )
163
188
. set ( 'bar-rule' , { } )
164
189
. set ( 'plugin/duplicate-foo-rule' , { } )
165
190
. set ( 'plugin/duplicate-bar-rule' , { } ) ;
166
191
}
192
+ } )
193
+ } ,
194
+
195
+ '@eslint/eslintrc' : {
196
+ Legacy : {
197
+ ModuleResolver : dedupeModuleResolver ,
167
198
}
168
199
} ,
169
200
// See the long comment in `getRuleFinder` above to learn what the point of this override is.
170
- '../shared/relative-module-resolver' : dedupeModuleResolver , // in eslint < 7.12, from eslint/lib/cli-engine/config-array-factory.js
171
- './shared/relative-module-resolver' : dedupeModuleResolver , // in eslint 7.12+, from @eslint/eslintrc/lib/config-array-factory.js
201
+ '../shared/relative-module-resolver' : dedupeModuleResolver , // in ESLint < 7.12, from eslint/lib/cli-engine/config-array-factory.js
202
+ './shared/relative-module-resolver' : dedupeModuleResolver , // in ESLint 7.12+, from @eslint/eslintrc/lib/config-array-factory.js
172
203
'eslint-plugin-plugin' : {
173
204
rules : {
174
205
'duplicate-foo-rule' : { } ,
0 commit comments