danger 9.2.0 → 9.3.1

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: 9ad61c252b1b62b1fb4e7aa07c2ef21727ada06dcfdd66e23ce70840ab37fcff
4
- data.tar.gz: a1e98cfa27d937448822f2ece399fc157b5f30358ed675f976ccc7c20b7bfb5f
3
+ metadata.gz: 719588ed490c1115e2439aabacb0dd400e1852bf03a0f25514b26dcb08e0ad9e
4
+ data.tar.gz: 7426ab63483923ceffd843789c473a46f7726b1f9057a74b558bbeeb2c6948d9
5
5
  SHA512:
6
- metadata.gz: f4531b7f35bccbfdc0df07dedae51b009e1a9a0bcf00d566293d28c143c1a00e29f3ef8f7e47421a6ff32e48cd8b2b640866392aab161d0e95d16d9eff6ad1b6
7
- data.tar.gz: fcce02992e6488c454ca914e4a81be0d397cbd19b9f3e63cf058c05068606376020281b552cb489b9d88bf8d0958b6a99b442093d62123a095c3d4418955a1c1
6
+ metadata.gz: 9fa39fb8d2a11ac973a1c4b7a9647bef1a0bfdd36411d403e1f3121b3a1b7490dbaa7489c17f018fa1ae88be4ceccc6ee213267ee32133dfbf162cb3bab93e6f
7
+ data.tar.gz: 01ba1c81cfdb4a37661826f913ed3227e1432fbbede1d69e6521eacfd4d6c8595f8a5140134c431446b591f81027797a4f93b67b674fcfd9c860d452575ea5fb
@@ -0,0 +1,45 @@
1
+ require "danger/request_sources/github/github"
2
+
3
+ module Danger
4
+ # ### CI Setup
5
+ #
6
+ # Custom CI with GitHub
7
+ #
8
+ # This CI source is for custom, most likely internal, CI systems that are use GitHub as source control.
9
+ # An example could be argo-workflows or tekton hosted in your own Kubernetes cluster.
10
+ #
11
+ # The following environment variables are required:
12
+ # - `CUSTOM_CI_WITH_GITHUB` - Set to any value to indicate that this is a custom CI with GitHub
13
+ #
14
+ # ### Token Setup
15
+ #
16
+ # #### GitHub
17
+ # As you own the setup, it's up to you to add the environment variable for the `DANGER_GITHUB_API_TOKEN`.
18
+ #
19
+ class CustomCIWithGithub < CI
20
+ def self.validates_as_ci?(env)
21
+ env.key? "CUSTOM_CI_WITH_GITHUB"
22
+ end
23
+
24
+ def self.validates_as_pr?(env)
25
+ value = env["GITHUB_EVENT_NAME"]
26
+ ["pull_request", "pull_request_target"].include?(value)
27
+ end
28
+
29
+ def supported_request_sources
30
+ @supported_request_sources ||= [Danger::RequestSources::GitHub]
31
+ end
32
+
33
+ def initialize(env)
34
+ self.repo_slug = env["GITHUB_REPOSITORY"]
35
+ pull_request_event = JSON.parse(File.read(env["GITHUB_EVENT_PATH"]))
36
+ self.pull_request_id = pull_request_event["number"]
37
+ self.repo_url = pull_request_event["repository"]["clone_url"]
38
+
39
+ # if environment variable DANGER_GITHUB_API_TOKEN is not set, use env GITHUB_TOKEN
40
+ if (env.key? "CUSTOM_CI_WITH_GITHUB") && (!env.key? "DANGER_GITHUB_API_TOKEN")
41
+ env["DANGER_GITHUB_API_TOKEN"] = env["GITHUB_TOKEN"]
42
+ end
43
+ end
44
+ end
45
+ end
@@ -49,7 +49,7 @@ module Danger
49
49
 
50
50
  configure_octokit(ENV["DANGER_TMPDIR"] || Dir.tmpdir)
51
51
 
52
- env = EnvironmentManager.new(ENV, cork)
52
+ env = EnvironmentManager.new(ENV, cork, @danger_id)
53
53
  dm = Dangerfile.new(env, cork)
54
54
 
55
55
  LocalSetup.new(dm, cork).setup(verbose: verbose) do
@@ -57,7 +57,7 @@ module Danger
57
57
  Danger::EnvironmentManager.danger_base_branch,
58
58
  Danger::EnvironmentManager.danger_head_branch,
59
59
  @dangerfile_path,
60
- nil,
60
+ @danger_id,
61
61
  nil,
62
62
  nil
63
63
  )
@@ -78,15 +78,20 @@ module Danger
78
78
  messages = update_inline_comments_for_kind!(:messages, messages, danger_id: danger_id)
79
79
  markdowns = update_inline_comments_for_kind!(:markdowns, markdowns, danger_id: danger_id)
80
80
 
