Skip to content

Commit 7c90cb5

Browse files
committed
Test cases for main.go and ref.go
1 parent 6d98f39 commit 7c90cb5

File tree

1 file changed

+136
-0
lines changed

1 file changed

+136
-0
lines changed

hack/tools/release/notes/main_test.go

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,3 +168,139 @@ func Test_defaultBranchForNewTag(t *testing.T) {
168168
})
169169
}
170170
}
171+
172+
func Test_validateConfig(t *testing.T) {
173+
type args struct {
174+
config *notesCmdConfig
175+
}
176+
tests := []struct {
177+
name string
178+
args *notesCmdConfig
179+
wantErr bool
180+
errorMessage string
181+
}{
182+
{
183+
name: "Missing fromRef and newTag",
184+
args: &notesCmdConfig{
185+
branch: "main",
186+
fromRef: "",
187+
newTag: "",
188+
},
189+
wantErr: true,
190+
errorMessage: "at least one of --from or --release need to be set",
191+
},
192+
{
193+
name: "Missing branch and newTag",
194+
args: &notesCmdConfig{
195+
fromRef: "ref1/tags",
196+
branch: "",
197+
newTag: "",
198+
},
199+
wantErr: true,
200+
errorMessage: "at least one of --branch or --release need to be set",
201+
},
202+
{
203+
name: "Invalid fromRef",
204+
args: &notesCmdConfig{
205+
fromRef: "invalid",
206+
branch: "main",
207+
},
208+
wantErr: true,
209+
errorMessage: "invalid ref invalid: must follow [type]/[value]",
210+
},
211+
{
212+
name: "Invalid toRef",
213+
args: &notesCmdConfig{
214+
toRef: "invalid",
215+
branch: "main",
216+
fromRef: "ref1/tags",
217+
},
218+
wantErr: true,
219+
errorMessage: "invalid ref invalid: must follow [type]/[value]",
220+
},
221+
{
222+
name: "Valid fromRef, toRef, and newTag",
223+
args: &notesCmdConfig{
224+
fromRef: "ref1/tags",
225+
toRef: "ref2/tags",
226+
newTag: "v1.0.0",
227+
},
228+
wantErr: false,
229+
},
230+
}
231+
for _, tt := range tests {
232+
t.Run(tt.name, func(t *testing.T) {
233+
err := validateConfig(tt.args)
234+
if tt.wantErr {
235+
if err == nil || err.Error() != tt.errorMessage {
236+
t.Errorf("expected error '%s', got '%v'", tt.errorMessage, err)
237+
}
238+
} else if err != nil {
239+
t.Errorf("unexpected error: %v", err)
240+
}
241+
})
242+
}
243+
}
244+
245+
func Test_computeConfigDefaults(t *testing.T) {
246+
type args struct {
247+
config *notesCmdConfig
248+
}
249+
tests := []struct {
250+
name string
251+
args *notesCmdConfig
252+
want *notesCmdConfig
253+
wantErr bool
254+
}{
255+
{
256+
name: "New minor release, fromRef missing",
257+
args: &notesCmdConfig{
258+
branch: "develop",
259+
newTag: "v1.1.0",
260+
},
261+
want: &notesCmdConfig{
262+
fromRef: "tags/v1.0.0",
263+
branch: "develop",
264+
toRef: "heads/develop",
265+
newTag: "v1.1.0",
266+
},
267+
wantErr: false,
268+
},
269+
{
270+
name: "New patch release, fromRef missing",
271+
args: &notesCmdConfig{
272+
newTag: "v1.1.3",
273+
},
274+
want: &notesCmdConfig{
275+
fromRef: "tags/v1.1.2",
276+
branch: "release-1.1",
277+
toRef: "heads/release-1.1",
278+
newTag: "v1.1.3",
279+
},
280+
wantErr: false,
281+
},
282+
{
283+
name: "Invalid semver",
284+
args: &notesCmdConfig{
285+
newTag: "invalid-tag",
286+
},
287+
want: nil,
288+
wantErr: true,
289+
},
290+
}
291+
for _, tt := range tests {
292+
t.Run(tt.name, func(t *testing.T) {
293+
err := computeConfigDefaults(tt.args)
294+
g := NewWithT(t)
295+
if tt.wantErr {
296+
g.Expect(err).To(HaveOccurred())
297+
g.Expect(err.Error()).To(ContainSubstring("invalid --release, is not a semver:"))
298+
} else {
299+
g.Expect(err).ToNot(HaveOccurred())
300+
g.Expect(tt.args.fromRef).To(Equal(tt.want.fromRef))
301+
g.Expect(tt.args.branch).To(Equal(tt.want.branch))
302+
g.Expect(tt.args.toRef).To(Equal(tt.want.toRef))
303+
}
304+
})
305+
}
306+
}

0 commit comments

Comments
 (0)