@@ -349,6 +349,75 @@ test('should fall back to conventional-changelog-lint-config prefix', () => {
349
349
} ) ;
350
350
} ) ;
351
351
352
+ test ( 'plugins should be merged correctly' , ( ) => {
353
+ const input = { extends : [ 'extender-name' ] , zero : 'root' } ;
354
+
355
+ const require = ( id : string ) => {
356
+ switch ( id ) {
357
+ case 'extender-name' :
358
+ return { extends : [ 'recursive-extender-name' ] , plugins : [ 'test' ] } ;
359
+ case 'recursive-extender-name' :
360
+ return {
361
+ extends : [ 'second-recursive-extender-name' ] ,
362
+ plugins : [ 'test2' ] ,
363
+ } ;
364
+ case 'second-recursive-extender-name' :
365
+ return { plugins : [ 'test3' ] } ;
366
+ default :
367
+ return { } ;
368
+ }
369
+ } ;
370
+
371
+ const ctx = { resolve : id , require : jest . fn ( require ) } as ResolveExtendsContext ;
372
+
373
+ const actual = resolveExtends ( input , ctx ) ;
374
+
375
+ const expected = {
376
+ extends : [ 'extender-name' ] ,
377
+ plugins : [ 'test' , 'test2' , 'test3' ] ,
378
+ zero : 'root' ,
379
+ } ;
380
+
381
+ expect ( actual ) . toEqual ( expected ) ;
382
+ } ) ;
383
+
384
+ test ( 'rules should be merged correctly' , ( ) => {
385
+ const input = { extends : [ 'extender-name' ] , rules : { test1 : [ 'base' , '1' ] } } ;
386
+
387
+ const require = ( id : string ) => {
388
+ switch ( id ) {
389
+ case 'extender-name' :
390
+ return {
391
+ extends : [ 'recursive-extender-name' ] ,
392
+ rules : { test2 : [ id , '2' ] } ,
393
+ } ;
394
+ case 'recursive-extender-name' :
395
+ return {
396
+ extends : [ 'second-recursive-extender-name' ] ,
397
+ rules : { test1 : [ id , '3' ] } ,
398
+ } ;
399
+ case 'second-recursive-extender-name' :
400
+ return { rules : { test2 : [ id , '4' ] } } ;
401
+ default :
402
+ return { } ;
403
+ }
404
+ } ;
405
+
406
+ const ctx = { resolve : id , require : jest . fn ( require ) } as ResolveExtendsContext ;
407
+
408
+ const actual = resolveExtends ( input , ctx ) ;
409
+
410
+ const expected = {
411
+ extends : [ 'extender-name' ] ,
412
+ rules : {
413
+ test1 : [ 'base' , '1' ] ,
414
+ test2 : [ 'extender-name' , '2' ] ,
415
+ } ,
416
+ } ;
417
+
418
+ expect ( actual ) . toEqual ( expected ) ;
419
+ } ) ;
420
+
352
421
// https://github.com/conventional-changelog/commitlint/issues/327
353
422
test ( 'parserPreset should resolve correctly in extended configuration' , ( ) => {
354
423
const input = { extends : [ 'extender-name' ] , zero : 'root' } ;
0 commit comments