@@ -115,6 +115,79 @@ test('api: extendPackage function', async () => {
115115 } )
116116} )
117117
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+
118191test ( 'api: extendPackage merge dependencies' , async ( ) => {
119192 const generator = new Generator ( '/' , { plugins : [
120193 {
@@ -209,6 +282,40 @@ test('api: extendPackage dependencies conflict', async () => {
209282 } ) ) . toBe ( true )
210283} )
211284
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+
212319test ( 'api: render fs directory' , async ( ) => {
213320 const generator = new Generator ( '/' , { plugins : [
214321 {
0 commit comments