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).
102 lines
2.8 KiB
Go
102 lines
2.8 KiB
Go
package cherry_pick
|
|
|
|
import (
|
|
"github.com/jesseduffield/lazygit/pkg/config"
|
|
. "github.com/jesseduffield/lazygit/pkg/integration/components"
|
|
"github.com/jesseduffield/lazygit/pkg/integration/tests/shared"
|
|
)
|
|
|
|
var CherryPickConflicts = NewIntegrationTest(NewIntegrationTestArgs{
|
|
Description: "Cherry pick commits from the subcommits view, with conflicts",
|
|
ExtraCmdArgs: []string{},
|
|
Skip: false,
|
|
SetupConfig: func(config *config.AppConfig) {
|
|
config.GetUserConfig().Git.LocalBranchSortOrder = "recency"
|
|
},
|
|
SetupRepo: func(shell *Shell) {
|
|
shared.MergeConflictsSetup(shell)
|
|
},
|
|
Run: func(t *TestDriver, keys config.KeybindingConfig) {
|
|
t.Views().Branches().
|
|
Focus().
|
|
Lines(
|
|
Contains("first-change-branch"),
|
|
Contains("second-change-branch"),
|
|
Contains("original-branch"),
|
|
).
|
|
SelectNextItem().
|
|
PressEnter()
|
|
|
|
t.Views().SubCommits().
|
|
IsFocused().
|
|
TopLines(
|
|
Contains("second-change-branch unrelated change"),
|
|
Contains("second change"),
|
|
).
|
|
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().
|
|
TopLines(
|
|
Contains("first change").IsSelected(),
|
|
).
|
|
Press(keys.Commits.PasteCommits)
|
|
|
|
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()
|
|
|
|
t.Common().AcknowledgeConflicts()
|
|
|
|
// cherry pick selection is not cleared when there are conflicts, so that the user
|
|
// is able to abort and try again without having to re-copy the commits
|
|
t.Views().Information().Content(Contains("2 commits copied"))
|
|
|
|
t.Views().Files().
|
|
IsFocused().
|
|
SelectedLine(Contains("file")).
|
|
PressEnter()
|
|
|
|
t.Views().MergeConflicts().
|
|
IsFocused().
|
|
// picking 'Second change'
|
|
SelectNextItem().
|
|
PressPrimaryAction()
|
|
|
|
t.Common().ContinueOnConflictsResolved("cherry-pick")
|
|
|
|
t.Views().Files().IsEmpty()
|
|
|
|
t.Views().Commits().
|
|
Focus().
|
|
TopLines(
|
|
Contains("second-change-branch unrelated change").IsSelected(),
|
|
Contains("second change"),
|
|
Contains("first change"),
|
|
).
|
|
SelectNextItem().
|
|
Tap(func() {
|
|
// because we picked 'Second change' when resolving the conflict,
|
|
// we now see this commit as having replaced First Change with Second Change,
|
|
// as opposed to replacing 'Original' with 'Second change'
|
|
t.Views().Main().
|
|
Content(Contains("-First Change")).
|
|
Content(Contains("+Second Change"))
|
|
|
|
t.Views().Information().Content(Contains("2 commits copied"))
|
|
}).
|
|
PressEscape().
|
|
Tap(func() {
|
|
t.Views().Information().Content(DoesNotContain("commits copied"))
|
|
})
|
|
},
|
|
})
|