mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-08-28 02:24:49 -05:00
I'm not a skilled UI designer, so I suspect there may be even better options, but it's definitely already better than the raw ASCII "---" we had before. Put the line only at the beginning because it looks bad if the line after the label is misaligned when labels don't have the same width (e.g. "Remote" vs. "Local" in the divergence view).
122 lines
3.8 KiB
Go
122 lines
3.8 KiB
Go
package interactive_rebase
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/config"
|
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
|
)
|
|
|
|
var QuickStart = NewIntegrationTest(NewIntegrationTestArgs{
|
|
Description: "Quick-starts an interactive rebase in several contexts",
|
|
ExtraCmdArgs: []string{},
|
|
Skip: false,
|
|
SetupConfig: func(config *config.AppConfig) {},
|
|
SetupRepo: func(shell *Shell) {
|
|
// we're going to test the following:
|
|
// * quick start from main fails
|
|
// * quick start from feature branch starts from main
|
|
// * quick start from branch with merge commit starts from merge commit
|
|
|
|
shell.NewBranch("main")
|
|
shell.EmptyCommit("initial commit")
|
|
shell.EmptyCommit("last main commit")
|
|
|
|
shell.NewBranch("feature-branch")
|
|
shell.NewBranch("branch-to-merge")
|
|
shell.NewBranch("branch-with-merge-commit")
|
|
|
|
shell.Checkout("feature-branch")
|
|
shell.EmptyCommit("feature-branch one")
|
|
shell.EmptyCommit("feature-branch two")
|
|
|
|
shell.Checkout("branch-to-merge")
|
|
shell.EmptyCommit("branch-to-merge one")
|
|
shell.EmptyCommit("branch-to-merge two")
|
|
|
|
shell.Checkout("branch-with-merge-commit")
|
|
shell.EmptyCommit("branch-with-merge one")
|
|
shell.EmptyCommit("branch-with-merge two")
|
|
|
|
shell.Merge("branch-to-merge")
|
|
|
|
shell.EmptyCommit("branch-with-merge three")
|
|
|
|
shell.Checkout("main")
|
|
},
|
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
|
t.Views().Commits().
|
|
Focus().
|
|
Lines(
|
|
Contains("last main commit"),
|
|
Contains("initial commit"),
|
|
).
|
|
// Verify we can't quick start from main
|
|
Press(keys.Commits.StartInteractiveRebase)
|
|
|
|
t.ExpectPopup().Alert().
|
|
Title(Equals("Error")).
|
|
Content(Equals("Cannot start interactive rebase: the HEAD commit is a merge commit or is present on the main branch, so there is no appropriate base commit to start the rebase from. You can start an interactive rebase from a specific commit by selecting the commit and pressing `e`.")).
|
|
Confirm()
|
|
|
|
t.Views().Branches().
|
|
Focus().
|
|
NavigateToLine(Contains("feature-branch")).
|
|
Press(keys.Universal.Select)
|
|
|
|
t.Views().Commits().
|
|
Focus().
|
|
Lines(
|
|
Contains("feature-branch two").IsSelected(),
|
|
Contains("feature-branch one"),
|
|
Contains("last main commit"),
|
|
Contains("initial commit"),
|
|
).
|
|
// Verify quick start picks the last commit on the main branch
|
|
Press(keys.Commits.StartInteractiveRebase).
|
|
Lines(
|
|
Contains("─── Pending rebase todos"),
|
|
Contains("feature-branch two").IsSelected(),
|
|
Contains("feature-branch one"),
|
|
Contains("─── Commits"),
|
|
Contains("last main commit"),
|
|
Contains("initial commit"),
|
|
).
|
|
// Try again, verify we fail because we're already rebasing
|
|
Press(keys.Commits.StartInteractiveRebase)
|
|
|
|
t.ExpectToast(Equals("Disabled: Can't perform this action during a rebase"))
|
|
t.Common().AbortRebase()
|
|
|
|
// Verify if a merge commit is present on the branch we start from there
|
|
t.Views().Branches().
|
|
Focus().
|
|
NavigateToLine(Contains("branch-with-merge-commit")).
|
|
Press(keys.Universal.Select)
|
|
|
|
t.Views().Commits().
|
|
Focus().
|
|
Lines(
|
|
Contains("branch-with-merge three").IsSelected(),
|
|
Contains("Merge branch 'branch-to-merge'"),
|
|
Contains("branch-to-merge two"),
|
|
Contains("branch-to-merge one"),
|
|
Contains("branch-with-merge two"),
|
|
Contains("branch-with-merge one"),
|
|
Contains("last main commit"),
|
|
Contains("initial commit"),
|
|
).
|
|
Press(keys.Commits.StartInteractiveRebase).
|
|
Lines(
|
|
Contains("─── Pending rebase todos"),
|
|
Contains("branch-with-merge three").IsSelected(),
|
|
Contains("─── Commits"),
|
|
Contains("Merge branch 'branch-to-merge'"),
|
|
Contains("branch-to-merge two"),
|
|
Contains("branch-to-merge one"),
|
|
Contains("branch-with-merge two"),
|
|
Contains("branch-with-merge one"),
|
|
Contains("last main commit"),
|
|
Contains("initial commit"),
|
|
)
|
|
},
|
|
})
|