Merge pull request #219 from ivandeex/master

trim trailing whitespace from the list commands
This commit is contained in:
Julien Laffaye 2021-03-02 14:57:56 -05:00 committed by GitHub
commit c3c8c7ac65
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 2 deletions

View File

@ -7,6 +7,8 @@ import (
"strings"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
const (
@ -300,3 +302,20 @@ func TestMissingFolderDeleteDirRecur(t *testing.T) {
// Wait for the connection to close
mock.Wait()
}
func TestListCurrentDir(t *testing.T) {
mock, c := openConn(t, "127.0.0.1")
_, err := c.List("")
assert.NoError(t, err)
assert.Equal(t, "LIST", mock.lastFull, "LIST must not have a trailing whitespace")
_, err = c.NameList("")
assert.NoError(t, err)
assert.Equal(t, "NLST", mock.lastFull, "NLST must not have a trailing whitespace")
err = c.Quit()
assert.NoError(t, err)
mock.Wait()
}

View File

@ -18,6 +18,7 @@ type ftpMock struct {
listener *net.TCPListener
proto *textproto.Conn
commands []string // list of received commands
lastFull string // full last command
rest int
fileCont *bytes.Buffer
dataConn *mockDataConn
@ -66,6 +67,7 @@ func (mock *ftpMock) listen(t *testing.T) {
for {
fullCommand, _ := mock.proto.ReadLine()
mock.lastFull = fullCommand
cmdParts := strings.Split(fullCommand, " ")

12
ftp.go
View File

@ -539,7 +539,11 @@ func (c *ServerConn) cmdDataConnFrom(offset uint64, format string, args ...inter
// NameList issues an NLST FTP command.
func (c *ServerConn) NameList(path string) (entries []string, err error) {
conn, err := c.cmdDataConnFrom(0, "NLST %s", path)
space := " "
if path == "" {
space = ""
}
conn, err := c.cmdDataConnFrom(0, "NLST%s%s", space, path)
if err != nil {
return nil, err
}
@ -570,7 +574,11 @@ func (c *ServerConn) List(path string) (entries []*Entry, err error) {
parser = parseListLine
}
conn, err := c.cmdDataConnFrom(0, "%s %s", cmd, path)
space := " "
if path == "" {
space = ""
}
conn, err := c.cmdDataConnFrom(0, "%s%s%s", cmd, space, path)
if err != nil {
return nil, err
}