Skip to content

Commit

Permalink
fix: too long string written to cpe git.commitMessage (#5147)
Browse files Browse the repository at this point in the history
* fix too long CPE string written to git/commitMessage

* Add debug log

* Fix debug log

* Truncate long git commit message title

* Add tests for truncateString

* Fix test

* Fix tests

* Fix tests

---------

Co-authored-by: Ivan Nikiforov <[email protected]>
  • Loading branch information
niki4 and Ivan Nikiforov authored Oct 16, 2024
1 parent bd8b08b commit 36c555e
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 1 deletion.
17 changes: 16 additions & 1 deletion cmd/artifactPrepareVersion.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,13 @@ func runArtifactPrepareVersion(config *artifactPrepareVersionOptions, telemetryD
commonPipelineEnvironment.git.commitID = gitCommitID // this commitID changes and is not necessarily the HEAD commitID
commonPipelineEnvironment.artifactVersion = newVersion
commonPipelineEnvironment.originalArtifactVersion = version
commonPipelineEnvironment.git.commitMessage = gitCommitMessage

gitCommitMessages := strings.Split(gitCommitMessage, "\n")
commitMessage := truncateString(gitCommitMessages[0], 50) // Github recommends to keep commit message title less than 50 chars

commonPipelineEnvironment.git.commitMessage = commitMessage

log.Entry().Debug("CPE git commitMessage:", commitMessage)

// we may replace GetVersion() above with GetCoordinates() at some point ...
coordinates, err := artifact.GetCoordinates()
Expand All @@ -254,6 +260,15 @@ func runArtifactPrepareVersion(config *artifactPrepareVersionOptions, telemetryD
return nil
}

func truncateString(str string, maxLength int) string {
chars := []rune(str)

if len(chars) > maxLength {
return string(chars[:maxLength]) + "..."
}
return str
}

func openGit() (gitRepository, error) {
workdir, _ := os.Getwd()
return gitUtils.PlainOpen(workdir)
Expand Down
30 changes: 30 additions & 0 deletions cmd/artifactPrepareVersion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -887,3 +887,33 @@ func TestPropagateVersion(t *testing.T) {
assert.Contains(t, fmt.Sprint(err), "failed to retrieve artifact")
})
}

func TestTruncateString(t *testing.T) {
t.Run("input string longer than maxLength - truncate", func(t *testing.T) {
inputStr := "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor"
expected := "Lorem ipsum dolor sit amet, consectetur adipiscing..."

outputStr := truncateString(inputStr, 50)
assert.Equal(t, outputStr, expected)
})

t.Run("input string shorter than maxLength - return as is", func(t *testing.T) {
inputStr := "Lorem ipsum dolor sit amet"
outputStr := truncateString(inputStr, 50)

assert.Equal(t, outputStr, inputStr)
})

t.Run("input string contains unicode chars", func(t *testing.T) {
inputStr := "パイパーは素晴らしい図書館です"
expected := "パイパーは..."

outputStr := truncateString(inputStr, 5)
assert.Equal(t, outputStr, expected)
})

t.Run("input string is empty", func(t *testing.T) {
outputStr := truncateString("", 5)
assert.Equal(t, outputStr, "")
})
}

0 comments on commit 36c555e

Please sign in to comment.