github.com/YousefHaggyHeroku/pack@v1.5.5/internal/builder/version_test.go (about) 1 package builder_test 2 3 import ( 4 "testing" 5 6 "github.com/sclevine/spec" 7 "github.com/sclevine/spec/report" 8 9 "github.com/YousefHaggyHeroku/pack/internal/builder" 10 h "github.com/YousefHaggyHeroku/pack/testhelpers" 11 ) 12 13 func TestVersion(t *testing.T) { 14 spec.Run(t, "testVersion", testVersion, spec.Parallel(), spec.Report(report.Terminal{})) 15 } 16 17 func testVersion(t *testing.T, when spec.G, it spec.S) { 18 when("#VersionMustParse", func() { 19 it("parses string", func() { 20 testVersion := "1.2.3" 21 version := builder.VersionMustParse(testVersion) 22 h.AssertEq(t, testVersion, version.String()) 23 }) 24 }) 25 26 when("#Equal", func() { 27 var version = builder.VersionMustParse("1.2.3") 28 29 it("matches", func() { 30 otherVersion := builder.VersionMustParse("1.2.3") 31 h.AssertTrue(t, version.Equal(otherVersion)) 32 }) 33 34 it("returns false if doesn't match exactly", func() { 35 otherVersion := builder.VersionMustParse("1.2") 36 h.AssertFalse(t, version.Equal(otherVersion)) 37 }) 38 39 it("handles nil case", func() { 40 h.AssertFalse(t, version.Equal(nil)) 41 }) 42 }) 43 44 when("MarshalText", func() { 45 it("marshals text", func() { 46 testVersion := "1.2.3" 47 version := builder.VersionMustParse(testVersion) 48 bytesVersion, err := version.MarshalText() 49 h.AssertNil(t, err) 50 h.AssertEq(t, bytesVersion, []byte(testVersion)) 51 }) 52 }) 53 54 when("UnmarshalText", func() { 55 it("overwrites existing version", func() { 56 testVersion := "1.2.3" 57 version := builder.VersionMustParse(testVersion) 58 59 newVersion := "1.4.5" 60 err := version.UnmarshalText([]byte(newVersion)) 61 h.AssertNil(t, err) 62 h.AssertEq(t, version.String(), newVersion) 63 }) 64 65 it("fails if provided invalid semver", func() { 66 testVersion := "1.2.3" 67 version := builder.VersionMustParse(testVersion) 68 69 newVersion := "1.x" 70 err := version.UnmarshalText([]byte(newVersion)) 71 h.AssertError(t, err, "invalid semantic version") 72 }) 73 }) 74 }