FTP: implements ClientDriverExtensionRemoveDir

Fixes #149 for FTP too
This commit is contained in:
Nicola Murino
2020-08-03 17:36:43 +02:00
parent 11ceaa8850
commit 8839c34d53
9 changed files with 29 additions and 34 deletions

View File

@@ -244,6 +244,8 @@ func TestBasicFTPHandling(t *testing.T) {
}
err = client.Delete(path.Join("/", testDir, testFileName))
assert.NoError(t, err)
err = client.Delete(testDir)
assert.Error(t, err)
err = client.RemoveDir(testDir)
assert.NoError(t, err)

View File

@@ -86,7 +86,8 @@ func (c *Connection) OpenFile(name string, flag int, perm os.FileMode) (afero.Fi
return nil, errNotImplemented
}
// Remove removes a file or an empty directory
// Remove removes a file.
// We implements ClientDriverExtensionRemoveDir for directories
func (c *Connection) Remove(name string) error {
c.UpdateLastActivity()
@@ -102,7 +103,8 @@ func (c *Connection) Remove(name string) error {
}
if fi.IsDir() && fi.Mode()&os.ModeSymlink != os.ModeSymlink {
return c.RemoveDir(p, name)
c.Log(logger.LevelDebug, "cannot remove %#v is not a file/symlink", p)
return c.GetGenericError()
}
return c.RemoveFile(p, name, fi)
}
@@ -215,6 +217,18 @@ func (c *Connection) AllocateSpace(size int) error {
return common.ErrQuotaExceeded
}
// RemoveDir implements ClientDriverExtensionRemoveDir
func (c *Connection) RemoveDir(name string) error {
c.UpdateLastActivity()
p, err := c.Fs.ResolvePath(name)
if err != nil {
return c.GetFsError(err)
}
return c.BaseConnection.RemoveDir(p, name)
}
// ReadDir implements ClientDriverExtensionFilelist
func (c *Connection) ReadDir(name string) ([]os.FileInfo, error) {
c.UpdateLastActivity()

View File

@@ -268,6 +268,10 @@ func TestResolvePathErrors(t *testing.T) {
if assert.Error(t, err) {
assert.EqualError(t, err, common.ErrGenericFailure.Error())
}
err = connection.RemoveDir("")
if assert.Error(t, err) {
assert.EqualError(t, err, common.ErrGenericFailure.Error())
}
err = connection.Rename("", "")
if assert.Error(t, err) {
assert.EqualError(t, err, common.ErrGenericFailure.Error())