github.com/axxelG/goreleaser@v0.92.0/pkg/archive/zip/zip_test.go (about) 1 package zip 2 3 import ( 4 "archive/zip" 5 "fmt" 6 "io/ioutil" 7 "os" 8 "path/filepath" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestZipFile(t *testing.T) { 15 var assert = assert.New(t) 16 tmp, err := ioutil.TempDir("", "") 17 assert.NoError(err) 18 f, err := os.Create(filepath.Join(tmp, "test.zip")) 19 assert.NoError(err) 20 fmt.Println(f.Name()) 21 defer f.Close() // nolint: errcheck 22 archive := New(f) 23 24 assert.Error(archive.Add("nope.txt", "../testdata/nope.txt")) 25 assert.NoError(archive.Add("foo.txt", "../testdata/foo.txt")) 26 assert.NoError(archive.Add("sub1", "../testdata/sub1")) 27 assert.NoError(archive.Add("sub1/bar.txt", "../testdata/sub1/bar.txt")) 28 assert.NoError(archive.Add("sub1/executable", "../testdata/sub1/executable")) 29 assert.NoError(archive.Add("sub1/sub2", "../testdata/sub1/sub2")) 30 assert.NoError(archive.Add("sub1/sub2/subfoo.txt", "../testdata/sub1/sub2/subfoo.txt")) 31 32 assert.NoError(archive.Close()) 33 assert.Error(archive.Add("tar.go", "tar.go")) 34 assert.NoError(f.Close()) 35 36 t.Log(f.Name()) 37 f, err = os.Open(f.Name()) 38 assert.NoError(err) 39 info, err := f.Stat() 40 assert.NoError(err) 41 assert.Truef(info.Size() < 900, "archived file should be smaller than %d", info.Size()) 42 r, err := zip.NewReader(f, info.Size()) 43 assert.NoError(err) 44 var paths = make([]string, len(r.File)) 45 for i, zf := range r.File { 46 paths[i] = zf.Name 47 t.Logf("%s: %v", zf.Name, zf.Mode()) 48 if zf.Name == "sub1/executable" { 49 var ex os.FileMode = zf.Mode() | 0111 50 assert.Equal(zf.Mode().String(), ex.String()) 51 } 52 } 53 assert.Equal([]string{ 54 "foo.txt", 55 "sub1/bar.txt", 56 "sub1/executable", 57 "sub1/sub2/subfoo.txt", 58 }, paths) 59 }