diff --git a/client.go b/client.go index cdd5669..8f6e048 100644 --- a/client.go +++ b/client.go @@ -638,7 +638,7 @@ func (c *Client) StatVFS(path string) (*StatVFS, error) { // the resquest failed case sshFxpStatus: - return nil, errors.New(fxp(sshFxpStatus).String()) + return nil, normaliseError(unmarshalStatus(id, data)) default: return nil, unimplementedPacketErr(typ) diff --git a/request-server_test.go b/request-server_test.go index f9c9b29..af60678 100644 --- a/request-server_test.go +++ b/request-server_test.go @@ -745,6 +745,23 @@ func TestRequestStatVFS(t *testing.T) { require.Equal(t, expected.Bavail, vfs.Bavail) require.Equal(t, expected.Bfree, vfs.Bfree) require.Equal(t, expected.Blocks, vfs.Blocks) + + checkRequestServerAllocator(t, p) +} + +func TestRequestStatVFSError(t *testing.T) { + if runtime.GOOS != "linux" && runtime.GOOS != "darwin" { + t.Skip("StatVFS is implemented on linux and darwin") + } + + p := clientRequestServerPair(t) + defer p.Close() + + _, err := p.cli.StatVFS("a missing path") + require.Error(t, err) + require.True(t, os.IsNotExist(err)) + + checkRequestServerAllocator(t, p) } func TestCleanDisconnect(t *testing.T) {