summaryrefslogtreecommitdiffstats
path: root/pkg/integration/tests/sync
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2023-02-22 22:25:18 +1100
committerJesse Duffield <jessedduffield@gmail.com>2023-02-22 22:29:01 +1100
commit1034962c7edad578427d056b7421c9195c29a457 (patch)
treec901a2309df784d3cdbe4d337c8b03acf61e20d2 /pkg/integration/tests/sync
parenteabe7f462a1f950d05b66306c19a00855e3fa175 (diff)
migrate more tests
Diffstat (limited to 'pkg/integration/tests/sync')
-rw-r--r--pkg/integration/tests/sync/pull_merge.go53
-rw-r--r--pkg/integration/tests/sync/pull_merge_conflict.go84
-rw-r--r--pkg/integration/tests/sync/pull_rebase.go52
-rw-r--r--pkg/integration/tests/sync/pull_rebase_conflict.go83
-rw-r--r--pkg/integration/tests/sync/pull_rebase_interactive_conflict.go95
-rw-r--r--pkg/integration/tests/sync/pull_rebase_interactive_conflict_drop.go101
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"),
+ )
+ },
+})