github.com/YousefHaggyHeroku/pack@v1.5.5/internal/dist/dist_test.go (about)

     1  package dist_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/buildpacks/lifecycle/api"
     7  	"github.com/heroku/color"
     8  	"github.com/sclevine/spec"
     9  	"github.com/sclevine/spec/report"
    10  
    11  	"github.com/YousefHaggyHeroku/pack/internal/dist"
    12  	h "github.com/YousefHaggyHeroku/pack/testhelpers"
    13  )
    14  
    15  func TestDist(t *testing.T) {
    16  	color.Disable(true)
    17  	defer color.Disable(false)
    18  	spec.Run(t, "testDist", testDist, spec.Parallel(), spec.Report(report.Terminal{}))
    19  }
    20  
    21  func testDist(t *testing.T, when spec.G, it spec.S) {
    22  	when("BuildpackLayers", func() {
    23  		when("Get", func() {
    24  			var (
    25  				buildpackLayers dist.BuildpackLayers
    26  				apiVersion      *api.Version
    27  			)
    28  			it.Before(func() {
    29  				var err error
    30  				apiVersion, err = api.NewVersion("0.0")
    31  				h.AssertNil(t, err)
    32  
    33  				buildpackLayers = dist.BuildpackLayers{
    34  					"buildpack": {
    35  						"version1": {
    36  							API:         apiVersion,
    37  							LayerDiffID: "buildpack-v1-diff",
    38  						},
    39  					},
    40  					"other-buildpack": {
    41  						"version1": {
    42  							API:         apiVersion,
    43  							LayerDiffID: "other-buildpack-v2-diff",
    44  						},
    45  						"version2": {
    46  							API:         apiVersion,
    47  							LayerDiffID: "other-buildpack-v2-diff",
    48  						},
    49  					},
    50  				}
    51  			})
    52  
    53  			when("ID and Version are provided and present", func() {
    54  				it("succeeds", func() {
    55  					out, ok := buildpackLayers.Get("buildpack", "version1")
    56  					h.AssertEq(t, ok, true)
    57  					h.AssertEq(t, out, dist.BuildpackLayerInfo{
    58  						API:         apiVersion,
    59  						LayerDiffID: "buildpack-v1-diff",
    60  					})
    61  				})
    62  			})
    63  
    64  			when("ID is present, Version is left empty, but can be inferred", func() {
    65  				it("succeeds", func() {
    66  					out, ok := buildpackLayers.Get("buildpack", "")
    67  					h.AssertEq(t, ok, true)
    68  					h.AssertEq(t, out, dist.BuildpackLayerInfo{
    69  						API:         apiVersion,
    70  						LayerDiffID: "buildpack-v1-diff",
    71  					})
    72  				})
    73  			})
    74  
    75  			when("ID is present, Version is left empty and cannot be inferred", func() {
    76  				it("fails", func() {
    77  					_, ok := buildpackLayers.Get("other-buildpack", "")
    78  					h.AssertEq(t, ok, false)
    79  				})
    80  			})
    81  
    82  			when("ID is NOT provided", func() {
    83  				it("fails", func() {
    84  					_, ok := buildpackLayers.Get("missing-buildpack", "")
    85  					h.AssertEq(t, ok, false)
    86  				})
    87  			})
    88  		})
    89  	})
    90  }