mirror of
https://github.com/rclone/rclone.git
synced 2024-11-29 20:04:52 +01:00
144c1a04d4
Before this copyto would parse windows paths incorrectly. This change moves the parsing code into fspath and makes sure fspath.Split calls fspath.Parse which does the parsing correctly for This also renames fspath.RemoteParse to fspath.Parse for consistency
51 lines
1.4 KiB
Go
51 lines
1.4 KiB
Go
package fspath
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestParse(t *testing.T) {
|
|
for _, test := range []struct {
|
|
in, wantConfigName, wantFsPath string
|
|
}{
|
|
{"", "", ""},
|
|
{"/path/to/file", "", "/path/to/file"},
|
|
{"path/to/file", "", "path/to/file"},
|
|
{"remote:path/to/file", "remote", "path/to/file"},
|
|
{"remote:/path/to/file", "remote", "/path/to/file"},
|
|
} {
|
|
gotConfigName, gotFsPath := Parse(test.in)
|
|
assert.Equal(t, test.wantConfigName, gotConfigName)
|
|
assert.Equal(t, test.wantFsPath, gotFsPath)
|
|
}
|
|
}
|
|
|
|
func TestSplit(t *testing.T) {
|
|
for _, test := range []struct {
|
|
remote, wantParent, wantLeaf string
|
|
}{
|
|
{"", "", ""},
|
|
{"remote:", "remote:", ""},
|
|
{"remote:potato", "remote:", "potato"},
|
|
{"remote:/", "remote:/", ""},
|
|
{"remote:/potato", "remote:/", "potato"},
|
|
{"remote:/potato/potato", "remote:/potato/", "potato"},
|
|
{"remote:potato/sausage", "remote:potato/", "sausage"},
|
|
{"/", "/", ""},
|
|
{"/root", "/", "root"},
|
|
{"/a/b", "/a/", "b"},
|
|
{"root", "", "root"},
|
|
{"a/b", "a/", "b"},
|
|
{"root/", "root/", ""},
|
|
{"a/b/", "a/b/", ""},
|
|
} {
|
|
gotParent, gotLeaf := Split(test.remote)
|
|
assert.Equal(t, test.wantParent, gotParent, test.remote)
|
|
assert.Equal(t, test.wantLeaf, gotLeaf, test.remote)
|
|
assert.Equal(t, test.remote, gotParent+gotLeaf, fmt.Sprintf("%s: %q + %q != %q", test.remote, gotParent, gotLeaf, test.remote))
|
|
}
|
|
}
|