@@ -115,6 +115,79 @@ test('api: extendPackage function', async () => {
115
115
} )
116
116
} )
117
117
118
+ test ( 'api: extendPackage allow git, github, http, file version ranges' , async ( ) => {
119
+ const generator = new Generator ( '/' , { plugins : [
120
+ {
121
+ id : 'test' ,
122
+ apply : api => {
123
+ api . extendPackage ( {
124
+ dependencies : {
125
+ foo : 'git+ssh://git@github.com:npm/npm.git#v1.0.27' ,
126
+ baz : 'git://github.com/npm/npm.git#v1.0.27' ,
127
+ bar : 'expressjs/express' ,
128
+ bad : 'mochajs/mocha#4727d357ea' ,
129
+ bac : 'http://asdf.com/asdf.tar.gz' ,
130
+ bae : 'file:../dyl' ,
131
+ 'my-lib' : 'https://bitbucket.org/user/my-lib.git#semver:^1.0.0'
132
+ }
133
+ } )
134
+ }
135
+ }
136
+ ] } )
137
+
138
+ await generator . generate ( )
139
+
140
+ const pkg = JSON . parse ( fs . readFileSync ( '/package.json' , 'utf-8' ) )
141
+ expect ( pkg ) . toEqual ( {
142
+ dependencies : {
143
+ foo : 'git+ssh://git@github.com:npm/npm.git#v1.0.27' ,
144
+ baz : 'git://github.com/npm/npm.git#v1.0.27' ,
145
+ bar : 'expressjs/express' ,
146
+ bad : 'mochajs/mocha#4727d357ea' ,
147
+ bac : 'http://asdf.com/asdf.tar.gz' ,
148
+ bae : 'file:../dyl' ,
149
+ 'my-lib' : 'https://bitbucket.org/user/my-lib.git#semver:^1.0.0'
150
+ }
151
+ } )
152
+ } )
153
+
154
+ test ( 'api: extendPackage merge nonstrictly semver deps' , async ( ) => {
155
+ const generator = new Generator ( '/' , { plugins : [
156
+ {
157
+ id : 'test' ,
158
+ apply : api => {
159
+ api . extendPackage ( {
160
+ dependencies : {
161
+ 'my-lib' : 'https://bitbucket.org/user/my-lib.git#semver:1.0.0' ,
162
+ bar : 'expressjs/express'
163
+ }
164
+ } )
165
+ }
166
+ } ,
167
+ {
168
+ id : 'test2' ,
169
+ apply : api => {
170
+ api . extendPackage ( {
171
+ dependencies : {
172
+ 'my-lib' : 'https://bitbucket.org/user/my-lib.git#semver:1.2.0' ,
173
+ bar : 'expressjs/express'
174
+ }
175
+ } )
176
+ }
177
+ }
178
+ ] } )
179
+
180
+ await generator . generate ( )
181
+
182
+ const pkg = JSON . parse ( fs . readFileSync ( '/package.json' , 'utf-8' ) )
183
+ expect ( pkg ) . toEqual ( {
184
+ dependencies : {
185
+ 'my-lib' : 'https://bitbucket.org/user/my-lib.git#semver:1.2.0' ,
186
+ bar : 'expressjs/express'
187
+ }
188
+ } )
189
+ } )
190
+
118
191
test ( 'api: extendPackage merge dependencies' , async ( ) => {
119
192
const generator = new Generator ( '/' , { plugins : [
120
193
{
@@ -209,6 +282,40 @@ test('api: extendPackage dependencies conflict', async () => {
209
282
} ) ) . toBe ( true )
210
283
} )
211
284
285
+ test ( 'api: extendPackage merge warn nonstrictly semver deps' , async ( ) => {
286
+ new Generator ( '/' , { plugins : [
287
+ {
288
+ id : 'test3' ,
289
+ apply : api => {
290
+ api . extendPackage ( {
291
+ dependencies : {
292
+ bar : 'expressjs/express'
293
+ }
294
+ } )
295
+ }
296
+ } ,
297
+ {
298
+ id : 'test4' ,
299
+ apply : api => {
300
+ api . extendPackage ( {
301
+ dependencies : {
302
+ bar : 'expressjs/express#1234'
303
+ }
304
+ } )
305
+ }
306
+ }
307
+ ] } )
308
+
309
+ expect ( logs . warn . some ( ( [ msg ] ) => {
310
+ return (
311
+ msg . match ( / c o n f l i c t i n g v e r s i o n s f o r p r o j e c t d e p e n d e n c y " b a r " / ) &&
312
+ msg . match ( / e x p r e s s j s \/ e x p r e s s i n j e c t e d b y g e n e r a t o r " t e s t 3 " / ) &&
313
+ msg . match ( / e x p r e s s j s \/ e x p r e s s # 1 2 3 4 i n j e c t e d b y g e n e r a t o r " t e s t 4 " / ) &&
314
+ msg . match ( / U s i n g v e r s i o n \( e x p r e s s j s \/ e x p r e s s \) / )
315
+ )
316
+ } ) ) . toBe ( true )
317
+ } )
318
+
212
319
test ( 'api: render fs directory' , async ( ) => {
213
320
const generator = new Generator ( '/' , { plugins : [
214
321
{
0 commit comments