1
1
package object
2
2
3
3
import (
4
+ "fmt"
4
5
"sort"
5
6
6
7
"gopkg.in/src-d/go-git.v4/plumbing"
8
+ "gopkg.in/src-d/go-git.v4/plumbing/cache"
9
+ "gopkg.in/src-d/go-git.v4/storage/filesystem"
7
10
8
11
. "gopkg.in/check.v1"
9
- "gopkg.in/src-d/go-git-fixtures.v3"
12
+ fixtures "gopkg.in/src-d/go-git-fixtures.v3"
10
13
)
11
14
12
- func commitsFromRevs (repo * Repository , revs []string ) ([]* Commit , error ) {
13
- var commits []* Commit
14
- for _ , rev := range revs {
15
- hash , err := repo .ResolveRevision (plumbing .Revision (rev ))
16
- if err != nil {
17
- return nil , err
18
- }
19
-
20
- commit , err := repo .CommitObject (* hash )
21
- if err != nil {
22
- return nil , err
23
- }
24
-
25
- commits = append (commits , commit )
26
- }
27
-
28
- return commits , nil
29
- }
30
-
31
15
func alphabeticSortCommits (commits []* Commit ) {
32
16
sort .Slice (commits , func (i , j int ) bool {
33
17
return commits [i ].Hash .String () > commits [j ].Hash .String ()
@@ -79,27 +63,66 @@ passed result
79
63
var _ = Suite (& orphansSuite {})
80
64
81
65
type orphansSuite struct {
82
- BaseSuite
66
+ BaseObjectsSuite
83
67
}
84
68
85
69
func (s * orphansSuite ) SetUpSuite (c * C ) {
86
70
s .Suite .SetUpSuite (c )
87
- f := fixtures .ByTag ("merge-base" ).One ()
88
- s .Repository = s .NewRepository (f )
71
+ s .Fixture = fixtures .ByTag ("merge-base" ).One ()
72
+ s .Storer = filesystem .NewStorage (s .Fixture .DotGit (), cache .NewObjectLRUDefault ())
73
+ }
74
+
75
+ var revisionIndex = map [string ]plumbing.Hash {
76
+ "master" : plumbing .NewHash ("dce0e0c20d701c3d260146e443d6b3b079505191" ),
77
+ "feature" : plumbing .NewHash ("d1b0093698e398d596ef94d646c4db37e8d1e970" ),
78
+ "dev" : plumbing .NewHash ("25ca6c810c08482d61113fbcaaada38bb59093a8" ),
79
+ "M" : plumbing .NewHash ("bb355b64e18386dbc3af63dfd09c015c44cbd9b6" ),
80
+ "N" : plumbing .NewHash ("d64b894762ab5f09e2b155221b90c18bd0637236" ),
81
+ "A" : plumbing .NewHash ("29740cfaf0c2ee4bb532dba9e80040ca738f367c" ),
82
+ "B" : plumbing .NewHash ("2c84807970299ba98951c65fe81ebbaac01030f0" ),
83
+ "AB" : plumbing .NewHash ("31a7e081a28f149ee98ffd13ba1a6d841a5f46fd" ),
84
+ "P" : plumbing .NewHash ("ff84393134864cf9d3a9853a81bde81778bd5805" ),
85
+ "C" : plumbing .NewHash ("8b72fabdc4222c3ff965bc310ded788c601c50ed" ),
86
+ "D" : plumbing .NewHash ("14777cf3e209334592fbfd0b878f6868394db836" ),
87
+ "CD1" : plumbing .NewHash ("4709e13a3cbb300c2b8a917effda776e1b8955c7" ),
88
+ "CD2" : plumbing .NewHash ("38468e274e91e50ffb637b88a1954ab6193fe974" ),
89
+ "S" : plumbing .NewHash ("628f1a42b70380ed05734bf01b468b46206ef1ea" ),
90
+ "G" : plumbing .NewHash ("d1b0093698e398d596ef94d646c4db37e8d1e970" ),
91
+ "Q" : plumbing .NewHash ("dce0e0c20d701c3d260146e443d6b3b079505191" ),
92
+ "GQ1" : plumbing .NewHash ("ccaaa99c21dad7e9f392c36ae8cb72dc63bed458" ),
93
+ "GQ2" : plumbing .NewHash ("806824d4778e94fe7c3244e92a9cd07090c9ab54" ),
94
+ "A^" : plumbing .NewHash ("31a7e081a28f149ee98ffd13ba1a6d841a5f46fd" ),
95
+ "A^^" : plumbing .NewHash ("bb355b64e18386dbc3af63dfd09c015c44cbd9b6" ),
96
+ "A^^^" : plumbing .NewHash ("8d08dd1388b82dd354cb43918d83da86c76b0978" ),
97
+ "N^" : plumbing .NewHash ("b6e1fc8dad4f1068fb42774ec5fc65c065b2c312" ),
98
+ }
99
+
100
+ func (s * orphansSuite ) commitsFromRevs (c * C , revs []string ) ([]* Commit , error ) {
101
+ var commits []* Commit
102
+ for _ , rev := range revs {
103
+ hash , ok := revisionIndex [rev ]
104
+ if ! ok {
105
+ return nil , fmt .Errorf ("Revision not found '%s'" , rev )
106
+ }
107
+
108
+ commits = append (commits , s .commit (c , hash ))
109
+ }
110
+
111
+ return commits , nil
89
112
}
90
113
91
114
// AssertMergeBase validates that the merge-base of the passed revs,
92
115
// matches the expected result
93
116
func (s * orphansSuite ) AssertMergeBase (c * C , revs , expectedRevs []string ) {
94
117
c .Assert (revs , HasLen , 2 )
95
118
96
- commits , err := commitsFromRevs ( s . Repository , revs )
119
+ commits , err := s . commitsFromRevs ( c , revs )
97
120
c .Assert (err , IsNil )
98
121
99
- results , err := MergeBase ( commits [0 ], commits [1 ])
122
+ results , err := commits [0 ]. MergeBase ( commits [1 ])
100
123
c .Assert (err , IsNil )
101
124
102
- expected , err := commitsFromRevs ( s . Repository , expectedRevs )
125
+ expected , err := s . commitsFromRevs ( c , expectedRevs )
103
126
c .Assert (err , IsNil )
104
127
105
128
c .Assert (results , HasLen , len (expected ))
@@ -113,13 +136,13 @@ func (s *orphansSuite) AssertMergeBase(c *C, revs, expectedRevs []string) {
113
136
114
137
// AssertIndependents validates the independent commits of the passed list
115
138
func (s * orphansSuite ) AssertIndependents (c * C , revs , expectedRevs []string ) {
116
- commits , err := commitsFromRevs ( s . Repository , revs )
139
+ commits , err := s . commitsFromRevs ( c , revs )
117
140
c .Assert (err , IsNil )
118
141
119
142
results , err := Independents (commits )
120
143
c .Assert (err , IsNil )
121
144
122
- expected , err := commitsFromRevs ( s . Repository , expectedRevs )
145
+ expected , err := s . commitsFromRevs ( c , expectedRevs )
123
146
c .Assert (err , IsNil )
124
147
125
148
c .Assert (results , HasLen , len (expected ))
@@ -131,14 +154,14 @@ func (s *orphansSuite) AssertIndependents(c *C, revs, expectedRevs []string) {
131
154
}
132
155
}
133
156
134
- // AssertAncestor validates the independent commits of the passed list
157
+ // AssertAncestor validates if the first rev is ancestor of the second one
135
158
func (s * orphansSuite ) AssertAncestor (c * C , revs []string , shouldBeAncestor bool ) {
136
159
c .Assert (revs , HasLen , 2 )
137
160
138
- commits , err := commitsFromRevs ( s . Repository , revs )
161
+ commits , err := s . commitsFromRevs ( c , revs )
139
162
c .Assert (err , IsNil )
140
163
141
- isAncestor , err := IsAncestor ( commits [0 ], commits [1 ])
164
+ isAncestor , err := commits [0 ]. IsAncestor ( commits [1 ])
142
165
c .Assert (err , IsNil )
143
166
c .Assert (isAncestor , Equals , shouldBeAncestor )
144
167
}
0 commit comments