Remove extra newline when message contains trailing newlines. (#387)

This commit is contained in:
Mitar
2024-07-05 14:52:45 +02:00
committed by GitHub
parent e864bb0220
commit 5f9c5cc822
2 changed files with 19 additions and 6 deletions
+1 -1
View File
@@ -373,7 +373,7 @@ func (k *Kong) applyHookToDefaultFlags(ctx *Context, node *Node, name string) er
}
func formatMultilineMessage(w io.Writer, leaders []string, format string, args ...interface{}) {
lines := strings.Split(fmt.Sprintf(format, args...), "\n")
lines := strings.Split(strings.TrimRight(fmt.Sprintf(format, args...), "\n"), "\n")
leader := ""
for _, l := range leaders {
if l == "" {
+18 -5
View File
@@ -593,11 +593,24 @@ func TestSliceWithDisabledSeparator(t *testing.T) {
}
func TestMultilineMessage(t *testing.T) {
w := &bytes.Buffer{}
var cli struct{}
p := mustNew(t, &cli, kong.Writers(w, w))
p.Printf("hello\nworld")
assert.Equal(t, "test: hello\n world\n", w.String())
tests := []struct {
name string
text string
want string
}{
{"Simple", "hello\nworld", "test: hello\n world\n"},
{"WithNewline", "hello\nworld\n", "test: hello\n world\n"},
}
for _, test := range tests {
test := test
t.Run(test.name, func(t *testing.T) {
w := &bytes.Buffer{}
var cli struct{}
p := mustNew(t, &cli, kong.Writers(w, w))
p.Printf(test.text)
assert.Equal(t, test.want, w.String())
})
}
}
type cmdWithRun struct {