Skip to content

Commit c9ef221

Browse files
committed
Add Repositories tests
Signed-off-by: Javi Fontan <[email protected]>
1 parent 6787eb3 commit c9ef221

File tree

1 file changed

+206
-0
lines changed

1 file changed

+206
-0
lines changed

repositories_test.go

Lines changed: 206 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,206 @@
1+
package gitquery
2+
3+
import (
4+
"io"
5+
"testing"
6+
7+
"github.com/stretchr/testify/require"
8+
"gopkg.in/src-d/go-git-fixtures.v3"
9+
"gopkg.in/src-d/go-git.v4"
10+
"gopkg.in/src-d/go-git.v4/plumbing/object"
11+
"gopkg.in/src-d/go-mysql-server.v0/sql"
12+
)
13+
14+
func TestRepository(t *testing.T) {
15+
require := require.New(t)
16+
17+
gitRepo := &git.Repository{}
18+
repo := NewRepository("identifier", gitRepo)
19+
20+
require.Equal("identifier", repo.ID)
21+
require.Equal(gitRepo, repo.Repo)
22+
23+
repo = NewRepository("/other/path", nil)
24+
25+
require.Equal("/other/path", repo.ID)
26+
require.Nil(repo.Repo)
27+
}
28+
29+
func TestRepositoryPoolBasic(t *testing.T) {
30+
require := require.New(t)
31+
32+
pool := NewRepositoryPool()
33+
34+
// GetPos
35+
36+
repo, ok := pool.GetPos(0)
37+
require.Nil(repo)
38+
require.False(ok)
39+
40+
// Add and GetPos
41+
42+
pool.Add("0", nil)
43+
repo, ok = pool.GetPos(0)
44+
require.Equal("0", repo.ID)
45+
require.Nil(repo.Repo)
46+
require.True(ok)
47+
48+
repo, ok = pool.GetPos(1)
49+
require.False(ok)
50+
51+
gitRepo := &git.Repository{}
52+
53+
pool.Add("1", gitRepo)
54+
repo, ok = pool.GetPos(1)
55+
require.Equal("1", repo.ID)
56+
require.Equal(gitRepo, repo.Repo)
57+
require.True(ok)
58+
59+
repo, ok = pool.GetPos(0)
60+
require.True(ok)
61+
repo, ok = pool.GetPos(2)
62+
require.False(ok)
63+
}
64+
65+
func TestRepositoryPoolGit(t *testing.T) {
66+
require := require.New(t)
67+
68+
path := fixtures.Basic().ByTag("worktree").One().Worktree().Root()
69+
70+
pool := NewRepositoryPool()
71+
id, err := pool.AddGit(path)
72+
require.Equal(path, id)
73+
require.Nil(err)
74+
75+
repo, ok := pool.GetPos(0)
76+
require.Equal(path, repo.ID)
77+
require.NotNil(repo.Repo)
78+
require.True(ok)
79+
80+
iter, err := repo.Repo.CommitObjects()
81+
require.Nil(err)
82+
83+
count := 0
84+
85+
for {
86+
commit, err := iter.Next()
87+
if err != nil {
88+
break
89+
}
90+
91+
require.NotNil(commit)
92+
93+
count++
94+
}
95+
96+
require.Equal(9, count)
97+
}
98+
99+
func TestRepositoryPoolIterator(t *testing.T) {
100+
require := require.New(t)
101+
102+
path := fixtures.Basic().ByTag("worktree").One().Worktree().Root()
103+
104+
pool := NewRepositoryPool()
105+
id, err := pool.AddGit(path)
106+
require.Equal(path, id)
107+
require.Nil(err)
108+
109+
id, err = pool.AddGit(path)
110+
require.Equal(path, id)
111+
require.Nil(err)
112+
113+
iter, err := pool.RepoIter()
114+
require.Nil(err)
115+
116+
count := 0
117+
118+
for {
119+
repo, err := iter.Next()
120+
if err != nil {
121+
require.Equal(io.EOF, err)
122+
break
123+
}
124+
125+
require.NotNil(repo)
126+
require.Equal(path, repo.ID)
127+
128+
count++
129+
}
130+
131+
require.Equal(2, count)
132+
}
133+
134+
type testCommitIter struct {
135+
iter object.CommitIter
136+
}
137+
138+
func testInitRepository(repo Repository, data interface{}) error {
139+
d := data.(*testCommitIter)
140+
141+
cIter, err := repo.Repo.CommitObjects()
142+
if err != nil {
143+
return err
144+
}
145+
146+
d.iter = cIter
147+
148+
return nil
149+
}
150+
151+
func testNextRow(data interface{}) (sql.Row, error) {
152+
d := data.(*testCommitIter)
153+
154+
_, err := d.iter.Next()
155+
if err != nil {
156+
return nil, err
157+
}
158+
159+
return nil, nil
160+
}
161+
162+
func testClose(data interface{}) error {
163+
d := data.(*testCommitIter)
164+
165+
if d.iter != nil {
166+
d.iter.Close()
167+
}
168+
169+
return nil
170+
}
171+
172+
func TestRepositoryRowIterator(t *testing.T) {
173+
require := require.New(t)
174+
175+
path := fixtures.Basic().ByTag("worktree").One().Worktree().Root()
176+
177+
pool := NewRepositoryPool()
178+
id, err := pool.AddGit(path)
179+
require.Equal(path, id)
180+
require.Nil(err)
181+
182+
id, err = pool.AddGit(path)
183+
require.Equal(path, id)
184+
require.Nil(err)
185+
186+
cIter := &testCommitIter{}
187+
188+
rowRepoIter, err := NewRowRepoIter(pool, cIter, testInitRepository,
189+
testNextRow, testClose)
190+
require.Nil(err)
191+
192+
count := 0
193+
for {
194+
row, err := rowRepoIter.Next()
195+
if err != nil {
196+
require.Equal(io.EOF, err)
197+
break
198+
}
199+
200+
require.Nil(row)
201+
202+
count++
203+
}
204+
205+
require.Equal(9*2, count)
206+
}

0 commit comments

Comments
 (0)