summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--file.go10
-rw-r--r--file_test.go9
2 files changed, 18 insertions, 1 deletions
diff --git a/file.go b/file.go
index c0092a2..a430c5f 100644
--- a/file.go
+++ b/file.go
@@ -196,6 +196,14 @@ func (f *File) writeToZip(zw *zip.Writer) error {
_, err = fi.Write(content.([]byte))
return true
})
-
+ f.tempFiles.Range(func(path, content interface{}) bool {
+ var fi io.Writer
+ fi, err = zw.Create(path.(string))
+ if err != nil {
+ return false
+ }
+ _, err = fi.Write(f.readBytes(path.(string)))
+ return true
+ })
return err
}
diff --git a/file_test.go b/file_test.go
index ee5d322..8e65c5d 100644
--- a/file_test.go
+++ b/file_test.go
@@ -62,6 +62,15 @@ func TestWriteTo(t *testing.T) {
_, err := f.WriteTo(bufio.NewWriter(&buf))
assert.Nil(t, err)
}
+ // Test write with temporary file
+ {
+ f, buf := File{tempFiles: sync.Map{}}, bytes.Buffer{}
+ const maxUint16 = 1<<16 - 1
+ f.tempFiles.Store("s", "")
+ f.tempFiles.Store(strings.Repeat("s", maxUint16+1), "")
+ _, err := f.WriteTo(bufio.NewWriter(&buf))
+ assert.EqualError(t, err, "zip: FileHeader.Name too long")
+ }
}
func TestClose(t *testing.T) {