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).
135 lines
4.4 KiB
Go
135 lines
4.4 KiB
Go
package interactive_rebase
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/config"
|
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
|
)
|
|
|
|
var Rebase = NewIntegrationTest(NewIntegrationTestArgs{
|
|
Description: "Begins an interactive rebase, then fixups, drops, and squashes some commits",
|
|
ExtraCmdArgs: []string{},
|
|
Skip: false,
|
|
SetupConfig: func(config *config.AppConfig) {},
|
|
SetupRepo: func(shell *Shell) {
|
|
shell.EmptyCommit("initial commit")
|
|
shell.EmptyCommit("first commit to edit")
|
|
shell.EmptyCommit("commit to squash")
|
|
shell.EmptyCommit("second commit to edit")
|
|
shell.EmptyCommit("commit to drop")
|
|
|
|
shell.CreateFileAndAdd("fixup-commit-file", "fixup-commit-file")
|
|
shell.Commit("commit to fixup")
|
|
},
|
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
|
t.Views().Commits().
|
|
Focus().
|
|
Lines(
|
|
Contains("commit to fixup"),
|
|
Contains("commit to drop"),
|
|
Contains("second commit to edit"),
|
|
Contains("commit to squash"),
|
|
Contains("first commit to edit"),
|
|
Contains("initial commit"),
|
|
).
|
|
NavigateToLine(Contains("first commit to edit")).
|
|
Press(keys.Universal.Edit).
|
|
Lines(
|
|
Contains("─── Pending rebase todos"),
|
|
MatchesRegexp("pick.*commit to fixup"),
|
|
MatchesRegexp("pick.*commit to drop"),
|
|
MatchesRegexp("pick.*second commit to edit"),
|
|
MatchesRegexp("pick.*commit to squash"),
|
|
Contains("─── Commits"),
|
|
Contains("first commit to edit").IsSelected(),
|
|
Contains("initial commit"),
|
|
).
|
|
SelectPreviousItem().
|
|
Press(keys.Commits.SquashDown).
|
|
Lines(
|
|
Contains("─── Pending rebase todos"),
|
|
MatchesRegexp("pick.*commit to fixup"),
|
|
MatchesRegexp("pick.*commit to drop"),
|
|
MatchesRegexp("pick.*second commit to edit"),
|
|
MatchesRegexp("squash.*commit to squash").IsSelected(),
|
|
Contains("─── Commits"),
|
|
Contains("first commit to edit"),
|
|
Contains("initial commit"),
|
|
).
|
|
SelectPreviousItem().
|
|
Press(keys.Universal.Edit).
|
|
Lines(
|
|
Contains("─── Pending rebase todos"),
|
|
MatchesRegexp("pick.*commit to fixup"),
|
|
MatchesRegexp("pick.*commit to drop"),
|
|
MatchesRegexp("edit.*second commit to edit").IsSelected(),
|
|
MatchesRegexp("squash.*commit to squash"),
|
|
Contains("─── Commits"),
|
|
Contains("first commit to edit"),
|
|
Contains("initial commit"),
|
|
).
|
|
SelectPreviousItem().
|
|
Press(keys.Universal.Remove).
|
|
Lines(
|
|
Contains("─── Pending rebase todos"),
|
|
MatchesRegexp("pick.*commit to fixup"),
|
|
MatchesRegexp("drop.*commit to drop").IsSelected(),
|
|
MatchesRegexp("edit.*second commit to edit"),
|
|
MatchesRegexp("squash.*commit to squash"),
|
|
Contains("─── Commits"),
|
|
Contains("first commit to edit"),
|
|
Contains("initial commit"),
|
|
).
|
|
SelectPreviousItem().
|
|
Press(keys.Commits.MarkCommitAsFixup).
|
|
Lines(
|
|
Contains("─── Pending rebase todos"),
|
|
MatchesRegexp("fixup.*commit to fixup").IsSelected(),
|
|
MatchesRegexp("drop.*commit to drop"),
|
|
MatchesRegexp("edit.*second commit to edit"),
|
|
MatchesRegexp("squash.*commit to squash"),
|
|
Contains("─── Commits"),
|
|
Contains("first commit to edit"),
|
|
Contains("initial commit"),
|
|
).
|
|
Tap(func() {
|
|
t.Common().ContinueRebase()
|
|
}).
|
|
Lines(
|
|
Contains("─── Pending rebase todos"),
|
|
MatchesRegexp("fixup.*commit to fixup").IsSelected(),
|
|
MatchesRegexp("drop.*commit to drop"),
|
|
Contains("─── Commits"),
|
|
Contains("second commit to edit"),
|
|
MatchesRegexp("first commit to edit"),
|
|
Contains("initial commit"),
|
|
).
|
|
Tap(func() {
|
|
t.Common().ContinueRebase()
|
|
}).
|
|
Lines(
|
|
Contains("second commit to edit").IsSelected(),
|
|
Contains("first commit to edit"),
|
|
Contains("initial commit"),
|
|
).
|
|
Tap(func() {
|
|
// commit 4 was squashed into 6 so we assert that their messages have been concatenated
|
|
t.Views().Main().Content(
|
|
Contains("second commit to edit").
|
|
// file from fixup commit is present
|
|
Contains("fixup-commit-file").
|
|
// but message is not (because it's a fixup, not a squash)
|
|
DoesNotContain("commit to fixup"),
|
|
)
|
|
}).
|
|
SelectNextItem().
|
|
Tap(func() {
|
|
// commit 4 was squashed into 6 so we assert that their messages have been concatenated
|
|
t.Views().Main().Content(
|
|
Contains("first commit to edit").
|
|
// message from squashed commit has been concatenated with message other commit
|
|
Contains("commit to squash"),
|
|
)
|
|
})
|
|
},
|
|
})
|