func TestRWVFS(t *testing.T) { tmpdir, err := ioutil.TempDir("", "rwvfs-test-") if err != nil { t.Fatal("TempDir", err) } defer os.RemoveAll(tmpdir) h := http.Handler(rwvfs.HTTPHandler(rwvfs.Map(map[string]string{}), nil)) httpServer := httptest.NewServer(h) defer httpServer.Close() httpURL, err := url.Parse(httpServer.URL) if err != nil { t.Fatal(err) } tests := []struct { fs rwvfs.FileSystem path string }{ {rwvfs.OS(tmpdir), "/foo"}, {rwvfs.Map(map[string]string{}), "/foo"}, {rwvfs.Sub(rwvfs.Map(map[string]string{}), "/x"), "/foo"}, {rwvfs.HTTP(httpURL, nil), "/foo"}, } for _, test := range tests { testWrite(t, test.fs, test.path) testMkdir(t, test.fs) testMkdirAll(t, test.fs) testGlob(t, test.fs) } }
func TestHTTP_BaseURL(t *testing.T) { m := map[string]string{"b/c": "c"} mapFS := rwvfs.Map(m) prefix := "/foo/bar/baz" h := http.Handler(http.StripPrefix(prefix, rwvfs.HTTPHandler(mapFS, nil))) httpServer := httptest.NewServer(h) defer httpServer.Close() httpURL, err := url.Parse(httpServer.URL + prefix) if err != nil { t.Fatal(err) } fs := rwvfs.HTTP(httpURL, nil) if err := rwvfs.MkdirAll(fs, "b"); err != nil { t.Errorf("MkdirAll %q: %s", "b", err) } fis, err := fs.ReadDir("b") if err != nil { t.Fatal(err) } if len(fis) != 1 { t.Errorf("got len(fis) == %d, want 1", len(fis)) } if wantName := "c"; fis[0].Name() != wantName { t.Errorf("got name == %q, want %q", fis[0].Name(), wantName) } }
func TestMap_MkdirAllWithRootNotExists(t *testing.T) { m := map[string]string{} fs := rwvfs.Sub(rwvfs.Map(m), "x") paths := []string{"a/b", "/c/d"} for _, path := range paths { if err := rwvfs.MkdirAll(fs, path); err != nil { t.Errorf("MkdirAll %q: %s", path, err) } } }
func TestMap_Walk2(t *testing.T) { m := map[string]string{"a/b/c/d": "a"} mapFS := rwvfs.Map(m) var names []string w := fs.WalkFS(".", rwvfs.Walkable(rwvfs.Sub(mapFS, "a/b"))) for w.Step() { if err := w.Err(); err != nil { t.Fatalf("walk path %q: %s", w.Path(), err) } names = append(names, w.Path()) } wantNames := []string{".", "c", "c/d"} sort.Strings(names) sort.Strings(wantNames) if !reflect.DeepEqual(names, wantNames) { t.Errorf("got entry names %v, want %v", names, wantNames) } }
func TestSub(t *testing.T) { m := rwvfs.Map(map[string]string{}) sub := rwvfs.Sub(m, "/sub") err := sub.Mkdir("/") if err != nil { t.Fatal(err) } testIsDir(t, "sub", m, "/sub") f, err := sub.Create("f1") f.Close() if err != nil { t.Fatal(err) } testIsFile(t, "sub", m, "/sub/f1") f, err = sub.Create("/f2") f.Close() if err != nil { t.Fatal(err) } testIsFile(t, "sub", m, "/sub/f2") err = sub.Mkdir("/d1") if err != nil { t.Fatal(err) } testIsDir(t, "sub", m, "/sub/d1") err = sub.Mkdir("/d2") if err != nil { t.Fatal(err) } testIsDir(t, "sub", m, "/sub/d2") }
func idxUnitStore() UnitStoreImporter { fs := rwvfs.Map(map[string]string{}) return newIndexedUnitStore(fs, "") }
func newFSUnitStore() UnitStoreImporter { fs := rwvfs.Map(map[string]string{}) return &fsUnitStore{fs: fs} }