github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/internal/layer/writer_factory_test.go (about)

     1  package layer_test
     2  
     3  import (
     4  	"archive/tar" //nolint
     5  	"testing"
     6  
     7  	ilayer "github.com/buildpacks/imgutil/layer"
     8  	"github.com/sclevine/spec"
     9  	"github.com/sclevine/spec/report"
    10  
    11  	"github.com/buildpacks/pack/internal/layer"
    12  	h "github.com/buildpacks/pack/testhelpers"
    13  )
    14  
    15  func TestTarWriterFactory(t *testing.T) {
    16  	spec.Run(t, "WriterFactory", testWriterFactory, spec.Parallel(), spec.Report(report.Terminal{}))
    17  }
    18  
    19  func testWriterFactory(t *testing.T, when spec.G, it spec.S) {
    20  	when("#NewWriterFactory", func() {
    21  		it("returns an error for invalid image OS", func() {
    22  			_, err := layer.NewWriterFactory("not-an-os")
    23  			h.AssertError(t, err, "provided image OS 'not-an-os' must be either 'linux' or 'windows'")
    24  		})
    25  	})
    26  
    27  	when("#NewWriter", func() {
    28  		it("returns a regular tar writer for Linux", func() {
    29  			factory, err := layer.NewWriterFactory("linux")
    30  			h.AssertNil(t, err)
    31  
    32  			_, ok := factory.NewWriter(nil).(*tar.Writer)
    33  			if !ok {
    34  				t.Fatal("returned writer was not a regular tar writer")
    35  			}
    36  		})
    37  
    38  		it("returns a Windows layer writer for Windows", func() {
    39  			factory, err := layer.NewWriterFactory("windows")
    40  			h.AssertNil(t, err)
    41  
    42  			_, ok := factory.NewWriter(nil).(*ilayer.WindowsWriter)
    43  			if !ok {
    44  				t.Fatal("returned writer was not a Windows layer writer")
    45  			}
    46  		})
    47  	})
    48  }