github.com/3JoB/vfs@v1.0.0/readonly_test.go (about) 1 package vfs 2 3 import ( 4 "errors" 5 "os" 6 "testing" 7 ) 8 9 var ( 10 errDummy = errors.New("Not implemented") 11 12 // Complete dummy base 13 baseFSDummy = Dummy(errDummy) 14 ro = ReadOnly(baseFSDummy) 15 ) 16 17 func TestROInterface(t *testing.T) { 18 _ = Filesystem(ro) 19 } 20 21 func TestROOpenFileFlags(t *testing.T) { 22 _, err := ro.OpenFile("name", os.O_CREATE, 0666) 23 if err != ErrReadOnly { 24 t.Errorf("Create error expected") 25 } 26 27 _, err = ro.OpenFile("name", os.O_APPEND, 0666) 28 if err != ErrReadOnly { 29 t.Errorf("Append error expected") 30 } 31 32 _, err = ro.OpenFile("name", os.O_WRONLY, 0666) 33 if err != ErrReadOnly { 34 t.Errorf("WROnly error expected") 35 } 36 37 _, err = ro.OpenFile("name", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) 38 if err != ErrReadOnly { 39 t.Errorf("Error expected") 40 } 41 42 // os.O_RDWR is allowed, dummy error is returned 43 _, err = ro.OpenFile("name", os.O_RDWR, 0) 44 if err != errDummy { 45 t.Errorf("Expected dummy error") 46 } 47 } 48 49 func TestRORemove(t *testing.T) { 50 err := ro.Remove("test") 51 if err != ErrReadOnly { 52 t.Errorf("Remove error expected") 53 } 54 } 55 56 func TestRORename(t *testing.T) { 57 err := ro.Rename("old", "new") 58 if err != ErrReadOnly { 59 t.Errorf("Rename error expected") 60 } 61 } 62 63 func TestMkDir(t *testing.T) { 64 err := ro.Mkdir("test", 0777) 65 if err != ErrReadOnly { 66 t.Errorf("Mkdir error expected") 67 } 68 } 69 70 func TestROSymlink(t *testing.T) { 71 err := ro.Symlink("old", "new") 72 if err != ErrReadOnly { 73 t.Errorf("Symlink error expected") 74 } 75 } 76 77 type writeDummyFS struct { 78 Filesystem 79 } 80 81 // Opens a dummyfile instead of error 82 func (fs writeDummyFS) OpenFile(name string, flag int, perm os.FileMode) (File, error) { 83 return DummyFile(errDummy), nil 84 } 85 86 func TestROOpenFileWrite(t *testing.T) { 87 // Dummy base with mocked OpenFile for write test 88 roWriteMock := ReadOnly(writeDummyFS{Filesystem: Dummy(errDummy)}) 89 90 f, err := roWriteMock.OpenFile("name", os.O_RDWR, 0) 91 if err != nil { 92 t.Errorf("No OpenFile error expected: %s", err) 93 } 94 written, err := f.Write([]byte("test")) 95 if err != ErrReadOnly { 96 t.Errorf("Error expected: %s", err) 97 } 98 if written > 0 { 99 t.Errorf("Written expected 0: %d", written) 100 } 101 }