@@ -8,7 +8,8 @@ import { FormData } from 'undici';
8
8
import {
9
9
RunPRJob ,
10
10
CI_CRUMB_URL ,
11
- CI_PR_URL
11
+ CI_PR_URL ,
12
+ CI_V8_URL
12
13
} from '../../lib/ci/run_ci.js' ;
13
14
import PRChecker from '../../lib/pr_checker.js' ;
14
15
@@ -24,15 +25,25 @@ describe('Jenkins', () => {
24
25
sinon . stub ( FormData . prototype , 'append' ) . callsFake ( function ( key , value ) {
25
26
assert . strictEqual ( key , 'json' ) ;
26
27
const { parameter } = JSON . parse ( value ) ;
27
- const expectedParameters = {
28
- CERTIFY_SAFE : 'on' ,
29
- COMMIT_SHA_CHECK : 'deadbeef' ,
30
- TARGET_GITHUB_ORG : owner ,
31
- TARGET_REPO_NAME : repo ,
32
- PR_ID : prid ,
33
- REBASE_ONTO : '<pr base branch>' ,
34
- DESCRIPTION_SETTER_DESCRIPTION : ''
35
- } ;
28
+ // Expected parameters are different for node-test-pull-request and
29
+ // node-test-commit-v8-linux, but we don't know which this FormData
30
+ // is for, so we make a guess.
31
+ const expectedParameters = parameter . some ( ( { name, _ } ) => name === 'PR_ID' )
32
+ ? {
33
+ CERTIFY_SAFE : 'on' ,
34
+ COMMIT_SHA_CHECK : 'deadbeef' ,
35
+ TARGET_GITHUB_ORG : owner ,
36
+ TARGET_REPO_NAME : repo ,
37
+ PR_ID : prid ,
38
+ REBASE_ONTO : '<pr base branch>' ,
39
+ DESCRIPTION_SETTER_DESCRIPTION : ''
40
+ }
41
+ : {
42
+ GITHUB_ORG : owner ,
43
+ REPO_NAME : repo ,
44
+ GIT_REMOTE_REF : `refs/pull/${ prid } /head` ,
45
+ COMMIT_SHA_CHECK : 'deadbeef'
46
+ } ;
36
47
for ( const { name, value } of parameter ) {
37
48
assert . strictEqual ( value , expectedParameters [ name ] ) ;
38
49
delete expectedParameters [ name ] ;
@@ -96,6 +107,40 @@ describe('Jenkins', () => {
96
107
assert . ok ( await jobRunner . start ( ) ) ;
97
108
} ) ;
98
109
110
+ it ( 'should start node-test-commit-v8-linux' , async ( ) => {
111
+ const cli = new TestCLI ( ) ;
112
+
113
+ const request = {
114
+ gql : sinon . stub ( ) . returns ( {
115
+ repository : {
116
+ pullRequest : {
117
+ labels : {
118
+ nodes : [ { name : 'v8 engine' } ]
119
+ }
120
+ }
121
+ }
122
+ } ) ,
123
+ fetch : sinon . stub ( )
124
+ . callsFake ( ( url , { method, headers, body } ) => {
125
+ assert . strictEqual ( url , CI_PR_URL ) ;
126
+ assert . strictEqual ( method , 'POST' ) ;
127
+ assert . deepStrictEqual ( headers , { 'Jenkins-Crumb' : crumb } ) ;
128
+ assert . ok ( body . _validated ) ;
129
+ return Promise . resolve ( { status : 201 } ) ;
130
+ } ) . onSecondCall ( ) . callsFake ( ( url , { method, headers, body } ) => {
131
+ assert . strictEqual ( url , CI_V8_URL ) ;
132
+ assert . strictEqual ( method , 'POST' ) ;
133
+ assert . deepStrictEqual ( headers , { 'Jenkins-Crumb' : crumb } ) ;
134
+ assert . ok ( body . _validated ) ;
135
+ return Promise . resolve ( { status : 201 } ) ;
136
+ } ) ,
137
+ json : sinon . stub ( ) . withArgs ( CI_CRUMB_URL )
138
+ . returns ( Promise . resolve ( { crumb } ) )
139
+ } ;
140
+ const jobRunner = new RunPRJob ( cli , request , owner , repo , prid , 'deadbeef' ) ;
141
+ assert . ok ( await jobRunner . start ( ) ) ;
142
+ } ) ;
143
+
99
144
it ( 'should return false if node-pull-request not started' , async ( ) => {
100
145
const cli = new TestCLI ( ) ;
101
146
0 commit comments