Skip to content

Commit aee1ac4

Browse files
authored
🌱 Release Notes Generator - Test cases for main.go and ref.go (#11882)
* Test cases for main.go and ref.go * fixing lint error * Review changes
1 parent 635c18e commit aee1ac4

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed

hack/tools/release/notes/main_test.go

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

0 commit comments

Comments
 (0)