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