From 7e798fc34d703770e3391de8ecd65edea0d40181 Mon Sep 17 00:00:00 2001 From: Antonio Jesus Navarro Perez Date: Tue, 16 May 2017 16:08:20 +0200 Subject: transport/server: use Endpoint string representation as a map key. Two endpoints are not equals between them, even if they were generated using the same url or path. --- plumbing/transport/server/loader.go | 4 ++-- plumbing/transport/server/loader_test.go | 16 ++++++++++++++++ plumbing/transport/server/server_test.go | 4 ++-- 3 files changed, 20 insertions(+), 4 deletions(-) (limited to 'plumbing') diff --git a/plumbing/transport/server/loader.go b/plumbing/transport/server/loader.go index b51a795..386c2f0 100644 --- a/plumbing/transport/server/loader.go +++ b/plumbing/transport/server/loader.go @@ -44,13 +44,13 @@ func (l *fsLoader) Load(ep transport.Endpoint) (storer.Storer, error) { // MapLoader is a Loader that uses a lookup map of storer.Storer by // transport.Endpoint. -type MapLoader map[transport.Endpoint]storer.Storer +type MapLoader map[string]storer.Storer // Load returns a storer.Storer for given a transport.Endpoint by looking it up // in the map. Returns transport.ErrRepositoryNotFound if the endpoint does not // exist. func (l MapLoader) Load(ep transport.Endpoint) (storer.Storer, error) { - s, ok := l[ep] + s, ok := l[ep.String()] if !ok { return nil, transport.ErrRepositoryNotFound } diff --git a/plumbing/transport/server/loader_test.go b/plumbing/transport/server/loader_test.go index 5f32cb0..38fabe3 100644 --- a/plumbing/transport/server/loader_test.go +++ b/plumbing/transport/server/loader_test.go @@ -5,6 +5,7 @@ import ( "path/filepath" "gopkg.in/src-d/go-git.v4/plumbing/transport" + "gopkg.in/src-d/go-git.v4/storage/memory" . "gopkg.in/check.v1" ) @@ -54,3 +55,18 @@ func (s *LoaderSuite) TestLoadIgnoreHost(c *C) { c.Assert(err, IsNil) c.Assert(sto, NotNil) } + +func (s *LoaderSuite) TestMapLoader(c *C) { + ep, err := transport.NewEndpoint("file://test") + sto := memory.NewStorage() + c.Assert(err, IsNil) + + loader := MapLoader{ep.String(): sto} + + ep, err = transport.NewEndpoint("file://test") + c.Assert(err, IsNil) + + loaderSto, err := loader.Load(ep) + c.Assert(err, IsNil) + c.Assert(sto, Equals, loaderSto) +} diff --git a/plumbing/transport/server/server_test.go b/plumbing/transport/server/server_test.go index 2459ab2..6a64674 100644 --- a/plumbing/transport/server/server_test.go +++ b/plumbing/transport/server/server_test.go @@ -53,14 +53,14 @@ func (s *BaseSuite) prepareRepositories(c *C, basic *transport.Endpoint, *basic = ep sto, err := filesystem.NewStorage(fs) c.Assert(err, IsNil) - s.loader[ep] = sto + s.loader[ep.String()] = sto path = "/empty.git" url = fmt.Sprintf("%s://%s", inprocScheme, path) ep, err = transport.NewEndpoint(url) c.Assert(err, IsNil) *empty = ep - s.loader[ep] = memory.NewStorage() + s.loader[ep.String()] = memory.NewStorage() path = "/non-existent.git" url = fmt.Sprintf("%s://%s", inprocScheme, path) -- cgit