Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 43 additions & 1 deletion modules/migrations/gitlab.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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),
Expand All @@ -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,
Expand All @@ -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)

Expand Down Expand Up @@ -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)

Expand All @@ -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,
Expand Down Expand Up @@ -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,
}
}
99 changes: 77 additions & 22 deletions modules/migrations/gitlab_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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,
Expand All @@ -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)

Expand All @@ -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,
},
Expand Down Expand Up @@ -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",
Expand All @@ -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)
Expand Down