@@ -163,4 +163,112 @@ t.test('constructor', async (t) => {
163
163
const barEdgeRule = overrides . getEdgeRule ( { name : 'bar' , spec : '^1' } )
164
164
t . equal ( barEdgeRule . value , '*' , 'when rule is omitted entirely value is *' )
165
165
} )
166
+
167
+ t . test ( 'version specs work' , async ( t ) => {
168
+ const overrides = new OverrideSet ( {
169
+ overrides : {
170
+ foo : {
171
+ bar : '$bar' ,
172
+ } ,
173
+ 'baz@^1.0.0' : {
174
+ 'buzz@^1.0.0' : '$buzz' ,
175
+ } ,
176
+ } ,
177
+ } )
178
+
179
+ const fooEdgeRule = overrides . getEdgeRule ( { name : 'foo' , spec : '^1.0.0' } )
180
+ const barEdgeRule = fooEdgeRule . getEdgeRule ( { name : 'bar' , spec : '1.0.0' } )
181
+ t . equal ( barEdgeRule . value , '$bar' , 'got a rule back' )
182
+
183
+ const bazEdgeRule = overrides . getEdgeRule ( { name : 'baz' , spec : '^1.0.0' } )
184
+ const buzzEdgeRule = bazEdgeRule . getEdgeRule ( { name : 'buzz' , spec : '1.0.0' } )
185
+ t . equal ( buzzEdgeRule . value , '$buzz' , 'got a rule back' )
186
+ } )
187
+
188
+ t . test ( 'directory specs work' , async ( t ) => {
189
+ const overrides = new OverrideSet ( {
190
+ overrides : {
191
+ foo : {
192
+ bar : '$bar' ,
193
+ } ,
194
+ 'baz@^1.0.0' : {
195
+ 'buzz@^1.0.0' : '$buzz' ,
196
+ } ,
197
+ } ,
198
+ } )
199
+
200
+ const fooEdgeRule = overrides . getEdgeRule ( { name : 'foo' , spec : '^1.0.0' } )
201
+ const barEdgeRule = fooEdgeRule . getEdgeRule ( { name : 'bar' , spec : 'file:../bar' } )
202
+ t . equal ( barEdgeRule . value , '$bar' , 'got a rule back' )
203
+
204
+ const bazEdgeRule = overrides . getEdgeRule ( { name : 'baz' , spec : '^1.0.0' } )
205
+ const buzzEdgeRule = bazEdgeRule . getEdgeRule ( { name : 'buzz' , spec : 'file:../buzz' } )
206
+ t . equal ( buzzEdgeRule . value , '$buzz' , 'got a rule back' )
207
+ } )
208
+
209
+ t . test ( 'file specs work' , async ( t ) => {
210
+ const overrides = new OverrideSet ( {
211
+ overrides : {
212
+ foo : {
213
+ bar : '$bar' ,
214
+ } ,
215
+ 'baz@^1.0.0' : {
216
+ 'buzz@^1.0.0' : '$buzz' ,
217
+ } ,
218
+ } ,
219
+ } )
220
+
221
+ const fooEdgeRule = overrides . getEdgeRule ( { name : 'foo' , spec : '^1.0.0' } )
222
+ const barEdgeRule = fooEdgeRule . getEdgeRule ( { name : 'bar' , spec : 'file:../bar.tgz' } )
223
+ t . equal ( barEdgeRule . value , '$bar' , 'got a rule back' )
224
+
225
+ const bazEdgeRule = overrides . getEdgeRule ( { name : 'baz' , spec : '^1.0.0' } )
226
+ const buzzEdgeRule = bazEdgeRule . getEdgeRule ( { name : 'buzz' , spec : 'file:../buzz.tgz' } )
227
+ t . equal ( buzzEdgeRule . value , '$buzz' , 'got a rule back' )
228
+ } )
229
+
230
+ t . test ( 'alias specs work' , async ( t ) => {
231
+ const overrides = new OverrideSet ( {
232
+ overrides : {
233
+ foo : {
234
+ bar : '$bar' ,
235
+ } ,
236
+ 'baz@^1.0.0' : {
237
+ 'buzz@^1.0.0' : '$buzz' ,
238
+ } ,
239
+ } ,
240
+ } )
241
+
242
+ const fooEdgeRule = overrides . getEdgeRule ( { name : 'foo' , spec : '^1.0.0' } )
243
+ const barEdgeRule = fooEdgeRule . getEdgeRule ( { name : 'bar' , spec : 'npm:bar2@^1.0.0' } )
244
+ t . equal ( barEdgeRule . value , '$bar' , 'got a rule back' )
245
+
246
+ const bazEdgeRule = overrides . getEdgeRule ( { name : 'baz' , spec : '^1.0.0' } )
247
+ const buzzEdgeRule = bazEdgeRule . getEdgeRule ( { name : 'buzz' , spec : 'npm:buzz2@^1.0.0' } )
248
+ t . equal ( buzzEdgeRule . value , '$buzz' , 'got a rule back' )
249
+ } )
250
+
251
+ t . test ( 'git specs work' , async ( t ) => {
252
+ const overrides = new OverrideSet ( {
253
+ overrides : {
254
+ foo : {
255
+ bar : '$bar' ,
256
+ } ,
257
+ 'baz@^1.0.0' : {
258
+ 'buzz@^1.0.0' : '$buzz' ,
259
+ } ,
260
+ } ,
261
+ } )
262
+
263
+ const fooEdgeRule = overrides . getEdgeRule ( { name : 'foo' , spec : '^1.0.0' } )
264
+ const barEdgeRule = fooEdgeRule . getEdgeRule ( { name : 'bar' , spec : 'github:foo/bar' } )
265
+ t . equal ( barEdgeRule . value , '$bar' , 'got a rule back' )
266
+
267
+ const bazEdgeRule = overrides . getEdgeRule ( { name : 'baz' , spec : '^1.0.0' } )
268
+ const buzzEdgeRule = bazEdgeRule . getEdgeRule ( { name : 'buzz' , spec : 'github:baz/buzz#semver:^1.0.0' } )
269
+ t . equal ( buzzEdgeRule . value , '$buzz' , 'got a rule back' )
270
+
271
+ const outOfRangeRule = bazEdgeRule . getEdgeRule ( { name : 'buzz' , spec : 'github:baz/buzz#semver:^2.0.0' } )
272
+ t . equal ( outOfRangeRule . name , 'baz' , 'no match - returned parent' )
273
+ } )
166
274
} )
0 commit comments