Skip to content

Commit d47d6e0

Browse files
committed
Add tests
1 parent cbe518d commit d47d6e0

File tree

6 files changed

+420
-161
lines changed

6 files changed

+420
-161
lines changed

src/bors/handlers/pr_events.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,7 @@ async fn notify_of_unclean_auto_build_cancelled_comment(
334334

335335
#[cfg(test)]
336336
mod tests {
337+
337338
use crate::bors::PullRequestStatus;
338339
use crate::tests::mocks::default_pr_number;
339340
use crate::{

src/bors/handlers/workflow.rs

Lines changed: 130 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -278,13 +278,21 @@ mod tests {
278278

279279
use crate::bors::handlers::trybuild::TRY_BRANCH_NAME;
280280
use crate::bors::merge_queue::{AUTO_BRANCH_NAME, AUTO_BUILD_CHECK_RUN_NAME};
281-
use crate::database::WorkflowStatus;
282281
use crate::database::operations::get_all_workflows;
282+
use crate::database::{BuildStatus, WorkflowStatus};
283283
use crate::tests::mocks::{
284284
BorsBuilder, Branch, CheckSuite, GitHubState, Workflow, WorkflowEvent, default_pr_number,
285285
run_test,
286286
};
287287

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+
288296
#[sqlx::test]
289297
async fn workflow_started_unknown_build(pool: sqlx::PgPool) {
290298
run_test(pool.clone(), |mut tester| async {
@@ -467,57 +475,69 @@ mod tests {
467475

468476
#[sqlx::test]
469477
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+
);
472483

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);
475488

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;
478491

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"
484500
:sunny: Test successful - [Workflow1](https://github.com/workflows/Workflow1/1)
485501
Approved by: `default-user`
486502
Pushing merge-main-sha1-pr-1-sha-0 to `main`...
487503
"
488-
);
504+
);
489505

490-
Ok(tester)
491-
})
492-
.await;
506+
Ok(tester)
507+
})
508+
.await;
493509
}
494510

495511
#[sqlx::test]
496512
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+
);
509518

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;
517527

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;
521541
}
522542

523543
#[sqlx::test]
@@ -537,7 +557,6 @@ succeeded = ["+foo", "+bar", "-baz"]
537557
tester.create_branch(AUTO_BRANCH_NAME).expect_suites(1);
538558
tester.post_comment("@bors r+").await?;
539559
tester.expect_comments(1).await;
540-
541560
tester.process_merge_queue().await;
542561
tester.expect_comments(1).await;
543562

@@ -557,4 +576,76 @@ succeeded = ["+foo", "+bar", "-baz"]
557576
})
558577
.await;
559578
}
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+
}
560651
}

0 commit comments

Comments
 (0)