fspath: Implement a connection string parser #4996

This is implemented as a state machine parser so it can emit sensible
error messages.

It does not use the connection strings elsewhere in rclone yet - see
subsequent commits.

An optional fuzzer is implemented for the Parse function.
This commit is contained in:
Nick Craig-Wood
2021-02-09 09:30:40 +00:00
parent 3b21857097
commit 8a46dd1b57
8 changed files with 613 additions and 70 deletions

View File

@@ -1474,8 +1474,9 @@ func Run(t *testing.T, opt *Opt) {
t.Skip("Can't list from root on this remote")
}
configName, configLeaf, err := fspath.Parse(subRemoteName)
parsed, err := fspath.Parse(subRemoteName)
require.NoError(t, err)
configName, configLeaf := parsed.ConfigString, parsed.Path
if configName == "" {
configName, configLeaf = path.Split(subRemoteName)
} else {