@@ -261,7 +261,7 @@ func TestCreateStatus(t *testing.T) {
261261 },
262262 },
263263 {
264- name : "commit status fails on both projects with non-permission error skips MR comment" ,
264+ name : "commit status fails with state transition error skips MR comment" ,
265265 wantClient : true ,
266266 wantErr : false ,
267267 fields : fields {
@@ -273,11 +273,31 @@ func TestCreateStatus(t *testing.T) {
273273 },
274274 event : & info.Event {
275275 TriggerTarget : "pull_request" ,
276- SourceProjectID : 400 , // Will fail with 400 (not permission error)
277- TargetProjectID : 405 , // Will fail with 400 (not permission error)
276+ SourceProjectID : 422 , // Will fail with "Cannot transition status" error
277+ TargetProjectID : 423 , // Will fail with "Cannot transition status" error
278278 SHA : "abc123" ,
279279 },
280- postStr : "" , // No MR comment expected for non-permission errors
280+ postStr : "" , // No MR comment expected for state transition errors
281+ },
282+ },
283+ {
284+ name : "generic error on both projects creates MR comment" ,
285+ wantClient : true ,
286+ wantErr : false ,
287+ fields : fields {
288+ targetProjectID : 100 ,
289+ },
290+ args : args {
291+ statusOpts : provider.StatusOpts {
292+ Conclusion : "success" ,
293+ },
294+ event : & info.Event {
295+ TriggerTarget : "pull_request" ,
296+ SourceProjectID : 400 , // Will fail with generic 400 error
297+ TargetProjectID : 405 , // Will fail with generic 400 error
298+ SHA : "abc123def" ,
299+ },
300+ postStr : "has successfully" , // MR comment expected for non-transition errors
281301 },
282302 },
283303 {
@@ -294,8 +314,8 @@ func TestCreateStatus(t *testing.T) {
294314 event : & info.Event {
295315 TriggerTarget : "pull_request" ,
296316 SourceProjectID : 403 , // Will fail with 403 Forbidden
297- TargetProjectID : 400 , // Will fail with 400 (not permission error)
298- SHA : "abc123def " ,
317+ TargetProjectID : 400 , // Will fail with generic 400 error
318+ SHA : "abc123ghi " ,
299319 },
300320 postStr : "has successfully" ,
301321 },
@@ -314,8 +334,8 @@ func TestCreateStatus(t *testing.T) {
314334 event : & info.Event {
315335 TriggerTarget : "pull_request" ,
316336 SourceProjectID : 401 , // Will fail with 401 Unauthorized
317- TargetProjectID : 400 , // Will fail with 400 (not permission error)
318- SHA : "abc123ghi " ,
337+ TargetProjectID : 400 , // Will fail with generic 400 error
338+ SHA : "abc123jkl " ,
319339 },
320340 postStr : "has successfully" ,
321341 },
@@ -371,6 +391,9 @@ func TestCreateStatus(t *testing.T) {
371391 case 404 :
372392 rw .WriteHeader (http .StatusNotFound )
373393 fmt .Fprint (rw , `{"message": "404 Project Not Found"}` )
394+ case 422 :
395+ rw .WriteHeader (http .StatusBadRequest )
396+ fmt .Fprint (rw , `{"message": "Cannot transition status via :run from :running"}` )
374397 default :
375398 rw .WriteHeader (http .StatusCreated )
376399 fmt .Fprint (rw , `{}` )
@@ -395,6 +418,9 @@ func TestCreateStatus(t *testing.T) {
395418 case 404 :
396419 rw .WriteHeader (http .StatusNotFound )
397420 fmt .Fprint (rw , `{"message": "404 Project Not Found"}` )
421+ case 423 :
422+ rw .WriteHeader (http .StatusBadRequest )
423+ fmt .Fprint (rw , `{"message": "Cannot transition status via :run from :running"}` )
398424 default :
399425 rw .WriteHeader (http .StatusCreated )
400426 fmt .Fprint (rw , `{}` )
0 commit comments