@@ -163,4 +163,112 @@ t.test('constructor', async (t) => {
163163 const barEdgeRule = overrides . getEdgeRule ( { name : 'bar' , spec : '^1' } )
164164 t . equal ( barEdgeRule . value , '*' , 'when rule is omitted entirely value is *' )
165165 } )
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+ } )
166274} )
0 commit comments