fork of go-git with some jj specific features

storage: transactional, gocheck to testify migration. Fixes #1313

+28 -23
storage/transactional/config_test.go
··· 1 package transactional 2 3 import ( 4 "github.com/go-git/go-git/v5/config" 5 "github.com/go-git/go-git/v5/storage/memory" 6 - 7 - . "gopkg.in/check.v1" 8 ) 9 10 - var _ = Suite(&ConfigSuite{}) 11 12 - type ConfigSuite struct{} 13 14 - func (s *ConfigSuite) TestSetConfigBase(c *C) { 15 cfg := config.NewConfig() 16 cfg.Core.Worktree = "foo" 17 18 base := memory.NewStorage() 19 err := base.SetConfig(cfg) 20 - c.Assert(err, IsNil) 21 22 temporal := memory.NewStorage() 23 cs := NewConfigStorage(base, temporal) 24 25 cfg, err = cs.Config() 26 - c.Assert(err, IsNil) 27 - c.Assert(cfg.Core.Worktree, Equals, "foo") 28 } 29 30 - func (s *ConfigSuite) TestSetConfigTemporal(c *C) { 31 cfg := config.NewConfig() 32 cfg.Core.Worktree = "foo" 33 34 base := memory.NewStorage() 35 err := base.SetConfig(cfg) 36 - c.Assert(err, IsNil) 37 38 temporal := memory.NewStorage() 39 ··· 42 43 cs := NewConfigStorage(base, temporal) 44 err = cs.SetConfig(cfg) 45 - c.Assert(err, IsNil) 46 47 baseCfg, err := base.Config() 48 - c.Assert(err, IsNil) 49 - c.Assert(baseCfg.Core.Worktree, Equals, "foo") 50 51 temporalCfg, err := temporal.Config() 52 - c.Assert(err, IsNil) 53 - c.Assert(temporalCfg.Core.Worktree, Equals, "bar") 54 55 cfg, err = cs.Config() 56 - c.Assert(err, IsNil) 57 - c.Assert(cfg.Core.Worktree, Equals, "bar") 58 } 59 60 - func (s *ConfigSuite) TestCommit(c *C) { 61 cfg := config.NewConfig() 62 cfg.Core.Worktree = "foo" 63 64 base := memory.NewStorage() 65 err := base.SetConfig(cfg) 66 - c.Assert(err, IsNil) 67 68 temporal := memory.NewStorage() 69 ··· 72 73 cs := NewConfigStorage(base, temporal) 74 err = cs.SetConfig(cfg) 75 - c.Assert(err, IsNil) 76 77 err = cs.Commit() 78 - c.Assert(err, IsNil) 79 80 baseCfg, err := base.Config() 81 - c.Assert(err, IsNil) 82 - c.Assert(baseCfg.Core.Worktree, Equals, "bar") 83 }
··· 1 package transactional 2 3 import ( 4 + "testing" 5 + 6 "github.com/go-git/go-git/v5/config" 7 "github.com/go-git/go-git/v5/storage/memory" 8 + "github.com/stretchr/testify/suite" 9 ) 10 11 + func TestConfigSuite(t *testing.T) { 12 + suite.Run(t, new(ConfigSuite)) 13 + } 14 15 + type ConfigSuite struct { 16 + suite.Suite 17 + } 18 19 + func (s *ConfigSuite) TestSetConfigBase() { 20 cfg := config.NewConfig() 21 cfg.Core.Worktree = "foo" 22 23 base := memory.NewStorage() 24 err := base.SetConfig(cfg) 25 + s.NoError(err) 26 27 temporal := memory.NewStorage() 28 cs := NewConfigStorage(base, temporal) 29 30 cfg, err = cs.Config() 31 + s.NoError(err) 32 + s.Equal("foo", cfg.Core.Worktree) 33 } 34 35 + func (s *ConfigSuite) TestSetConfigTemporal() { 36 cfg := config.NewConfig() 37 cfg.Core.Worktree = "foo" 38 39 base := memory.NewStorage() 40 err := base.SetConfig(cfg) 41 + s.NoError(err) 42 43 temporal := memory.NewStorage() 44 ··· 47 48 cs := NewConfigStorage(base, temporal) 49 err = cs.SetConfig(cfg) 50 + s.NoError(err) 51 52 baseCfg, err := base.Config() 53 + s.NoError(err) 54 + s.Equal("foo", baseCfg.Core.Worktree) 55 56 temporalCfg, err := temporal.Config() 57 + s.NoError(err) 58 + s.Equal("bar", temporalCfg.Core.Worktree) 59 60 cfg, err = cs.Config() 61 + s.NoError(err) 62 + s.Equal("bar", cfg.Core.Worktree) 63 } 64 65 + func (s *ConfigSuite) TestCommit() { 66 cfg := config.NewConfig() 67 cfg.Core.Worktree = "foo" 68 69 base := memory.NewStorage() 70 err := base.SetConfig(cfg) 71 + s.NoError(err) 72 73 temporal := memory.NewStorage() 74 ··· 77 78 cs := NewConfigStorage(base, temporal) 79 err = cs.SetConfig(cfg) 80 + s.NoError(err) 81 82 err = cs.Commit() 83 + s.NoError(err) 84 85 baseCfg, err := base.Config() 86 + s.NoError(err) 87 + s.Equal("bar", baseCfg.Core.Worktree) 88 }
+19 -14
storage/transactional/index_test.go
··· 1 package transactional 2 3 import ( 4 "github.com/go-git/go-git/v5/plumbing/format/index" 5 "github.com/go-git/go-git/v5/storage/memory" 6 - 7 - . "gopkg.in/check.v1" 8 ) 9 10 - var _ = Suite(&IndexSuite{}) 11 12 - type IndexSuite struct{} 13 14 - func (s *IndexSuite) TestSetIndexBase(c *C) { 15 idx := &index.Index{} 16 idx.Version = 2 17 18 base := memory.NewStorage() 19 err := base.SetIndex(idx) 20 - c.Assert(err, IsNil) 21 22 temporal := memory.NewStorage() 23 cs := NewIndexStorage(base, temporal) 24 25 idx, err = cs.Index() 26 - c.Assert(err, IsNil) 27 - c.Assert(idx.Version, Equals, uint32(2)) 28 } 29 30 - func (s *IndexSuite) TestCommit(c *C) { 31 idx := &index.Index{} 32 idx.Version = 2 33 34 base := memory.NewStorage() 35 err := base.SetIndex(idx) 36 - c.Assert(err, IsNil) 37 38 temporal := memory.NewStorage() 39 ··· 42 43 is := NewIndexStorage(base, temporal) 44 err = is.SetIndex(idx) 45 - c.Assert(err, IsNil) 46 47 err = is.Commit() 48 - c.Assert(err, IsNil) 49 50 baseIndex, err := base.Index() 51 - c.Assert(err, IsNil) 52 - c.Assert(baseIndex.Version, Equals, uint32(3)) 53 }
··· 1 package transactional 2 3 import ( 4 + "testing" 5 + 6 "github.com/go-git/go-git/v5/plumbing/format/index" 7 "github.com/go-git/go-git/v5/storage/memory" 8 + "github.com/stretchr/testify/suite" 9 ) 10 11 + func TestIndexSuite(t *testing.T) { 12 + suite.Run(t, new(IndexSuite)) 13 + } 14 15 + type IndexSuite struct { 16 + suite.Suite 17 + } 18 19 + func (s *IndexSuite) TestSetIndexBase() { 20 idx := &index.Index{} 21 idx.Version = 2 22 23 base := memory.NewStorage() 24 err := base.SetIndex(idx) 25 + s.NoError(err) 26 27 temporal := memory.NewStorage() 28 cs := NewIndexStorage(base, temporal) 29 30 idx, err = cs.Index() 31 + s.NoError(err) 32 + s.Equal(uint32(2), idx.Version) 33 } 34 35 + func (s *IndexSuite) TestCommit() { 36 idx := &index.Index{} 37 idx.Version = 2 38 39 base := memory.NewStorage() 40 err := base.SetIndex(idx) 41 + s.NoError(err) 42 43 temporal := memory.NewStorage() 44 ··· 47 48 is := NewIndexStorage(base, temporal) 49 err = is.SetIndex(idx) 50 + s.NoError(err) 51 52 err = is.Commit() 53 + s.NoError(err) 54 55 baseIndex, err := base.Index() 56 + s.NoError(err) 57 + s.Equal(uint32(3), baseIndex.Version) 58 }
+49 -44
storage/transactional/object_test.go
··· 1 package transactional 2 3 import ( 4 "github.com/go-git/go-git/v5/plumbing" 5 "github.com/go-git/go-git/v5/storage/memory" 6 - 7 - . "gopkg.in/check.v1" 8 ) 9 10 - var _ = Suite(&ObjectSuite{}) 11 12 - type ObjectSuite struct{} 13 14 - func (s *ObjectSuite) TestHasEncodedObject(c *C) { 15 base := memory.NewStorage() 16 temporal := memory.NewStorage() 17 ··· 21 commit.SetType(plumbing.CommitObject) 22 23 ch, err := base.SetEncodedObject(commit) 24 - c.Assert(ch.IsZero(), Equals, false) 25 - c.Assert(err, IsNil) 26 27 tree := base.NewEncodedObject() 28 tree.SetType(plumbing.TreeObject) 29 30 th, err := os.SetEncodedObject(tree) 31 - c.Assert(th.IsZero(), Equals, false) 32 - c.Assert(err, IsNil) 33 34 err = os.HasEncodedObject(th) 35 - c.Assert(err, IsNil) 36 37 err = os.HasEncodedObject(ch) 38 - c.Assert(err, IsNil) 39 40 err = base.HasEncodedObject(th) 41 - c.Assert(err, Equals, plumbing.ErrObjectNotFound) 42 } 43 44 - func (s *ObjectSuite) TestEncodedObjectAndEncodedObjectSize(c *C) { 45 base := memory.NewStorage() 46 temporal := memory.NewStorage() 47 ··· 51 commit.SetType(plumbing.CommitObject) 52 53 ch, err := base.SetEncodedObject(commit) 54 - c.Assert(ch.IsZero(), Equals, false) 55 - c.Assert(err, IsNil) 56 57 tree := base.NewEncodedObject() 58 tree.SetType(plumbing.TreeObject) 59 60 th, err := os.SetEncodedObject(tree) 61 - c.Assert(th.IsZero(), Equals, false) 62 - c.Assert(err, IsNil) 63 64 otree, err := os.EncodedObject(plumbing.TreeObject, th) 65 - c.Assert(err, IsNil) 66 - c.Assert(otree.Hash(), Equals, tree.Hash()) 67 68 treeSz, err := os.EncodedObjectSize(th) 69 - c.Assert(err, IsNil) 70 - c.Assert(treeSz, Equals, int64(0)) 71 72 ocommit, err := os.EncodedObject(plumbing.CommitObject, ch) 73 - c.Assert(err, IsNil) 74 - c.Assert(ocommit.Hash(), Equals, commit.Hash()) 75 76 commitSz, err := os.EncodedObjectSize(ch) 77 - c.Assert(err, IsNil) 78 - c.Assert(commitSz, Equals, int64(0)) 79 80 _, err = base.EncodedObject(plumbing.TreeObject, th) 81 - c.Assert(err, Equals, plumbing.ErrObjectNotFound) 82 83 _, err = base.EncodedObjectSize(th) 84 - c.Assert(err, Equals, plumbing.ErrObjectNotFound) 85 } 86 87 - func (s *ObjectSuite) TestIterEncodedObjects(c *C) { 88 base := memory.NewStorage() 89 temporal := memory.NewStorage() 90 ··· 94 commit.SetType(plumbing.CommitObject) 95 96 ch, err := base.SetEncodedObject(commit) 97 - c.Assert(ch.IsZero(), Equals, false) 98 - c.Assert(err, IsNil) 99 100 tree := base.NewEncodedObject() 101 tree.SetType(plumbing.TreeObject) 102 103 th, err := os.SetEncodedObject(tree) 104 - c.Assert(th.IsZero(), Equals, false) 105 - c.Assert(err, IsNil) 106 107 iter, err := os.IterEncodedObjects(plumbing.AnyObject) 108 - c.Assert(err, IsNil) 109 110 var hashes []plumbing.Hash 111 err = iter.ForEach(func(obj plumbing.EncodedObject) error { ··· 113 return nil 114 }) 115 116 - c.Assert(err, IsNil) 117 - c.Assert(hashes, HasLen, 2) 118 - c.Assert(hashes[0], Equals, ch) 119 - c.Assert(hashes[1], Equals, th) 120 } 121 122 - func (s *ObjectSuite) TestCommit(c *C) { 123 base := memory.NewStorage() 124 temporal := memory.NewStorage() 125 ··· 129 commit.SetType(plumbing.CommitObject) 130 131 _, err := os.SetEncodedObject(commit) 132 - c.Assert(err, IsNil) 133 134 tree := base.NewEncodedObject() 135 tree.SetType(plumbing.TreeObject) 136 137 _, err = os.SetEncodedObject(tree) 138 - c.Assert(err, IsNil) 139 140 err = os.Commit() 141 - c.Assert(err, IsNil) 142 143 iter, err := base.IterEncodedObjects(plumbing.AnyObject) 144 - c.Assert(err, IsNil) 145 146 var hashes []plumbing.Hash 147 err = iter.ForEach(func(obj plumbing.EncodedObject) error { ··· 149 return nil 150 }) 151 152 - c.Assert(err, IsNil) 153 - c.Assert(hashes, HasLen, 2) 154 }
··· 1 package transactional 2 3 import ( 4 + "testing" 5 + 6 "github.com/go-git/go-git/v5/plumbing" 7 "github.com/go-git/go-git/v5/storage/memory" 8 + "github.com/stretchr/testify/suite" 9 ) 10 11 + func TestObjectSuite(t *testing.T) { 12 + suite.Run(t, new(ObjectSuite)) 13 + } 14 15 + type ObjectSuite struct { 16 + suite.Suite 17 + } 18 19 + func (s *ObjectSuite) TestHasEncodedObject() { 20 base := memory.NewStorage() 21 temporal := memory.NewStorage() 22 ··· 26 commit.SetType(plumbing.CommitObject) 27 28 ch, err := base.SetEncodedObject(commit) 29 + s.False(ch.IsZero()) 30 + s.NoError(err) 31 32 tree := base.NewEncodedObject() 33 tree.SetType(plumbing.TreeObject) 34 35 th, err := os.SetEncodedObject(tree) 36 + s.False(th.IsZero()) 37 + s.NoError(err) 38 39 err = os.HasEncodedObject(th) 40 + s.NoError(err) 41 42 err = os.HasEncodedObject(ch) 43 + s.NoError(err) 44 45 err = base.HasEncodedObject(th) 46 + s.ErrorIs(err, plumbing.ErrObjectNotFound) 47 } 48 49 + func (s *ObjectSuite) TestEncodedObjectAndEncodedObjectSize() { 50 base := memory.NewStorage() 51 temporal := memory.NewStorage() 52 ··· 56 commit.SetType(plumbing.CommitObject) 57 58 ch, err := base.SetEncodedObject(commit) 59 + s.False(ch.IsZero()) 60 + s.NoError(err) 61 62 tree := base.NewEncodedObject() 63 tree.SetType(plumbing.TreeObject) 64 65 th, err := os.SetEncodedObject(tree) 66 + s.False(th.IsZero()) 67 + s.NoError(err) 68 69 otree, err := os.EncodedObject(plumbing.TreeObject, th) 70 + s.NoError(err) 71 + s.Equal(tree.Hash(), otree.Hash()) 72 73 treeSz, err := os.EncodedObjectSize(th) 74 + s.NoError(err) 75 + s.Equal(int64(0), treeSz) 76 77 ocommit, err := os.EncodedObject(plumbing.CommitObject, ch) 78 + s.NoError(err) 79 + s.Equal(commit.Hash(), ocommit.Hash()) 80 81 commitSz, err := os.EncodedObjectSize(ch) 82 + s.NoError(err) 83 + s.Equal(int64(0), commitSz) 84 85 _, err = base.EncodedObject(plumbing.TreeObject, th) 86 + s.ErrorIs(err, plumbing.ErrObjectNotFound) 87 88 _, err = base.EncodedObjectSize(th) 89 + s.ErrorIs(err, plumbing.ErrObjectNotFound) 90 } 91 92 + func (s *ObjectSuite) TestIterEncodedObjects() { 93 base := memory.NewStorage() 94 temporal := memory.NewStorage() 95 ··· 99 commit.SetType(plumbing.CommitObject) 100 101 ch, err := base.SetEncodedObject(commit) 102 + s.False(ch.IsZero()) 103 + s.NoError(err) 104 105 tree := base.NewEncodedObject() 106 tree.SetType(plumbing.TreeObject) 107 108 th, err := os.SetEncodedObject(tree) 109 + s.False(th.IsZero()) 110 + s.NoError(err) 111 112 iter, err := os.IterEncodedObjects(plumbing.AnyObject) 113 + s.NoError(err) 114 115 var hashes []plumbing.Hash 116 err = iter.ForEach(func(obj plumbing.EncodedObject) error { ··· 118 return nil 119 }) 120 121 + s.NoError(err) 122 + s.Len(hashes, 2) 123 + s.Equal(ch, hashes[0]) 124 + s.Equal(th, hashes[1]) 125 } 126 127 + func (s *ObjectSuite) TestCommit() { 128 base := memory.NewStorage() 129 temporal := memory.NewStorage() 130 ··· 134 commit.SetType(plumbing.CommitObject) 135 136 _, err := os.SetEncodedObject(commit) 137 + s.NoError(err) 138 139 tree := base.NewEncodedObject() 140 tree.SetType(plumbing.TreeObject) 141 142 _, err = os.SetEncodedObject(tree) 143 + s.NoError(err) 144 145 err = os.Commit() 146 + s.NoError(err) 147 148 iter, err := base.IterEncodedObjects(plumbing.AnyObject) 149 + s.NoError(err) 150 151 var hashes []plumbing.Hash 152 err = iter.ForEach(func(obj plumbing.EncodedObject) error { ··· 154 return nil 155 }) 156 157 + s.NoError(err) 158 + s.Len(hashes, 2) 159 }
+48 -43
storage/transactional/reference_test.go
··· 1 package transactional 2 3 import ( 4 "github.com/go-git/go-git/v5/plumbing" 5 "github.com/go-git/go-git/v5/storage/memory" 6 - 7 - . "gopkg.in/check.v1" 8 ) 9 10 - var _ = Suite(&ReferenceSuite{}) 11 12 - type ReferenceSuite struct{} 13 14 - func (s *ReferenceSuite) TestReference(c *C) { 15 base := memory.NewStorage() 16 temporal := memory.NewStorage() 17 ··· 21 refB := plumbing.NewReferenceFromStrings("refs/b", "bc9968d75e48de59f0870ffb71f5e160bbbdcf52") 22 23 err := base.SetReference(refA) 24 - c.Assert(err, IsNil) 25 26 err = rs.SetReference(refB) 27 - c.Assert(err, IsNil) 28 29 _, err = rs.Reference("refs/a") 30 - c.Assert(err, IsNil) 31 32 _, err = rs.Reference("refs/b") 33 - c.Assert(err, IsNil) 34 35 _, err = base.Reference("refs/b") 36 - c.Assert(err, Equals, plumbing.ErrReferenceNotFound) 37 } 38 39 - func (s *ReferenceSuite) TestRemoveReferenceTemporal(c *C) { 40 base := memory.NewStorage() 41 temporal := memory.NewStorage() 42 ··· 44 45 rs := NewReferenceStorage(base, temporal) 46 err := rs.SetReference(ref) 47 - c.Assert(err, IsNil) 48 49 err = rs.RemoveReference("refs/a") 50 - c.Assert(err, IsNil) 51 52 _, err = rs.Reference("refs/a") 53 - c.Assert(err, Equals, plumbing.ErrReferenceNotFound) 54 } 55 56 - func (s *ReferenceSuite) TestRemoveReferenceBase(c *C) { 57 base := memory.NewStorage() 58 temporal := memory.NewStorage() 59 ··· 61 62 rs := NewReferenceStorage(base, temporal) 63 err := base.SetReference(ref) 64 - c.Assert(err, IsNil) 65 66 err = rs.RemoveReference("refs/a") 67 - c.Assert(err, IsNil) 68 69 _, err = rs.Reference("refs/a") 70 - c.Assert(err, Equals, plumbing.ErrReferenceNotFound) 71 } 72 73 - func (s *ReferenceSuite) TestCheckAndSetReferenceInBase(c *C) { 74 base := memory.NewStorage() 75 temporal := memory.NewStorage() 76 rs := NewReferenceStorage(base, temporal) ··· 78 err := base.SetReference( 79 plumbing.NewReferenceFromStrings("foo", "482e0eada5de4039e6f216b45b3c9b683b83bfa"), 80 ) 81 - c.Assert(err, IsNil) 82 83 err = rs.CheckAndSetReference( 84 plumbing.NewReferenceFromStrings("foo", "bc9968d75e48de59f0870ffb71f5e160bbbdcf52"), 85 plumbing.NewReferenceFromStrings("foo", "482e0eada5de4039e6f216b45b3c9b683b83bfa"), 86 ) 87 - c.Assert(err, IsNil) 88 89 e, err := rs.Reference(plumbing.ReferenceName("foo")) 90 - c.Assert(err, IsNil) 91 - c.Assert(e.Hash().String(), Equals, "bc9968d75e48de59f0870ffb71f5e160bbbdcf52") 92 } 93 94 - func (s *ReferenceSuite) TestCommit(c *C) { 95 base := memory.NewStorage() 96 temporal := memory.NewStorage() 97 ··· 100 refC := plumbing.NewReferenceFromStrings("refs/c", "c3f4688a08fd86f1bf8e055724c84b7a40a09733") 101 102 rs := NewReferenceStorage(base, temporal) 103 - c.Assert(rs.SetReference(refA), IsNil) 104 - c.Assert(rs.SetReference(refB), IsNil) 105 - c.Assert(rs.SetReference(refC), IsNil) 106 107 err := rs.Commit() 108 - c.Assert(err, IsNil) 109 110 iter, err := base.IterReferences() 111 - c.Assert(err, IsNil) 112 113 var count int 114 iter.ForEach(func(ref *plumbing.Reference) error { ··· 116 return nil 117 }) 118 119 - c.Assert(count, Equals, 3) 120 } 121 122 - func (s *ReferenceSuite) TestCommitDelete(c *C) { 123 base := memory.NewStorage() 124 temporal := memory.NewStorage() 125 ··· 128 refC := plumbing.NewReferenceFromStrings("refs/c", "c3f4688a08fd86f1bf8e055724c84b7a40a09733") 129 130 rs := NewReferenceStorage(base, temporal) 131 - c.Assert(base.SetReference(refA), IsNil) 132 - c.Assert(base.SetReference(refB), IsNil) 133 - c.Assert(base.SetReference(refC), IsNil) 134 135 - c.Assert(rs.RemoveReference(refA.Name()), IsNil) 136 - c.Assert(rs.RemoveReference(refB.Name()), IsNil) 137 - c.Assert(rs.RemoveReference(refC.Name()), IsNil) 138 - c.Assert(rs.SetReference(refC), IsNil) 139 140 err := rs.Commit() 141 - c.Assert(err, IsNil) 142 143 iter, err := base.IterReferences() 144 - c.Assert(err, IsNil) 145 146 var count int 147 iter.ForEach(func(ref *plumbing.Reference) error { ··· 149 return nil 150 }) 151 152 - c.Assert(count, Equals, 1) 153 154 ref, err := rs.Reference(refC.Name()) 155 - c.Assert(err, IsNil) 156 - c.Assert(ref.Hash().String(), Equals, "c3f4688a08fd86f1bf8e055724c84b7a40a09733") 157 158 }
··· 1 package transactional 2 3 import ( 4 + "testing" 5 + 6 "github.com/go-git/go-git/v5/plumbing" 7 "github.com/go-git/go-git/v5/storage/memory" 8 + "github.com/stretchr/testify/suite" 9 ) 10 11 + func TestReferenceSuite(t *testing.T) { 12 + suite.Run(t, new(ReferenceSuite)) 13 + } 14 15 + type ReferenceSuite struct { 16 + suite.Suite 17 + } 18 19 + func (s *ReferenceSuite) TestReference() { 20 base := memory.NewStorage() 21 temporal := memory.NewStorage() 22 ··· 26 refB := plumbing.NewReferenceFromStrings("refs/b", "bc9968d75e48de59f0870ffb71f5e160bbbdcf52") 27 28 err := base.SetReference(refA) 29 + s.NoError(err) 30 31 err = rs.SetReference(refB) 32 + s.NoError(err) 33 34 _, err = rs.Reference("refs/a") 35 + s.NoError(err) 36 37 _, err = rs.Reference("refs/b") 38 + s.NoError(err) 39 40 _, err = base.Reference("refs/b") 41 + s.ErrorIs(err, plumbing.ErrReferenceNotFound) 42 } 43 44 + func (s *ReferenceSuite) TestRemoveReferenceTemporal() { 45 base := memory.NewStorage() 46 temporal := memory.NewStorage() 47 ··· 49 50 rs := NewReferenceStorage(base, temporal) 51 err := rs.SetReference(ref) 52 + s.NoError(err) 53 54 err = rs.RemoveReference("refs/a") 55 + s.NoError(err) 56 57 _, err = rs.Reference("refs/a") 58 + s.ErrorIs(err, plumbing.ErrReferenceNotFound) 59 } 60 61 + func (s *ReferenceSuite) TestRemoveReferenceBase() { 62 base := memory.NewStorage() 63 temporal := memory.NewStorage() 64 ··· 66 67 rs := NewReferenceStorage(base, temporal) 68 err := base.SetReference(ref) 69 + s.NoError(err) 70 71 err = rs.RemoveReference("refs/a") 72 + s.NoError(err) 73 74 _, err = rs.Reference("refs/a") 75 + s.ErrorIs(err, plumbing.ErrReferenceNotFound) 76 } 77 78 + func (s *ReferenceSuite) TestCheckAndSetReferenceInBase() { 79 base := memory.NewStorage() 80 temporal := memory.NewStorage() 81 rs := NewReferenceStorage(base, temporal) ··· 83 err := base.SetReference( 84 plumbing.NewReferenceFromStrings("foo", "482e0eada5de4039e6f216b45b3c9b683b83bfa"), 85 ) 86 + s.NoError(err) 87 88 err = rs.CheckAndSetReference( 89 plumbing.NewReferenceFromStrings("foo", "bc9968d75e48de59f0870ffb71f5e160bbbdcf52"), 90 plumbing.NewReferenceFromStrings("foo", "482e0eada5de4039e6f216b45b3c9b683b83bfa"), 91 ) 92 + s.NoError(err) 93 94 e, err := rs.Reference(plumbing.ReferenceName("foo")) 95 + s.NoError(err) 96 + s.Equal("bc9968d75e48de59f0870ffb71f5e160bbbdcf52", e.Hash().String()) 97 } 98 99 + func (s *ReferenceSuite) TestCommit() { 100 base := memory.NewStorage() 101 temporal := memory.NewStorage() 102 ··· 105 refC := plumbing.NewReferenceFromStrings("refs/c", "c3f4688a08fd86f1bf8e055724c84b7a40a09733") 106 107 rs := NewReferenceStorage(base, temporal) 108 + s.Nil(rs.SetReference(refA)) 109 + s.Nil(rs.SetReference(refB)) 110 + s.Nil(rs.SetReference(refC)) 111 112 err := rs.Commit() 113 + s.NoError(err) 114 115 iter, err := base.IterReferences() 116 + s.NoError(err) 117 118 var count int 119 iter.ForEach(func(ref *plumbing.Reference) error { ··· 121 return nil 122 }) 123 124 + s.Equal(3, count) 125 } 126 127 + func (s *ReferenceSuite) TestCommitDelete() { 128 base := memory.NewStorage() 129 temporal := memory.NewStorage() 130 ··· 133 refC := plumbing.NewReferenceFromStrings("refs/c", "c3f4688a08fd86f1bf8e055724c84b7a40a09733") 134 135 rs := NewReferenceStorage(base, temporal) 136 + s.Nil(base.SetReference(refA)) 137 + s.Nil(base.SetReference(refB)) 138 + s.Nil(base.SetReference(refC)) 139 140 + s.Nil(rs.RemoveReference(refA.Name())) 141 + s.Nil(rs.RemoveReference(refB.Name())) 142 + s.Nil(rs.RemoveReference(refC.Name())) 143 + s.Nil(rs.SetReference(refC)) 144 145 err := rs.Commit() 146 + s.NoError(err) 147 148 iter, err := base.IterReferences() 149 + s.NoError(err) 150 151 var count int 152 iter.ForEach(func(ref *plumbing.Reference) error { ··· 154 return nil 155 }) 156 157 + s.Equal(1, count) 158 159 ref, err := rs.Reference(refC.Name()) 160 + s.NoError(err) 161 + s.Equal("c3f4688a08fd86f1bf8e055724c84b7a40a09733", ref.Hash().String()) 162 163 }
+28 -23
storage/transactional/shallow_test.go
··· 1 package transactional 2 3 import ( 4 "github.com/go-git/go-git/v5/plumbing" 5 "github.com/go-git/go-git/v5/storage/memory" 6 - 7 - . "gopkg.in/check.v1" 8 ) 9 10 - var _ = Suite(&ShallowSuite{}) 11 12 - type ShallowSuite struct{} 13 14 - func (s *ShallowSuite) TestShallow(c *C) { 15 base := memory.NewStorage() 16 temporal := memory.NewStorage() 17 ··· 21 commitB := plumbing.NewHash("aa9968d75e48de59f0870ffb71f5e160bbbdcf52") 22 23 err := base.SetShallow([]plumbing.Hash{commitA}) 24 - c.Assert(err, IsNil) 25 26 err = rs.SetShallow([]plumbing.Hash{commitB}) 27 - c.Assert(err, IsNil) 28 29 commits, err := rs.Shallow() 30 - c.Assert(err, IsNil) 31 - c.Assert(commits, HasLen, 1) 32 - c.Assert(commits[0], Equals, commitB) 33 34 commits, err = base.Shallow() 35 - c.Assert(err, IsNil) 36 - c.Assert(commits, HasLen, 1) 37 - c.Assert(commits[0], Equals, commitA) 38 } 39 40 - func (s *ShallowSuite) TestCommit(c *C) { 41 base := memory.NewStorage() 42 temporal := memory.NewStorage() 43 ··· 46 commitA := plumbing.NewHash("bc9968d75e48de59f0870ffb71f5e160bbbdcf52") 47 commitB := plumbing.NewHash("aa9968d75e48de59f0870ffb71f5e160bbbdcf52") 48 49 - c.Assert(base.SetShallow([]plumbing.Hash{commitA}), IsNil) 50 - c.Assert(rs.SetShallow([]plumbing.Hash{commitB}), IsNil) 51 52 - c.Assert(rs.Commit(), IsNil) 53 54 commits, err := rs.Shallow() 55 - c.Assert(err, IsNil) 56 - c.Assert(commits, HasLen, 1) 57 - c.Assert(commits[0], Equals, commitB) 58 59 commits, err = base.Shallow() 60 - c.Assert(err, IsNil) 61 - c.Assert(commits, HasLen, 1) 62 - c.Assert(commits[0], Equals, commitB) 63 }
··· 1 package transactional 2 3 import ( 4 + "testing" 5 + 6 "github.com/go-git/go-git/v5/plumbing" 7 "github.com/go-git/go-git/v5/storage/memory" 8 + "github.com/stretchr/testify/suite" 9 ) 10 11 + func TestShallowSuite(t *testing.T) { 12 + suite.Run(t, new(ShallowSuite)) 13 + } 14 15 + type ShallowSuite struct { 16 + suite.Suite 17 + } 18 19 + func (s *ShallowSuite) TestShallow() { 20 base := memory.NewStorage() 21 temporal := memory.NewStorage() 22 ··· 26 commitB := plumbing.NewHash("aa9968d75e48de59f0870ffb71f5e160bbbdcf52") 27 28 err := base.SetShallow([]plumbing.Hash{commitA}) 29 + s.NoError(err) 30 31 err = rs.SetShallow([]plumbing.Hash{commitB}) 32 + s.NoError(err) 33 34 commits, err := rs.Shallow() 35 + s.NoError(err) 36 + s.Len(commits, 1) 37 + s.Equal(commitB, commits[0]) 38 39 commits, err = base.Shallow() 40 + s.NoError(err) 41 + s.Len(commits, 1) 42 + s.Equal(commitA, commits[0]) 43 } 44 45 + func (s *ShallowSuite) TestCommit() { 46 base := memory.NewStorage() 47 temporal := memory.NewStorage() 48 ··· 51 commitA := plumbing.NewHash("bc9968d75e48de59f0870ffb71f5e160bbbdcf52") 52 commitB := plumbing.NewHash("aa9968d75e48de59f0870ffb71f5e160bbbdcf52") 53 54 + s.Nil(base.SetShallow([]plumbing.Hash{commitA})) 55 + s.Nil(rs.SetShallow([]plumbing.Hash{commitB})) 56 57 + s.Nil(rs.Commit()) 58 59 commits, err := rs.Shallow() 60 + s.NoError(err) 61 + s.Len(commits, 1) 62 + s.Equal(commitB, commits[0]) 63 64 commits, err = base.Shallow() 65 + s.NoError(err) 66 + s.Len(commits, 1) 67 + s.Equal(commitB, commits[0]) 68 }