+28
-23
storage/transactional/config_test.go
+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
+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
+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
+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
+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
}