Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions control_plane/contracts/merge_train_stack_collapse.py
Original file line number Diff line number Diff line change
Expand Up @@ -251,10 +251,19 @@ def execute_merge_train_stack_collapse_plan(
current_head_shas[mutation.parent_pull_request_number] = merge_commit_sha
if len(updated_mutations) < len(plan.mutations):
updated_mutations.extend(plan.mutations[len(updated_mutations) :])
updated_child_dispositions = tuple(
disposition.model_copy(
update={
"expected_head_sha": current_head_shas[disposition.pull_request_number]
}
)
for disposition in plan.child_dispositions
)
return plan.model_copy(
update={
"status": current_status,
"mutations": tuple(updated_mutations),
"child_dispositions": updated_child_dispositions,
"updated_at": updated_at,
}
)
Expand Down
9 changes: 8 additions & 1 deletion tests/test_merge_train_stack_collapse.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,13 @@ def test_execute_plan_mutates_each_child_into_its_parent_branch(self) -> None:
[mutation.merge_commit_sha for mutation in executed_plan.mutations],
["merge-32-31", "merge-31-30"],
)
self.assertEqual(
[
disposition.expected_head_sha
for disposition in executed_plan.child_dispositions
],
["merge-32-31", "head-32"],
)
self.assertEqual(
branch_client.requests,
[
Expand Down Expand Up @@ -255,7 +262,7 @@ def test_reconcile_children_after_root_landing_comments_labels_and_closes(self)
)
self.assertEqual(
disposition_client.closed,
[(31, "head-31"), (32, "head-32")],
[(31, "merge-32-31"), (32, "head-32")],
)
self.assertEqual(disposition_client.labels, [(31, "stack-landed"), (32, "stack-landed")])
self.assertIn("root PR #30", disposition_client.comments[0][1])
Expand Down