danger 5.2.2 → 5.3.0

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
  SHA1:
3
- metadata.gz: 72f0e5d81fa65411996bf4e0ab4a5fbcf27ca666
4
- data.tar.gz: 858ad689324e7f7ab3a63f0a12271d75eaf539e4
3
+ metadata.gz: 280aa14f35fab7d31eca02ca079f3fd139f3f4ba
4
+ data.tar.gz: 356443a6e67ca27bf08cb760b96bfe909d3b40ec
5
5
  SHA512:
6
- metadata.gz: 4539d2b0b778acf486d7daea6ff5e9624bcc4d50e8e26b2eb0a534bfc2acb5f9168d4c169f3e10af6f9c7dca21458415e2b0a9059f7dad76ce556a9664a4f4af
7
- data.tar.gz: f2297c80d5e22a04954640ba16311b92bc229608532a12d41dc24aeebfbb2e9a957ed862192e285962f142c74023283b91bb2c0883fe30370db4e8fe7c528e4e
6
+ metadata.gz: f3fe03e6240ad5b9ef1fd1efe6161b46ce562ca5d851ed5f01719d52679c7f31124e3f920746ee97a5c445e5d751b8dff340b0e7f57cdc4ec441ca8fc896d119
7
+ data.tar.gz: d2ce6b122c7727f462aa53ca5b2d1797007bb8e811bbcb59fa1a0deaa722f5368c3d542cdfbd0622407cf38e168617d54f9ec31c35ee6c9afd601b8d3559e421
@@ -29,6 +29,11 @@ module Danger
29
29
  #
30
30
  # With that set up, you can edit your job to add `bundle exec danger` at the build action.
31
31
  #
32
+ # #### General
33
+ #
34
+ # People occasionally see issues with Danger not classing your CI runs as a PR, to give you visibilty
35
+ # the Jenkins side of Danger expects to see one of these env vars: ghprbPullId, CHANGE_ID or gitlabMergeRequestId
36
+ #
32
37
  # ### Token Setup
33
38
  #
34
39
  # #### GitHub
@@ -143,9 +143,14 @@ module Danger
143
143
  end
144
144
 
145
145
  def current_repo_slug
146
- @git = GitRepo.new
147
- repo_matches = @git.origins.match(%r{([\/:])([^\/]+\/[^\/.]+)(?:.git)?$})
148
- (repo_matches[2] || "[Your/Repo]").strip
146
+ git = GitRepo.new
147
+
148
+ author_repo_regexp = %r{(?:[\/:])([^\/]+\/[^\/]+)(?:.git)?$}
149
+ last_git_regexp = /.git$/
150
+
151
+ matches = git.origins.match(author_repo_regexp)
152
+
153
+ matches ? matches[1].gsub(last_git_regexp, "").strip : "[Your/Repo]"
149
154
  end
150
155
 
151
156
  def setup_danger_ci
@@ -83,6 +83,14 @@ module Danger
83
83
  @git.renamed_files
84
84
  end
85
85
 
86
+ # @!group Git Metadata
87
+ # Whole diff
88
+ # @return [Git::Diff] from the gem `git`
89
+ #
90
+ def diff
91
+ @git.diff
92
+ end
93
+
86
94
  # @!group Git Metadata
87
95
  # The overall lines of code added/removed in the diff
88
96
  # @return [Fixnum]
@@ -226,12 +226,19 @@ module Danger
226
226
 
227
227
  # @!group GitHub Misc
228
228
  # Use to ignore inline messages which lay outside a diff's range, thereby not posting them in the main comment.
229
- # @param [Bool] dismiss
229
+ # You can set hash to change behavior per each kinds. (ex. `{warning: true, error: false}`)
230
+ # @param [Bool] or [Hash<Symbol, Bool>] dismiss
230
231
  # Ignore out of range inline messages, defaults to `true`
231
232
  #
232
233
  # @return [void]
233
- def dismiss_out_of_range_messages(dismiss: true)
234
- @github.dismiss_out_of_range_messages = dismiss == true
234
+ def dismiss_out_of_range_messages(dismiss = true)
235
+ if dismiss.kind_of?(Hash)
236
+ @github.dismiss_out_of_range_messages = dismiss
237
+ elsif dismiss.kind_of?(TrueClass)
238
+ @github.dismiss_out_of_range_messages = true
239
+ elsif dismiss.kind_of?(FalseClass)
240
+ @github.dismiss_out_of_range_messages = false
241
+ end
235
242
  end
236
243
 
237
244
  %i(title body author labels json).each do |suffix|
@@ -245,18 +245,10 @@ module Danger
245
245
  danger_comments = pr_comments.select { |comment| Comment.from_github(comment).generated_by_danger?(danger_id) }
246
246
  non_danger_comments = pr_comments - danger_comments
247
247
 
