Skip to content

Commit 6032456

Browse files
authored
Merge pull request #640 from Kobzol/pr-test-refactor
Store commits in PRs in tests
2 parents 7ddf0ec + edb3e68 commit 6032456

File tree

9 files changed

+112
-86
lines changed

9 files changed

+112
-86
lines changed

src/bors/handlers/pr_events.rs

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -435,11 +435,11 @@ mod tests {
435435
async fn unapprove_on_push(pool: sqlx::PgPool) {
436436
run_test(pool, async |ctx: &mut BorsTester| {
437437
ctx.approve(()).await?;
438-
ctx.push_to_pr(()).await?;
438+
ctx.push_to_pr((), Commit::from_sha("foo")).await?;
439439

440440
insta::assert_snapshot!(
441441
ctx.get_next_comment_text(()).await?,
442-
@":warning: A new commit `pr-1-commit-1` was pushed to the branch, the PR will need to be re-approved."
442+
@":warning: A new commit `foo` was pushed to the branch, the PR will need to be re-approved."
443443
);
444444
ctx.pr(()).await.expect_unapproved();
445445
Ok(())
@@ -450,7 +450,7 @@ mod tests {
450450
#[sqlx::test]
451451
async fn push_to_pr_do_nothing_when_not_approved(pool: sqlx::PgPool) {
452452
run_test(pool, async |ctx: &mut BorsTester| {
453-
ctx.push_to_pr(()).await?;
453+
ctx.push_to_pr((), Commit::from_sha("foo")).await?;
454454

455455
// No comment should be posted
456456
Ok(())
@@ -465,7 +465,7 @@ mod tests {
465465
ctx.start_auto_build(()).await?;
466466
ctx.workflow_full_failure(ctx.auto_workflow()).await?;
467467
ctx.expect_comments((), 1).await;
468-
ctx.push_to_pr(()).await?;
468+
ctx.push_to_pr((), Commit::from_sha("foo")).await?;
469469

470470
// No comment should be posted, but the PR should still be unapproved
471471
ctx.wait_for_pr((), |pr| !pr.is_approved() && pr.auto_build.is_none())
@@ -489,7 +489,7 @@ mod tests {
489489
});
490490

491491
// And push to it. This should NOT result in unmergeability notification!
492-
ctx.push_to_pr(pr2.id()).await?;
492+
ctx.push_to_pr(pr2.id(), Commit::from_sha("foo")).await?;
493493
ctx.drain_mergeability_queue().await?;
494494

495495
// No comment should be posted
@@ -515,7 +515,7 @@ mod tests {
515515
let comment = ctx.get_next_comment(pr2.id()).await?;
516516

517517
// The comment should be hidden after this push
518-
ctx.push_to_pr(pr2.id()).await?;
518+
ctx.push_to_pr(pr2.id(), Commit::from_sha("foo")).await?;
519519

520520
ctx.expect_hidden_comment(&comment, HideCommentReason::Outdated);
521521

@@ -583,7 +583,7 @@ mod tests {
583583
async fn store_base_branch_on_pr_opened(pool: sqlx::PgPool) {
584584
run_test(pool, async |ctx: &mut BorsTester| {
585585
let pr = ctx.open_pr((), |_| {}).await?;
586-
ctx.wait_for_pr(pr.number, |pr| {
586+
ctx.wait_for_pr(pr.id(), |pr| {
587587
pr.base_branch == *default_branch_name() && pr.status == PullRequestStatus::Open
588588
})
589589
.await?;
@@ -626,13 +626,13 @@ mod tests {
626626
async fn open_close_and_reopen_pr(pool: sqlx::PgPool) {
627627
run_test(pool, async |ctx: &mut BorsTester| {
628628
let pr = ctx.open_pr((), |_| {}).await?;
629-
ctx.wait_for_pr(pr.number, |pr| pr.status == PullRequestStatus::Open)
629+
ctx.wait_for_pr(pr.id(), |pr| pr.status == PullRequestStatus::Open)
630630
.await?;
631-
ctx.set_pr_status_closed(pr.number).await?;
632-
ctx.wait_for_pr(pr.number, |pr| pr.status == PullRequestStatus::Closed)
631+
ctx.set_pr_status_closed(pr.id()).await?;
632+
ctx.wait_for_pr(pr.id(), |pr| pr.status == PullRequestStatus::Closed)
633633
.await?;
634-
ctx.reopen_pr(pr.number).await?;
635-
ctx.wait_for_pr(pr.number, |pr| pr.status == PullRequestStatus::Open)
634+
ctx.reopen_pr(pr.id()).await?;
635+
ctx.wait_for_pr(pr.id(), |pr| pr.status == PullRequestStatus::Open)
636636
.await?;
637637
Ok(())
638638
})
@@ -647,10 +647,10 @@ mod tests {
647647
pr.convert_to_draft();
648648
})
649649
.await?;
650-
ctx.wait_for_pr(pr.number, |pr| pr.status == PullRequestStatus::Draft)
650+
ctx.wait_for_pr(pr.id(), |pr| pr.status == PullRequestStatus::Draft)
651651
.await?;
652-
ctx.set_pr_status_ready_for_review(pr.number).await?;
653-
ctx.wait_for_pr(pr.number, |pr| pr.status == PullRequestStatus::Open)
652+
ctx.set_pr_status_ready_for_review(pr.id()).await?;
653+
ctx.wait_for_pr(pr.id(), |pr| pr.status == PullRequestStatus::Open)
654654
.await?;
655655
Ok(())
656656
})
@@ -661,10 +661,10 @@ mod tests {
661661
async fn open_pr_and_convert_to_draft(pool: sqlx::PgPool) {
662662
run_test(pool, async |ctx: &mut BorsTester| {
663663
let pr = ctx.open_pr((), |_| {}).await?;
664-
ctx.wait_for_pr(pr.number, |pr| pr.status == PullRequestStatus::Open)
664+
ctx.wait_for_pr(pr.id(), |pr| pr.status == PullRequestStatus::Open)
665665
.await?;
666-
ctx.set_pr_status_draft(pr.number).await?;
667-
ctx.wait_for_pr(pr.number, |pr| pr.status == PullRequestStatus::Draft)
666+
ctx.set_pr_status_draft(pr.id()).await?;
667+
ctx.wait_for_pr(pr.id(), |pr| pr.status == PullRequestStatus::Draft)
668668
.await?;
669669
Ok(())
670670
})
@@ -675,10 +675,10 @@ mod tests {
675675
async fn assign_pr_updates_assignees(pool: sqlx::PgPool) {
676676
run_test(pool, async |ctx: &mut BorsTester| {
677677
let pr = ctx.open_pr((), |_| {}).await?;
678-
ctx.wait_for_pr(pr.number, |pr| pr.assignees.is_empty())
678+
ctx.wait_for_pr(pr.id(), |pr| pr.assignees.is_empty())
679679
.await?;
680-
ctx.assign_pr(pr.number, User::reviewer()).await?;
681-
ctx.wait_for_pr(pr.number, |pr| pr.assignees == vec![User::reviewer().name])
680+
ctx.assign_pr(pr.id(), User::reviewer()).await?;
681+
ctx.wait_for_pr(pr.id(), |pr| pr.assignees == vec![User::reviewer().name])
682682
.await?;
683683
Ok(())
684684
})
@@ -689,11 +689,11 @@ mod tests {
689689
async fn unassign_pr_updates_assignees(pool: sqlx::PgPool) {
690690
run_test(pool, async |ctx: &mut BorsTester| {
691691
let pr = ctx.open_pr((), |_| {}).await?;
692-
ctx.assign_pr(pr.number, User::reviewer()).await?;
693-
ctx.wait_for_pr(pr.number, |pr| pr.assignees == vec![User::reviewer().name])
692+
ctx.assign_pr(pr.id(), User::reviewer()).await?;
693+
ctx.wait_for_pr(pr.id(), |pr| pr.assignees == vec![User::reviewer().name])
694694
.await?;
695-
ctx.unassign_pr(pr.number, User::reviewer()).await?;
696-
ctx.wait_for_pr(pr.number, |pr| pr.assignees.is_empty())
695+
ctx.unassign_pr(pr.id(), User::reviewer()).await?;
696+
ctx.wait_for_pr(pr.id(), |pr| pr.assignees.is_empty())
697697
.await?;
698698
Ok(())
699699
})
@@ -704,10 +704,10 @@ mod tests {
704704
async fn open_and_merge_pr(pool: sqlx::PgPool) {
705705
run_test(pool, async |ctx: &mut BorsTester| {
706706
let pr = ctx.open_pr((), |_| {}).await?;
707-
ctx.wait_for_pr(pr.number, |pr| pr.status == PullRequestStatus::Open)
707+
ctx.wait_for_pr(pr.id(), |pr| pr.status == PullRequestStatus::Open)
708708
.await?;
709-
ctx.set_pr_status_merged(pr.number).await?;
710-
ctx.wait_for_pr(pr.number, |pr| pr.status == PullRequestStatus::Merged)
709+
ctx.set_pr_status_merged(pr.id()).await?;
710+
ctx.wait_for_pr(pr.id(), |pr| pr.status == PullRequestStatus::Merged)
711711
.await?;
712712
Ok(())
713713
})
@@ -942,7 +942,7 @@ conflict = ["+conflict"]
942942
pr.mergeable_state = OctocrabMergeableState::Dirty
943943
})
944944
.await?;
945-
ctx.wait_for_pr(pr.number, |pr| {
945+
ctx.wait_for_pr(pr.id(), |pr| {
946946
pr.mergeable_status() == MergeableState::HasConflicts
947947
})
948948
.await?;
@@ -975,7 +975,7 @@ conflict = ["+conflict"]
975975
#[sqlx::test]
976976
async fn enqueue_prs_on_push_to_pr(pool: sqlx::PgPool) {
977977
run_test(pool, async |ctx: &mut BorsTester| {
978-
ctx.push_to_pr(()).await?;
978+
ctx.push_to_pr((), Commit::from_sha("foo")).await?;
979979
ctx.wait_for_pr((), |pr| pr.mergeable_status() == MergeableState::Unknown)
980980
.await?;
981981
ctx.modify_pr_in_gh((), |pr| pr.mergeable_state = OctocrabMergeableState::Dirty);
@@ -999,9 +999,9 @@ conflict = ["+conflict"]
999999
ctx
10001000
.workflow_start(run_id)
10011001
.await?;
1002-
ctx.push_to_pr(()).await?;
1002+
ctx.push_to_pr((), Commit::from_sha("foo")).await?;
10031003
insta::assert_snapshot!(ctx.get_next_comment_text(()).await?, @"
1004-
:warning: A new commit `pr-1-commit-1` was pushed to the branch, the PR will need to be re-approved.
1004+
:warning: A new commit `foo` was pushed to the branch, the PR will need to be re-approved.
10051005
10061006
Auto build cancelled due to push. Cancelled workflows:
10071007
@@ -1025,9 +1025,9 @@ conflict = ["+conflict"]
10251025
ctx.pr(()).await.expect_auto_build(|_| true);
10261026

10271027
ctx.workflow_start(ctx.auto_workflow()).await?;
1028-
ctx.push_to_pr(()).await?;
1028+
ctx.push_to_pr((), Commit::from_sha("foo")).await?;
10291029
insta::assert_snapshot!(ctx.get_next_comment_text(()).await?, @"
1030-
:warning: A new commit `pr-1-commit-1` was pushed to the branch, the PR will need to be re-approved.
1030+
:warning: A new commit `foo` was pushed to the branch, the PR will need to be re-approved.
10311031
10321032
Auto build cancelled due to push. It was not possible to cancel some workflows.
10331033
");
@@ -1043,11 +1043,11 @@ conflict = ["+conflict"]
10431043
ctx.start_auto_build(()).await?;
10441044
ctx.workflow_start(ctx.auto_workflow()).await?;
10451045

1046-
let prev_commit = &ctx.pr(()).await.get_gh_pr().head_sha;
1047-
ctx.push_to_pr(()).await?;
1046+
let prev_commit_sha = &ctx.pr(()).await.get_gh_pr().head_sha();
1047+
ctx.push_to_pr((), Commit::from_sha("foo")).await?;
10481048
ctx.expect_comments((), 1).await;
10491049
ctx.expect_check_run(
1050-
prev_commit,
1050+
prev_commit_sha,
10511051
AUTO_BUILD_CHECK_RUN_NAME,
10521052
AUTO_BUILD_CHECK_RUN_NAME,
10531053
CheckRunStatus::Completed,
@@ -1066,7 +1066,7 @@ conflict = ["+conflict"]
10661066
pr.description = "@bors p=2".to_string();
10671067
})
10681068
.await?;
1069-
ctx.wait_for_pr(pr.number, |pr| pr.priority == Some(2))
1069+
ctx.wait_for_pr(pr.id(), |pr| pr.priority == Some(2))
10701070
.await?;
10711071
Ok(())
10721072
})

src/bors/handlers/refresh.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ auto_build_failed = ["+failed"]
245245
ctx.expect_comments((), 1).await;
246246

247247
ctx.expect_check_run(
248-
&ctx.pr(()).await.get_gh_pr().head_sha,
248+
&ctx.pr(()).await.get_gh_pr().head_sha(),
249249
TRY_BUILD_CHECK_RUN_NAME,
250250
"Bors try build",
251251
CheckRunStatus::Completed,
@@ -340,13 +340,13 @@ auto_build_failed = ["+failed"]
340340
async fn refresh_pr_with_status_closed(pool: sqlx::PgPool) {
341341
run_test(pool, async |ctx: &mut BorsTester| {
342342
let pr = ctx.open_pr((), |_| {}).await?;
343-
ctx.wait_for_pr(pr.number, |_| true).await?;
343+
ctx.wait_for_pr(pr.id(), |_| true).await?;
344344

345345
ctx.modify_pr_in_gh(pr.id(), |pr| {
346346
pr.close();
347347
});
348348
ctx.refresh_prs().await;
349-
ctx.pr(pr.number)
349+
ctx.pr(pr.id())
350350
.await
351351
.expect_status(PullRequestStatus::Closed);
352352
Ok(())

src/bors/handlers/review.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -464,8 +464,8 @@ mod tests {
464464
use crate::bors::TRY_BRANCH_NAME;
465465
use crate::bors::merge_queue::AUTO_BUILD_CHECK_RUN_NAME;
466466
use crate::database::{DelegatedPermission, OctocrabMergeableState, TreeState};
467-
use crate::tests::BorsTester;
468467
use crate::tests::default_repo_name;
468+
use crate::tests::{BorsTester, Commit};
469469
use crate::{
470470
bors::{RollupMode, handlers::trybuild::TRY_MERGE_BRANCH_NAME},
471471
tests::{BorsBuilder, Comment, GitHub, Permissions, User, run_test},
@@ -1280,7 +1280,7 @@ approved = { modifications = ["+foo", "+baz"], unless = ["label1", "label2"] }
12801280
let pr = ctx.pr(()).await.get_gh_pr();
12811281
ctx.approve(()).await?;
12821282

1283-
ctx.pr(()).await.expect_approved_sha(&pr.head_sha);
1283+
ctx.pr(()).await.expect_approved_sha(&pr.head_sha());
12841284

12851285
Ok(())
12861286
})
@@ -1293,17 +1293,17 @@ approved = { modifications = ["+foo", "+baz"], unless = ["label1", "label2"] }
12931293
let pr = ctx.pr(()).await.get_gh_pr();
12941294
ctx.approve(()).await?;
12951295

1296-
ctx.pr(()).await.expect_approved_sha(&pr.head_sha);
1296+
ctx.pr(()).await.expect_approved_sha(&pr.head_sha());
12971297

1298-
ctx.push_to_pr(()).await?;
1298+
ctx.push_to_pr((), Commit::from_sha("foo")).await?;
12991299
let pr2 = ctx.pr(()).await.get_gh_pr();
1300-
assert_ne!(pr.head_sha, pr2.head_sha);
1300+
assert_ne!(pr.head_sha(), pr2.head_sha());
13011301

13021302
ctx.expect_comments((), 1).await;
13031303

13041304
ctx.approve(()).await?;
13051305

1306-
ctx.pr(()).await.expect_approved_sha(&pr2.head_sha);
1306+
ctx.pr(()).await.expect_approved_sha(&pr2.head_sha());
13071307

13081308
Ok(())
13091309
})
@@ -1559,7 +1559,7 @@ labels_blocking_approval = ["proposed-final-comment-period", "final-comment-peri
15591559
ctx.post_comment("@bors r-").await?;
15601560
ctx.expect_comments((), 1).await;
15611561
ctx.expect_check_run(
1562-
&ctx.pr(()).await.get_gh_pr().head_sha,
1562+
&ctx.pr(()).await.get_gh_pr().head_sha(),
15631563
AUTO_BUILD_CHECK_RUN_NAME,
15641564
AUTO_BUILD_CHECK_RUN_NAME,
15651565
CheckRunStatus::Completed,

src/bors/handlers/trybuild.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -937,7 +937,7 @@ try_failed = ["+foo", "+bar", "-baz"]
937937
ctx.expect_comments((), 1).await;
938938

939939
ctx.expect_check_run(
940-
&ctx.pr(()).await.get_gh_pr().head_sha,
940+
&ctx.pr(()).await.get_gh_pr().head_sha(),
941941
TRY_BUILD_CHECK_RUN_NAME,
942942
"Bors try build",
943943
CheckRunStatus::InProgress,
@@ -959,7 +959,7 @@ try_failed = ["+foo", "+bar", "-baz"]
959959
ctx.expect_comments((), 1).await;
960960

961961
ctx.expect_check_run(
962-
&ctx.pr(()).await.get_gh_pr().head_sha,
962+
&ctx.pr(()).await.get_gh_pr().head_sha(),
963963
TRY_BUILD_CHECK_RUN_NAME,
964964
"Bors try build",
965965
CheckRunStatus::Completed,
@@ -981,7 +981,7 @@ try_failed = ["+foo", "+bar", "-baz"]
981981
ctx.expect_comments((), 1).await;
982982

983983
ctx.expect_check_run(
984-
&ctx.pr(()).await.get_gh_pr().head_sha,
984+
&ctx.pr(()).await.get_gh_pr().head_sha(),
985985
TRY_BUILD_CHECK_RUN_NAME,
986986
"Bors try build",
987987
CheckRunStatus::Completed,
@@ -1003,7 +1003,7 @@ try_failed = ["+foo", "+bar", "-baz"]
10031003
ctx.expect_comments((), 1).await;
10041004

10051005
ctx.expect_check_run(
1006-
&ctx.pr(()).await.get_gh_pr().head_sha,
1006+
&ctx.pr(()).await.get_gh_pr().head_sha(),
10071007
TRY_BUILD_CHECK_RUN_NAME,
10081008
"Bors try build",
10091009
CheckRunStatus::Completed,
@@ -1021,8 +1021,8 @@ try_failed = ["+foo", "+bar", "-baz"]
10211021
ctx.post_comment("@bors try").await?;
10221022
ctx.expect_comments((), 1).await;
10231023

1024-
let prev_sha = ctx.pr(()).await.get_gh_pr().head_sha;
1025-
ctx.push_to_pr(()).await?;
1024+
let prev_sha = ctx.pr(()).await.get_gh_pr().head_sha();
1025+
ctx.push_to_pr((), Commit::from_sha("foo")).await?;
10261026
ctx.post_comment("@bors try").await?;
10271027
ctx.expect_comments((), 1).await;
10281028

@@ -1034,7 +1034,7 @@ try_failed = ["+foo", "+bar", "-baz"]
10341034
Some(CheckRunConclusion::Cancelled),
10351035
);
10361036
ctx.expect_check_run(
1037-
&ctx.pr(()).await.get_gh_pr().head_sha,
1037+
&ctx.pr(()).await.get_gh_pr().head_sha(),
10381038
TRY_BUILD_CHECK_RUN_NAME,
10391039
"Bors try build",
10401040
CheckRunStatus::InProgress,

0 commit comments

Comments
 (0)