github.com/buildpacks/pack@v0.33.3-0.20240516162812-884dd1837311/pkg/archive/tar_builder_test.go (about) 1 package archive_test 2 3 import ( 4 "archive/tar" 5 "os" 6 "path/filepath" 7 "testing" 8 9 "github.com/buildpacks/pack/pkg/archive" 10 11 h "github.com/buildpacks/pack/testhelpers" 12 13 "github.com/heroku/color" 14 "github.com/sclevine/spec" 15 "github.com/sclevine/spec/report" 16 ) 17 18 func TestTarBuilder(t *testing.T) { 19 color.Disable(true) 20 defer color.Disable(false) 21 spec.Run(t, "TarBuilder", testTarBuilder, spec.Sequential(), spec.Report(report.Terminal{})) 22 } 23 24 func testTarBuilder(t *testing.T, when spec.G, it spec.S) { 25 var ( 26 tmpDir string 27 tarBuilder archive.TarBuilder 28 ) 29 30 it.Before(func() { 31 var err error 32 tmpDir, err = os.MkdirTemp("", "tar-builder-test") 33 h.AssertNil(t, err) 34 tarBuilder = archive.TarBuilder{} 35 }) 36 37 it.After(func() { 38 h.AssertNil(t, os.RemoveAll(tmpDir)) 39 }) 40 41 when("#AddFile", func() { 42 it("adds file", func() { 43 tarBuilder.AddFile("file1", 0777, archive.NormalizedDateTime, []byte("file-1 content")) 44 reader := tarBuilder.Reader(archive.DefaultTarWriterFactory()) 45 tr := tar.NewReader(reader) 46 47 verify := h.NewTarVerifier(t, tr, 0, 0) 48 verify.NextFile("file1", "file-1 content", int64(os.ModePerm)) 49 verify.NoMoreFilesExist() 50 }) 51 }) 52 53 when("#AddDir", func() { 54 it("adds dir", func() { 55 tarBuilder.AddDir("path/of/dir", 0777, archive.NormalizedDateTime) 56 reader := tarBuilder.Reader(archive.DefaultTarWriterFactory()) 57 tr := tar.NewReader(reader) 58 59 verify := h.NewTarVerifier(t, tr, 0, 0) 60 verify.NextDirectory("path/of/dir", int64(os.ModePerm)) 61 verify.NoMoreFilesExist() 62 }) 63 }) 64 65 when("#WriteToPath", func() { 66 it("writes to path", func() { 67 path := filepath.Join(tmpDir, "some.txt") 68 h.AssertNil(t, tarBuilder.WriteToPath(path, archive.DefaultTarWriterFactory())) 69 }) 70 71 it("fails if dir doesn't exist", func() { 72 path := "dir/some.txt" 73 h.AssertError(t, tarBuilder.WriteToPath(path, archive.DefaultTarWriterFactory()), "create file for tar") 74 }) 75 }) 76 }