From d28a2ec0597e6d13e89aa89ffe5806595b14ffb6 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Wed, 24 Jan 2024 08:28:04 +0100 Subject: [PATCH] Add tests for preserving the selection when pressing 'i' Preserving the selection for a non-range selection already works as expected; however, the test for a selection range shows an undesired behavior. --- .../quick_start_keep_selection.go | 51 +++++++++++++++++ .../quick_start_keep_selection_range.go | 57 +++++++++++++++++++ pkg/integration/tests/test_list.go | 2 + 3 files changed, 110 insertions(+) create mode 100644 pkg/integration/tests/interactive_rebase/quick_start_keep_selection.go create mode 100644 pkg/integration/tests/interactive_rebase/quick_start_keep_selection_range.go diff --git a/pkg/integration/tests/interactive_rebase/quick_start_keep_selection.go b/pkg/integration/tests/interactive_rebase/quick_start_keep_selection.go new file mode 100644 index 000000000..4589d010d --- /dev/null +++ b/pkg/integration/tests/interactive_rebase/quick_start_keep_selection.go @@ -0,0 +1,51 @@ +package interactive_rebase + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var QuickStartKeepSelection = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Starts an interactive rebase and checks that the same commit stays selected", + ExtraCmdArgs: []string{}, + Skip: false, + GitVersion: AtLeast("2.38.0"), + SetupConfig: func(config *config.AppConfig) { + config.GetUserConfig().Git.MainBranches = []string{"master"} + }, + SetupRepo: func(shell *Shell) { + shell. + CreateNCommits(1). + NewBranch("branch1"). + CreateNCommitsStartingAt(3, 2). + NewBranch("branch2"). + CreateNCommitsStartingAt(3, 5) + + shell.SetConfig("rebase.updateRefs", "true") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + Focus(). + Lines( + Contains("CI commit 07").IsSelected(), + Contains("CI commit 06"), + Contains("CI commit 05"), + Contains("CI * commit 04"), + Contains("CI commit 03"), + Contains("CI commit 02"), + Contains("CI commit 01"), + ). + NavigateToLine(Contains("commit 02")). + Press(keys.Commits.StartInteractiveRebase). + Lines( + Contains("pick").Contains("CI commit 07"), + Contains("pick").Contains("CI commit 06"), + Contains("pick").Contains("CI commit 05"), + Contains("update-ref").Contains("branch1"), + Contains("pick").Contains("CI * commit 04"), + Contains("pick").Contains("CI commit 03"), + Contains("CI commit 02").IsSelected(), + Contains("CI <-- YOU ARE HERE --- commit 01"), + ) + }, +}) diff --git a/pkg/integration/tests/interactive_rebase/quick_start_keep_selection_range.go b/pkg/integration/tests/interactive_rebase/quick_start_keep_selection_range.go new file mode 100644 index 000000000..1109e7914 --- /dev/null +++ b/pkg/integration/tests/interactive_rebase/quick_start_keep_selection_range.go @@ -0,0 +1,57 @@ +package interactive_rebase + +import ( + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var QuickStartKeepSelectionRange = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Starts an interactive rebase and checks that the same commit range stays selected", + ExtraCmdArgs: []string{}, + Skip: false, + GitVersion: AtLeast("2.38.0"), + SetupConfig: func(config *config.AppConfig) { + config.GetUserConfig().Git.MainBranches = []string{"master"} + }, + SetupRepo: func(shell *Shell) { + shell. + CreateNCommits(1). + NewBranch("branch1"). + CreateNCommitsStartingAt(2, 2). + NewBranch("branch2"). + CreateNCommitsStartingAt(2, 4). + NewBranch("branch3"). + CreateNCommitsStartingAt(2, 6) + + shell.SetConfig("rebase.updateRefs", "true") + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.Views().Commits(). + Focus(). + NavigateToLine(Contains("commit 04")). + Press(keys.Universal.RangeSelectDown). + Press(keys.Universal.RangeSelectDown). + Lines( + Contains("CI commit 07"), + Contains("CI commit 06"), + Contains("CI * commit 05"), + Contains("CI commit 04").IsSelected(), + Contains("CI * commit 03").IsSelected(), + Contains("CI commit 02").IsSelected(), + Contains("CI commit 01"), + ). + Press(keys.Commits.StartInteractiveRebase). + Lines( + Contains("CI commit 07"), + Contains("CI commit 06"), + Contains("update-ref").Contains("branch2"), + Contains("CI * commit 05"), + // Only 01 remains selected, but we want 04 through 01 to stay selected: + Contains("CI commit 04"), + Contains("update-ref").Contains("branch1"), + Contains("CI * commit 03"), + Contains("CI commit 02").IsSelected(), + Contains("CI <-- YOU ARE HERE --- commit 01"), + ) + }, +}) diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index 86d7f6682..2406b2f78 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -172,6 +172,8 @@ var tests = []*components.IntegrationTest{ interactive_rebase.OutsideRebaseRangeSelect, interactive_rebase.PickRescheduled, interactive_rebase.QuickStart, + interactive_rebase.QuickStartKeepSelection, + interactive_rebase.QuickStartKeepSelectionRange, interactive_rebase.Rebase, interactive_rebase.RewordCommitWithEditorAndFail, interactive_rebase.RewordFirstCommit,