1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2024-12-12 11:15:00 +02:00
lazygit/pkg/integration/tests/interactive_rebase/move_in_rebase.go
Jesse Duffield 63dc07fded Construct arg vector manually rather than parse string
By constructing an arg vector manually, we no longer need to quote arguments

Mandate that args must be passed when building a command

Now you need to provide an args array when building a command.
There are a handful of places where we need to deal with a string,
such as with user-defined custom commands, and for those we now require
that at the callsite they use str.ToArgv to do that. I don't want
to provide a method out of the box for it because I want to discourage its
use.

For some reason we were invoking a command through a shell when amending a
commit, and I don't believe we needed to do that as there was nothing user-
supplied about the command. So I've switched to using a regular command out-
side the shell there
2023-05-23 19:49:19 +10:00

97 lines
2.7 KiB
Go

package interactive_rebase
import (
"github.com/jesseduffield/lazygit/pkg/config"
. "github.com/jesseduffield/lazygit/pkg/integration/components"
)
var MoveInRebase = NewIntegrationTest(NewIntegrationTestArgs{
Description: "Via a single interactive rebase move a commit all the way up then back down then slightly back up again and apply the change",
ExtraCmdArgs: []string{},
Skip: false,
SetupConfig: func(config *config.AppConfig) {},
SetupRepo: func(shell *Shell) {
shell.CreateNCommits(4)
},
Run: func(t *TestDriver, keys config.KeybindingConfig) {
t.Views().Commits().
Focus().
Lines(
Contains("commit 04").IsSelected(),
Contains("commit 03"),
Contains("commit 02"),
Contains("commit 01"),
).
NavigateToLine(Contains("commit 01")).
Press(keys.Universal.Edit).
Lines(
Contains("commit 04"),
Contains("commit 03"),
Contains("commit 02"),
Contains("YOU ARE HERE").Contains("commit 01").IsSelected(),
).
SelectPreviousItem().
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit 04"),
Contains("commit 02").IsSelected(),
Contains("commit 03"),
Contains("YOU ARE HERE").Contains("commit 01"),
).
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit 02").IsSelected(),
Contains("commit 04"),
Contains("commit 03"),
Contains("YOU ARE HERE").Contains("commit 01"),
).
Press(keys.Commits.MoveUpCommit).
// assert we can't move past the top
Lines(
Contains("commit 02").IsSelected(),
Contains("commit 04"),
Contains("commit 03"),
Contains("YOU ARE HERE").Contains("commit 01"),
).
Press(keys.Commits.MoveDownCommit).
Lines(
Contains("commit 04"),
Contains("commit 02").IsSelected(),
Contains("commit 03"),
Contains("YOU ARE HERE").Contains("commit 01"),
).
Press(keys.Commits.MoveDownCommit).
Lines(
Contains("commit 04"),
Contains("commit 03"),
Contains("commit 02").IsSelected(),
Contains("YOU ARE HERE").Contains("commit 01"),
).
// assert we can't move past the bottom
Press(keys.Commits.MoveDownCommit).
Lines(
Contains("commit 04"),
Contains("commit 03"),
Contains("commit 02").IsSelected(),
Contains("YOU ARE HERE").Contains("commit 01"),
).
// move it back up one so that we land in a different order than we started with
Press(keys.Commits.MoveUpCommit).
Lines(
Contains("commit 04"),
Contains("commit 02").IsSelected(),
Contains("commit 03"),
Contains("YOU ARE HERE").Contains("commit 01"),
).
Tap(func() {
t.Common().ContinueRebase()
}).
Lines(
Contains("commit 04"),
Contains("commit 02").IsSelected(),
Contains("commit 03"),
DoesNotContain("YOU ARE HERE").Contains("commit 01"),
)
},
})