summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Haller <stefan@haller-berlin.de>2024-04-11 18:38:20 +0200
committerStefan Haller <stefan@haller-berlin.de>2024-04-12 08:33:47 +0200
commite6a07b3f03170ff7a10ce192546643c88da78486 (patch)
tree0227c86514e14eb778eca5a23d7f570ae5b878da
parent28923fc9d01da73d3dc0cf1112c09b9fa2bd451c (diff)
Add integration test that accesses commit properties in a custom command
Useful as a regression test to check that the following commit doesn't break it.
-rw-r--r--pkg/integration/components/git.go8
-rw-r--r--pkg/integration/tests/custom_commands/access_commit_properties.go37
-rw-r--r--pkg/integration/tests/test_list.go1
3 files changed, 46 insertions, 0 deletions
diff --git a/pkg/integration/components/git.go b/pkg/integration/components/git.go
index 1e2975be2..1b07e5cf8 100644
--- a/pkg/integration/components/git.go
+++ b/pkg/integration/components/git.go
@@ -55,3 +55,11 @@ func (self *Git) Version() *git_commands.GitVersion {
}
return version
}
+
+func (self *Git) GetCommitHash(ref string) string {
+ output, err := self.shell.runCommandWithOutput([]string{"git", "rev-parse", ref})
+ if err != nil {
+ log.Fatalf("Could not get commit hash: %v", err)
+ }
+ return strings.TrimSpace(output)
+}
diff --git a/pkg/integration/tests/custom_commands/access_commit_properties.go b/pkg/integration/tests/custom_commands/access_commit_properties.go
new file mode 100644
index 000000000..fbb54bf81
--- /dev/null
+++ b/pkg/integration/tests/custom_commands/access_commit_properties.go
@@ -0,0 +1,37 @@
+package custom_commands
+
+import (
+ "fmt"
+
+ "github.com/jesseduffield/lazygit/pkg/config"
+ . "github.com/jesseduffield/lazygit/pkg/integration/components"
+)
+
+var AccessCommitProperties = NewIntegrationTest(NewIntegrationTestArgs{
+ Description: "Run a command that accesses properties of a commit",
+ ExtraCmdArgs: []string{},
+ Skip: false,
+ SetupRepo: func(shell *Shell) {
+ shell.EmptyCommit("my change")
+ },
+ SetupConfig: func(cfg *config.AppConfig) {
+ cfg.UserConfig.CustomCommands = []config.CustomCommand{
+ {
+ Key: "X",
+ Context: "commits",
+ Command: "printf '%s\n%s' '{{ .SelectedLocalCommit.Name }}' '{{ .SelectedLocalCommit.Hash }}' > file.txt",
+ },
+ }
+ },
+ Run: func(t *TestDriver, keys config.KeybindingConfig) {
+ t.Views().Commits().
+ Focus().
+ Lines(
+ Contains("my change").IsSelected(),
+ ).
+ Press("X")
+
+ hash := t.Git().GetCommitHash("HEAD")
+ t.FileSystem().FileContent("file.txt", Equals(fmt.Sprintf("my change\n%s", hash)))
+ },
+})
diff --git a/pkg/integration/tests/test_list.go b/pkg/integration/tests/test_list.go
index 8f62ca7f5..cb1a66ac5 100644
--- a/pkg/integration/tests/test_list.go
+++ b/pkg/integration/tests/test_list.go
@@ -97,6 +97,7 @@ var tests = []*components.IntegrationTest{
conflicts.ResolveExternally,
conflicts.ResolveMultipleFiles,
conflicts.UndoChooseHunk,
+ custom_commands.AccessCommitProperties,
custom_commands.BasicCmdAtRuntime,
custom_commands.BasicCmdFromConfig,
custom_commands.CheckForConflicts,