3
3
const MetadataGenerator = require ( '../../lib/metadata_gen' ) ;
4
4
const {
5
5
fixAndRefPR,
6
+ selfRefPR,
7
+ duplicateRefPR,
6
8
fixCrossPR,
7
9
backportPR,
8
10
allGreenReviewers
9
11
} = require ( '../fixtures/data' ) ;
10
12
11
13
const assert = require ( 'assert' ) ;
14
+
12
15
const data = {
13
16
owner : 'nodejs' ,
14
17
repo : 'node' ,
15
18
pr : fixAndRefPR ,
16
19
reviewers : allGreenReviewers
17
20
} ;
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
+
19
30
const backportArgv = {
20
31
argv : {
21
32
owner : 'nodejs' ,
@@ -29,36 +40,55 @@ const backportArgv = {
29
40
backport : true
30
41
}
31
42
} ;
32
-
33
43
const 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
+ ` ;
34
49
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
38
52
Reviewed-By: Foo User <[email protected] >
39
53
Reviewed-By: Quux User <[email protected] >
40
54
Reviewed-By: Baz User <[email protected] >
41
55
Reviewed-By: Bar User <[email protected] >
42
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
61
+ Reviewed-By: Foo User <[email protected] >
62
+ Reviewed-By: Quux User <[email protected] >
63
+ Reviewed-By: Baz User <[email protected] >
64
+ Reviewed-By: Bar User <[email protected] >
65
+ ` ;
66
+
67
+ const crossData = Object . assign ( { } , data , { pr : fixCrossPR } ) ;
43
68
const crossExpected = `PR-URL: https://github.com/nodejs/node/pull/16438
44
69
Fixes: https://github.com/joyeecheung/node-core-utils/issues/123
45
70
Reviewed-By: Foo User <[email protected] >
46
71
Reviewed-By: Quux User <[email protected] >
47
72
Reviewed-By: Baz User <[email protected] >
48
73
Reviewed-By: Bar User <[email protected] >
49
74
` ;
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
- ` ;
55
75
56
76
describe ( 'MetadataGenerator' , ( ) => {
57
77
it ( 'should generate metadata properly' , ( ) => {
58
78
const results = new MetadataGenerator ( data ) . getMetadata ( ) ;
59
79
assert . strictEqual ( expected , results ) ;
60
80
} ) ;
61
81
82
+ it ( 'should prevent duplicate references' , ( ) => {
83
+ const results = new MetadataGenerator ( duplicateRefData ) . getMetadata ( ) ;
84
+ assert . strictEqual ( duplicateRefExpected , results ) ;
85
+ } ) ;
86
+
87
+ it ( 'should prevent self-referential references' , ( ) => {
88
+ const results = new MetadataGenerator ( selfRefData ) . getMetadata ( ) ;
89
+ assert . strictEqual ( selfRefExpected , results ) ;
90
+ } ) ;
91
+
62
92
it ( 'should handle cross-owner and cross-repo fixes properly' , ( ) => {
63
93
const results = new MetadataGenerator ( crossData ) . getMetadata ( ) ;
64
94
assert . strictEqual ( crossExpected , results ) ;
0 commit comments