summaryrefslogtreecommitdiffstats
path: root/pkg/integration
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2023-04-13 20:24:28 +0200
committerStefan Haller <stefan@haller-berlin.de>2023-04-15 08:36:03 +0200
commit860a8d102b7eac47aaefc3ae17b443e93cd10c9f (patch)
treea7e5afb380ca572661835bf4148e092ccc98438b /pkg/integration
parenta304fed68cd2208c3e78afd9ea99446d5b5f4444 (diff)
Add integration test for dropping a todo commit when there's an update-ref
The test shows how we are accidentally dropping the wrong commit in this case. We'll fix that in the next commit.
Diffstat (limited to 'pkg/integration')
-rw-r--r--pkg/integration/components/shell.go6
-rw-r--r--pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref.go72
-rw-r--r--pkg/integration/tests/test_list.go1
3 files changed, 78 insertions, 1 deletions
diff --git a/pkg/integration/components/shell.go b/pkg/integration/components/shell.go
index d55fa8303..890f9efc4 100644
--- a/pkg/integration/components/shell.go
+++ b/pkg/integration/components/shell.go
@@ -192,7 +192,11 @@ func (self *Shell) DeleteFileAndAdd(fileName string) *Shell {
// The reason for padding with zeroes is so that it's easier to do string
// matches on the commit messages when there are many of them
func (self *Shell) CreateNCommits(n int) *Shell {
- for i := 1; i <= n; i++ {
+ return self.CreateNCommitsStartingAt(n, 1)
+}
+
+func (self *Shell) CreateNCommitsStartingAt(n, startIndex int) *Shell {
+ for i := startIndex; i < startIndex+n; i++ {
self.CreateFileAndAdd(
fmt.Sprintf("file%02d.txt", i),
fmt.Sprintf("file%02d content", i),
diff --git a/pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref.go b/pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref.go
new file mode 100644
index 000000000..11d693d29
--- /dev/null
+++ b/pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref.go
@@ -0,0 +1,72 @@
+package interactive_rebase
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var DropTodoCommitWithUpdateRef = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Drops a commit during interactive rebase when there is an update-ref in the git-rebase-todo file",
+ ExtraCmdArgs: "",
+ Skip: false,
+ GitVersion: From("2.38.0"),
+ SetupConfig: func(config *config.AppConfig) {},
+ SetupRepo: func(shell *Shell) {
+ shell.
+ CreateNCommits(3).
+ NewBranch("mybranch").
+ CreateNCommitsStartingAt(3, 4)
+
+ shell.SetConfig("rebase.updateRefs", "true")
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.Views().Commits().
+ Focus().
+ Lines(
+ Contains("(*) commit 06").IsSelected(),
+ Contains("commit 05"),
+ Contains("commit 04"),
+ Contains("(*) commit 03"),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ ).
+ // Once "e" is fixed we can just hit "e", but for now we need to
+ // manually do a command-line rebase
+ // NavigateToLine(Contains("commit 01")).
+ // Press(keys.Universal.Edit).
+ Tap(func() {
+ t.GlobalPress(keys.Universal.ExecuteCustomCommand)
+ t.ExpectPopup().Prompt().
+ Title(Equals("Custom Command:")).
+ Type(`git -c core.editor="perl -i -lpe 'print \"break\" if $.==1'" rebase -i HEAD~5`).
+ Confirm()
+ }).
+ Focus().
+ Lines(
+ Contains("pick").Contains("(*) commit 06"),
+ Contains("pick").Contains("commit 05"),
+ Contains("pick").Contains("commit 04"),
+ Contains("update-ref").Contains("master"),
+ Contains("pick").Contains("(*) commit 03"),
+ Contains("pick").Contains("commit 02"),
+ Contains("<-- YOU ARE HERE --- commit 01"),
+ ).
+ NavigateToLine(Contains("commit 05")).
+ Press(keys.Universal.Remove)
+
+ t.Common().ContinueRebase()
+
+ t.Views().Commits().
+ IsFocused().
+ Lines(
+ Contains("(*) commit 06"),
+ /* EXPECTED:
+ Contains("commit 04"),
+ ACTUAL: */
+ Contains("commit 05"),
+ Contains("(*) commit 03"),
+ Contains("commit 02"),
+ Contains("commit 01"),
+ )
+ },
+})
diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go
index 19f002bda..a8959ee24 100644
--- a/pkg/integration/tests/test_list.go
+++ b/pkg/integration/tests/test_list.go
@@ -87,6 +87,7 @@ var tests = []*components.IntegrationTest{
interactive_rebase.AmendHeadCommitDuringRebase,
interactive_rebase.AmendMerge,
interactive_rebase.AmendNonHeadCommitDuringRebase,
+ interactive_rebase.DropTodoCommitWithUpdateRef,
interactive_rebase.EditFirstCommit,
interactive_rebase.EditNonTodoCommitDuringRebase,
interactive_rebase.FixupFirstCommit,