81
- comment += generate_comment(warnings: warnings,
82
- errors: errors,
83
- messages: messages,
84
- markdowns: markdowns,
85
- previous_violations: {},
86
- danger_id: danger_id,
87
- template: "bitbucket_server")
88
-
89
- @api.post_comment(comment)
81
+ has_comments = (warnings.count > 0 || errors.count > 0 || messages.count > 0 || markdowns.count > 0)
82
+ if has_comments
83
+ comment = generate_description(warnings: warnings,
84
+ errors: errors)
85
+ comment += "\n\n"
86
+ comment += generate_comment(warnings: warnings,
87
+ errors: errors,
88
+ messages: messages,
89
+ markdowns: markdowns,
90
+ previous_violations: {},
91
+ danger_id: danger_id,
92
+ template: "bitbucket_server")
93
+ @api.post_comment(comment)
94
+ end
90
95
  end
91
96
 
92
97
  def update_pr_by_line!(message_groups:,
@@ -8,13 +8,9 @@ module Danger
8
8
 
9
9
  def diff_for_folder(folder, from: "master", to: "HEAD", lookup_top_level: false)
10
10
  self.folder = folder
11
- git_top_level = folder
12
- if lookup_top_level
13
- Dir.chdir(folder) do
14
- git_top_level = exec("rev-parse --show-toplevel")
15
- end
16
- end
17
- repo = Git.open git_top_level
11
+ git_top_level = find_git_top_level_if_needed!(folder, lookup_top_level)
12
+
13
+ repo = Git.open(git_top_level)
18
14
 
19
15
  ensure_commitish_exists!(from)
20
16
  ensure_commitish_exists!(to)
@@ -168,6 +164,26 @@ module Danger
168
164
  def commit_is_ref?(commit)
169
165
  /[a-f0-9]{5,40}/ !~ commit
170
166
  end
167
+
168
+ def find_git_top_level_if_needed!(folder, lookup_top_level)
169
+ git_top_level = Dir.chdir(folder) { exec("rev-parse --show-toplevel") }
170
+ return git_top_level if lookup_top_level
171
+
172
+ # To keep backward compatibility, `GitRepo#diff_for_folder` expects folder
173
+ # to be top level git directory or requires `true` to `lookup_top_level`.
174
+ # https://github.com/danger/danger/pull/1178
175
+ return folder if compare_path(git_top_level, folder)
176
+
177
+ message = "#{folder} is not the top level git directory. Pass correct path or `true` to `lookup_top_level` option for `diff_for_folder`"
178
+ raise ArgumentError, message
179
+ end
180
+
181
+ # Compare given paths as realpath. Return true if both are same.
182
+ # `git rev-parse --show-toplevel` returns a path resolving symlink. In rspec, given path can
183
+ # be a temporary directory's path created under a symlinked directory `/var`.
184
+ def compare_path(path1, path2)
185
+ Pathname.new(path1).realdirpath == Pathname.new(path2).realdirpath
186
+ end
171
187
  end
172
188
  end
173
189
 
@@ -1,4 +1,4 @@
1
1
  module Danger
2
- VERSION = "9.2.0".freeze
2
+ VERSION = "9.3.1".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: 9.2.0
4
+ version: 9.3.1
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: 2023-01-28 00:00:00.000000000 Z
12
+ date: 2023-06-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: claide
@@ -107,14 +107,14 @@ dependencies:
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.7'
110
+ version: '1.13'
111
111
  type: :runtime
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.7'
117
+ version: '1.13'
118
118
  - !ruby/object:Gem::Dependency
119
119
  name: kramdown
120
120
  requirement: !ruby/object:Gem::Requirement
@@ -163,14 +163,14 @@ dependencies:
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '5.0'
166
+ version: '6.0'
167
167
  type: :runtime
168
168
  prerelease: false
169
169
  version_requirements: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '5.0'
173
+ version: '6.0'
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: terminal-table
176
176
  requirement: !ruby/object:Gem::Requirement
@@ -223,6 +223,7 @@ files:
223
223
  - lib/danger/ci_source/codemagic.rb
224
224
  - lib/danger/ci_source/codeship.rb
225
225
  - lib/danger/ci_source/concourse.rb
226
+ - lib/danger/ci_source/custom_ci_with_github.rb
226
227
  - lib/danger/ci_source/dotci.rb
227
228
  - lib/danger/ci_source/drone.rb
228
229
  - lib/danger/ci_source/github_actions.rb
@@ -343,8 +344,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
343
344
  - !ruby/object:Gem::Version
344
345
  version: '0'
345
346
  requirements: []
346
- rubyforge_project:
347
- rubygems_version: 2.7.6.2
347
+ rubygems_version: 3.1.6
348
348
  signing_key:
349
349
  specification_version: 4
350
350
  summary: Like Unit Tests, but for your Team Culture.