From daf9b8cfa9213a791d10d41e8f00c61d21ac7aa4 Mon Sep 17 00:00:00 2001 From: Stefan Haller Date: Tue, 19 Dec 2023 15:03:35 +0100 Subject: [PATCH] Simplify GetCommitMessage Use git log instead of git rev-list, this way we don't get a line "commit " at the beginning that we then have to discard again. The test TestGetCommitMsg is becoming a bit pointless now, since it just compares that input and output are identical. --- pkg/commands/git_commands/commit.go | 5 ++--- pkg/commands/git_commands/commit_test.go | 15 ++++++--------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/pkg/commands/git_commands/commit.go b/pkg/commands/git_commands/commit.go index 812d2f6b5..443289f6e 100644 --- a/pkg/commands/git_commands/commit.go +++ b/pkg/commands/git_commands/commit.go @@ -137,12 +137,11 @@ func (self *CommitCommands) signoffFlag() string { } func (self *CommitCommands) GetCommitMessage(commitSha string) (string, error) { - cmdArgs := NewGitCmd("rev-list"). + cmdArgs := NewGitCmd("log"). Arg("--format=%B", "--max-count=1", commitSha). ToArgv() - messageWithHeader, err := self.cmd.New(cmdArgs).DontLog().RunWithOutput() - message := strings.Join(strings.SplitAfter(messageWithHeader, "\n")[1:], "") + message, err := self.cmd.New(cmdArgs).DontLog().RunWithOutput() return strings.TrimSpace(message), err } diff --git a/pkg/commands/git_commands/commit_test.go b/pkg/commands/git_commands/commit_test.go index a6f887a12..0ade25a8d 100644 --- a/pkg/commands/git_commands/commit_test.go +++ b/pkg/commands/git_commands/commit_test.go @@ -260,19 +260,17 @@ func TestGetCommitMsg(t *testing.T) { scenarios := []scenario{ { "empty", - ` commit deadbeef`, + ``, ``, }, { "no line breaks (single line)", - `commit deadbeef -use generics to DRY up context code`, + `use generics to DRY up context code`, `use generics to DRY up context code`, }, { "with line breaks", - `commit deadbeef -Merge pull request #1750 from mark2185/fix-issue-template + `Merge pull request #1750 from mark2185/fix-issue-template 'git-rev parse' should be 'git rev-parse'`, `Merge pull request #1750 from mark2185/fix-issue-template @@ -285,7 +283,7 @@ Merge pull request #1750 from mark2185/fix-issue-template s := s t.Run(s.testName, func(t *testing.T) { instance := buildCommitCommands(commonDeps{ - runner: oscommands.NewFakeRunner(t).ExpectGitArgs([]string{"rev-list", "--format=%B", "--max-count=1", "deadbeef"}, s.input, nil), + runner: oscommands.NewFakeRunner(t).ExpectGitArgs([]string{"log", "--format=%B", "--max-count=1", "deadbeef"}, s.input, nil), }) output, err := instance.GetCommitMessage("deadbeef") @@ -306,15 +304,14 @@ func TestGetCommitMessageFromHistory(t *testing.T) { scenarios := []scenario{ { "Empty message", - oscommands.NewFakeRunner(t).ExpectGitArgs([]string{"log", "-1", "--skip=2", "--pretty=%H"}, "", nil).ExpectGitArgs([]string{"rev-list", "--format=%B", "--max-count=1"}, "", nil), + oscommands.NewFakeRunner(t).ExpectGitArgs([]string{"log", "-1", "--skip=2", "--pretty=%H"}, "", nil).ExpectGitArgs([]string{"log", "--format=%B", "--max-count=1"}, "", nil), func(output string, err error) { assert.Error(t, err) }, }, { "Default case to retrieve a commit in history", - oscommands.NewFakeRunner(t).ExpectGitArgs([]string{"log", "-1", "--skip=2", "--pretty=%H"}, "sha3 \n", nil).ExpectGitArgs([]string{"rev-list", "--format=%B", "--max-count=1", "sha3"}, `commit sha3 - use generics to DRY up context code`, nil), + oscommands.NewFakeRunner(t).ExpectGitArgs([]string{"log", "-1", "--skip=2", "--pretty=%H"}, "sha3 \n", nil).ExpectGitArgs([]string{"log", "--format=%B", "--max-count=1", "sha3"}, `use generics to DRY up context code`, nil), func(output string, err error) { assert.NoError(t, err) assert.Equal(t, "use generics to DRY up context code", output)