@@ -4091,3 +4091,67 @@ t.test('should take devEngines in account', async t => {
4091
4091
const tree = await buildIdeal ( path )
4092
4092
t . matchSnapshot ( String ( tree . meta ) )
4093
4093
} )
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