danger-jira_sync 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ff26d4b151f9e558de29d9966a5327828fc2c0456435bc0d169cb8e02dae778
4
- data.tar.gz: 6e8d072fb4f8c71c0742d1b146b89aa207a3ee01d6b9a0b2734c851664101291
3
+ metadata.gz: 8fce89991967105fa855239f168ddcd39023c05f3a864602c0f73d625fdcf182
4
+ data.tar.gz: add9884c0ce2306212d0ac502cf20b1ab9f3d1c70d25b1ec14fa884aba97b881
5
5
  SHA512:
6
- metadata.gz: 3e7b4350be8e9ae5a38334ad30ecc819bf8f729f78d2e5b78217012abb8c31a205bd15c7a4315eb5058652d0c1e854b424fcbf97750c21acd0c19ab7a8081b4a
7
- data.tar.gz: f042a95dc596e67c4e9f051ff4262e0f2d7058e5e63ed7844ce5fb591fc26b12038d465d070db7593d99589559ab75b1016c10788bf86ecfc52a88415a7be88d
6
+ metadata.gz: f9e4d1cf4d8409f002d014e10ab3dabf0c0932c31171b24d3f0b92cb0e6772980ede2f405358cb1cb9ab4c089f9f73e793e76134b91efd4906979c6d91bf2f8a
7
+ data.tar.gz: e5403bd45a24ff908279a7e4c0f4d3397531318bd87fcca8b5ae2288d33d8fcea9a3eaadf38636789475d3fedb6023f7c1efb9ec5bf4556eb3c585820515aef2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-jira_sync (0.0.3)
4
+ danger-jira_sync (0.0.4)
5
5
  danger-plugin-api (~> 1.0)
6
6
  jira-ruby (~> 1.5.0)
7
7
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JiraSync
4
- VERSION = "0.0.3"
4
+ VERSION = "0.0.4"
5
5
  end
@@ -76,7 +76,7 @@ module Danger
76
76
  return if labels.empty?
77
77
 
78
78
  create_missing_github_labels(labels)
79
- github.api.add_labels_to_an_issue(repo, issue_number, labels)
79
+ add_labels_to_issue(labels)
80
80
 
81
81
  labels
82
82
  end
@@ -93,6 +93,8 @@ module Danger
93
93
 
94
94
  def github_labels
95
95
  @github_labels ||= github.api.labels(repo)
96
+ rescue Octokit::Error => e
97
+ warn "#{e.response_status} Error while retrieving GitHub labels: #{e.message}"
96
98
  end
97
99
 
98
100
  def extract_issue_keys_from_pull_request(key_prefixes)
@@ -126,9 +128,19 @@ module Danger
126
128
  missing_labels = labels - github_labels
127
129
  missing_labels.each do |label|
128
130
  color = SecureRandom.hex(3)
129
- github.api.add_label(repo, label, color)
131
+ begin
132
+ github.api.add_label(repo, label, color)
133
+ rescue Octokit::Error => e
134
+ warn "#{e.response_status} Error while creating GitHub label \"#{label}\" with color \"#{color}\": #{e.message}"
135
+ end
130
136
  end
131
137
  missing_labels
132
138
  end
139
+
140
+ def add_labels_to_issue(labels)
141
+ github.api.add_labels_to_an_issue(repo, issue_number, labels)
142
+ rescue Octokit::Error => e
143
+ warn "#{e.response_status} Error while adding labels [#{labels}] to GitHub issue: #{e.message}"
144
+ end
133
145
  end
134
146
  end
@@ -124,10 +124,7 @@ RSpec.describe Danger::DangerJiraSync do
124
124
  end
125
125
 
126
126
  context "after calling #configure" do
127
- class GitHubAPIMock
128
- end
129
-
130
- let(:github_api_mock) { GitHubAPIMock.new }
127
+ let(:github_api_mock) { Object.new }
131
128
 
132
129
  before do
133
130
  plugin.configure(jira_settings)
@@ -217,6 +214,16 @@ RSpec.describe Danger::DangerJiraSync do
217
214
  expect(labels).to include(*pr_title_related_project_keys)
