changelog generator & diff tool stormlightlabs.github.io/git-storm/
changelog changeset markdown golang git
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 87 lines 2.0 kB view raw
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}