summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pkg/gui/controllers/custom_command_action.go5
-rw-r--r--pkg/integration/tests/custom_commands/history.go60
-rw-r--r--pkg/integration/tests/test_list.go1
3 files changed, 63 insertions, 3 deletions
diff --git a/pkg/gui/controllers/custom_command_action.go b/pkg/gui/controllers/custom_command_action.go
index 3cc7776bd..bc595934d 100644
--- a/pkg/gui/controllers/custom_command_action.go
+++ b/pkg/gui/controllers/custom_command_action.go
@@ -20,7 +20,7 @@ func (self *CustomCommandAction) Call() error {
HandleConfirm: func(command string) error {
if self.shouldSaveCommand(command) {
self.c.GetAppState().CustomCommandsHistory = utils.Limit(
- lo.Uniq(append(self.c.GetAppState().CustomCommandsHistory, command)),
+ lo.Uniq(append([]string{command}, self.c.GetAppState().CustomCommandsHistory...)),
1000,
)
}
@@ -36,8 +36,7 @@ func (self *CustomCommandAction) Call() error {
}
func (self *CustomCommandAction) GetCustomCommandsHistorySuggestionsFunc() func(string) []*types.Suggestion {
- // reversing so that we display the latest command first
- history := lo.Reverse(self.c.GetAppState().CustomCommandsHistory)
+ history := self.c.GetAppState().CustomCommandsHistory
return helpers.FuzzySearchFunc(history)
}
diff --git a/pkg/integration/tests/custom_commands/history.go b/pkg/integration/tests/custom_commands/history.go
new file mode 100644
index 000000000..834892564
--- /dev/null
+++ b/pkg/integration/tests/custom_commands/history.go
@@ -0,0 +1,60 @@
+package custom_commands
+
+import (
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var History = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Test that the custom commands history is saved correctly",
+ ExtraCmdArgs: []string{},
+ Skip: false,
+ SetupRepo: func(shell *Shell) {},
+ SetupConfig: func(cfg *config.AppConfig) {},
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.GlobalPress(keys.Universal.ExecuteCustomCommand)
+ t.ExpectPopup().Prompt().
+ Title(Equals("Custom command:")).
+ Type("echo 1").
+ Confirm()
+
+ t.GlobalPress(keys.Universal.ExecuteCustomCommand)
+ t.ExpectPopup().Prompt().
+ Title(Equals("Custom command:")).
+ SuggestionLines(Contains("1")).
+ Type("echo 2").
+ Confirm()
+
+ t.GlobalPress(keys.Universal.ExecuteCustomCommand)
+ t.ExpectPopup().Prompt().
+ Title(Equals("Custom command:")).
+ SuggestionLines(
+ // "echo 2" was typed last, so it should come first
+ Contains("2"),
+ Contains("1"),
+ ).
+ Type("echo 3").
+ Confirm()
+
+ t.GlobalPress(keys.Universal.ExecuteCustomCommand)
+ t.ExpectPopup().Prompt().
+ Title(Equals("Custom command:")).
+ SuggestionLines(
+ Contains("3"),
+ Contains("2"),
+ Contains("1"),
+ ).
+ Type("echo 1").
+ Confirm()
+
+ // Executing a command again should move it to the front:
+ t.GlobalPress(keys.Universal.ExecuteCustomCommand)
+ t.ExpectPopup().Prompt().
+ Title(Equals("Custom command:")).
+ SuggestionLines(
+ Contains("1"),
+ Contains("3"),
+ Contains("2"),
+ )
+ },
+})
diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go
index a5e17c470..3abc41853 100644
--- a/pkg/integration/tests/test_list.go
+++ b/pkg/integration/tests/test_list.go
@@ -98,6 +98,7 @@ var tests = []*components.IntegrationTest{
custom_commands.CheckForConflicts,
custom_commands.ComplexCmdAtRuntime,
custom_commands.FormPrompts,
+ custom_commands.History,
custom_commands.MenuFromCommand,
custom_commands.MenuFromCommandsOutput,
custom_commands.MultiplePrompts,