Skip to content

Commit 75f3ff0

Browse files
authored
Merge pull request #570 from dpordomingo/from-PR
Signed-off-by: David Pordomingo <david.pordomingo.f@gmail.com>
2 parents 69f73be + 4020ce1 commit 75f3ff0

File tree

6 files changed

+164
-8
lines changed

6 files changed

+164
-8
lines changed

Gopkg.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/server-test/common_test.go

Lines changed: 56 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,20 @@ import (
77
"encoding/json"
88
"fmt"
99
"io"
10+
"strconv"
1011

1112
"github.com/src-d/lookout"
12-
fixtures "github.com/src-d/lookout-test-fixtures"
1313
"github.com/src-d/lookout/util/cmdtest"
1414
"github.com/src-d/lookout/util/grpchelper"
15-
log "gopkg.in/src-d/go-log.v1"
15+
16+
"github.com/src-d/lookout-test-fixtures"
17+
"gopkg.in/src-d/go-git.v4/plumbing"
18+
"gopkg.in/src-d/go-log.v1"
1619
"gopkg.in/src-d/lookout-sdk.v0/pb"
1720
)
1821

22+
const dummyConfigFile = "../../fixtures/dummy_config.yml"
23+
1924
type IntegrationSuite struct {
2025
cmdtest.IntegrationSuite
2126
r io.Reader
@@ -76,6 +81,55 @@ func startMockAnalyzer(ctx context.Context, a mockAnalyzer) error {
7681
return nil
7782
}
7883

84+
func castPullRequest(fixture *fixtures.Fixture) (*jsonReviewEvent, error) {
85+
pr := fixture.GetPR()
86+
87+
baseRepoCloneUrl := pr.GetBase().GetRepo().GetCloneURL()
88+
baseRepoInfo, err := pb.ParseRepositoryInfo(baseRepoCloneUrl)
89+
if err != nil {
90+
return nil, err
91+
}
92+
93+
headRepoCloneUrl := pr.GetHead().GetRepo().GetCloneURL()
94+
headRepoInfo, err := pb.ParseRepositoryInfo(headRepoCloneUrl)
95+
if err != nil {
96+
return nil, err
97+
}
98+
99+
event := pb.ReviewEvent{}
100+
101+
event.Provider = "github"
102+
event.InternalID = strconv.FormatInt(pr.GetID(), 10)
103+
104+
event.Number = uint32(pr.GetNumber())
105+
event.RepositoryID = uint32(pr.GetHead().GetRepo().GetID())
106+
107+
sourceRefName := fmt.Sprintf("refs/heads/%s", pr.GetHead().GetRef())
108+
event.Source = lookout.ReferencePointer{
109+
InternalRepositoryURL: headRepoInfo.CloneURL,
110+
ReferenceName: plumbing.ReferenceName(sourceRefName),
111+
Hash: pr.GetHead().GetSHA(),
112+
}
113+
114+
baseRefName := fmt.Sprintf("refs/heads/%s", pr.GetBase().GetRef())
115+
event.Base = lookout.ReferencePointer{
116+
InternalRepositoryURL: baseRepoInfo.CloneURL,
117+
ReferenceName: plumbing.ReferenceName(baseRefName),
118+
Hash: pr.GetBase().GetSHA(),
119+
}
120+
121+
headRefName := fmt.Sprintf("refs/pull/%d/head", pr.GetNumber())
122+
event.Head = lookout.ReferencePointer{
123+
InternalRepositoryURL: baseRepoInfo.CloneURL,
124+
ReferenceName: plumbing.ReferenceName(headRefName),
125+
Hash: pr.GetHead().GetSHA(),
126+
}
127+
128+
event.IsMergeable = pr.GetMergeable()
129+
130+
return &jsonReviewEvent{ReviewEvent: &event}, nil
131+
}
132+
79133
var longLineFixture = fixtures.GetByName("new-go-file-too-long-line")
80134

81135
var successEvent = &jsonReviewEvent{

cmd/server-test/dummy_analyzer_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ import (
1111
"gopkg.in/src-d/lookout-sdk.v0/pb"
1212
)
1313

14-
const dummyConfigFile = "../../fixtures/dummy_config.yml"
15-
1614
type DummyIntegrationSuite struct {
1715
IntegrationSuite
1816
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// +build integration
2+
3+
package server_test
4+
5+
import (
6+
"testing"
7+
"time"
8+
9+
"github.com/src-d/lookout-test-fixtures"
10+
"github.com/stretchr/testify/suite"
11+
)
12+
13+
func TestReviewPrFromForkIntegrationSuite(t *testing.T) {
14+
suite.Run(t, new(reviewPrFromForkIntegrationSuite))
15+
}
16+
17+
type reviewPrFromForkIntegrationSuite struct {
18+
IntegrationSuite
19+
}
20+
21+
func (suite *reviewPrFromForkIntegrationSuite) SetupTest() {
22+
suite.ResetDB()
23+
24+
suite.StoppableCtx()
25+
suite.r, suite.w = suite.StartLookoutd(dummyConfigFile)
26+
27+
suite.StartDummy("--files")
28+
suite.GrepTrue(suite.r, `msg="connection state changed to 'READY'" addr="ipv4://localhost:9930" analyzer=Dummy`)
29+
}
30+
31+
func (suite *reviewPrFromForkIntegrationSuite) TearDownTest() {
32+
// TODO: for integration tests with RabbitMQ we wait a bit so the queue
33+
// is depleted. Ideally this would be done with something similar to ResetDB
34+
time.Sleep(5 * time.Second)
35+
suite.Stop()
36+
}
37+
38+
func (suite *reviewPrFromForkIntegrationSuite) TestReview() {
39+
fixture := fixtures.GetByName("pr-from-fork")
40+
jsonReviewEvent, err := castPullRequest(fixture)
41+
suite.NoError(err)
42+
43+
expectedComments := []string{
44+
`{"analyzer-name":"Dummy","file":"javascript.js",`,
45+
}
46+
47+
suite.sendEvent(jsonReviewEvent.String())
48+
suite.GrepAll(suite.r, expectedComments)
49+
}

vendor/github.com/src-d/lookout-test-fixtures/bindata.go

Lines changed: 48 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/src-d/lookout-test-fixtures/main.go

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)