github.com/jomix/afero@v1.1.1/ro_regexp_test.go (about) 1 package afero 2 3 import ( 4 "regexp" 5 "testing" 6 ) 7 8 func TestFilterReadOnly(t *testing.T) { 9 fs := &ReadOnlyFs{source: &MemMapFs{}} 10 _, err := fs.Create("/file.txt") 11 if err == nil { 12 t.Errorf("Did not fail to create file") 13 } 14 // t.Logf("ERR=%s", err) 15 } 16 17 func TestFilterReadonlyRemoveAndRead(t *testing.T) { 18 mfs := &MemMapFs{} 19 fh, err := mfs.Create("/file.txt") 20 fh.Write([]byte("content here")) 21 fh.Close() 22 23 fs := NewReadOnlyFs(mfs) 24 err = fs.Remove("/file.txt") 25 if err == nil { 26 t.Errorf("Did not fail to remove file") 27 } 28 29 fh, err = fs.Open("/file.txt") 30 if err != nil { 31 t.Errorf("Failed to open file: %s", err) 32 } 33 34 buf := make([]byte, len("content here")) 35 _, err = fh.Read(buf) 36 fh.Close() 37 if string(buf) != "content here" { 38 t.Errorf("Failed to read file: %s", err) 39 } 40 41 err = mfs.Remove("/file.txt") 42 if err != nil { 43 t.Errorf("Failed to remove file") 44 } 45 46 fh, err = fs.Open("/file.txt") 47 if err == nil { 48 fh.Close() 49 t.Errorf("File still present") 50 } 51 } 52 53 func TestFilterRegexp(t *testing.T) { 54 fs := NewRegexpFs(&MemMapFs{}, regexp.MustCompile(`\.txt$`)) 55 _, err := fs.Create("/file.html") 56 if err == nil { 57 58 t.Errorf("Did not fail to create file") 59 } 60 // t.Logf("ERR=%s", err) 61 } 62 63 func TestFilterRORegexpChain(t *testing.T) { 64 rofs := &ReadOnlyFs{source: &MemMapFs{}} 65 fs := &RegexpFs{re: regexp.MustCompile(`\.txt$`), source: rofs} 66 _, err := fs.Create("/file.txt") 67 if err == nil { 68 t.Errorf("Did not fail to create file") 69 } 70 // t.Logf("ERR=%s", err) 71 } 72 73 func TestFilterRegexReadDir(t *testing.T) { 74 mfs := &MemMapFs{} 75 fs1 := &RegexpFs{re: regexp.MustCompile(`\.txt$`), source: mfs} 76 fs := &RegexpFs{re: regexp.MustCompile(`^a`), source: fs1} 77 78 mfs.MkdirAll("/dir/sub", 0777) 79 for _, name := range []string{"afile.txt", "afile.html", "bfile.txt"} { 80 for _, dir := range []string{"/dir/", "/dir/sub/"} { 81 fh, _ := mfs.Create(dir + name) 82 fh.Close() 83 } 84 } 85 86 files, _ := ReadDir(fs, "/dir") 87 if len(files) != 2 { // afile.txt, sub 88 t.Errorf("Got wrong number of files: %#v", files) 89 } 90 91 f, _ := fs.Open("/dir/sub") 92 names, _ := f.Readdirnames(-1) 93 if len(names) != 1 { 94 t.Errorf("Got wrong number of names: %v", names) 95 } 96 }