Skip to content

Commit 657e258

Browse files
author
jguerreiro
committed
chore(srcfingerprint): squash generic properties of providers
1 parent 3e89176 commit 657e258

15 files changed

+310
-133
lines changed

analyzer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dnacollector
1+
package srcfingerprint
22

33
import (
44
git "gopkg.in/src-d/go-git.v4/plumbing/object"

analyzer_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
package dnacollector_test
1+
package srcfingerprint
22

33
import (
4-
"dnacollector"
54
"testing"
65

76
"github.com/stretchr/testify/assert"
@@ -14,7 +13,7 @@ type AnalyzerTestSuite struct {
1413
}
1514

1615
func (suite *AnalyzerTestSuite) TestAnalyzeCommit() {
17-
analyzer := dnacollector.Analyzer{}
16+
analyzer := Analyzer{}
1817
commit := &object.Commit{
1918
Author: object.Signature{
2019
Name: "Author",

cloner.go renamed to cloner/cloner.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dnacollector
1+
package cloner
22

33
import (
44
"io/ioutil"

extractor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package dnacollector
1+
package srcfingerprint
22

33
import (
44
"bufio"

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
module dnacollector
1+
module srcfingerprint
22

33
go 1.15
44

@@ -10,11 +10,11 @@ require (
1010
github.com/google/go-querystring v1.1.0 // indirect
1111
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
1212
github.com/kevinburke/ssh_config v1.1.0 // indirect
13-
github.com/ldez/go-git-cmd-wrapper/v2 v2.0.0 // indirect
1413
github.com/russross/blackfriday/v2 v2.1.0 // indirect
1514
github.com/sergi/go-diff v1.2.0 // indirect
1615
github.com/sirupsen/logrus v1.8.1
1716
github.com/stretchr/testify v1.7.0
17+
github.com/suhaibmujahid/go-bitbucket-server v0.1.0
1818
github.com/urfave/cli/v2 v2.3.0
1919
github.com/xanzy/go-gitlab v0.48.0
2020
github.com/xanzy/ssh-agent v0.3.0 // indirect

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
150150
github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
151151
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
152152
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
153-
github.com/ldez/go-git-cmd-wrapper/v2 v2.0.0 h1:WyBXbkLaU1oZlZ5czVgnTmzzSD7hMpPVtdavyVk2+7g=
154-
github.com/ldez/go-git-cmd-wrapper/v2 v2.0.0/go.mod h1:8IK8SZaL0HgWHK4Gb8byfw2eyYkaBZjZ6fVLt++vQ7Y=
155153
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
156154
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
157155
github.com/pelletier/go-buffruneio v0.2.0/go.mod h1:JkE26KsDizTr40EUHkXVtNPvgGtbSNq5BcowyYOWdKo=
@@ -184,6 +182,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV
184182
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
185183
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
186184
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
185+
github.com/suhaibmujahid/go-bitbucket-server v0.1.0 h1:gx0F7l5NRzwtGz31lNT3HxqZzxuppWCeZCfhueIhKds=
186+
github.com/suhaibmujahid/go-bitbucket-server v0.1.0/go.mod h1:Wjot/W+YmE1Y/zWOhJ+VrMG85z9qRB896ZE3RrCSCv0=
187187
github.com/urfave/cli/v2 v2.3.0 h1:qph92Y649prgesehzOrQjdWyxFOp/QVM+6imKHad91M=
188188
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
189189
github.com/xanzy/go-gitlab v0.48.0 h1:RP9r4pMDIwE2fbtc+QYiC1euDsPGHcAjPkhje4X3QPU=

notes.md

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,26 @@
22

33
## Name
44

5-
`src-fingerprint` collect --vcs (GitHub|GitLab|Bitbucket) --object (repository|org|group|instance|org)
5+
`src-fingerprint` collect --vcs (GitHub|GitLab|Bitbucket) --object (
6+
7+
workflow
8+
in_review
9+
0
10+
0
11+

12+
repository|org|group|instance|org)
13+
614
## Testing strategy
715

816
- [ ] Test it on multiple os -> Windows, Linux, MacOs
917

10-
1118
## To Do
19+
1220
- [ ] Support BitBucket
1321
- [ ] Implement a Redactor class to remove some data (repository name)
14-
- [ ] Use cobra or other packages for the CLI
15-
- [ ] Implement CLI entry to scan a repo and not a full org.
16-
- [ ]
22+
- [x] Use cobra or other packages for the CLI
23+
- [ ] Implement CLI entry to scan a repo and not a full org.
1724

1825
## CLI implementation
19-
- [ ]
26+
27+
- [ ]

pipeline.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
package dnacollector
1+
package srcfingerprint
22

33
import (
4+
"srcfingerprint/cloner"
5+
"srcfingerprint/provider"
46
"sync"
57

68
log "github.com/sirupsen/logrus"
@@ -13,19 +15,19 @@ type PipelineEvent interface{}
1315
// RepositoryListPipelineEvent is the event fired when the list of repositories has been gathered.
1416
type RepositoryListPipelineEvent struct {
1517
// Repositories is the list of repositories
16-
Repositories []GitRepository
18+
Repositories []provider.GitRepository
1719
}
1820

1921
// ResultCommitPipelineEvent represents the event for a result.
2022
type ResultCommitPipelineEvent struct {
21-
Repository GitRepository
23+
Repository provider.GitRepository
2224
Commit *object.Commit
2325
Author object.Signature
2426
Committer object.Signature
2527
}
2628

2729
type ResultGitFilePipelineEvent struct {
28-
Repository GitRepository
30+
Repository provider.GitRepository
2931
GitFile *GitFile
3032
}
3133

@@ -47,8 +49,8 @@ type CommitPipelineEvent struct {
4749

4850
// Pipeline represents the whole extraction pipeline.
4951
type Pipeline struct {
50-
Provider Provider
51-
Cloner Cloner
52+
Provider provider.Provider
53+
Cloner cloner.Cloner
5254
Analyzer *Analyzer
5355

5456
ClonersCount int
@@ -65,7 +67,7 @@ func (p *Pipeline) gather(
6567
wg *sync.WaitGroup,
6668
eventChan chan<- PipelineEvent,
6769
user string,
68-
output chan<- GitRepository) {
70+
output chan<- provider.GitRepository) {
6971
defer wg.Done()
7072
defer close(output)
7173

@@ -86,7 +88,7 @@ func (p *Pipeline) gather(
8688
}
8789

8890
// ExtractRepository extracts for a single repository.
89-
func (p *Pipeline) ExtractRepository(repository GitRepository, eventChan chan<- PipelineEvent) error {
91+
func (p *Pipeline) ExtractRepository(repository provider.GitRepository, eventChan chan<- PipelineEvent) error {
9092
defer p.publishEvent(eventChan, RepositoryPipelineEvent{true, repository.GetName()})
9193

9294
log.Infof("Cloning repo %v\n", repository.GetName())
@@ -118,7 +120,7 @@ const (
118120
func (p *Pipeline) ExtractRepositories(user string, eventChan chan<- PipelineEvent) {
119121
log.Infof("Extracting user %v\n", user)
120122

121-
repositoryChannel := make(chan GitRepository)
123+
repositoryChannel := make(chan provider.GitRepository)
122124

123125
extractionWorkersCount := p.ClonersCount
124126
if extractionWorkersCount == 0 {

pipeline_test.go

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
package dnacollector
1+
package srcfingerprint
22

33
import (
44
"path/filepath"
5+
"srcfingerprint/cloner"
6+
"srcfingerprint/provider"
57
"sync"
68
"testing"
79
"time"
@@ -20,12 +22,12 @@ type ProviderMock struct {
2022
mock.Mock
2123
}
2224

23-
func (mock *ProviderMock) Gather(user string) ([]GitRepository, error) {
25+
func (mock *ProviderMock) Gather(user string) ([]provider.GitRepository, error) {
2426
args := mock.Called(user)
25-
return args.Get(0).([]GitRepository), args.Error(1)
27+
return args.Get(0).([]provider.GitRepository), args.Error(1)
2628
}
2729

28-
func (mock *ProviderMock) CloneRepository(cloner Cloner, repository GitRepository) (*git.Repository, error) {
30+
func (mock *ProviderMock) CloneRepository(cloner cloner.Cloner, repository provider.GitRepository) (*git.Repository, error) {
2931
args := mock.Called(cloner, repository)
3032
return args.Get(0).(*git.Repository), args.Error(1)
3133
}
@@ -38,7 +40,7 @@ func (m gitRepositoryMock) GetHTTPUrl() string { return "" }
3840
func (m gitRepositoryMock) GetCreatedAt() time.Time { return time.Unix(0, 0) }
3941
func (m gitRepositoryMock) GetStorageSize() int64 { return 0 }
4042

41-
func createGitRepository(name string) GitRepository {
43+
func createGitRepository(name string) provider.GitRepository {
4244
return gitRepositoryMock{name: name}
4345
}
4446

@@ -52,26 +54,26 @@ func openTestGitRepository(t *testing.T) *git.Repository {
5254
}
5355

5456
func (suite *PipelineTestSuite) TestGather() {
55-
outputChan := make(chan GitRepository)
57+
outputChan := make(chan provider.GitRepository)
5658
wg := &sync.WaitGroup{}
57-
provider := &ProviderMock{}
59+
providerMock := &ProviderMock{}
5860
pipeline := Pipeline{
59-
Provider: provider,
61+
Provider: providerMock,
6062
}
6163

62-
provider.On("Gather", "user").Return([]GitRepository{createGitRepository("1")}, nil)
64+
providerMock.On("Gather", "user").Return([]provider.GitRepository{createGitRepository("1")}, nil)
6365

6466
wg.Add(1)
6567
go pipeline.gather(wg, nil, "user", outputChan)
6668

67-
repositories := make([]GitRepository, 0, 2)
69+
repositories := make([]provider.GitRepository, 0, 2)
6870
for output := range outputChan {
6971
repositories = append(repositories, output)
7072
}
7173
wg.Wait()
7274

73-
provider.AssertExpectations(suite.T())
74-
assert.Equal(suite.T(), []GitRepository{gitRepositoryMock{name: "1"}}, repositories)
75+
providerMock.AssertExpectations(suite.T())
76+
assert.Equal(suite.T(), []provider.GitRepository{gitRepositoryMock{name: "1"}}, repositories)
7577
}
7678

7779
func (suite *PipelineTestSuite) TestExtractGitRepository() {
@@ -116,17 +118,17 @@ func (suite *PipelineTestSuite) TestExtractGitRepository() {
116118
func (suite *PipelineTestSuite) TestExtractRepositories() {
117119
suite.T().Skip("Skip until repository is stable") // Skip for now
118120
eventChan := make(chan PipelineEvent)
119-
provider := &ProviderMock{}
121+
providerMock := &ProviderMock{}
120122
repository := createGitRepository("repoName")
121-
pipeline := Pipeline{Provider: provider}
123+
pipeline := Pipeline{Provider: providerMock}
122124

123125
gitRepository := openTestGitRepository(suite.T())
124126
commitIter, _ := gitRepository.CommitObjects()
125127
// firstCommit, _ := commitIter.Next()
126128
commitIter.Close()
127129

128-
provider.On("Gather", "user").Return([]GitRepository{repository}, nil)
129-
provider.On("CloneRepository", nil, repository).Return(gitRepository, nil)
130+
providerMock.On("Gather", "user").Return([]provider.GitRepository{repository}, nil)
131+
providerMock.On("CloneRepository", nil, repository).Return(gitRepository, nil)
130132

131133
go func() {
132134
defer close(eventChan)
@@ -140,7 +142,7 @@ func (suite *PipelineTestSuite) TestExtractRepositories() {
140142
}
141143

142144
expectedEvents := []PipelineEvent{
143-
RepositoryListPipelineEvent{Repositories: []GitRepository{repository}},
145+
RepositoryListPipelineEvent{Repositories: []provider.GitRepository{repository}},
144146
// ResultPipelineEvent{
145147
// Repository: repository,
146148
// Commit: firstCommit,
@@ -150,7 +152,7 @@ func (suite *PipelineTestSuite) TestExtractRepositories() {
150152
RepositoryPipelineEvent{true, "repoName"},
151153
}
152154

153-
provider.AssertExpectations(suite.T())
155+
providerMock.AssertExpectations(suite.T())
154156
assert.Equal(suite.T(), expectedEvents, events)
155157
}
156158

0 commit comments

Comments
 (0)