Add a test for a stopped rebase being shown as a cherry-pick

If git can't take the index lock to commit the changes of a pick during
a rebase, it exits without recording that the rebase stopped. It leaves
CHERRY_PICK_HEAD behind, but no rebase-merge/stopped-sha. Lazygit only
recognizes CHERRY_PICK_HEAD as part of a rebase if stopped-sha matches
it, so it shows the rebase as a cherry-pick.

Its "Cherry-pick options" then run cherry-pick commands during the
rebase. Continuing happens to work, but takes two steps. Skipping or
aborting discards the changes of the pick, and continuing the rebase
afterwards loses that commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Stefan Haller
2026-11-08 14:54:41 +01:00
co-authored by Claude Opus 5.5
parent fcfe2e309f
commit de10b170c9
@@ -64,5 +64,29 @@ var LockErrorPartwayThroughSkip = NewIntegrationTest(NewIntegrationTestArgs{
Lines(
Contains("A").Contains("file-y"),
)
t.Views().Status().Content(Contains("(cherry-picking)"))
t.GlobalPress(keys.Universal.CreateRebaseOptionsMenu)
t.ExpectPopup().Menu().
Title(Equals("Cherry-pick options")).
Select(Contains("continue")).
Confirm()
t.Views().Status().Content(Contains("(rebasing)"))
t.GlobalPress(keys.Universal.CreateRebaseOptionsMenu)
t.ExpectPopup().Menu().
Title(Equals("Rebase options")).
Select(Contains("continue")).
Confirm()
t.Views().Commits().
Lines(
Contains("add file-z"),
Contains("add file-y"),
Contains("edited commit"),
Contains("base"),
)
},
})