mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-03-17 20:47:50 +02:00
fix: folders inside zips (#736)
closes https://github.com/goreleaser/goreleaser/issues/734
This commit is contained in:
parent
170e6c6b25
commit
9154294c00
4
Gopkg.lock
generated
4
Gopkg.lock
generated
@ -130,8 +130,8 @@
|
|||||||
"tar",
|
"tar",
|
||||||
"zip"
|
"zip"
|
||||||
]
|
]
|
||||||
revision = "f83c3f651b008c42ee5d316770ebf54f383ffe13"
|
revision = "9c6b0c177751034bab579499b81c69993ddfe563"
|
||||||
version = "v1.1.2"
|
version = "v1.1.3"
|
||||||
|
|
||||||
[[projects]]
|
[[projects]]
|
||||||
name = "github.com/goreleaser/nfpm"
|
name = "github.com/goreleaser/nfpm"
|
||||||
|
@ -2,6 +2,7 @@ package archive
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"archive/tar"
|
"archive/tar"
|
||||||
|
"archive/zip"
|
||||||
"compress/gzip"
|
"compress/gzip"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
@ -33,6 +34,9 @@ func TestRunPipe(t *testing.T) {
|
|||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = os.Create(filepath.Join(folder, "README.md"))
|
_, err = os.Create(filepath.Join(folder, "README.md"))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
assert.NoError(t, os.MkdirAll(filepath.Join(folder, "foo", "bar", "foobar"), 0755))
|
||||||
|
_, err = os.Create(filepath.Join(filepath.Join(folder, "foo", "bar", "foobar", "blah.txt")))
|
||||||
|
assert.NoError(t, err)
|
||||||
for _, format := range []string{"tar.gz", "zip"} {
|
for _, format := range []string{"tar.gz", "zip"} {
|
||||||
t.Run("Archive format "+format, func(tt *testing.T) {
|
t.Run("Archive format "+format, func(tt *testing.T) {
|
||||||
var ctx = context.New(
|
var ctx = context.New(
|
||||||
@ -43,6 +47,7 @@ func TestRunPipe(t *testing.T) {
|
|||||||
NameTemplate: defaultNameTemplate,
|
NameTemplate: defaultNameTemplate,
|
||||||
Files: []string{
|
Files: []string{
|
||||||
"README.*",
|
"README.*",
|
||||||
|
"./foo/**/*",
|
||||||
},
|
},
|
||||||
FormatOverrides: []config.FormatOverride{
|
FormatOverrides: []config.FormatOverride{
|
||||||
{
|
{
|
||||||
@ -88,21 +93,60 @@ func TestRunPipe(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check archive contents
|
// Check archive contents
|
||||||
f, err := os.Open(filepath.Join(dist, "foobar_0.0.1_darwin_amd64.tar.gz"))
|
assert.Equal(
|
||||||
assert.NoError(t, err)
|
t,
|
||||||
defer func() { assert.NoError(t, f.Close()) }()
|
[]string{
|
||||||
|
"README.md",
|
||||||
|
"foo/bar",
|
||||||
|
"foo/bar/foobar",
|
||||||
|
"foo/bar/foobar/blah.txt",
|
||||||
|
"mybin",
|
||||||
|
},
|
||||||
|
tarFiles(t, filepath.Join(dist, "foobar_0.0.1_darwin_amd64.tar.gz")),
|
||||||
|
)
|
||||||
|
assert.Equal(
|
||||||
|
t,
|
||||||
|
[]string{
|
||||||
|
"README.md",
|
||||||
|
"foo/bar/foobar/blah.txt",
|
||||||
|
"mybin.exe",
|
||||||
|
},
|
||||||
|
zipFiles(t, filepath.Join(dist, "foobar_0.0.1_windows_amd64.zip")),
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func zipFiles(t *testing.T, path string) []string {
|
||||||
|
f, err := os.Open(path)
|
||||||
|
require.NoError(t, err)
|
||||||
|
info, err := f.Stat()
|
||||||
|
require.NoError(t, err)
|
||||||
|
r, err := zip.NewReader(f, info.Size())
|
||||||
|
require.NoError(t, err)
|
||||||
|
var paths = make([]string, len(r.File))
|
||||||
|
for i, zf := range r.File {
|
||||||
|
paths[i] = zf.Name
|
||||||
|
}
|
||||||
|
return paths
|
||||||
|
}
|
||||||
|
|
||||||
|
func tarFiles(t *testing.T, path string) []string {
|
||||||
|
f, err := os.Open(path)
|
||||||
|
require.NoError(t, err)
|
||||||
|
defer f.Close()
|
||||||
gr, err := gzip.NewReader(f)
|
gr, err := gzip.NewReader(f)
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
defer func() { assert.NoError(t, gr.Close()) }()
|
defer gr.Close()
|
||||||
r := tar.NewReader(gr)
|
var r = tar.NewReader(gr)
|
||||||
for _, n := range []string{"README.md", "mybin"} {
|
var paths []string
|
||||||
h, err := r.Next()
|
for {
|
||||||
|
next, err := r.Next()
|
||||||
if err == io.EOF {
|
if err == io.EOF {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
assert.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Equal(t, n, h.Name)
|
paths = append(paths, next.Name)
|
||||||
}
|
}
|
||||||
|
return paths
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestRunPipeBinary(t *testing.T) {
|
func TestRunPipeBinary(t *testing.T) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user