@@ -278,13 +278,21 @@ mod tests {
278
278
279
279
use crate :: bors:: handlers:: trybuild:: TRY_BRANCH_NAME ;
280
280
use crate :: bors:: merge_queue:: { AUTO_BRANCH_NAME , AUTO_BUILD_CHECK_RUN_NAME } ;
281
- use crate :: database:: WorkflowStatus ;
282
281
use crate :: database:: operations:: get_all_workflows;
282
+ use crate :: database:: { BuildStatus , WorkflowStatus } ;
283
283
use crate :: tests:: mocks:: {
284
284
BorsBuilder , Branch , CheckSuite , GitHubState , Workflow , WorkflowEvent , default_pr_number,
285
285
run_test,
286
286
} ;
287
287
288
+ fn gh_state_with_merge_queue ( ) -> GitHubState {
289
+ GitHubState :: default ( ) . with_default_config (
290
+ r#"
291
+ merge_queue_enabled = true
292
+ "# ,
293
+ )
294
+ }
295
+
288
296
#[ sqlx:: test]
289
297
async fn workflow_started_unknown_build ( pool : sqlx:: PgPool ) {
290
298
run_test ( pool. clone ( ) , |mut tester| async {
@@ -467,57 +475,69 @@ mod tests {
467
475
468
476
#[ sqlx:: test]
469
477
async fn auto_build_success_comment ( pool : sqlx:: PgPool ) {
470
- run_test ( pool, |mut tester| async {
471
- tester. create_branch ( AUTO_BRANCH_NAME ) . expect_suites ( 1 ) ;
478
+ let github = GitHubState :: default ( ) . with_default_config (
479
+ r#"
480
+ merge_queue_enabled = true
481
+ "# ,
482
+ ) ;
472
483
473
- tester. post_comment ( "@bors r+" ) . await ?;
474
- tester. expect_comments ( 1 ) . await ;
484
+ BorsBuilder :: new ( pool)
485
+ . github ( github)
486
+ . run_test ( |mut tester| async {
487
+ tester. create_branch ( AUTO_BRANCH_NAME ) . expect_suites ( 1 ) ;
475
488
476
- tester. process_merge_queue ( ) . await ;
477
- tester. expect_comments ( 1 ) . await ;
489
+ tester. post_comment ( "@bors r+" ) . await ? ;
490
+ tester. expect_comments ( 1 ) . await ;
478
491
479
- tester. workflow_success ( tester. auto_branch ( ) ) . await ?;
480
- tester. process_merge_queue ( ) . await ;
481
- insta:: assert_snapshot!(
482
- tester. get_comment( ) . await ?,
483
- @r"
492
+ tester. process_merge_queue ( ) . await ;
493
+ tester. expect_comments ( 1 ) . await ;
494
+
495
+ tester. workflow_success ( tester. auto_branch ( ) ) . await ?;
496
+ tester. process_merge_queue ( ) . await ;
497
+ insta:: assert_snapshot!(
498
+ tester. get_comment( ) . await ?,
499
+ @r"
484
500
:sunny: Test successful - [Workflow1](https://github.com/workflows/Workflow1/1)
485
501
Approved by: `default-user`
486
502
Pushing merge-main-sha1-pr-1-sha-0 to `main`...
487
503
"
488
- ) ;
504
+ ) ;
489
505
490
- Ok ( tester)
491
- } )
492
- . await ;
506
+ Ok ( tester)
507
+ } )
508
+ . await ;
493
509
}
494
510
495
511
#[ sqlx:: test]
496
512
async fn auto_build_check_run_success ( pool : sqlx:: PgPool ) {
497
- run_test ( pool, |mut tester| async {
498
- tester. create_branch ( AUTO_BRANCH_NAME ) . expect_suites ( 1 ) ;
499
-
500
- tester. post_comment ( "@bors r+" ) . await ?;
501
- tester. expect_comments ( 1 ) . await ;
502
-
503
- tester. process_merge_queue ( ) . await ;
504
- tester. expect_comments ( 1 ) . await ;
505
-
506
- tester. workflow_success ( tester. auto_branch ( ) ) . await ?;
507
- tester. process_merge_queue ( ) . await ;
508
- tester. expect_comments ( 1 ) . await ;
513
+ let github = GitHubState :: default ( ) . with_default_config (
514
+ r#"
515
+ merge_queue_enabled = true
516
+ "# ,
517
+ ) ;
509
518
510
- tester. expect_check_run (
511
- & tester. default_pr ( ) . await . get_gh_pr ( ) . head_sha ,
512
- AUTO_BUILD_CHECK_RUN_NAME ,
513
- AUTO_BUILD_CHECK_RUN_NAME ,
514
- CheckRunStatus :: Completed ,
515
- Some ( CheckRunConclusion :: Success ) ,
516
- ) ;
519
+ BorsBuilder :: new ( pool)
520
+ . github ( github)
521
+ . run_test ( |mut tester| async {
522
+ tester. create_branch ( AUTO_BRANCH_NAME ) . expect_suites ( 1 ) ;
523
+ tester. post_comment ( "@bors r+" ) . await ?;
524
+ tester. expect_comments ( 1 ) . await ;
525
+ tester. process_merge_queue ( ) . await ;
526
+ tester. expect_comments ( 1 ) . await ;
517
527
518
- Ok ( tester)
519
- } )
520
- . await ;
528
+ tester. workflow_success ( tester. auto_branch ( ) ) . await ?;
529
+ tester. process_merge_queue ( ) . await ;
530
+ tester. expect_comments ( 1 ) . await ;
531
+ tester. expect_check_run (
532
+ & tester. default_pr ( ) . await . get_gh_pr ( ) . head_sha ,
533
+ AUTO_BUILD_CHECK_RUN_NAME ,
534
+ AUTO_BUILD_CHECK_RUN_NAME ,
535
+ CheckRunStatus :: Completed ,
536
+ Some ( CheckRunConclusion :: Success ) ,
537
+ ) ;
538
+ Ok ( tester)
539
+ } )
540
+ . await ;
521
541
}
522
542
523
543
#[ sqlx:: test]
@@ -537,7 +557,6 @@ succeeded = ["+foo", "+bar", "-baz"]
537
557
tester. create_branch ( AUTO_BRANCH_NAME ) . expect_suites ( 1 ) ;
538
558
tester. post_comment ( "@bors r+" ) . await ?;
539
559
tester. expect_comments ( 1 ) . await ;
540
-
541
560
tester. process_merge_queue ( ) . await ;
542
561
tester. expect_comments ( 1 ) . await ;
543
562
@@ -557,4 +576,76 @@ succeeded = ["+foo", "+bar", "-baz"]
557
576
} )
558
577
. await ;
559
578
}
579
+
580
+ #[ sqlx:: test]
581
+ async fn auto_build_failed_labels ( pool : sqlx:: PgPool ) {
582
+ let github = GitHubState :: default ( ) . with_default_config (
583
+ r#"
584
+ merge_queue_enabled = true
585
+
586
+ [labels]
587
+ failed = ["+foo", "+bar", "-baz"]
588
+ "# ,
589
+ ) ;
590
+
591
+ BorsBuilder :: new ( pool)
592
+ . github ( github)
593
+ . run_test ( |mut tester| async {
594
+ tester. create_branch ( AUTO_BRANCH_NAME ) . expect_suites ( 1 ) ;
595
+ tester. post_comment ( "@bors r+" ) . await ?;
596
+ tester. expect_comments ( 1 ) . await ;
597
+ tester. process_merge_queue ( ) . await ;
598
+ tester. expect_comments ( 1 ) . await ;
599
+
600
+ let repo = tester. default_repo ( ) ;
601
+ repo. lock ( )
602
+ . get_pr ( default_pr_number ( ) )
603
+ . check_added_labels ( & [ ] ) ;
604
+
605
+ tester. workflow_failure ( tester. auto_branch ( ) ) . await ?;
606
+ tester
607
+ . wait_for_default_pr ( |pr| {
608
+ pr. auto_build . as_ref ( ) . unwrap ( ) . status == BuildStatus :: Failure
609
+ } )
610
+ . await ?;
611
+ tester. expect_comments ( 1 ) . await ;
612
+
613
+ let pr = repo. lock ( ) . get_pr ( default_pr_number ( ) ) . clone ( ) ;
614
+ pr. check_added_labels ( & [ "foo" , "bar" ] ) ;
615
+ pr. check_removed_labels ( & [ "baz" ] ) ;
616
+
617
+ Ok ( tester)
618
+ } )
619
+ . await ;
620
+ }
621
+
622
+ #[ sqlx:: test]
623
+ async fn auto_build_failure_updates_check_run_on ( pool : sqlx:: PgPool ) {
624
+ BorsBuilder :: new ( pool)
625
+ . github ( gh_state_with_merge_queue ( ) )
626
+ . run_test ( |mut tester| async {
627
+ tester. create_branch ( AUTO_BRANCH_NAME ) . expect_suites ( 1 ) ;
628
+ tester. post_comment ( "@bors r+" ) . await ?;
629
+ tester. expect_comments ( 1 ) . await ;
630
+ tester. process_merge_queue ( ) . await ;
631
+ tester. expect_comments ( 1 ) . await ;
632
+
633
+ tester. workflow_failure ( tester. auto_branch ( ) ) . await ?;
634
+ tester. expect_comments ( 1 ) . await ;
635
+ tester
636
+ . wait_for_default_pr ( |pr| {
637
+ pr. auto_build . as_ref ( ) . unwrap ( ) . status == BuildStatus :: Failure
638
+ } )
639
+ . await ?;
640
+ tester. expect_check_run (
641
+ & tester. default_pr ( ) . await . get_gh_pr ( ) . head_sha ,
642
+ AUTO_BUILD_CHECK_RUN_NAME ,
643
+ AUTO_BUILD_CHECK_RUN_NAME ,
644
+ CheckRunStatus :: Completed ,
645
+ Some ( CheckRunConclusion :: Failure ) ,
646
+ ) ;
647
+ Ok ( tester)
648
+ } )
649
+ . await ;
650
+ }
560
651
}
0 commit comments