* fix migrations: gitlab_test * more stable test * Get Reactions to Pulls * Reactions for Issues * Comments are still hard Co-authored-by: Lauris BH <lauris@nix.lv>tags/v1.13.0-rc1
@@ -327,7 +327,6 @@ func (g *GitlabDownloader) GetAsset(tag string, id int64) (io.ReadCloser, error) | |||
// GetIssues returns issues according start and limit | |||
// Note: issue label description and colors are not supported by the go-gitlab library at this time | |||
// TODO: figure out how to transfer issue reactions | |||
func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, error) { | |||
state := "all" | |||
sort := "asc" | |||
@@ -361,6 +360,22 @@ func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, er | |||
milestone = issue.Milestone.Title | |||
} | |||
var reactions []*base.Reaction | |||
var awardPage = 1 | |||
for { | |||
awards, _, err := g.client.AwardEmoji.ListIssueAwardEmoji(g.repoID, issue.IID, &gitlab.ListAwardEmojiOptions{Page: awardPage, PerPage: perPage}, gitlab.WithContext(g.ctx)) | |||
if err != nil { | |||
return nil, false, fmt.Errorf("error while listing issue awards: %v", err) | |||
} | |||
if len(awards) < perPage { | |||
break | |||
} | |||
for i := range awards { | |||
reactions = append(reactions, g.awardToReaction(awards[i])) | |||
} | |||
awardPage++ | |||
} | |||
allIssues = append(allIssues, &base.Issue{ | |||
Title: issue.Title, | |||
Number: int64(issue.IID), | |||
@@ -371,6 +386,7 @@ func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, er | |||
State: issue.State, | |||
Created: *issue.CreatedAt, | |||
Labels: labels, | |||
Reactions: reactions, | |||
Closed: issue.ClosedAt, | |||
IsLocked: issue.DiscussionLocked, | |||
Updated: *issue.UpdatedAt, | |||
@@ -384,6 +400,7 @@ func (g *GitlabDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, er | |||
} | |||
// GetComments returns comments according issueNumber | |||
// TODO: figure out how to transfer comment reactions | |||
func (g *GitlabDownloader) GetComments(issueNumber int64) ([]*base.Comment, error) { | |||
var allComments = make([]*base.Comment, 0, 100) | |||
@@ -501,6 +518,22 @@ func (g *GitlabDownloader) GetPullRequests(page, perPage int) ([]*base.PullReque | |||
milestone = pr.Milestone.Title | |||
} | |||
var reactions []*base.Reaction | |||
var awardPage = 1 | |||
for { | |||
awards, _, err := g.client.AwardEmoji.ListMergeRequestAwardEmoji(g.repoID, pr.IID, &gitlab.ListAwardEmojiOptions{Page: awardPage, PerPage: perPage}, gitlab.WithContext(g.ctx)) | |||
if err != nil { | |||
return nil, fmt.Errorf("error while listing merge requests awards: %v", err) | |||
} | |||
if len(awards) < perPage { | |||
break | |||
} | |||
for i := range awards { | |||
reactions = append(reactions, g.awardToReaction(awards[i])) | |||
} | |||
awardPage++ | |||
} | |||
// Add the PR ID to the Issue Count because PR and Issues share ID space in Gitea | |||
newPRNumber := g.issueCount + int64(pr.IID) | |||
@@ -520,6 +553,7 @@ func (g *GitlabDownloader) GetPullRequests(page, perPage int) ([]*base.PullReque | |||
MergeCommitSHA: pr.MergeCommitSHA, | |||
MergedTime: mergeTime, | |||
IsLocked: locked, | |||
Reactions: reactions, | |||
Head: base.PullRequestBranch{ | |||
Ref: pr.SourceBranch, | |||
SHA: pr.SHA, | |||
@@ -570,3 +604,11 @@ func (g *GitlabDownloader) GetReviews(pullRequestNumber int64) ([]*base.Review, | |||
return reviews, nil | |||
} | |||
func (g *GitlabDownloader) awardToReaction(award *gitlab.AwardEmoji) *base.Reaction { | |||
return &base.Reaction{ | |||
UserID: int64(award.User.ID), | |||
UserName: award.User.Username, | |||
Content: award.Name, | |||
} | |||
} |
@@ -130,7 +130,7 @@ func TestGitlabDownloadRepo(t *testing.T) { | |||
PosterName: "lafriks", | |||
State: "closed", | |||
Created: time.Date(2019, 11, 28, 8, 43, 35, 459000000, time.UTC), | |||
Updated: time.Date(2019, 11, 28, 8, 46, 23, 275000000, time.UTC), | |||
Updated: time.Date(2019, 11, 28, 8, 46, 23, 304000000, time.UTC), | |||
Labels: []*base.Label{ | |||
{ | |||
Name: "bug", | |||
@@ -139,8 +139,18 @@ func TestGitlabDownloadRepo(t *testing.T) { | |||
Name: "discussion", | |||
}, | |||
}, | |||
Reactions: nil, | |||
Closed: &closed1, | |||
Reactions: []*base.Reaction{ | |||
{ | |||
UserID: 1241334, | |||
UserName: "lafriks", | |||
Content: "thumbsup", | |||
}, | |||
{ | |||
UserID: 1241334, | |||
UserName: "lafriks", | |||
Content: "open_mouth", | |||
}}, | |||
Closed: &closed1, | |||
}, | |||
{ | |||
Number: 2, | |||
@@ -157,8 +167,38 @@ func TestGitlabDownloadRepo(t *testing.T) { | |||
Name: "duplicate", | |||
}, | |||
}, | |||
Reactions: nil, | |||
Closed: &closed2, | |||
Reactions: []*base.Reaction{ | |||
{ | |||
UserID: 1241334, | |||
UserName: "lafriks", | |||
Content: "thumbsup", | |||
}, | |||
{ | |||
UserID: 1241334, | |||
UserName: "lafriks", | |||
Content: "thumbsdown", | |||
}, | |||
{ | |||
UserID: 1241334, | |||
UserName: "lafriks", | |||
Content: "laughing", | |||
}, | |||
{ | |||
UserID: 1241334, | |||
UserName: "lafriks", | |||
Content: "tada", | |||
}, | |||
{ | |||
UserID: 1241334, | |||
UserName: "lafriks", | |||
Content: "confused", | |||
}, | |||
{ | |||
UserID: 1241334, | |||
UserName: "lafriks", | |||
Content: "hearts", | |||
}}, | |||
Closed: &closed2, | |||
}, | |||
}, issues) | |||
@@ -171,7 +211,6 @@ func TestGitlabDownloadRepo(t *testing.T) { | |||
PosterID: 1241334, | |||
PosterName: "lafriks", | |||
Created: time.Date(2019, 11, 28, 8, 44, 52, 501000000, time.UTC), | |||
Updated: time.Date(2019, 11, 28, 8, 44, 52, 501000000, time.UTC), | |||
Content: "This is a comment", | |||
Reactions: nil, | |||
}, | |||
@@ -207,20 +246,29 @@ func TestGitlabDownloadRepo(t *testing.T) { | |||
assert.EqualValues(t, []*base.PullRequest{ | |||
{ | |||
Number: 4, | |||
Title: "Test branch", | |||
Content: "do not merge this PR", | |||
Milestone: "1.0.0", | |||
PosterID: 1241334, | |||
PosterName: "lafriks", | |||
State: "opened", | |||
Created: time.Date(2019, 11, 28, 15, 56, 54, 104000000, time.UTC), | |||
Updated: time.Date(2019, 11, 28, 15, 56, 54, 104000000, time.UTC), | |||
Number: 4, | |||
OriginalNumber: 2, | |||
Title: "Test branch", | |||
Content: "do not merge this PR", | |||
Milestone: "1.0.0", | |||
PosterID: 1241334, | |||
PosterName: "lafriks", | |||
State: "opened", | |||
Created: time.Date(2019, 11, 28, 15, 56, 54, 104000000, time.UTC), | |||
Labels: []*base.Label{ | |||
{ | |||
Name: "bug", | |||
}, | |||
}, | |||
Reactions: []*base.Reaction{{ | |||
UserID: 4575606, | |||
UserName: "real6543", | |||
Content: "thumbsup", | |||
}, { | |||
UserID: 4575606, | |||
UserName: "real6543", | |||
Content: "tada", | |||
}}, | |||
PatchURL: "https://gitlab.com/gitea/test_repo/-/merge_requests/2.patch", | |||
Head: base.PullRequestBranch{ | |||
Ref: "feat/test", | |||
@@ -244,13 +292,20 @@ func TestGitlabDownloadRepo(t *testing.T) { | |||
rvs, err := downloader.GetReviews(1) | |||
assert.NoError(t, err) | |||
if assert.Len(t, prs, 2) { | |||
assert.EqualValues(t, 527793, rvs[0].ReviewerID) | |||
assert.EqualValues(t, "axifive", rvs[0].ReviewerName) | |||
assert.EqualValues(t, "APPROVED", rvs[0].State) | |||
assert.EqualValues(t, 4102996, rvs[1].ReviewerID) | |||
assert.EqualValues(t, "zeripath", rvs[1].ReviewerName) | |||
assert.EqualValues(t, "APPROVED", rvs[1].State) | |||
if assert.Len(t, rvs, 2) { | |||
for i := range rvs { | |||
switch rvs[i].ReviewerID { | |||
case 4102996: | |||
assert.EqualValues(t, "zeripath", rvs[i].ReviewerName) | |||
assert.EqualValues(t, "APPROVED", rvs[i].State) | |||
case 527793: | |||
assert.EqualValues(t, "axifive", rvs[i].ReviewerName) | |||
assert.EqualValues(t, "APPROVED", rvs[i].State) | |||
default: | |||
t.Errorf("Unexpected Reviewer ID: %d", rvs[i].ReviewerID) | |||
} | |||
} | |||
} | |||
rvs, err = downloader.GetReviews(2) | |||
assert.NoError(t, err) | |||