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  }