@@ -4091,3 +4091,67 @@ t.test('should take devEngines in account', async t => {
40914091 const tree = await buildIdeal ( path )
40924092 t . matchSnapshot ( String ( tree . meta ) )
40934093} )
4094+
4095+ t . test (
4096+ 'extraneous dependency not buildable on current platform does not throw' ,
4097+ async ( t ) => {
4098+ const isLinux = process . platform === 'linux'
4099+ const incompatibleOS = isLinux ? 'darwin' : 'linux'
4100+
4101+ const path = t . testdir ( {
4102+ 'package.json' : JSON . stringify ( {
4103+ name : 'extraneous-test' ,
4104+ version : '1.0.0' ,
4105+ dependencies : {
4106+ 'dependency-with-shrinkwrap' : '1.0.0' ,
4107+ } ,
4108+ } ) ,
4109+ 'package-lock.json' : JSON . stringify ( {
4110+ name : 'extraneous-test' ,
4111+ version : '1.0.0' ,
4112+ lockfileVersion : 3 ,
4113+ requires : true ,
4114+ packages : {
4115+ '' : {
4116+ name : 'extraneous-test' ,
4117+ version : '1.0.0' ,
4118+ dependencies : {
4119+ 'dependency-with-shrinkwrap' : '^1.0.0' ,
4120+ } ,
4121+ } ,
4122+ 'node_modules/dependency-with-shrinkwrap' : {
4123+ version : '1.0.0' ,
4124+ hasShrinkwrap : true ,
4125+ dependencies : { } ,
4126+ } ,
4127+ 'node_modules/dependency-with-shrinkwrap/node_modules/dev-dependency' :
4128+ {
4129+ version : '1.0.0' ,
4130+ extraneous : true ,
4131+ optionalDependencies : {
4132+ 'optional-dependancy' : '1.0.0' ,
4133+ } ,
4134+ } ,
4135+ 'node_modules/dependency-with-shrinkwrap/node_modules/optional-dependancy' :
4136+ {
4137+ version : '1.0.0' ,
4138+ cpu : [ 'x64' ] ,
4139+ extraneous : true ,
4140+ os : [ incompatibleOS ] ,
4141+ } ,
4142+ } ,
4143+ } ) ,
4144+ } )
4145+
4146+ createRegistry ( t , false )
4147+ const arb = newArb ( path )
4148+
4149+ try {
4150+ await arb . buildIdealTree ( { prune : false } )
4151+ } catch ( e ) {
4152+ t . fail (
4153+ 'should not throw for extraneous dependency not buildable on this platform'
4154+ )
4155+ }
4156+ }
4157+ )
0 commit comments