diff options
author | Stefan Haller <stefan@haller-berlin.de> | 2023-04-13 20:24:28 +0200 |
---|---|---|
committer | Stefan Haller <stefan@haller-berlin.de> | 2023-04-15 08:36:03 +0200 |
commit | 860a8d102b7eac47aaefc3ae17b443e93cd10c9f (patch) | |
tree | a7e5afb380ca572661835bf4148e092ccc98438b /pkg/integration | |
parent | a304fed68cd2208c3e78afd9ea99446d5b5f4444 (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.go | 6 | ||||
-rw-r--r-- | pkg/integration/tests/interactive_rebase/drop_todo_commit_with_update_ref.go | 72 | ||||
-rw-r--r-- | pkg/integration/tests/test_list.go | 1 |
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, |