Skip to content

Commit d05c887

Browse files
committed
SootWrapper release archive changed to one file
1 parent 0407550 commit d05c887

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ jobs:
9191
if: needs.calculate-checksum.outputs.hash != needs.calculate-checksum.outputs.prev_hash
9292
run: |
9393
cd java/common/target/
94-
zip -r soot-wrapper-${{ matrix.java-version }}.zip *.jar
94+
zip -r soot-wrapper-${{ matrix.java-version }}.zip SootWrapper-5.1.jar // Use only the jar which includes dependencies
9595
mv soot-wrapper-${{ matrix.java-version }}.zip ../../../soot-wrapper-${{ matrix.java-version }}.zip
9696
9797
- name: Upload the archive

internal/io/archive.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package io
22

33
import (
44
"encoding/base64"
5+
"fmt"
56
"path"
67
)
78

@@ -48,7 +49,7 @@ func (arc *Archive) ZipFile(sourcePath string, targetPath string, zippedName str
4849
}
4950
defer fs.CloseFile(zipFile)
5051
zipWriter := zip.NewWriter(zipFile)
51-
defer zip.CloseWriter(zipWriter)
52+
defer zip.CloseWriter(zipWriter) //nolint
5253

5354
info, err := fs.StatFile(zipFile)
5455
if err != nil {
@@ -88,7 +89,11 @@ func (arc *Archive) UnzipFile(sourcePath string, targetPath string) error {
8889
}
8990
defer arc.zip.CloseReader(r) //nolint
9091

91-
f := r.File[1] //TODO: Change to first file and error-check for multiple once sootwrapper builds only one
92+
if len(r.File) != 1 {
93+
return fmt.Errorf("cannot unzip archive which does not contain exactly one file")
94+
}
95+
96+
f := r.File[0]
9297
outFile, err := arc.fs.Create(targetPath)
9398
if err != nil {
9499
return err

internal/io/archive_test.go

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func TestUnzipFileReadFileError(t *testing.T) {
206206

207207
func TestUnzipFileCreateError(t *testing.T) {
208208
reader := zip.Reader{
209-
File: []*zip.File{nil, nil},
209+
File: []*zip.File{nil},
210210
}
211211
readCloser := zip.ReadCloser{Reader: reader} //nolint
212212
fsMock := ioTestData.FileSystemMock{CreateError: fmt.Errorf("%s", t.Name())}
@@ -223,7 +223,7 @@ func TestUnzipFileCreateError(t *testing.T) {
223223

224224
func TestUnzipFileOpenError(t *testing.T) {
225225
reader := zip.Reader{
226-
File: []*zip.File{nil, nil},
226+
File: []*zip.File{nil},
227227
}
228228
readCloser := zip.ReadCloser{Reader: reader} //nolint
229229
fsMock := ioTestData.FileSystemMock{}
@@ -237,10 +237,8 @@ func TestUnzipFileOpenError(t *testing.T) {
237237
assert.Error(t, err)
238238
assert.Equal(t, err.Error(), t.Name())
239239
}
240-
241240
func TestUnzipFileCopyError(t *testing.T) {
242241
r, err := zipStruct.OpenReader("testdata/text.zip")
243-
r.File = append(r.File, r.File[0]) // Hack solution (:
244242
assert.NoError(t, err)
245243
defer zipStruct.CloseReader(r) //nolint
246244

@@ -251,8 +249,26 @@ func TestUnzipFileCopyError(t *testing.T) {
251249
fs: fsMock,
252250
zip: zipMock,
253251
}
254-
fmt.Println(t.Name())
255252
err = a.UnzipFile("", "")
256253
assert.Error(t, err)
257254
assert.Equal(t, err.Error(), t.Name())
258255
}
256+
257+
func TestUnzipFileNotSingleFile(t *testing.T) {
258+
reader := zip.Reader{
259+
File: []*zip.File{nil, nil},
260+
}
261+
readCloser := zip.ReadCloser{Reader: reader} //nolint
262+
defer zipStruct.CloseReader(&readCloser) //nolint
263+
264+
fsMock := ioTestData.FileSystemMock{}
265+
zipMock := ioTestData.ZipMock{ReaderCloser: &readCloser}
266+
a := Archive{
267+
workingDirectory: ".",
268+
fs: fsMock,
269+
zip: zipMock,
270+
}
271+
err := a.UnzipFile("", "")
272+
assert.Error(t, err)
273+
assert.Equal(t, err.Error(), "cannot unzip archive which does not contain exactly one file")
274+
}

0 commit comments

Comments
 (0)