mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-29 23:17:32 +02:00
BeginInteractiveRebaseForCommit is used for all the patch commands, and for rewording. It works by setting the commit we want to stop at to 'edit'; this doesn't work for merge commits. This wasn't a problem for the patch commands so far, because you typically don't use custom patches with merge commits (although we don't prevent this; maybe we should?). However, it was a problem when you tried to reword a merge commit; this previously failed with an error, as the test added in the previous commit demonstrated. Also, we want to add a new patch command that has to stop *before* the selected commit (pull patch to new commit before the original one), and this wouldn't work for the first commit in a feature branch, because it would have to set the last commit before that to 'edit', which isn't possible if that's a merge (which is likely). To fix all this, use a 'break' before the selected commit if the commit is a merge. It is important that we only do it in that case and not always, otherwise we would break the new regression tests that were added a few commits ago.
51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
package interactive_rebase
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/config"
|
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
|
)
|
|
|
|
var RewordMergeCommit = NewIntegrationTest(NewIntegrationTestArgs{
|
|
Description: "Rewords a merge commit which is not the current head commit",
|
|
ExtraCmdArgs: []string{},
|
|
Skip: false,
|
|
SetupConfig: func(config *config.AppConfig) {},
|
|
SetupRepo: func(shell *Shell) {
|
|
shell.
|
|
EmptyCommit("base").
|
|
NewBranch("first-branch").
|
|
CreateFileAndAdd("file1.txt", "content").
|
|
Commit("one").
|
|
Checkout("master").
|
|
Merge("first-branch").
|
|
NewBranch("second-branch").
|
|
EmptyCommit("two")
|
|
},
|
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
|
t.Views().Commits().
|
|
Focus().
|
|
Lines(
|
|
Contains("CI ◯ two").IsSelected(),
|
|
Contains("CI ⏣─╮ Merge branch 'first-branch'"),
|
|
Contains("CI │ ◯ one"),
|
|
Contains("CI ◯─╯ base"),
|
|
).
|
|
SelectNextItem().
|
|
Press(keys.Commits.RenameCommit).
|
|
Tap(func() {
|
|
t.ExpectPopup().CommitMessagePanel().
|
|
Title(Equals("Reword commit")).
|
|
InitialText(Equals("Merge branch 'first-branch'")).
|
|
Clear().
|
|
Type("renamed merge").
|
|
Confirm()
|
|
}).
|
|
Lines(
|
|
Contains("CI ◯ two"),
|
|
Contains("CI ⏣─╮ renamed merge").IsSelected(),
|
|
Contains("CI │ ◯ one"),
|
|
Contains("CI ◯ ╯ base"),
|
|
)
|
|
},
|
|
})
|