Skip to content

Commit 36c555e

Browse files
niki4Ivan Nikiforov
andauthored
fix: too long string written to cpe git.commitMessage (#5147)
* 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]>
1 parent bd8b08b commit 36c555e

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

cmd/artifactPrepareVersion.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,13 @@ func runArtifactPrepareVersion(config *artifactPrepareVersionOptions, telemetryD
237237
commonPipelineEnvironment.git.commitID = gitCommitID // this commitID changes and is not necessarily the HEAD commitID
238238
commonPipelineEnvironment.artifactVersion = newVersion
239239
commonPipelineEnvironment.originalArtifactVersion = version
240-
commonPipelineEnvironment.git.commitMessage = gitCommitMessage
240+
241+
gitCommitMessages := strings.Split(gitCommitMessage, "\n")
242+
commitMessage := truncateString(gitCommitMessages[0], 50) // Github recommends to keep commit message title less than 50 chars
243+
244+
commonPipelineEnvironment.git.commitMessage = commitMessage
245+
246+
log.Entry().Debug("CPE git commitMessage:", commitMessage)
241247

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

263+
func truncateString(str string, maxLength int) string {
264+
chars := []rune(str)
265+
266+
if len(chars) > maxLength {
267+
return string(chars[:maxLength]) + "..."
268+
}
269+
return str
270+
}
271+
257272
func openGit() (gitRepository, error) {
258273
workdir, _ := os.Getwd()
259274
return gitUtils.PlainOpen(workdir)

cmd/artifactPrepareVersion_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -887,3 +887,33 @@ func TestPropagateVersion(t *testing.T) {
887887
assert.Contains(t, fmt.Sprint(err), "failed to retrieve artifact")
888888
})
889889
}
890+
891+
func TestTruncateString(t *testing.T) {
892+
t.Run("input string longer than maxLength - truncate", func(t *testing.T) {
893+
inputStr := "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor"
894+
expected := "Lorem ipsum dolor sit amet, consectetur adipiscing..."
895+
896+
outputStr := truncateString(inputStr, 50)
897+
assert.Equal(t, outputStr, expected)
898+
})
899+
900+
t.Run("input string shorter than maxLength - return as is", func(t *testing.T) {
901+
inputStr := "Lorem ipsum dolor sit amet"
902+
outputStr := truncateString(inputStr, 50)
903+
904+
assert.Equal(t, outputStr, inputStr)
905+
})
906+
907+
t.Run("input string contains unicode chars", func(t *testing.T) {
908+
inputStr := "パイパーは素晴らしい図書館です"
909+
expected := "パイパーは..."
910+
911+
outputStr := truncateString(inputStr, 5)
912+
assert.Equal(t, outputStr, expected)
913+
})
914+
915+
t.Run("input string is empty", func(t *testing.T) {
916+
outputStr := truncateString("", 5)
917+
assert.Equal(t, outputStr, "")
918+
})
919+
}

0 commit comments

Comments
 (0)