33const MetadataGenerator = require ( '../../lib/metadata_gen' ) ;
44const {
55 fixAndRefPR,
6+ selfRefPR,
7+ duplicateRefPR,
68 fixCrossPR,
79 backportPR,
810 allGreenReviewers
911} = require ( '../fixtures/data' ) ;
1012
1113const assert = require ( 'assert' ) ;
14+
1215const data = {
1316 owner : 'nodejs' ,
1417 repo : 'node' ,
1518 pr : fixAndRefPR ,
1619 reviewers : allGreenReviewers
1720} ;
18- const crossData = Object . assign ( { } , data , { pr : fixCrossPR } ) ;
21+ const expected = `PR-URL: https://github.com/nodejs/node/pull/16438
22+ Fixes: https://github.com/nodejs/node/issues/16437
23+ Refs: https://github.com/nodejs/node/pull/15148
24+ Reviewed-By: Foo User <[email protected] > 25+ Reviewed-By: Quux User <[email protected] > 26+ Reviewed-By: Baz User <[email protected] > 27+ Reviewed-By: Bar User <[email protected] > 28+ ` ;
29+
1930const backportArgv = {
2031 argv : {
2132 owner : 'nodejs' ,
@@ -29,29 +40,39 @@ const backportArgv = {
2940 backport : true
3041 }
3142} ;
32-
3343const backportData = Object . assign ( { } , data , { pr : backportPR } , backportArgv ) ;
44+ const backportExpected = `PR-URL: https://github.com/nodejs/node/pull/29995
45+ Backport-PR-URL: https://github.com/nodejs/node/pull/30072
46+ Fixes: https://github.com/nodejs/build/issues/1961
47+ Refs: https://github.com/nodejs/node/commit/53ca0b9ae145c430842bf78e553e3b6cbd2823aa#commitcomment-35494896
48+ ` ;
3449
35- const expected = `PR-URL: https://github.com/nodejs/node/pull/16438
36- Fixes: https://github.com/nodejs/node/issues/16437
37- Refs: https://github.com/nodejs/node/pull/15148
50+ const selfRefData = Object . assign ( { } , data , { pr : selfRefPR } ) ;
51+ const selfRefExpected = `PR-URL: https://github.com/nodejs/node/pull/16438
52+ Reviewed-By: Foo User <[email protected] > 53+ Reviewed-By: Quux User <[email protected] > 54+ Reviewed-By: Baz User <[email protected] > 55+ Reviewed-By: Bar User <[email protected] > 56+ ` ;
57+
58+ const duplicateRefData = Object . assign ( { } , data , { pr : duplicateRefPR } ) ;
59+ const duplicateRefExpected = `PR-URL: https://github.com/nodejs/node/pull/16438
60+ Refs: https://github.com/nodejs/node/pull/16439
3861Reviewed-By: Foo User <[email protected] > 3962Reviewed-By: Quux User <[email protected] > 4063Reviewed-By: Baz User <[email protected] > 4164Reviewed-By: Bar User <[email protected] > 4265` ;
66+
67+ const crossData = Object . assign ( { } , data , { pr : fixCrossPR } ) ;
4368const crossExpected = `PR-URL: https://github.com/nodejs/node/pull/16438
4469Fixes: https://github.com/joyeecheung/node-core-utils/issues/123
4570Reviewed-By: Foo User <[email protected] > 4671Reviewed-By: Quux User <[email protected] > 4772Reviewed-By: Baz User <[email protected] > 4873Reviewed-By: Bar User <[email protected] > 4974` ;
50- const backportExpected = `PR-URL: https://github.com/nodejs/node/pull/29995
51- Backport-PR-URL: https://github.com/nodejs/node/pull/30072
52- Fixes: https://github.com/nodejs/build/issues/1961
53- Refs: https://github.com/nodejs/node/commit/53ca0b9ae145c430842bf78e553e3b6cbd2823aa#commitcomment-35494896
54- ` ;
75+
5576const skipRefsExpected = `PR-URL: https://github.com/nodejs/node/pull/16438
5677Reviewed-By: Foo User <[email protected] > 5778Reviewed-By: Quux User <[email protected] > @@ -65,6 +86,16 @@ describe('MetadataGenerator', () => {
6586 assert . strictEqual ( expected , results ) ;
6687 } ) ;
6788
89+ it ( 'should prevent duplicate references' , ( ) => {
90+ const results = new MetadataGenerator ( duplicateRefData ) . getMetadata ( ) ;
91+ assert . strictEqual ( duplicateRefExpected , results ) ;
92+ } ) ;
93+
94+ it ( 'should prevent self-referential references' , ( ) => {
95+ const results = new MetadataGenerator ( selfRefData ) . getMetadata ( ) ;
96+ assert . strictEqual ( selfRefExpected , results ) ;
97+ } ) ;
98+
6899 it ( 'should handle cross-owner and cross-repo fixes properly' , ( ) => {
69100 const results = new MetadataGenerator ( crossData ) . getMetadata ( ) ;
70101 assert . strictEqual ( crossExpected , results ) ;
0 commit comments