diff --git a/cmd/tree/tree.go b/cmd/tree/tree.go index 740b5121e..c11ce6496 100644 --- a/cmd/tree/tree.go +++ b/cmd/tree/tree.go @@ -6,6 +6,7 @@ import ( "log" "os" "path" + "path/filepath" "strings" "time" @@ -195,6 +196,7 @@ func NewFs(dirs fs.DirTree) Fs { // Stat returns info about the file func (dirs Fs) Stat(filePath string) (fi os.FileInfo, err error) { defer fs.Trace(nil, "filePath=%q", filePath)("fi=%+v, err=%v", &fi, &err) + filePath = filepath.ToSlash(filePath) filePath = strings.TrimLeft(filePath, "/") if filePath == "" { return &FileInfo{fs.NewDir("", time.Now())}, nil @@ -209,6 +211,7 @@ func (dirs Fs) Stat(filePath string) (fi os.FileInfo, err error) { // ReadDir returns info about the directory and fills up the directory cache func (dirs Fs) ReadDir(dir string) (names []string, err error) { defer fs.Trace(nil, "dir=%s", dir)("names=%+v, err=%v", &names, &err) + dir = filepath.ToSlash(dir) dir = strings.TrimLeft(dir, "/") entries, ok := dirs[dir] if !ok { diff --git a/cmd/tree/tree_test.go b/cmd/tree/tree_test.go index 67a505987..62ac30425 100644 --- a/cmd/tree/tree_test.go +++ b/cmd/tree/tree_test.go @@ -6,6 +6,7 @@ import ( "github.com/a8m/tree" "github.com/ncw/rclone/fs" + "github.com/ncw/rclone/fstest" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -13,12 +14,10 @@ import ( ) func TestTree(t *testing.T) { + fstest.Initialise() + buf := new(bytes.Buffer) - // Never ask for passwords, fail instead. - // If your local config is encrypted set environment variable - // "RCLONE_CONFIG_PASS=hunter2" (or your password) - *fs.AskPassword = false - fs.LoadConfig() + f, err := fs.NewFs("testfiles") require.NoError(t, err) err = Tree(f, buf, new(tree.Options))