github.com/goreleaser/goreleaser@v1.25.1/pkg/archive/archive_test.go (about) 1 package archive 2 3 import ( 4 "io" 5 "os" 6 "path/filepath" 7 "testing" 8 9 "github.com/goreleaser/goreleaser/internal/testlib" 10 "github.com/goreleaser/goreleaser/pkg/config" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestArchive(t *testing.T) { 15 folder := t.TempDir() 16 empty, err := os.Create(folder + "/empty.txt") 17 require.NoError(t, err) 18 require.NoError(t, empty.Close()) 19 require.NoError(t, os.Mkdir(folder+"/folder-inside", 0o755)) 20 21 for _, format := range []string{"tar.gz", "zip", "gz", "tar.xz", "tar", "tgz", "txz"} { 22 format := format 23 t.Run(format, func(t *testing.T) { 24 f1, err := os.Create(filepath.Join(t.TempDir(), "1.tar")) 25 require.NoError(t, err) 26 27 archive, err := New(f1, format) 28 require.NoError(t, err) 29 require.NoError(t, archive.Add(config.File{ 30 Source: empty.Name(), 31 Destination: "empty.txt", 32 })) 33 require.Error(t, archive.Add(config.File{ 34 Source: empty.Name() + "_nope", 35 Destination: "dont.txt", 36 })) 37 require.NoError(t, archive.Close()) 38 require.NoError(t, f1.Close()) 39 40 if format == "tar.xz" || format == "txz" || format == "gz" { 41 _, err := Copying(f1, io.Discard, format) 42 require.Error(t, err) 43 return 44 } 45 46 f1, err = os.Open(f1.Name()) 47 require.NoError(t, err) 48 f2, err := os.Create(filepath.Join(t.TempDir(), "2.tar")) 49 require.NoError(t, err) 50 51 a, err := Copying(f1, f2, format) 52 require.NoError(t, err) 53 require.NoError(t, f1.Close()) 54 55 require.NoError(t, a.Add(config.File{ 56 Source: empty.Name(), 57 Destination: "added_later.txt", 58 })) 59 require.NoError(t, a.Add(config.File{ 60 Source: empty.Name(), 61 Destination: "ملف.txt", 62 })) 63 require.NoError(t, a.Close()) 64 require.NoError(t, f2.Close()) 65 66 require.ElementsMatch( 67 t, 68 []string{"empty.txt", "added_later.txt", "ملف.txt"}, 69 testlib.LsArchive(t, f2.Name(), format), 70 ) 71 }) 72 } 73 74 // unsupported format... 75 t.Run("7z", func(t *testing.T) { 76 _, err := New(io.Discard, "7z") 77 require.EqualError(t, err, "invalid archive format: 7z") 78 }) 79 }