github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/pkg/dist/buildmodule_test.go (about)

     1  package dist_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/buildpacks/pack/pkg/dist"
     7  	h "github.com/buildpacks/pack/testhelpers"
     8  
     9  	"github.com/heroku/color"
    10  
    11  	"github.com/sclevine/spec"
    12  	"github.com/sclevine/spec/report"
    13  )
    14  
    15  func TestBuildModule(t *testing.T) {
    16  	color.Disable(true)
    17  	defer color.Disable(false)
    18  	spec.Run(t, "testBuildModule", testBuildModule, spec.Parallel(), spec.Report(report.Terminal{}))
    19  }
    20  
    21  func testBuildModule(t *testing.T, when spec.G, it spec.S) {
    22  	var info dist.ModuleInfo
    23  
    24  	it.Before(func() {
    25  		info = dist.ModuleInfo{
    26  			ID:      "some-id",
    27  			Name:    "some-name",
    28  			Version: "some-version",
    29  		}
    30  	})
    31  
    32  	when("#FullName", func() {
    33  		when("version", func() {
    34  			when("blank", func() {
    35  				it.Before(func() {
    36  					info.Version = ""
    37  				})
    38  
    39  				it("prints ID", func() {
    40  					h.AssertEq(t, info.FullName(), "some-id")
    41  				})
    42  			})
    43  
    44  			when("not blank", func() {
    45  				it("prints ID and version", func() {
    46  					h.AssertEq(t, info.FullName(), "some-id@some-version")
    47  				})
    48  			})
    49  		})
    50  	})
    51  
    52  	when("#FullNameWithVersion", func() {
    53  		when("version", func() {
    54  			when("blank", func() {
    55  				it.Before(func() {
    56  					info.Version = ""
    57  				})
    58  
    59  				it("errors", func() {
    60  					_, err := info.FullNameWithVersion()
    61  					h.AssertNotNil(t, err)
    62  				})
    63  			})
    64  
    65  			when("not blank", func() {
    66  				it("prints ID and version", func() {
    67  					actual, err := info.FullNameWithVersion()
    68  					h.AssertNil(t, err)
    69  					h.AssertEq(t, actual, "some-id@some-version")
    70  				})
    71  			})
    72  		})
    73  	})
    74  
    75  	when("#String", func() {
    76  		it("returns #FullName", func() {
    77  			info.Version = ""
    78  			h.AssertEq(t, info.String(), info.FullName())
    79  		})
    80  	})
    81  
    82  	when("#Match", func() {
    83  		when("IDs and versions match", func() {
    84  			it("returns true", func() {
    85  				other := dist.ModuleInfo{
    86  					ID:      "some-id",
    87  					Version: "some-version",
    88  				}
    89  				h.AssertEq(t, info.Match(other), true)
    90  			})
    91  		})
    92  
    93  		when("only IDs match", func() {
    94  			it("returns false", func() {
    95  				other := dist.ModuleInfo{
    96  					ID:      "some-id",
    97  					Version: "some-other-version",
    98  				}
    99  				h.AssertEq(t, info.Match(other), false)
   100  			})
   101  		})
   102  	})
   103  }