b2: factor version handling into lib/version
Standardizes the filename version tagging so that it can be used by any backend.
This commit is contained in:
parent
c1492cfa28
commit
c163e6b250
4 changed files with 137 additions and 62 deletions
73
lib/version/version_test.go
Normal file
73
lib/version/version_test.go
Normal file
|
@ -0,0 +1,73 @@
|
|||
package version_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/rclone/rclone/fstest"
|
||||
"github.com/rclone/rclone/lib/version"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
var (
|
||||
emptyT time.Time
|
||||
t0 = fstest.Time("1970-01-01T01:01:01.123456789Z")
|
||||
t0r = fstest.Time("1970-01-01T01:01:01.123000000Z")
|
||||
t1 = fstest.Time("2001-02-03T04:05:06.123000000Z")
|
||||
)
|
||||
|
||||
func TestVersionAdd(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
t time.Time
|
||||
in string
|
||||
expected string
|
||||
}{
|
||||
{t0, "potato.txt", "potato-v1970-01-01-010101-123.txt"},
|
||||
{t0, "potato-v2001-02-03-040506-123.txt", "potato-v2001-02-03-040506-123-v1970-01-01-010101-123.txt"},
|
||||
{t0, "123.!!lipps", "123-v1970-01-01-010101-123.!!lipps"},
|
||||
{t1, "potato", "potato-v2001-02-03-040506-123"},
|
||||
{t1, "", "-v2001-02-03-040506-123"},
|
||||
} {
|
||||
actual := version.Add(test.in, test.t)
|
||||
assert.Equal(t, test.expected, actual, test.in)
|
||||
}
|
||||
}
|
||||
|
||||
func TestVersionRemove(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
in string
|
||||
expectedT time.Time
|
||||
expectedRemote string
|
||||
}{
|
||||
{"potato.txt", emptyT, "potato.txt"},
|
||||
{"potato-v1970-01-01-010101-123.txt", t0r, "potato.txt"},
|
||||
{"potato-v2001-02-03-040506-123-v1970-01-01-010101-123.txt", t0r, "potato-v2001-02-03-040506-123.txt"},
|
||||
{"potato-v2001-02-03-040506-123", t1, "potato"},
|
||||
{"-v2001-02-03-040506-123", t1, ""},
|
||||
{"potato-v2A01-02-03-040506-123", emptyT, "potato-v2A01-02-03-040506-123"},
|
||||
{"potato-v2001-02-03-040506=123", emptyT, "potato-v2001-02-03-040506=123"},
|
||||
} {
|
||||
actualT, actualRemote := version.Remove(test.in)
|
||||
assert.Equal(t, test.expectedT, actualT, test.in)
|
||||
assert.Equal(t, test.expectedRemote, actualRemote, test.in)
|
||||
}
|
||||
}
|
||||
|
||||
func TestVersionMatch(t *testing.T) {
|
||||
for _, test := range []struct {
|
||||
in string
|
||||
expected bool
|
||||
}{
|
||||
{"potato.txt", false},
|
||||
{"potato", false},
|
||||
{"", false},
|
||||
{"potato-v1970-01-01-010101-123.txt", true},
|
||||
{"potato-v2001-02-03-040506-123-v1970-01-01-010101-123.txt", true},
|
||||
{"potato-v2001-02-03-040506-123", true},
|
||||
{"-v2001-02-03-040506-123", true},
|
||||
{"-v9999-99-99-999999-999", true},
|
||||
} {
|
||||
actual := version.Match(test.in)
|
||||
assert.Equal(t, test.expected, actual, test.in)
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue