diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2023-02-22 22:25:18 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2023-02-22 22:29:01 +1100 |
commit | 1034962c7edad578427d056b7421c9195c29a457 (patch) | |
tree | c901a2309df784d3cdbe4d337c8b03acf61e20d2 /pkg/integration/tests/sync | |
parent | eabe7f462a1f950d05b66306c19a00855e3fa175 (diff) |
migrate more tests
Diffstat (limited to 'pkg/integration/tests/sync')
-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 |
6 files changed, 468 insertions, 0 deletions
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"), + ) + }, +}) |