]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/archive/zip/writer_test.go
archive/zip: add AddFS method to zip Writer
[gostls13.git] / src / archive / zip / writer_test.go
index 2b73eca814f621a9a0289f24cf0b6bbe8df35c6c..5250bc112ee0e4c7c0c4183363bfeed2e9bace1a 100644 (file)
@@ -16,6 +16,7 @@ import (
        "os"
        "strings"
        "testing"
+       "testing/fstest"
        "time"
 )
 
@@ -602,3 +603,48 @@ func BenchmarkCompressedZipGarbage(b *testing.B) {
                }
        })
 }
+
+func writeTestsToFS(tests []WriteTest) fs.FS {
+       fsys := fstest.MapFS{}
+       for _, wt := range tests {
+               fsys[wt.Name] = &fstest.MapFile{
+                       Data: wt.Data,
+                       Mode: wt.Mode,
+               }
+       }
+       return fsys
+}
+
+func TestWriterAddFS(t *testing.T) {
+       buf := new(bytes.Buffer)
+       w := NewWriter(buf)
+       tests := []WriteTest{
+               {
+                       Name: "file.go",
+                       Data: []byte("hello"),
+                       Mode: 0644,
+               },
+               {
+                       Name: "subfolder/another.go",
+                       Data: []byte("world"),
+                       Mode: 0644,
+               },
+       }
+       err := w.AddFS(writeTestsToFS(tests))
+       if err != nil {
+               t.Fatal(err)
+       }
+
+       if err := w.Close(); err != nil {
+               t.Fatal(err)
+       }
+
+       // read it back
+       r, err := NewReader(bytes.NewReader(buf.Bytes()), int64(buf.Len()))
+       if err != nil {
+               t.Fatal(err)
+       }
+       for i, wt := range tests {
+               testReadFile(t, r.File[i], &wt)
+       }
+}