248
- warnings = submit_inline_comments_for_kind!(
249
- "warning", warnings, diff_lines, danger_comments, previous_violations["warning"], danger_id: danger_id
250
- )
251
- errors = submit_inline_comments_for_kind!(
252
- "no_entry_sign", errors, diff_lines, danger_comments, previous_violations["error"], danger_id: danger_id
253
- )
254
- messages = submit_inline_comments_for_kind!(
255
- "book", messages, diff_lines, danger_comments, previous_violations["message"], danger_id: danger_id
256
- )
257
- markdowns = submit_inline_comments_for_kind!(
258
- nil, markdowns, diff_lines, danger_comments, [], danger_id: danger_id
259
- )
248
+ warnings = submit_inline_comments_for_kind!(:warning, warnings, diff_lines, danger_comments, previous_violations["warning"], danger_id: danger_id)
249
+ errors = submit_inline_comments_for_kind!(:error, errors, diff_lines, danger_comments, previous_violations["error"], danger_id: danger_id)
250
+ messages = submit_inline_comments_for_kind!(:message, messages, diff_lines, danger_comments, previous_violations["message"], danger_id: danger_id)
251
+ markdowns = submit_inline_comments_for_kind!(:markdown, markdowns, diff_lines, danger_comments, [], danger_id: danger_id)
260
252
 
261
253
  # submit removes from the array all comments that are still in force
262
254
  # so we strike out all remaining ones
@@ -293,18 +285,19 @@ module Danger
293
285
  m1.message.sub(blob_regexp, "") == m2.message.sub(blob_regexp, "")
294
286
  end
295
287
 
296
- def submit_inline_comments_for_kind!(emoji, messages, diff_lines, danger_comments, previous_violations, danger_id: "danger")
288
+ def submit_inline_comments_for_kind!(kind, messages, diff_lines, danger_comments, previous_violations, danger_id: "danger")
297
289
  head_ref = pr_json["head"]["sha"]
298
290
  previous_violations ||= []
299
- is_markdown_content = emoji.nil?
291
+ is_markdown_content = kind == :markdown
292
+ emoji = { warning: "warning", error: "no_entry_sign", message: "book" }[kind]
300
293
 
301
294
  messages.reject do |m|
302
295
  next false unless m.file && m.line
303
296
 
304
- position = find_position_in_diff diff_lines, m
297
+ position = find_position_in_diff diff_lines, m, kind
305
298
 
306
299
  # Keep the change if it's line is not in the diff and not in dismiss mode
307
- next self.dismiss_out_of_range_messages if position.nil?
300
+ next dismiss_out_of_range_messages_for(kind) if position.nil?
308
301
 
309
302
  # Once we know we're gonna submit it, we format it
310
303
  if is_markdown_content
@@ -349,7 +342,7 @@ module Danger
349
342
  end
350
343
  end
351
344
 
352
- def find_position_in_diff(diff_lines, message)
345
+ def find_position_in_diff(diff_lines, message, kind)
353
346
  range_header_regexp = /@@ -([0-9]+),([0-9]+) \+(?<start>[0-9]+)(,(?<end>[0-9]+))? @@.*/
354
347
  file_header_regexp = %r{^diff --git a/.*}
355
348
 
@@ -372,7 +365,7 @@ module Danger
372
365
  # so we do it one by one ignoring the deleted lines
373
366
  if !file_line.nil? && !line.start_with?("-")
374
367
  if file_line == message.line
375
- file_line = nil if dismiss_out_of_range_messages && !line.start_with?("+")
368
+ file_line = nil if dismiss_out_of_range_messages_for(kind) && !line.start_with?("+")
376
369
  break
377
370
  end
378
371
  file_line += 1
@@ -432,6 +425,16 @@ module Danger
432
425
  nil
433
426
  end
434
427
 
428
+ def dismiss_out_of_range_messages_for(kind)
429
+ if self.dismiss_out_of_range_messages.kind_of?(Hash) && self.dismiss_out_of_range_messages[kind]
430
+ self.dismiss_out_of_range_messages[kind]
431
+ elsif self.dismiss_out_of_range_messages == true
432
+ self.dismiss_out_of_range_messages
433
+ else
434
+ false
435
+ end
436
+ end
437
+
435
438
  # @return [String] A URL to the specific file, ready to be downloaded
436
439
  def file_url(organisation: nil, repository: nil, branch: nil, path: nil)
437
440
  organisation ||= self.organisation
@@ -1,4 +1,4 @@
1
1
  module Danger
2
- VERSION = "5.2.2".freeze
2
+ VERSION = "5.3.0".freeze
3
3
  DESCRIPTION = "Like Unit Tests, but for your Team Culture.".freeze
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.2
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Orta Therox
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-05-19 00:00:00.000000000 Z
12
+ date: 2017-06-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: claide