11package github
22
33import (
4+ "context"
45 "fmt"
56 "io"
67 "net/http"
@@ -10,7 +11,7 @@ import (
1011 "testing"
1112
1213 "github.com/google/go-cmp/cmp"
13- "github.com/mholt/archiver "
14+ "github.com/mholt/archives "
1415)
1516
1617func TestNewReleaseFromVersion (t * testing.T ) {
@@ -37,11 +38,16 @@ func TestDownloadRelease(t *testing.T) {
3738 t .Error (err )
3839 }
3940
41+ _ , err = os .Create (filepath .Join (dir , "test_file" ))
42+ if err != nil {
43+ t .Error (err )
44+ }
45+
4046 server := httptest .NewServer (http .HandlerFunc (func (rw http.ResponseWriter , req * http.Request ) {
4147 rw .Header ().Set ("Content-type" , "application/octet-stream" )
4248 rw .Header ().Set ("Content-Disposition" , "attachment; filename='release.zip'" )
4349
44- err = createZipFile ([] string { dir } , rw )
50+ err = createZipFile (filepath . Join ( tmpDir , dir ) , rw )
4551 if err != nil {
4652 t .Error (err )
4753 }
@@ -54,7 +60,13 @@ func TestDownloadRelease(t *testing.T) {
5460
5561 const expectedVersion = "1.0.0"
5662
57- release , err := DownloadRelease ("roots/trellis" , expectedVersion , tmpDir , filepath .Join (tmpDir , "test_release_dir" ))
63+ destPath := filepath .Join (tmpDir , "test_release_dir" )
64+ release , err := DownloadRelease ("roots/trellis" , expectedVersion , tmpDir , destPath )
65+
66+ expectedPath := filepath .Join (tmpDir , "test_release_dir" , "test_file" )
67+ if _ , err := os .Stat (expectedPath ); os .IsNotExist (err ) {
68+ t .Errorf ("expected extracted file %s to exist" , expectedPath )
69+ }
5870
5971 if expectedVersion != release .Version {
6072 t .Errorf ("expected version %s but got %s" , expectedVersion , release .Version )
@@ -111,44 +123,21 @@ func TestFetechLatestRelease(t *testing.T) {
111123 }
112124}
113125
114- func createZipFile (files []string , writer io.Writer ) error {
115- zip := archiver .NewZip ()
126+ func createZipFile (dir string , writer io.Writer ) error {
127+ var format archives.Zip
128+ ctx := context .Background ()
129+
130+ files , err := archives .FilesFromDisk (ctx , nil , map [string ]string {
131+ dir : filepath .Base (dir ),
132+ })
116133
117- err := zip .Create (writer )
118134 if err != nil {
119135 return err
120136 }
121137
122- defer zip .Close ()
123-
124- for _ , fname := range files {
125- info , err := os .Stat (fname )
126- if err != nil {
127- return err
128- }
129-
130- internalName , err := archiver .NameInArchive (info , fname , fname )
131- if err != nil {
132- return err
133- }
134-
135- file , err := os .Open (fname )
136- if err != nil {
137- return err
138- }
139-
140- err = zip .Write (archiver.File {
141- FileInfo : archiver.FileInfo {
142- FileInfo : info ,
143- CustomName : internalName ,
144- },
145- ReadCloser : file ,
146- })
147-
148- if err != nil {
149- return err
150- }
138+ err = format .Archive (ctx , writer , files )
139+ if err != nil {
140+ return err
151141 }
152-
153142 return nil
154143}
0 commit comments