Skip to content

Commit 058504d

Browse files
committed
detect newlines
1 parent 7cd20bb commit 058504d

File tree

2 files changed

+31
-20
lines changed

2 files changed

+31
-20
lines changed

cli/templatepush.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"io"
77
"path/filepath"
8+
"strings"
89
"time"
910

1011
"github.com/briandowns/spinner"
@@ -117,9 +118,13 @@ func (pf *templateUploadFlags) checkForLockfile(inv *clibase.Invocation) error {
117118
}
118119

119120
func (pf *templateUploadFlags) templateMessage(inv *clibase.Invocation) string {
120-
if len(pf.message) > 72 {
121+
title := strings.SplitN(pf.message, "\n", 2)[0]
122+
if len(title) > 72 {
121123
cliui.Warn(inv.Stdout, "Template message is longer than 72 characters, it will be displayed as truncated.")
122124
}
125+
if title != pf.message {
126+
cliui.Warn(inv.Stdout, "Template message contains newlines, only the first line will be displayed.")
127+
}
123128
if pf.message != "" {
124129
return pf.message
125130
}

cli/templatepush_test.go

+25-19
Original file line numberDiff line numberDiff line change
@@ -123,30 +123,36 @@ func TestTemplatePush(t *testing.T) {
123123
ProvisionApply: echo.ProvisionComplete,
124124
})
125125

126-
wantMessage := strings.Repeat("a", 73)
127-
128-
inv, root := clitest.New(t, "templates", "push", template.Name, "--directory", source, "--test.provisioner", string(database.ProvisionerTypeEcho), "--name", "example", "--message", wantMessage, "--yes")
129-
clitest.SetupConfig(t, client, root)
130-
pty := ptytest.New(t).Attach(inv)
126+
for i, tt := range []struct {
127+
wantMessage string
128+
wantMatch string
129+
}{
130+
{wantMessage: strings.Repeat("a", 73), wantMatch: "Template message is longer than 72 characters"},
131+
{wantMessage: "This is my title\n\nAnd this is my body.", wantMatch: "Template message contains newlines"},
132+
} {
133+
inv, root := clitest.New(t, "templates", "push", template.Name, "--directory", source, "--test.provisioner", string(database.ProvisionerTypeEcho), "--name", "example", "--message", tt.wantMessage, "--yes")
134+
clitest.SetupConfig(t, client, root)
135+
pty := ptytest.New(t).Attach(inv)
131136

132-
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium)
133-
defer cancel()
137+
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitMedium)
138+
defer cancel()
134139

135-
inv = inv.WithContext(ctx)
136-
w := clitest.StartWithWaiter(t, inv)
140+
inv = inv.WithContext(ctx)
141+
w := clitest.StartWithWaiter(t, inv)
137142

138-
pty.ExpectMatchContext(ctx, "Template message is longer than 72 characters")
143+
pty.ExpectMatchContext(ctx, tt.wantMatch)
139144

140-
w.RequireSuccess()
145+
w.RequireSuccess()
141146

142-
// Assert that the template version changed.
143-
templateVersions, err := client.TemplateVersionsByTemplate(ctx, codersdk.TemplateVersionsByTemplateRequest{
144-
TemplateID: template.ID,
145-
})
146-
require.NoError(t, err)
147-
assert.Len(t, templateVersions, 2)
148-
assert.NotEqual(t, template.ActiveVersionID, templateVersions[1].ID)
149-
require.Equal(t, wantMessage, templateVersions[1].Message)
147+
// Assert that the template version changed.
148+
templateVersions, err := client.TemplateVersionsByTemplate(ctx, codersdk.TemplateVersionsByTemplateRequest{
149+
TemplateID: template.ID,
150+
})
151+
require.NoError(t, err)
152+
assert.Len(t, templateVersions, 2+i)
153+
assert.NotEqual(t, template.ActiveVersionID, templateVersions[1+i].ID)
154+
require.Equal(t, tt.wantMessage, templateVersions[1+i].Message)
155+
}
150156
})
151157

152158
t.Run("NoLockfile", func(t *testing.T) {

0 commit comments

Comments
 (0)