Skip to content

Commit 1204093

Browse files
author
Vladimir Yarotsky
committed
Write PR labels to .git/resource/labels
1 parent c41729d commit 1204093

2 files changed

Lines changed: 32 additions & 12 deletions

File tree

in.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,12 @@ func Get(request GetRequest, github Github, git Git, outputDir string) (*GetResp
7575
metadata.Add("author", pull.Tip.Author.User.Login)
7676
metadata.Add("author_email", pull.Tip.Author.Email)
7777

78+
labelsJSON, err := serializeLabels(pull)
79+
if err != nil {
80+
return nil, fmt.Errorf("failed to serialize pull request labels: %s", err)
81+
}
82+
metadata.Add("labels", labelsJSON)
83+
7884
// Write version and metadata for reuse in PUT
7985
path := filepath.Join(outputDir, ".git", "resource")
8086
if err := os.MkdirAll(path, os.ModePerm); err != nil {
@@ -128,6 +134,18 @@ func Get(request GetRequest, github Github, git Git, outputDir string) (*GetResp
128134
}, nil
129135
}
130136

137+
func serializeLabels(p *PullRequest) (string, error) {
138+
labels := []string{}
139+
for _, label := range p.Labels {
140+
labels = append(labels, label.Name)
141+
}
142+
serializedLabels, err := json.Marshal(labels)
143+
if err != nil {
144+
return "", err
145+
}
146+
return string(serializedLabels), nil
147+
}
148+
131149
// GetParameters ...
132150
type GetParameters struct {
133151
SkipDownload bool `json:"skip_download"`

in_test.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
)
1717

1818
func TestGet(t *testing.T) {
19+
prLabels := []string{"my-label"}
1920

2021
tests := []struct {
2122
description string
@@ -40,9 +41,9 @@ func TestGet(t *testing.T) {
4041
CommittedDate: time.Time{},
4142
},
4243
parameters: resource.GetParameters{},
43-
pullRequest: createTestPR(1, "master", false, false, 0, nil),
44+
pullRequest: createTestPR(1, "master", false, false, 0, prLabels),
4445
versionString: `{"pr":"pr1","commit":"commit1","committed":"0001-01-01T00:00:00Z"}`,
45-
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"}]`,
46+
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"},{"name":"labels","value":"[\"my-label\"]"}]`,
4647
},
4748
{
4849
description: "get supports unlocking with git crypt",
@@ -57,9 +58,9 @@ func TestGet(t *testing.T) {
5758
CommittedDate: time.Time{},
5859
},
5960
parameters: resource.GetParameters{},
60-
pullRequest: createTestPR(1, "master", false, false, 0, nil),
61+
pullRequest: createTestPR(1, "master", false, false, 0, prLabels),
6162
versionString: `{"pr":"pr1","commit":"commit1","committed":"0001-01-01T00:00:00Z"}`,
62-
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"}]`,
63+
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"},{"name":"labels","value":"[\"my-label\"]"}]`,
6364
},
6465
{
6566
description: "get supports rebasing",
@@ -75,9 +76,9 @@ func TestGet(t *testing.T) {
7576
parameters: resource.GetParameters{
7677
IntegrationTool: "rebase",
7778
},
78-
pullRequest: createTestPR(1, "master", false, false, 0, nil),
79+
pullRequest: createTestPR(1, "master", false, false, 0, prLabels),
7980
versionString: `{"pr":"pr1","commit":"commit1","committed":"0001-01-01T00:00:00Z"}`,
80-
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"}]`,
81+
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"},{"name":"labels","value":"[\"my-label\"]"}]`,
8182
},
8283
{
8384
description: "get supports checkout",
@@ -93,9 +94,9 @@ func TestGet(t *testing.T) {
9394
parameters: resource.GetParameters{
9495
IntegrationTool: "checkout",
9596
},
96-
pullRequest: createTestPR(1, "master", false, false, 0, nil),
97+
pullRequest: createTestPR(1, "master", false, false, 0, prLabels),
9798
versionString: `{"pr":"pr1","commit":"commit1","committed":"0001-01-01T00:00:00Z"}`,
98-
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"}]`,
99+
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"},{"name":"labels","value":"[\"my-label\"]"}]`,
99100
},
100101
{
101102
description: "get supports git_depth",
@@ -111,9 +112,9 @@ func TestGet(t *testing.T) {
111112
parameters: resource.GetParameters{
112113
GitDepth: 2,
113114
},
114-
pullRequest: createTestPR(1, "master", false, false, 0, nil),
115+
pullRequest: createTestPR(1, "master", false, false, 0, prLabels),
115116
versionString: `{"pr":"pr1","commit":"commit1","committed":"0001-01-01T00:00:00Z"}`,
116-
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"}]`,
117+
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"},{"name":"labels","value":"[\"my-label\"]"}]`,
117118
},
118119
{
119120
description: "get supports list_changed_files",
@@ -129,7 +130,7 @@ func TestGet(t *testing.T) {
129130
parameters: resource.GetParameters{
130131
ListChangedFiles: true,
131132
},
132-
pullRequest: createTestPR(1, "master", false, false, 0, nil),
133+
pullRequest: createTestPR(1, "master", false, false, 0, prLabels),
133134
files: []resource.ChangedFileObject{
134135
{
135136
Path: "README.md",
@@ -139,7 +140,7 @@ func TestGet(t *testing.T) {
139140
},
140141
},
141142
versionString: `{"pr":"pr1","commit":"commit1","committed":"0001-01-01T00:00:00Z"}`,
142-
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"}]`,
143+
metadataString: `[{"name":"pr","value":"1"},{"name":"title","value":"pr1 title"},{"name":"url","value":"pr1 url"},{"name":"head_name","value":"pr1"},{"name":"head_sha","value":"oid1"},{"name":"base_name","value":"master"},{"name":"base_sha","value":"sha"},{"name":"message","value":"commit message1"},{"name":"author","value":"login1"},{"name":"author_email","value":"user@example.com"},{"name":"labels","value":"[\"my-label\"]"}]`,
143144
filesString: "README.md\nOther.md\n",
144145
},
145146
}
@@ -185,6 +186,7 @@ func TestGet(t *testing.T) {
185186
"author": "login1",
186187
"author_email": "user@example.com",
187188
"title": "pr1 title",
189+
"labels": `["my-label"]`,
188190
}
189191

190192
for filename, expected := range files {

0 commit comments

Comments
 (0)