github.com/mferrell/afero@v1.8.3-0.20220319163648-1d8d1d1d8040/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  }