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  }