"os"
"strings"
"testing"
+ "testing/fstest"
"time"
)
}
})
}
+
+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)
+ }
+}