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 }