From 283ed29f10d2bcfce6b62be622489bc0e9850672 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Sun, 18 Aug 2024 11:21:42 +0200 Subject: [PATCH] Add a test that shows how per-repo config file replaces customCommands We want to add to the global customCommands instead of replacing them. --- .../custom_commands_in_per_repo_config.go | 63 +++++++++++++++++++ pkg/integration/tests/test_list.go | 1 + 2 files changed, 64 insertions(+) create mode 100644 pkg/integration/tests/config/custom_commands_in_per_repo_config.go diff --git a/pkg/integration/tests/config/custom_commands_in_per_repo_config.go b/pkg/integration/tests/config/custom_commands_in_per_repo_config.go new file mode 100644 index 000000000..4cff322ef --- /dev/null +++ b/pkg/integration/tests/config/custom_commands_in_per_repo_config.go @@ -0,0 +1,63 @@ +package config + +import ( + "path/filepath" + + "github.com/jesseduffield/lazygit/pkg/config" + . "github.com/jesseduffield/lazygit/pkg/integration/components" +) + +var CustomCommandsInPerRepoConfig = NewIntegrationTest(NewIntegrationTestArgs{ + Description: "Custom commands in per-repo config add to the global ones instead of replacing them", + ExtraCmdArgs: []string{}, + Skip: false, + SetupConfig: func(cfg *config.AppConfig) { + otherRepo, _ := filepath.Abs("../other") + cfg.GetAppState().RecentRepos = []string{otherRepo} + + cfg.GetUserConfig().CustomCommands = []config.CustomCommand{ + { + Key: "X", + Context: "global", + Command: "printf 'global X' > file.txt", + }, + { + Key: "Y", + Context: "global", + Command: "printf 'global Y' > file.txt", + }, + } + }, + SetupRepo: func(shell *Shell) { + shell.CloneNonBare("other") + shell.CreateFile("../other/.git/lazygit.yml", ` +customCommands: + - key: Y + context: global + command: printf 'local Y' > file.txt + - key: Z + context: global + command: printf 'local Z' > file.txt`) + }, + Run: func(t *TestDriver, keys config.KeybindingConfig) { + t.GlobalPress(keys.Universal.OpenRecentRepos) + t.ExpectPopup().Menu().Title(Equals("Recent repositories")). + Lines( + Contains("other").IsSelected(), + Contains("Cancel"), + ).Confirm() + t.Views().Status().Content(Contains("other → master")) + + t.GlobalPress("X") + /* EXPECTED: + t.FileSystem().FileContent("../other/file.txt", Equals("global X")) + ACTUAL: */ + t.FileSystem().PathNotPresent("../other/file.txt") + + t.GlobalPress("Y") + t.FileSystem().FileContent("../other/file.txt", Equals("local Y")) + + t.GlobalPress("Z") + t.FileSystem().FileContent("../other/file.txt", Equals("local Z")) + }, +}) diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go index 8f547078a..de074232f 100644 --- a/pkg/integration/tests/test_list.go +++ b/pkg/integration/tests/test_list.go @@ -110,6 +110,7 @@ var tests = []*components.IntegrationTest{ commit.Staged, commit.StagedWithoutHooks, commit.Unstaged, + config.CustomCommandsInPerRepoConfig, config.RemoteNamedStar, conflicts.Filter, conflicts.ResolveExternally,