mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-07-28 16:02:01 +03:00
At the same time, we change the defaults for both of them to "date" (they were "recency" and "alphabetical", respectively, before). This is the reason we need to touch so many integration tests. For some of them I decided to adapt the test assertions to the changed sort order; for others, I added a SetupConfig step to set the order back to "recency" so that I don't have to change what the test does (e.g. how many SelectNextItem() calls are needed to get to a certain branch).
113 lines
2.8 KiB
Go
113 lines
2.8 KiB
Go
package cherry_pick
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/config"
|
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
|
)
|
|
|
|
var CherryPick = NewIntegrationTest(NewIntegrationTestArgs{
|
|
Description: "Cherry pick commits from the subcommits view, without conflicts",
|
|
ExtraCmdArgs: []string{},
|
|
Skip: false,
|
|
SetupConfig: func(config *config.AppConfig) {
|
|
config.GetUserConfig().Git.LocalBranchSortOrder = "recency"
|
|
},
|
|
SetupRepo: func(shell *Shell) {
|
|
shell.
|
|
EmptyCommit("base").
|
|
NewBranch("first-branch").
|
|
NewBranch("second-branch").
|
|
Checkout("first-branch").
|
|
EmptyCommit("one").
|
|
EmptyCommit("two").
|
|
Checkout("second-branch").
|
|
EmptyCommit("three").
|
|
EmptyCommit("four").
|
|
Checkout("first-branch")
|
|
},
|
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
|
t.Views().Branches().
|
|
Focus().
|
|
Lines(
|
|
Contains("first-branch"),
|
|
Contains("second-branch"),
|
|
Contains("master"),
|
|
).
|
|
SelectNextItem().
|
|
PressEnter()
|
|
|
|
t.Views().SubCommits().
|
|
IsFocused().
|
|
Lines(
|
|
Contains("four").IsSelected(),
|
|
Contains("three"),
|
|
Contains("base"),
|
|
).
|
|
// copy commits 'four' and 'three'
|
|
Press(keys.Commits.CherryPickCopy).
|
|
Tap(func() {
|
|
t.Views().Information().Content(Contains("1 commit copied"))
|
|
}).
|
|
SelectNextItem().
|
|
Press(keys.Commits.CherryPickCopy)
|
|
|
|
t.Views().Information().Content(Contains("2 commits copied"))
|
|
|
|
t.Views().Commits().
|
|
Focus().
|
|
Lines(
|
|
Contains("two").IsSelected(),
|
|
Contains("one"),
|
|
Contains("base"),
|
|
).
|
|
Press(keys.Commits.PasteCommits).
|
|
Tap(func() {
|
|
// cherry-picked commits will be deleted after confirmation
|
|
t.Views().Information().Content(Contains("2 commits copied"))
|
|
}).
|
|
Tap(func() {
|
|
t.ExpectPopup().Alert().
|
|
Title(Equals("Cherry-pick")).
|
|
Content(Contains("Are you sure you want to cherry-pick the 2 copied commit(s) onto this branch?")).
|
|
Confirm()
|
|
}).
|
|
Tap(func() {
|
|
t.Views().Information().Content(DoesNotContain("commits copied"))
|
|
}).
|
|
Lines(
|
|
Contains("four"),
|
|
Contains("three"),
|
|
Contains("two").IsSelected(),
|
|
Contains("one"),
|
|
Contains("base"),
|
|
)
|
|
|
|
// Even though the cherry-picking mode has been reset, it's still possible to paste the copied commits again:
|
|
t.Views().Branches().
|
|
Focus().
|
|
NavigateToLine(Contains("master")).
|
|
PressPrimaryAction()
|
|
|
|
t.Views().Commits().
|
|
Focus().
|
|
Lines(
|
|
Contains("base").IsSelected(),
|
|
).
|
|
Press(keys.Commits.PasteCommits).
|
|
Tap(func() {
|
|
t.ExpectPopup().Alert().
|
|
Title(Equals("Cherry-pick")).
|
|
Content(Contains("Are you sure you want to cherry-pick the 2 copied commit(s) onto this branch?")).
|
|
Confirm()
|
|
}).
|
|
Tap(func() {
|
|
t.Views().Information().Content(DoesNotContain("commits copied"))
|
|
}).
|
|
Lines(
|
|
Contains("four"),
|
|
Contains("three"),
|
|
Contains("base").IsSelected(),
|
|
)
|
|
},
|
|
})
|