diff options
author | Santiago M. Mola <santi@mola.io> | 2016-12-16 19:31:01 +0100 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2016-12-16 19:31:01 +0100 |
commit | b3adbed0ce15d82bf41d23cc507c5dd47a6c4260 (patch) | |
tree | 156ce904ed4af15d89a85876e3585e4c55204ae8 /remote_test.go | |
parent | 950676c36030a8796c0a69a8aae606ff1f448b03 (diff) | |
download | go-git-b3adbed0ce15d82bf41d23cc507c5dd47a6c4260.tar.gz |
remote: make Fetch atomic. (#185)
* Remote now exposes only Fetch. No Connect, Disconnect, etc.
* Repository uses a private fetch method in Remote for Clone/Pull.
* getting capabilities, HEAD or other information from remote
requires using the lower level client.
* add Fetch method to Repository.
Diffstat (limited to 'remote_test.go')
-rw-r--r-- | remote_test.go | 94 |
1 files changed, 13 insertions, 81 deletions
diff --git a/remote_test.go b/remote_test.go index 5af2e2c..f75adee 100644 --- a/remote_test.go +++ b/remote_test.go @@ -8,7 +8,6 @@ import ( "gopkg.in/src-d/go-git.v4/config" "gopkg.in/src-d/go-git.v4/plumbing" - "gopkg.in/src-d/go-git.v4/plumbing/protocol/packp/capability" "gopkg.in/src-d/go-git.v4/plumbing/storer" "gopkg.in/src-d/go-git.v4/storage/filesystem" "gopkg.in/src-d/go-git.v4/storage/memory" @@ -23,63 +22,35 @@ type RemoteSuite struct { var _ = Suite(&RemoteSuite{}) -func (s *RemoteSuite) TestConnect(c *C) { - url := s.GetBasicLocalRepositoryURL() - r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: url}) - - err := r.Connect() - c.Assert(err, IsNil) -} - -func (s *RemoteSuite) TestnewRemoteInvalidEndpoint(c *C) { +func (s *RemoteSuite) TestFetchInvalidEndpoint(c *C) { r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: "qux"}) - - err := r.Connect() - c.Assert(err, NotNil) + err := r.Fetch(&FetchOptions{}) + c.Assert(err, ErrorMatches, ".*invalid endpoint.*") } -func (s *RemoteSuite) TestnewRemoteNonExistentEndpoint(c *C) { +func (s *RemoteSuite) TestFetchNonExistentEndpoint(c *C) { r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: "ssh://non-existent/foo.git"}) - - err := r.Connect() + err := r.Fetch(&FetchOptions{}) c.Assert(err, NotNil) } -func (s *RemoteSuite) TestnewRemoteInvalidSchemaEndpoint(c *C) { +func (s *RemoteSuite) TestFetchInvalidSchemaEndpoint(c *C) { r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: "qux://foo"}) - - err := r.Connect() - c.Assert(err, NotNil) + err := r.Fetch(&FetchOptions{}) + c.Assert(err, ErrorMatches, ".*unsupported scheme.*") } -func (s *RemoteSuite) TestInfo(c *C) { - url := s.GetBasicLocalRepositoryURL() - r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: url}) - c.Assert(r.AdvertisedReferences(), IsNil) - c.Assert(r.Connect(), IsNil) - c.Assert(r.AdvertisedReferences(), NotNil) - c.Assert(r.AdvertisedReferences().Capabilities.Get(capability.Agent), NotNil) -} - -func (s *RemoteSuite) TestDefaultBranch(c *C) { - url := s.GetBasicLocalRepositoryURL() - r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: url}) - c.Assert(r.Connect(), IsNil) - c.Assert(r.Head().Name(), Equals, plumbing.ReferenceName("refs/heads/master")) -} - -func (s *RemoteSuite) TestCapabilities(c *C) { - url := s.GetBasicLocalRepositoryURL() - r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: url}) - c.Assert(r.Connect(), IsNil) - c.Assert(r.Capabilities().Get(capability.Agent), HasLen, 1) +func (s *RemoteSuite) TestFetchInvalidFetchOptions(c *C) { + r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: "qux://foo"}) + invalid := config.RefSpec("^*$ñ") + err := r.Fetch(&FetchOptions{RefSpecs: []config.RefSpec{invalid}}) + c.Assert(err, Equals, ErrInvalidRefSpec) } func (s *RemoteSuite) TestFetch(c *C) { url := s.GetBasicLocalRepositoryURL() sto := memory.NewStorage() r := newRemote(sto, nil, &config.RemoteConfig{Name: "foo", URL: url}) - c.Assert(r.Connect(), IsNil) refspec := config.RefSpec("+refs/heads/*:refs/remotes/origin/*") err := r.Fetch(&FetchOptions{ @@ -104,7 +75,6 @@ func (s *RemoteSuite) TestFetchDepth(c *C) { url := s.GetBasicLocalRepositoryURL() sto := memory.NewStorage() r := newRemote(sto, nil, &config.RemoteConfig{Name: "foo", URL: url}) - c.Assert(r.Connect(), IsNil) refspec := config.RefSpec("+refs/heads/*:refs/remotes/origin/*") err := r.Fetch(&FetchOptions{ @@ -140,7 +110,6 @@ func (s *RemoteSuite) TestFetchWithProgress(c *C) { buf := bytes.NewBuffer(nil) r := newRemote(sto, buf, &config.RemoteConfig{Name: "foo", URL: url}) - c.Assert(r.Connect(), IsNil) refspec := config.RefSpec("+refs/heads/*:refs/remotes/origin/*") err := r.Fetch(&FetchOptions{ @@ -176,7 +145,6 @@ func (s *RemoteSuite) TestFetchWithPackfileWriter(c *C) { url := s.GetBasicLocalRepositoryURL() r := newRemote(mock, nil, &config.RemoteConfig{Name: "foo", URL: url}) - c.Assert(r.Connect(), IsNil) refspec := config.RefSpec("+refs/heads/*:refs/remotes/origin/*") err = r.Fetch(&FetchOptions{ @@ -202,7 +170,6 @@ func (s *RemoteSuite) TestFetchNoErrAlreadyUpToDate(c *C) { url := s.GetBasicLocalRepositoryURL() sto := memory.NewStorage() r := newRemote(sto, nil, &config.RemoteConfig{Name: "foo", URL: url}) - c.Assert(r.Connect(), IsNil) refspec := config.RefSpec("+refs/heads/*:refs/remotes/origin/*") o := &FetchOptions{ @@ -215,41 +182,6 @@ func (s *RemoteSuite) TestFetchNoErrAlreadyUpToDate(c *C) { c.Assert(err, Equals, NoErrAlreadyUpToDate) } -func (s *RemoteSuite) TestHead(c *C) { - url := s.GetBasicLocalRepositoryURL() - r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: url}) - - err := r.Connect() - c.Assert(err, IsNil) - c.Assert(r.Head().Hash(), Equals, plumbing.NewHash("6ecf0ef2c2dffb796033e5a02219af86ec6584e5")) -} - -func (s *RemoteSuite) TestRef(c *C) { - url := s.GetBasicLocalRepositoryURL() - r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: url}) - err := r.Connect() - c.Assert(err, IsNil) - - ref, err := r.Reference(plumbing.HEAD, false) - c.Assert(err, IsNil) - c.Assert(ref.Name(), Equals, plumbing.HEAD) - - ref, err = r.Reference(plumbing.HEAD, true) - c.Assert(err, IsNil) - c.Assert(ref.Name(), Equals, plumbing.ReferenceName("refs/heads/master")) -} - -func (s *RemoteSuite) TestRefs(c *C) { - url := s.GetBasicLocalRepositoryURL() - r := newRemote(nil, nil, &config.RemoteConfig{Name: "foo", URL: url}) - err := r.Connect() - c.Assert(err, IsNil) - - iter, err := r.References() - c.Assert(err, IsNil) - c.Assert(iter, NotNil) -} - func (s *RemoteSuite) TestString(c *C) { r := newRemote(nil, nil, &config.RemoteConfig{ Name: "foo", |