forked from src-d/gitbase
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcommit_test.go
100 lines (90 loc) · 2.65 KB
/
commit_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
package commitstats
import (
"testing"
fixtures "github.com/src-d/go-git-fixtures"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"gopkg.in/src-d/go-git.v4"
"gopkg.in/src-d/go-git.v4/plumbing"
"gopkg.in/src-d/go-git.v4/plumbing/cache"
"gopkg.in/src-d/go-git.v4/plumbing/object"
"gopkg.in/src-d/go-git.v4/storage/filesystem"
)
func TestCalculate(t *testing.T) {
defer func() {
require.NoError(t, fixtures.Clean())
}()
tests := map[string]struct {
fixture *fixtures.Fixture
from plumbing.Hash
to plumbing.Hash
expected *CommitStats
}{
"basic": {
fixture: fixtures.ByURL("https://github.com/src-d/go-git.git").One(),
to: plumbing.NewHash("d2d68d3413353bd4bf20891ac1daa82cd6e00fb9"),
expected: &CommitStats{
Files: 23,
Code: KindStats{Additions: 414, Deletions: 264},
Blank: KindStats{Additions: 42, Deletions: 65},
Comment: KindStats{Additions: 2, Deletions: 337},
Total: KindStats{Additions: 458, Deletions: 666},
},
},
"orphan": {
fixture: fixtures.Basic().One(),
to: plumbing.NewHash("b029517f6300c2da0f4b651b8642506cd6aaf45d"),
expected: &CommitStats{
Files: 1,
Other: KindStats{Additions: 22, Deletions: 0},
Total: KindStats{Additions: 22, Deletions: 0},
},
},
"other": {
fixture: fixtures.Basic().One(),
to: plumbing.NewHash("b8e471f58bcbca63b07bda20e428190409c2db47"),
expected: &CommitStats{
Files: 1,
Other: KindStats{Additions: 1, Deletions: 0},
Total: KindStats{Additions: 1, Deletions: 0},
},
},
"binary": {
fixture: fixtures.Basic().One(),
to: plumbing.NewHash("35e85108805c84807bc66a02d91535e1e24b38b9"),
expected: &CommitStats{
Files: 1,
},
},
"vendor": {
fixture: fixtures.Basic().One(),
to: plumbing.NewHash("6ecf0ef2c2dffb796033e5a02219af86ec6584e5"),
expected: &CommitStats{
Files: 0,
},
},
"with_from": {
fixture: fixtures.Basic().One(),
to: plumbing.NewHash("6ecf0ef2c2dffb796033e5a02219af86ec6584e5"),
from: plumbing.NewHash("6ecf0ef2c2dffb796033e5a02219af86ec6584e5"),
expected: &CommitStats{},
},
}
for name, test := range tests {
t.Run(name, func(t *testing.T) {
require := require.New(t)
r, err := git.Open(filesystem.NewStorage(test.fixture.DotGit(), cache.NewObjectLRUDefault()), nil)
require.NoError(err)
to, err := r.CommitObject(test.to)
require.NoError(err)
var from *object.Commit
if !test.from.IsZero() {
from, err = r.CommitObject(test.from)
require.NoError(err)
}
stats, err := Calculate(r, from, to)
require.NoError(err)
assert.Equal(t, test.expected, stats)
})
}
}