git-lfs/tq/transfer_test.go

142 lines
3.2 KiB
Go
Raw Normal View History

package tq
2016-05-31 10:04:17 +00:00
import (
"testing"
2017-01-04 16:05:29 +00:00
"github.com/git-lfs/git-lfs/lfsapi"
2016-05-31 10:04:17 +00:00
"github.com/stretchr/testify/assert"
2017-01-04 16:05:29 +00:00
"github.com/stretchr/testify/require"
2016-05-31 10:04:17 +00:00
)
type testAdapter struct {
name string
dir Direction
}
func (a *testAdapter) Name() string {
return a.name
}
2016-05-31 10:04:17 +00:00
func (a *testAdapter) Direction() Direction {
return a.dir
}
func (a *testAdapter) Begin(cfg AdapterConfig, cb ProgressCallback) error {
2016-05-31 10:04:17 +00:00
return nil
}
func (a *testAdapter) Add(ts ...*Transfer) (retries <-chan TransferResult) {
return nil
2016-05-31 10:04:17 +00:00
}
2016-05-31 10:04:17 +00:00
func (a *testAdapter) End() {
}
2016-05-31 10:04:17 +00:00
func (a *testAdapter) ClearTempStorage() error {
return nil
}
func newTestAdapter(name string, dir Direction) Adapter {
2016-05-31 10:04:17 +00:00
return &testAdapter{name, dir}
}
func newRenamedTestAdapter(name string, dir Direction) Adapter {
2016-05-31 10:04:17 +00:00
return &testAdapter{"RENAMED", dir}
}
func testBasicAdapterExists(t *testing.T) {
m := NewManifest()
2016-05-31 10:04:17 +00:00
assert := assert.New(t)
dls := m.GetDownloadAdapterNames()
2016-05-31 10:04:17 +00:00
if assert.NotNil(dls) {
assert.Equal([]string{"basic"}, dls)
}
uls := m.GetUploadAdapterNames()
2016-05-31 10:04:17 +00:00
if assert.NotNil(uls) {
assert.Equal([]string{"basic"}, uls)
}
da := m.NewDownloadAdapter("basic")
2016-05-31 10:04:17 +00:00
if assert.NotNil(da) {
assert.Equal("basic", da.Name())
assert.Equal(Download, da.Direction())
}
ua := m.NewUploadAdapter("basic")
2016-05-31 10:04:17 +00:00
if assert.NotNil(ua) {
assert.Equal("basic", ua.Name())
assert.Equal(Upload, ua.Direction())
}
}
func testAdapterRegAndOverride(t *testing.T) {
m := NewManifest()
2016-05-31 10:04:17 +00:00
assert := assert.New(t)
assert.Nil(m.NewDownloadAdapter("test"))
assert.Nil(m.NewUploadAdapter("test"))
2016-05-31 10:04:17 +00:00
m.RegisterNewAdapterFunc("test", Upload, newTestAdapter)
assert.Nil(m.NewDownloadAdapter("test"))
assert.NotNil(m.NewUploadAdapter("test"))
2016-05-31 10:04:17 +00:00
m.RegisterNewAdapterFunc("test", Download, newTestAdapter)
da := m.NewDownloadAdapter("test")
2016-05-31 10:04:17 +00:00
if assert.NotNil(da) {
assert.Equal("test", da.Name())
assert.Equal(Download, da.Direction())
}
ua := m.NewUploadAdapter("test")
2016-05-31 10:04:17 +00:00
if assert.NotNil(ua) {
assert.Equal("test", ua.Name())
assert.Equal(Upload, ua.Direction())
}
// Test override
m.RegisterNewAdapterFunc("test", Upload, newRenamedTestAdapter)
ua = m.NewUploadAdapter("test")
2016-05-31 10:04:17 +00:00
if assert.NotNil(ua) {
assert.Equal("RENAMED", ua.Name())
assert.Equal(Upload, ua.Direction())
}
da = m.NewDownloadAdapter("test")
2016-05-31 10:04:17 +00:00
if assert.NotNil(da) {
assert.Equal("test", da.Name())
assert.Equal(Download, da.Direction())
}
m.RegisterNewAdapterFunc("test", Download, newRenamedTestAdapter)
da = m.NewDownloadAdapter("test")
2016-05-31 10:04:17 +00:00
if assert.NotNil(da) {
assert.Equal("RENAMED", da.Name())
assert.Equal(Download, da.Direction())
}
}
func testAdapterRegButBasicOnly(t *testing.T) {
cli, err := lfsapi.NewClient(nil, lfsapi.UniqTestEnv(map[string]string{
2017-01-04 16:05:29 +00:00
"lfs.basictransfersonly": "yes",
}))
require.Nil(t, err)
m := NewManifestWithClient(cli)
assert := assert.New(t)
m.RegisterNewAdapterFunc("test", Upload, newTestAdapter)
m.RegisterNewAdapterFunc("test", Download, newTestAdapter)
// Will still be created if we ask for them
assert.NotNil(m.NewUploadAdapter("test"))
assert.NotNil(m.NewDownloadAdapter("test"))
// But list will exclude
ld := m.GetDownloadAdapterNames()
assert.Equal([]string{BasicAdapterName}, ld)
lu := m.GetUploadAdapterNames()
assert.Equal([]string{BasicAdapterName}, lu)
}