diff options
| author | Marin Ivanov <[email protected]> | 2022-08-15 03:33:22 +0300 |
|---|---|---|
| committer | Marin Ivanov <[email protected]> | 2022-08-15 03:33:22 +0300 |
| commit | 04200620823cf9b11e0185234429af6180110adc (patch) | |
| tree | 6a63c0cabec90c3562c939d38c8e51e99dd48e0d | |
| parent | 2f1bb584258c53d74f97b04a6045f0e0b838f061 (diff) | |
Test Remove, RemoveAll, Rename
| -rw-r--r-- | file.go | 2 | ||||
| -rw-r--r-- | fs.go | 5 | ||||
| -rw-r--r-- | fs_test.go | 60 |
3 files changed, 60 insertions, 7 deletions
@@ -72,7 +72,7 @@ func (f *File) Name() string { func (f *File) readdir(count int, onlyDir bool) ([]os.FileInfo, error) { if !isDirPath(f.key) { - return nil, ErrUnsupported + return nil, ErrNotDirectory } if count == 0 { return []os.FileInfo{}, nil @@ -25,6 +25,7 @@ var ( ErrUnsupported = errors.New("unsupported operation") ErrInvalidProtocol = errors.New("invalid protocol") ErrInvalidOpenFlag = errors.New("invalid open flag, expects either O_WRONLY or O_RDONLY") + ErrNotDirectory = errors.New("not a directory") ) type Fs struct { @@ -150,8 +151,8 @@ func (fs *Fs) RemoveAll(path string) error { ctx, cancel := fs.contextWithTimeout() defer cancel() - if !strings.HasSuffix(path, "/") { - path += "/" + if !isDirPath(path) { + return ErrNotDirectory } objectsCh := fs.client.ListObjects(ctx, fs.bucket, minio.ListObjectsOptions{Prefix: path}) errc := fs.client.RemoveObjects(ctx, fs.bucket, objectsCh, minio.RemoveObjectsOptions{}) @@ -1,6 +1,7 @@ package s3 import ( + "os" "testing" "time" @@ -58,6 +59,14 @@ func TestFsChtimes(t *testing.T) { is.Equal(err, ErrUnsupported) } +func TestFsWriteFile(t *testing.T) { + is := is.New(t) + afs, err := newTestAfs() + is.NoErr(err) + err = afs.WriteFile("dir/file", []byte("testdata"), 0) + is.NoErr(err) +} + func TestFsStat(t *testing.T) { is := is.New(t) afs, err := newTestAfs() @@ -65,6 +74,7 @@ func TestFsStat(t *testing.T) { info, err := afs.Stat("dir/file") is.NoErr(err) is.Equal(info.Name(), "file") + is.Equal(info.Size(), int64(8)) } func TestFsStatNoExist(t *testing.T) { @@ -75,13 +85,13 @@ func TestFsStatNoExist(t *testing.T) { is.Equal(err, afero.ErrFileNotFound) } -func TestFsOpenRead(t *testing.T) { +func TestFsReadFile(t *testing.T) { is := is.New(t) afs, err := newTestAfs() is.NoErr(err) b, err := afs.ReadFile("dir/file") is.NoErr(err) - is.Equal(b, []byte("test")) + is.Equal(b, []byte("testdata")) } func TestFsReadNoExist(t *testing.T) { @@ -92,11 +102,53 @@ func TestFsReadNoExist(t *testing.T) { is.Equal(err, afero.ErrFileNotFound) } -func TestFsOpenWrite(t *testing.T) { +func TestFsRemove(t *testing.T) { + is := is.New(t) + afs, err := newTestAfs() + is.NoErr(err) + err = afs.Remove("dir/file") + is.NoErr(err) +} + +func TestFsRemoveNoExist(t *testing.T) { + is := is.New(t) + afs, err := newTestAfs() + is.NoErr(err) + err = afs.Remove("non-existent") + is.NoErr(err) +} + +func TestFsRemoveAll(t *testing.T) { + is := is.New(t) + afs, err := newTestAfs() + is.NoErr(err) + err = afs.WriteFile("dir/file1", []byte("testdata"), 0) + is.NoErr(err) + err = afs.WriteFile("dir/file2", []byte("testdata"), 0) + is.NoErr(err) + err = afs.WriteFile("persist/file0", []byte("testdata"), 0) + is.NoErr(err) + err = afs.RemoveAll("dir/") + is.NoErr(err) + _, err = afs.Stat("persist/file0") + is.NoErr(err) + err = afs.RemoveAll("persist/") + is.NoErr(err) +} + +func TestFsRename(t *testing.T) { is := is.New(t) afs, err := newTestAfs() is.NoErr(err) - err = afs.WriteFile("dir/file_test", []byte("testdata"), 0) + err = afs.WriteFile("dir/file", []byte("testdata"), 0) + is.NoErr(err) + err = afs.Rename("dir/file", "dir/file2") + is.NoErr(err) + _, err = afs.Stat("dir/file2") + is.NoErr(err) + _, err = afs.Stat("dir/file") + is.Equal(err, os.ErrNotExist) + err = afs.Remove("dir/file2") is.NoErr(err) } |
