diff options
Diffstat (limited to 'pkg/integration/tests')
-rw-r--r-- | pkg/integration/tests/branch/rebase.go | 10 | ||||
-rw-r--r-- | pkg/integration/tests/branch/rebase_and_drop.go | 10 | ||||
-rw-r--r-- | pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go | 10 | ||||
-rw-r--r-- | pkg/integration/tests/file/discard_changes.go | 5 | ||||
-rw-r--r-- | pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go | 22 | ||||
-rw-r--r-- | pkg/integration/tests/sync/pull_merge.go | 53 | ||||
-rw-r--r-- | pkg/integration/tests/sync/pull_merge_conflict.go | 84 | ||||
-rw-r--r-- | pkg/integration/tests/sync/pull_rebase.go | 52 | ||||
-rw-r--r-- | pkg/integration/tests/sync/pull_rebase_conflict.go | 83 | ||||
-rw-r--r-- | pkg/integration/tests/sync/pull_rebase_interactive_conflict.go | 95 | ||||
-rw-r--r-- | pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go | 101 | ||||
-rw-r--r-- | pkg/integration/tests/tests_gen.go | 6 |
12 files changed, 485 insertions, 46 deletions
diff --git a/pkg/integration/tests/branch/rebase.go b/pkg/integration/tests/branch/rebase.go index e59aa8cb2..211dca839 100644 --- a/pkg/integration/tests/branch/rebase.go +++ b/pkg/integration/tests/branch/rebase.go @@ -35,10 +35,7 @@ var Rebase = NewIntegrationTest(NewIntegrationTestArgs{ Content(Contains("Are you sure you want to rebase 'first-change-branch' on top of 'second-change-branch'?")). Confirm() - t.ExpectPopup().Confirmation(). - Title(Equals("Auto-merge failed")). - Content(Contains("Conflicts!")). - Confirm() + t.Actions().AcknowledgeConflicts() t.Views().Files(). IsFocused(). @@ -51,10 +48,7 @@ var Rebase = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().Information().Content(Contains("rebasing")) - t.ExpectPopup().Confirmation(). - Title(Equals("continue")). - Content(Contains("all merge conflicts resolved. Continue?")). - Confirm() + t.Actions().ContinueOnConflictsResolved() t.Views().Information().Content(DoesNotContain("rebasing")) diff --git a/pkg/integration/tests/branch/rebase_and_drop.go b/pkg/integration/tests/branch/rebase_and_drop.go index 5f5341d66..04c2246ab 100644 --- a/pkg/integration/tests/branch/rebase_and_drop.go +++ b/pkg/integration/tests/branch/rebase_and_drop.go @@ -43,10 +43,7 @@ var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ t.Views().Information().Content(Contains("rebasing")) - t.ExpectPopup().Confirmation(). - Title(Equals("Auto-merge failed")). - Content(Contains("Conflicts!")). - Confirm() + t.Actions().AcknowledgeConflicts() t.Views().Files().IsFocused(). SelectedLine(MatchesRegexp("UU.*file")) @@ -78,10 +75,7 @@ var RebaseAndDrop = NewIntegrationTest(NewIntegrationTestArgs{ IsFocused(). PressPrimaryAction() - t.ExpectPopup().Confirmation(). - Title(Equals("continue")). - Content(Contains("all merge conflicts resolved. Continue?")). - Confirm() + t.Actions().ContinueOnConflictsResolved() t.Views().Information().Content(DoesNotContain("rebasing")) diff --git a/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go b/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go index eaf9862d6..3e82de065 100644 --- a/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go +++ b/pkg/integration/tests/cherry_pick/cherry_pick_conflicts.go @@ -52,10 +52,7 @@ var CherryPickConflicts = NewIntegrationTest(NewIntegrationTestArgs{ Content(Contains("Are you sure you want to cherry-pick the copied commits onto this branch?")). Confirm() - t.ExpectPopup().Confirmation(). - Title(Equals("Auto-merge failed")). - Content(Contains("Conflicts!")). - Confirm() + t.Actions().AcknowledgeConflicts() t.Views().Files(). IsFocused(). @@ -68,10 +65,7 @@ var CherryPickConflicts = NewIntegrationTest(NewIntegrationTestArgs{ SelectNextItem(). PressPrimaryAction() - t.ExpectPopup().Confirmation(). - Title(Equals("continue")). - Content(Contains("all merge conflicts resolved. Continue?")). - Confirm() + t.Actions().ContinueOnConflictsResolved() t.Views().Files().IsEmpty() diff --git a/pkg/integration/tests/file/discard_changes.go b/pkg/integration/tests/file/discard_changes.go index f3fc11a01..7a05f4466 100644 --- a/pkg/integration/tests/file/discard_changes.go +++ b/pkg/integration/tests/file/discard_changes.go @@ -99,10 +99,7 @@ var DiscardChanges = NewIntegrationTest(NewIntegrationTestArgs{ {status: "DU", label: "deleted-us.txt", menuTitle: "deleted-us.txt"}, }) - t.ExpectPopup().Confirmation(). - Title(Equals("continue")). - Content(Contains("all merge conflicts resolved. Continue?")). - Cancel() + t.Actions().ContinueOnConflictsResolved() discardOneByOne([]statusFile{ {status: "MD", label: "change-delete.txt", menuTitle: "change-delete.txt"}, diff --git a/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go b/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go index e177dd0cb..96b490a7f 100644 --- a/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go +++ b/pkg/integration/tests/interactive_rebase/swap_in_rebase_with_conflict.go @@ -49,21 +49,7 @@ var SwapInRebaseWithConflict = NewIntegrationTest(NewIntegrationTestArgs{ }) func handleConflictsFromSwap(t *TestDriver) { - continueMerge := func() { - t.ExpectPopup().Confirmation(). - Title(Equals("continue")). - Content(Contains("all merge conflicts resolved. Continue?")). - Confirm() - } - - acceptConflicts := func() { - t.ExpectPopup().Confirmation(). - Title(Equals("Auto-merge failed")). - Content(Contains("Conflicts!")). - Confirm() - } - - acceptConflicts() + t.Actions().AcknowledgeConflicts() t.Views().Files(). IsFocused(). @@ -84,9 +70,9 @@ func handleConflictsFromSwap(t *TestDriver) { SelectNextItem(). PressPrimaryAction() // pick "three" - continueMerge() + t.Actions().ContinueOnConflictsResolved() - acceptConflicts() + t.Actions().AcknowledgeConflicts() t.Views().Files(). IsFocused(). @@ -107,7 +93,7 @@ func handleConflictsFromSwap(t *TestDriver) { SelectNextItem(). PressPrimaryAction() // pick "two" - continueMerge() + t.Actions().ContinueOnConflictsResolved() t.Views().Commits(). Focus(). diff --git a/pkg/integration/tests/sync/pull_merge.go b/pkg/integration/tests/sync/pull_merge.go new file mode 100644 index 000000000..86f828570 --- /dev/null +++ b/pkg/integration/tests/sync/pull_merge.go @@ -0,0 +1,53 @@ +package sync + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var PullMerge = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Pull with a merge strategy", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.CreateFileAndAdd("file", "content1") + shell.Commit("one") + shell.UpdateFileAndAdd("file", "content2") + shell.Commit("two") + shell.EmptyCommit("three") + + shell.CloneIntoRemote("origin") + + shell.SetBranchUpstream("master", "origin/master") + + shell.HardReset("HEAD^^") + shell.EmptyCommit("four") + + shell.SetConfig("pull.rebase", "false") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + Lines( + Contains("four"), + Contains("one"), + ) + + t.Views().Status().Content(Contains("↓2 repo → master")) + + t.Views().Files(). + IsFocused(). + Press(keys.Universal.Pull) + + t.Views().Status().Content(Contains("↑2 repo → master")) + + t.Views().Commits(). + Lines( + Contains("Merge branch 'master' of ../origin"), + Contains("three"), + Contains("two"), + Contains("four"), + Contains("one"), + ) + }, +}) diff --git a/pkg/integration/tests/sync/pull_merge_conflict.go b/pkg/integration/tests/sync/pull_merge_conflict.go new file mode 100644 index 000000000..447c11135 --- /dev/null +++ b/pkg/integration/tests/sync/pull_merge_conflict.go @@ -0,0 +1,84 @@ +package sync + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var PullMergeConflict = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Pull with a merge strategy, where a conflict occurs", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.CreateFileAndAdd("file", "content1") + shell.Commit("one") + shell.UpdateFileAndAdd("file", "content2") + shell.Commit("two") + shell.EmptyCommit("three") + + shell.CloneIntoRemote("origin") + + shell.SetBranchUpstream("master", "origin/master") + + shell.HardReset("HEAD^^") + shell.UpdateFileAndAdd("file", "content4") + shell.Commit("four") + + shell.SetConfig("pull.rebase", "false") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + Lines( + Contains("four"), + Contains("one"), + ) + + t.Views().Status().Content(Contains("↓2 repo → master")) + + t.Views().Files(). + IsFocused(). + Press(keys.Universal.Pull) + + t.Actions().AcknowledgeConflicts() + + t.Views().Files(). + IsFocused(). + Lines( + Contains("UU").Contains("file"), + ). + PressEnter() + + t.Views().MergeConflicts(). + IsFocused(). + TopLines( + Contains("<<<<<<< HEAD"), + Contains("content4"), + Contains("======="), + Contains("content2"), + Contains(">>>>>>>"), + ). + PressPrimaryAction() // choose 'content4' + + t.Actions().ContinueOnConflictsResolved() + + t.Views().Status().Content(Contains("↑2 repo → master")) + + t.Views().Commits(). + Focus(). + Lines( + Contains("Merge branch 'master' of ../origin").IsSelected(), + Contains("three"), + Contains("two"), + Contains("four"), + Contains("one"), + ) + + t.Views().Main(). + Content( + Contains("- content4"). + Contains(" -content2"). + Contains("++content4"), + ) + }, +}) diff --git a/pkg/integration/tests/sync/pull_rebase.go b/pkg/integration/tests/sync/pull_rebase.go new file mode 100644 index 000000000..ca4c851d6 --- /dev/null +++ b/pkg/integration/tests/sync/pull_rebase.go @@ -0,0 +1,52 @@ +package sync + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var PullRebase = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Pull with a rebase strategy", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.CreateFileAndAdd("file", "content1") + shell.Commit("one") + shell.UpdateFileAndAdd("file", "content2") + shell.Commit("two") + shell.EmptyCommit("three") + + shell.CloneIntoRemote("origin") + + shell.SetBranchUpstream("master", "origin/master") + + shell.HardReset("HEAD^^") + shell.EmptyCommit("four") + + shell.SetConfig("pull.rebase", "true") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + Lines( + Contains("four"), + Contains("one"), + ) + + t.Views().Status().Content(Contains("↓2 repo → master")) + + t.Views().Files(). + IsFocused(). + Press(keys.Universal.Pull) + + t.Views().Status().Content(Contains("↑1 repo → master")) + + t.Views().Commits(). + Lines( + Contains("four"), + Contains("three"), + Contains("two"), + Contains("one"), + ) + }, +}) diff --git a/pkg/integration/tests/sync/pull_rebase_conflict.go b/pkg/integration/tests/sync/pull_rebase_conflict.go new file mode 100644 index 000000000..4ea419a74 --- /dev/null +++ b/pkg/integration/tests/sync/pull_rebase_conflict.go @@ -0,0 +1,83 @@ +package sync + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var PullRebaseConflict = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Pull with a rebase strategy, where a conflict occurs", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.CreateFileAndAdd("file", "content1") + shell.Commit("one") + shell.UpdateFileAndAdd("file", "content2") + shell.Commit("two") + shell.EmptyCommit("three") + + shell.CloneIntoRemote("origin") + + shell.SetBranchUpstream("master", "origin/master") + + shell.HardReset("HEAD^^") + shell.UpdateFileAndAdd("file", "content4") + shell.Commit("four") + + shell.SetConfig("pull.rebase", "true") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + Lines( + Contains("four"), + Contains("one"), + ) + + t.Views().Status().Content(Contains("↓2 repo → master")) + + t.Views().Files(). + IsFocused(). + Press(keys.Universal.Pull) + + t.Actions().AcknowledgeConflicts() + + t.Views().Files(). + IsFocused(). + Lines( + Contains("UU").Contains("file"), + ). + PressEnter() + + t.Views().MergeConflicts(). + IsFocused(). + TopLines( + Contains("<<<<<<< HEAD"), + Contains("content2"), + Contains("======="), + Contains("content4"), + Contains(">>>>>>>"), + ). + SelectNextItem(). + PressPrimaryAction() // choose 'content4' + + t.Actions().ContinueOnConflictsResolved() + + t.Views().Status().Content(Contains("↑1 repo → master")) + + t.Views().Commits(). + Focus(). + Lines( + Contains("four").IsSelected(), + Contains("three"), + Contains("two"), + Contains("one"), + ) + + t.Views().Main(). + Content( + Contains("-content2"). + Contains("+content4"), + ) + }, +}) diff --git a/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go b/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go new file mode 100644 index 000000000..da45f70ed --- /dev/null +++ b/pkg/integration/tests/sync/pull_rebase_interactive_conflict.go @@ -0,0 +1,95 @@ +package sync + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var PullRebaseInteractiveConflict = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Pull with an interactive rebase strategy, where a conflict occurs", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.CreateFileAndAdd("file", "content1") + shell.Commit("one") + shell.UpdateFileAndAdd("file", "content2") + shell.Commit("two") + shell.EmptyCommit("three") + + shell.CloneIntoRemote("origin") + + shell.SetBranchUpstream("master", "origin/master") + + shell.HardReset("HEAD^^") + shell.UpdateFileAndAdd("file", "content4") + shell.Commit("four") + shell.EmptyCommit("five") + + shell.SetConfig("pull.rebase", "interactive") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + Lines( + Contains("five"), + Contains("four"), + Contains("one"), + ) + + t.Views().Status().Content(Contains("↓2 repo → master")) + + t.Views().Files(). + IsFocused(). + Press(keys.Universal.Pull) + + t.Actions().AcknowledgeConflicts() + + t.Views().Commits(). + Lines( + Contains("pick").Contains("five"), + Contains("YOU ARE HERE").Contains("three"), + Contains("two"), + Contains("one"), + ) + + t.Views().Files(). + IsFocused(). + Lines( + Contains("UU").Contains("file"), + ). + PressEnter() + + t.Views().MergeConflicts(). + IsFocused(). + TopLines( + Contains("<<<<<<< HEAD"), + Contains("content2"), + Contains("======="), + Contains("content4"), + Contains(">>>>>>>"), + ). + SelectNextItem(). + PressPrimaryAction() // choose 'content4' + + t.Actions().ContinueOnConflictsResolved() + + t.Views().Status().Content(Contains("↑2 repo → master")) + + t.Views().Commits(). + Focus(). + Lines( + Contains("five").IsSelected(), + Contains("four"), + Contains("three"), + Contains("two"), + Contains("one"), + ). + SelectNextItem() + + t.Views().Main(). + Content( + Contains("-content2"). + Contains("+content4"), + ) + }, +}) diff --git a/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go b/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go new file mode 100644 index 000000000..580a2af5b --- /dev/null +++ b/pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go @@ -0,0 +1,101 @@ +package sync + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var PullRebaseInteractiveConflictDrop = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Pull with an interactive rebase strategy, where a conflict occurs. Also drop a commit while rebasing", + ExtraCmdArgs: "", + Skip: false, + SetupConfig: func(config *config.AppConfig) {}, + SetupRepo: func(shell *Shell) { + shell.CreateFileAndAdd("file", "content1") + shell.Commit("one") + shell.UpdateFileAndAdd("file", "content2") + shell.Commit("two") + shell.EmptyCommit("three") + + shell.CloneIntoRemote("origin") + + shell.SetBranchUpstream("master", "origin/master") + + shell.HardReset("HEAD^^") + shell.UpdateFileAndAdd("file", "content4") + shell.Commit("four") + shell.EmptyCommit("five") + + shell.SetConfig("pull.rebase", "interactive") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + Lines( + Contains("five"), + Contains("four"), + Contains("one"), + ) + + t.Views().Status().Content(Contains("↓2 repo → master")) + + t.Views().Files(). + IsFocused(). + Press(keys.Universal.Pull) + + t.Actions().AcknowledgeConflicts() + + t.Views().Commits(). + Focus(). + Lines( + Contains("pick").Contains("five").IsSelected(), + Contains("YOU ARE HERE").Contains("three"), + Contains("two"), + Contains("one"), + ). + Press(keys.Universal.Remove). + Lines( + Contains("drop").Contains("five").IsSelected(), + Contains("YOU ARE HERE").Contains("three"), + Contains("two"), + Contains("one"), + ) + + t.Views().Files(). + Focus(). + Lines( + Contains("UU").Contains("file"), + ). + PressEnter() + + t.Views().MergeConflicts(). + IsFocused(). + TopLines( + Contains("<<<<<<< HEAD"), + Contains("content2"), + Contains("======="), + Contains("content4"), + Contains(">>>>>>>"), + ). + SelectNextItem(). + PressPrimaryAction() // choose 'content4' + + t.Actions().ContinueOnConflictsResolved() + + t.Views().Status().Content(Contains("↑1 repo → master")) + + t.Views().Commits(). + Focus(). + Lines( + Contains("four").IsSelected(), + Contains("three"), + Contains("two"), + Contains("one"), + ) + + t.Views().Main(). + Content( + Contains("-content2"). + Contains("+content4"), + ) + }, +}) diff --git a/pkg/integration/tests/tests_gen.go b/pkg/integration/tests/tests_gen.go index 635451b54..c99870d43 100644 --- a/pkg/integration/tests/tests_gen.go +++ b/pkg/integration/tests/tests_gen.go @@ -121,6 +121,12 @@ var tests = []*components.IntegrationTest{ sync.ForcePushMultipleUpstream, sync.Pull, sync.PullAndSetUpstream, + sync.PullMerge, + sync.PullMergeConflict, + sync.PullRebase, + sync.PullRebaseConflict, + sync.PullRebaseInteractiveConflict, + sync.PullRebaseInteractiveConflictDrop, sync.Push, sync.PushAndAutoSetUpstream, sync.PushAndSetUpstream, |