changelog generator & diff tool
stormlightlabs.github.io/git-storm/
changelog
changeset
markdown
golang
git
1package versioning
2
3import (
4 "testing"
5
6 "github.com/stormlightlabs/git-storm/internal/changelog"
7)
8
9func TestParseAndBump(t *testing.T) {
10 version, err := Parse("1.2.3")
11 if err != nil {
12 t.Fatalf("Parse returned error: %v", err)
13 }
14
15 if version.Major != 1 || version.Minor != 2 || version.Patch != 3 {
16 t.Fatalf("unexpected parse result: %#v", version)
17 }
18
19 major := version.Bump(BumpMajor)
20 if got := major.String(); got != "2.0.0" {
21 t.Fatalf("major bump = %s, want 2.0.0", got)
22 }
23
24 minor := version.Bump(BumpMinor)
25 if got := minor.String(); got != "1.3.0" {
26 t.Fatalf("minor bump = %s, want 1.3.0", got)
27 }
28
29 patch := version.Bump(BumpPatch)
30 if got := patch.String(); got != "1.2.4" {
31 t.Fatalf("patch bump = %s, want 1.2.4", got)
32 }
33}
34
35func TestParseBumpType(t *testing.T) {
36 cases := map[string]BumpType{
37 "MAJOR": BumpMajor,
38 "minor": BumpMinor,
39 "Patch": BumpPatch,
40 }
41
42 for input, expected := range cases {
43 kind, err := ParseBumpType(input)
44 if err != nil {
45 t.Fatalf("ParseBumpType(%s) returned error: %v", input, err)
46 }
47 if kind != expected {
48 t.Fatalf("ParseBumpType(%s) = %s, want %s", input, kind, expected)
49 }
50 }
51
52 if _, err := ParseBumpType("invalid"); err == nil {
53 t.Fatal("expected error for invalid bump type")
54 }
55}
56
57func TestNextHandlesEmptyVersion(t *testing.T) {
58 got, err := Next("", BumpMinor)
59 if err != nil {
60 t.Fatalf("Next returned error: %v", err)
61 }
62 if got != "0.1.0" {
63 t.Fatalf("Next = %s, want 0.1.0", got)
64 }
65}
66
67func TestLatestVersion(t *testing.T) {
68 ch := &changelog.Changelog{
69 Versions: []changelog.Version{
70 {Number: "Unreleased"},
71 {Number: "1.5.0"},
72 {Number: "0.9.1"},
73 },
74 }
75
76 version, ok := LatestVersion(ch)
77 if !ok {
78 t.Fatal("LatestVersion returned false")
79 }
80 if version != "1.5.0" {
81 t.Fatalf("LatestVersion = %s, want 1.5.0", version)
82 }
83
84 if _, ok := LatestVersion(&changelog.Changelog{}); ok {
85 t.Fatal("expected LatestVersion to return false when no releases exist")
86 }
87}