218
215
  end
219
216
 
217
+ it "creates no warnings in the default case" do
218
+ stub_github_api_labelling
219
+
220
+ VCR.use_cassette(:default_success, record: :new_episodes) do
221
+ plugin.autolabel_pull_request(issue_prefixes)
222
+ end
223
+
224
+ expect(dangerfile.status_report[:warnings].count).to eq(0)
225
+ end
226
+
220
227
  it "creates a warning when a related Jira ticket cannot be fetched" do
221
228
  stub_jira_find_issue_404
222
229
 
@@ -245,6 +252,78 @@ RSpec.describe Danger::DangerJiraSync do
245
252
  expect(issue_warning_count).to eq(1)
246
253
  end
247
254
 
255
+ it "creates a warning when it cannot create a github label" do
256
+ stub_github_api_labelling
257
+
258
+ error = Octokit::Error.from_response({
259
+ method: "POST",
260
+ url: "https://www.example.com/",
261
+ status: 422,
262
+ documentation_url: "https://developer.github.com/v3/issues/labels/#create-a-label",
263
+ message: <<~HEREDOC
264
+ resource: Label
265
+ code: already_exists
266
+ field: name
267
+ HEREDOC
268
+ })
269
+
270
+ expect(github_api_mock).to receive(:add_label).and_raise(error)
271
+ expect(dangerfile.status_report[:warnings].count).to eq(0), "preconditions"
272
+
273
+ VCR.use_cassette(:default_success, record: :new_episodes) do
274
+ plugin.autolabel_pull_request(issue_prefixes)
275
+ end
276
+
277
+ expected_missing_label_count = 1
278
+ expect(dangerfile.status_report[:warnings].count).to eq(expected_missing_label_count)
279
+ end
280
+
281
+ it "creates a warning when it cannot fetch existing github labels" do
282
+ stub_github_api_labelling
283
+
284
+ error = Octokit::Error.from_response({
285
+ method: "GET",
286
+ url: "https://www.example.com/",
287
+ status: 503,
288
+ documentation_url: "https://developer.github.com/v3/issues/labels/#create-a-label",
289
+ message: "Forbidden"
290
+ })
291
+
292
+ expect(github_api_mock).to receive(:add_labels_to_an_issue).and_raise(error)
293
+ expect(dangerfile.status_report[:warnings].count).to eq(0), "preconditions"
294
+
295
+ VCR.use_cassette(:default_success, record: :new_episodes) do
296
+ plugin.autolabel_pull_request(issue_prefixes)
297
+ end
298
+
299
+ expect(dangerfile.status_report[:warnings].count).to eq(1)
300
+ end
301
+
302
+ it "creates a warning when it cannot add a label to an existing github issue" do
303
+ stub_github_api_labelling
304
+
305
+ error = Octokit::Error.from_response({
306
+ method: "POST",
307
+ url: "https://www.example.com/",
308
+ status: 422,
309
+ documentation_url: "https://developer.github.com/v3/issues/labels/#create-a-label",
310
+ message: <<~HEREDOC
311
+ resource: Label
312
+ code: already_exists
313
+ field: name
314
+ HEREDOC
315
+ })
316
+
317
+ expect(github_api_mock).to receive(:add_label).and_raise(error)
318
+ expect(dangerfile.status_report[:warnings].count).to eq(0), "preconditions"
319
+
320
+ VCR.use_cassette(:default_success, record: :new_episodes) do
321
+ plugin.autolabel_pull_request(issue_prefixes)
322
+ end
323
+
324
+ expect(dangerfile.status_report[:warnings].count).to eq(1)
325
+ end
326
+
248
327
  it "adds a label to the github issue for each related jira issue component name" do
249
328
  pr_title_related_component_names.each do |component_name|
250
329
  expect(github_api_mock).to receive(:add_label).with(anything, component_name, anything).once.and_return(nil)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-jira_sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Menesini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-27 00:00:00.000000000 Z
11
+ date: 2018-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger-plugin-api