danger-xcode_summary 0.3.0 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5c8ef354ef9c12bcc5723808141d089f5d4fd05b
4
- data.tar.gz: 2981e63d2cc178680dced1007ecfe7887e7b4475
2
+ SHA256:
3
+ metadata.gz: 3207822c2dfeb0e69985f941835fa80d06ed3d0ae43e27576a2bcc72bfe8aea3
4
+ data.tar.gz: 17cb5713024a7874cf08d0f1fb1708bfacf53d865f889eaa1b76dbe2fa28342f
5
5
  SHA512:
6
- metadata.gz: 5fdc7f726b98a2f83ee3167a6455cc000e31a60309f48f63604d64338db0caa68cd2c4f16f988dd1ca51d11c8acb87eb3a6917459be8035c332f7e15d462ba95
7
- data.tar.gz: cf9c0a266144a0e6eb6af5cbc190a7e25289a68426e52c381cb442677e951837463e5ce62a16e14b065a85814fcef2d2cbd4f2db0cc462e26d52beac8c65258b
6
+ metadata.gz: 8ee02ac8c805c7f49a739e4384b656cfe24e81c04f2ff0ae108b0e78616d4b84a5ed846fa9784af99801016254434fe027541b1f4044f26265e31363de25147d
7
+ data.tar.gz: ba9211234bc2a64d42fbabee964bbe55ad12e18a48b6e6f7df53d4dee15809c20bb7e4615e66cf669d49ed4e86378cd7678c2f8b3f164b101f1a1e3cafb880ea
data/.rubocop.yml CHANGED
@@ -2,17 +2,13 @@
2
2
  Style/ClassCheck:
3
3
  EnforcedStyle: kind_of?
4
4
 
5
- # It's better to be more explicit about the type
6
- Style/BracesAroundHashParameters:
7
- Enabled: false
8
-
9
5
  # specs sometimes have useless assignments, which is fine
10
6
  Lint/UselessAssignment:
11
7
  Exclude:
12
8
  - '**/spec/**/*'
13
9
 
14
10
  # HoundCI doesn't like this rule
15
- Style/DotPosition:
11
+ Layout/DotPosition:
16
12
  Enabled: false
17
13
 
18
14
  # Cop supports --auto-correct.
@@ -54,8 +50,8 @@ Metrics/CyclomaticComplexity:
54
50
  Max: 17
55
51
 
56
52
  # Configuration parameters: AllowURI, URISchemes.
57
- Metrics/LineLength:
58
- Max: 120
53
+ Layout/LineLength:
54
+ Max: 130
59
55
 
60
56
  # Configuration parameters: CountKeywordArgs.
61
57
  Metrics/ParameterLists:
data/.travis.yml CHANGED
@@ -4,9 +4,8 @@ cache:
4
4
  - bundle
5
5
 
6
6
  rvm:
7
- - 2.0
8
- - 2.1.3
9
- - 2.3.1
7
+ - 2.6.0
8
+ - 2.5.3
10
9
 
11
10
  script:
12
- - bundle exec rake spec
11
+ - bundle exec rake spec
data/Gemfile.lock CHANGED
@@ -1,49 +1,63 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-xcode_summary (0.3.0)
4
+ danger-xcode_summary (0.5.3)
5
5
  danger-plugin-api (~> 1.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- addressable (2.5.1)
11
- public_suffix (~> 2.0, >= 2.0.2)
12
- ast (2.3.0)
13
- claide (1.0.1)
10
+ addressable (2.7.0)
11
+ public_suffix (>= 2.0.2, < 5.0)
12
+ ast (2.4.2)
13
+ claide (1.0.3)
14
14
  claide-plugins (0.9.2)
15
15
  cork
16
16
  nap
17
17
  open4 (~> 1.3)
18
- coderay (1.1.1)
18
+ coderay (1.1.3)
19
19
  colored2 (3.1.2)
20
20
  cork (0.3.0)
21
21
  colored2 (~> 3.1)
22
- danger (4.3.3)
22
+ danger (8.2.3)
23
23
  claide (~> 1.0)
24
24
  claide-plugins (>= 0.9.2)
25
25
  colored2 (~> 3.1)
26
26
  cork (~> 0.1)
27
- faraday (~> 0.9)
28
- faraday-http-cache (~> 1.0)
29
- git (~> 1)
30
- kramdown (~> 1.5)
31
- octokit (~> 4.2)
32
- terminal-table (~> 1)
27
+ faraday (>= 0.9.0, < 2.0)
28
+ faraday-http-cache (~> 2.0)
29
+ git (~> 1.7)
30
+ kramdown (~> 2.3)
31
+ kramdown-parser-gfm (~> 1.0)
32
+ no_proxy_fix
33
+ octokit (~> 4.7)
34
+ terminal-table (>= 1, < 4)
33
35
  danger-plugin-api (1.0.0)
34
36
  danger (> 2.0)
35
- diff-lcs (1.3)
36
- faraday (0.12.0.1)
37
+ diff-lcs (1.4.4)
38
+ faraday (1.4.2)
39
+ faraday-em_http (~> 1.0)
40
+ faraday-em_synchrony (~> 1.0)
41
+ faraday-excon (~> 1.1)
42
+ faraday-net_http (~> 1.0)
43
+ faraday-net_http_persistent (~> 1.1)
37
44
  multipart-post (>= 1.2, < 3)
38
- faraday-http-cache (1.3.1)
39
- faraday (~> 0.8)
40
- ffi (1.9.18)
45
+ ruby2_keywords (>= 0.0.4)
46
+ faraday-em_http (1.0.0)
47
+ faraday-em_synchrony (1.0.0)
48
+ faraday-excon (1.1.0)
49
+ faraday-http-cache (2.2.0)
50
+ faraday (>= 0.8)
51
+ faraday-net_http (1.0.1)
52
+ faraday-net_http_persistent (1.1.0)
53
+ ffi (1.15.1)
41
54
  formatador (0.2.5)
42
- git (1.3.0)
43
- guard (2.14.1)
55
+ git (1.8.1)
56
+ rchardet (~> 1.8)
57
+ guard (2.17.0)
44
58
  formatador (>= 0.2.4)
45
59
  listen (>= 2.7, < 4.0)
46
- lumberjack (~> 1.0)
60
+ lumberjack (>= 1.0.12, < 2.0)
47
61
  nenv (~> 0.1)
48
62
  notiffany (~> 0.0)
49
63
  pry (>= 0.9.12)
@@ -54,80 +68,92 @@ GEM
54
68
  guard (~> 2.1)
55
69
  guard-compat (~> 1.1)
56
70
  rspec (>= 2.99.0, < 4.0)
57
- kramdown (1.13.2)
71
+ kramdown (2.3.1)
72
+ rexml
73
+ kramdown-parser-gfm (1.1.0)
74
+ kramdown (~> 2.0)
58
75
  listen (3.0.7)
59
76
  rb-fsevent (>= 0.9.3)
60
77
  rb-inotify (>= 0.9.7)
61
- lumberjack (1.0.11)
62
- method_source (0.8.2)
63
- multipart-post (2.0.0)
78
+ lumberjack (1.2.8)
79
+ method_source (1.0.0)
80
+ multipart-post (2.1.1)
64
81
  nap (1.1.0)
65
82
  nenv (0.3.0)
66
- notiffany (0.1.1)
83
+ no_proxy_fix (0.1.2)
84
+ notiffany (0.1.3)
67
85
  nenv (~> 0.1)
68
86
  shellany (~> 0.0)
69
- octokit (4.7.0)
87
+ octokit (4.21.0)
88
+ faraday (>= 0.9)
70
89
  sawyer (~> 0.8.0, >= 0.5.3)
71
90
  open4 (1.3.4)
72
- parser (2.4.0.0)
73
- ast (~> 2.2)
74
- powerpack (0.1.1)
75
- pry (0.10.4)
76
- coderay (~> 1.1.0)
77
- method_source (~> 0.8.1)
78
- slop (~> 3.4)
79
- public_suffix (2.0.5)
80
- rainbow (2.2.1)
81
- rake (10.5.0)
82
- rb-fsevent (0.9.8)
83
- rb-inotify (0.9.8)
84
- ffi (>= 0.5.0)
85
- rspec (3.5.0)
86
- rspec-core (~> 3.5.0)
87
- rspec-expectations (~> 3.5.0)
88
- rspec-mocks (~> 3.5.0)
89
- rspec-core (3.5.4)
90
- rspec-support (~> 3.5.0)
91
- rspec-expectations (3.5.0)
91
+ parallel (1.20.1)
92
+ parser (3.0.1.1)
93
+ ast (~> 2.4.1)
94
+ pry (0.14.1)
95
+ coderay (~> 1.1)
96
+ method_source (~> 1.0)
97
+ public_suffix (4.0.6)
98
+ rainbow (3.0.0)
99
+ rake (13.0.3)
100
+ rb-fsevent (0.11.0)
101
+ rb-inotify (0.10.1)
102
+ ffi (~> 1.0)
103
+ rchardet (1.8.0)
104
+ regexp_parser (2.1.1)
105
+ rexml (3.2.5)
106
+ rspec (3.10.0)
107
+ rspec-core (~> 3.10.0)
108
+ rspec-expectations (~> 3.10.0)
109
+ rspec-mocks (~> 3.10.0)
110
+ rspec-core (3.10.1)
111
+ rspec-support (~> 3.10.0)
112
+ rspec-expectations (3.10.1)
92
113
  diff-lcs (>= 1.2.0, < 2.0)
93
- rspec-support (~> 3.5.0)
94
- rspec-mocks (3.5.0)
114
+ rspec-support (~> 3.10.0)
115
+ rspec-mocks (3.10.2)
95
116
  diff-lcs (>= 1.2.0, < 2.0)
96
- rspec-support (~> 3.5.0)
97
- rspec-support (3.5.0)
98
- rubocop (0.48.1)
99
- parser (>= 2.3.3.1, < 3.0)
100
- powerpack (~> 0.1)
101
- rainbow (>= 1.99.1, < 3.0)
117
+ rspec-support (~> 3.10.0)
118
+ rspec-support (3.10.2)
119
+ rubocop (1.15.0)
120
+ parallel (~> 1.10)
121
+ parser (>= 3.0.0.0)
122
+ rainbow (>= 2.2.2, < 4.0)
123
+ regexp_parser (>= 1.8, < 3.0)
124
+ rexml
125
+ rubocop-ast (>= 1.5.0, < 2.0)
102
126
  ruby-progressbar (~> 1.7)
103
- unicode-display_width (~> 1.0, >= 1.0.1)
104
- ruby-progressbar (1.8.1)
105
- sawyer (0.8.1)
106
- addressable (>= 2.3.5, < 2.6)
107
- faraday (~> 0.8, < 1.0)
127
+ unicode-display_width (>= 1.4.0, < 3.0)
128
+ rubocop-ast (1.5.0)
129
+ parser (>= 3.0.1.1)
130
+ ruby-progressbar (1.11.0)
131
+ ruby2_keywords (0.0.4)
132
+ sawyer (0.8.2)
133
+ addressable (>= 2.3.5)
134
+ faraday (> 0.8, < 2.0)
108
135
  shellany (0.0.1)
109
- slop (3.6.0)
110
- terminal-table (1.7.3)
111
- unicode-display_width (~> 1.1.1)
112
- thor (0.19.4)
113
- unicode-display_width (1.1.3)
114
- yard (0.9.8)
136
+ terminal-table (3.0.1)
137
+ unicode-display_width (>= 1.1.1, < 3)
138
+ thor (1.1.0)
139
+ unicode-display_width (2.0.0)
140
+ yard (0.9.26)
115
141
 
116
142
  PLATFORMS
117
143
  ruby
118
144
 
119
145
  DEPENDENCIES
120
- bundler (~> 1.3)
146
+ bundler (>= 2.2.10)
121
147
  danger
122
148
  danger-xcode_summary!
123
149
  guard (~> 2.14)
124
150
  guard-rspec (~> 4.7)
125
151
  listen (= 3.0.7)
126
152
  pry
127
- rake (~> 10.0)
153
+ rake (~> 13.0)
128
154
  rspec (~> 3.4)
129
155
  rubocop
130
156
  yard
131
157
 
132
158
  BUNDLED WITH
133
- 1.14.6
159
+ 2.2.17
data/README.md CHANGED
@@ -3,7 +3,6 @@
3
3
  [![License](http://img.shields.io/badge/license-MIT-green.svg?style=flat)](LICENSE.txt)
4
4
  [![Gem Version](https://badge.fury.io/rb/danger-xcode_summary.svg)](https://badge.fury.io/rb/danger-xcode_summary)
5
5
  [![Build Status](https://travis-ci.org/diogot/danger-xcode_summary.svg?branch=master)](https://travis-ci.org/diogot/danger-xcode_summary)
6
- [![Dependency Status](https://dependencyci.com/github/diogot/danger-xcode_summary/badge)](https://dependencyci.com/github/diogot/danger-xcode_summary)
7
6
 
8
7
  A [Danger](http://danger.systems) plugin that shows all build errors, warnings and unit tests results generated from `xcodebuild`.
9
8
 
@@ -11,6 +10,8 @@ You need to use [xcpretty](https://github.com/supermarin/xcpretty) with
11
10
  [xcpretty-json-formatter](https://github.com/marcelofabri/xcpretty-json-formatter)
12
11
  to generate a JSON file that this plugin can read.
13
12
 
13
+ **Using [danger-swift](https://github.com/danger/swift)**? You may want to take a look at [danger-swift-xcodesummary](https://github.com/f-meloni/danger-swift-xcodesummary).
14
+
14
15
  ## How does it look?
15
16
 
16
17
  <table>
@@ -96,19 +97,26 @@ xcode_summary.report 'xcodebuild.json'
96
97
  ```
97
98
 
98
99
  You can also ignore warnings from certain files by setting `ignored_files`:
100
+ Warning: `ignored_files` patterns applied on relative paths.
99
101
 
100
102
  ```ruby
101
103
  # Ignoring warnings from Pods
102
- xcode_summary.ignored_files = '**/Pods/**'
104
+ xcode_summary.ignored_files = 'Pods/**'
103
105
 
104
106
  # Ignoring specific warnings
105
107
  xcode_summary.ignored_results { |result|
106
- result.message.start_with 'ld' # Ignore ld_warnings
108
+ result.message.start_with? 'ld' # Ignore ld_warnings
107
109
  }
108
110
 
109
111
  xcode_summary.report 'xcodebuild.json'
110
112
  ```
111
113
 
114
+ You can use `ignores_warnings` to supress warnings and shows only errors.
115
+
116
+ ```ruby
117
+ xcode_summary.ignores_warnings = true
118
+ ```
119
+
112
120
  You can use `inline_mode`.
113
121
  When this value is enabled, each warnings and errors are commented on each lines.
114
122
 
@@ -118,6 +126,12 @@ xcode_summary.inline_mode = true
118
126
  xcode_summary.report 'xcodebuild.json'
119
127
  ```
120
128
 
129
+ You can get warning and error number by calling `warning_error_count`. The return will be a JSON string contains warning and error count, e.g {"warnings":1,"errors":3}:
130
+
131
+ ```ruby
132
+ result = xcode_summary.warning_error_count 'xcodebuild.json'
133
+ ```
134
+
121
135
  ## License
122
136
 
123
137
  danger-xcode_summary is released under the MIT license. See [LICENSE.txt](LICENSE.txt) for details.
@@ -21,11 +21,13 @@ Gem::Specification.new do |spec|
21
21
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
22
22
  spec.require_paths = ['lib']
23
23
 
24
+ spec.required_ruby_version = ">= 2.4.0"
25
+
24
26
  spec.add_runtime_dependency 'danger-plugin-api', '~> 1.0'
25
27
 
26
28
  # General ruby development
27
- spec.add_development_dependency 'bundler', '~> 1.3'
28
- spec.add_development_dependency 'rake', '~> 10.0'
29
+ spec.add_development_dependency 'bundler', '>= 2.2.10'
30
+ spec.add_development_dependency 'rake', '~> 13.0'
29
31
 
30
32
  # Testing support
31
33
  spec.add_development_dependency 'rspec', '~> 3.4'
data/lib/danger_plugin.rb CHANGED
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'xcode_summary/plugin'
@@ -1 +1,3 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'xcode_summary/gem_version'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module XcodeSummary
2
- VERSION = '0.3.0'.freeze
4
+ VERSION = '0.5.3'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'json'
2
4
 
3
5
  module Danger
@@ -60,6 +62,13 @@ module Danger
60
62
  # @return [Boolean]
61
63
  attr_accessor :inline_mode
62
64
 
65
+ # Defines if warnings should be included or not
66
+ # Defaults to `false`.
67
+ # @param [Boolean] value
68
+ # @return [Boolean]
69
+ attr_accessor :ignores_warnings
70
+
71
+ # rubocop:disable Lint/DuplicateMethods
63
72
  def project_root
64
73
  root = @project_root || Dir.pwd
65
74
  root += '/' unless root.end_with? '/'
@@ -86,6 +95,18 @@ module Danger
86
95
  @inline_mode || false
87
96
  end
88
97
 
98
+ def ignores_warnings
99
+ @ignores_warnings || false
100
+ end
101
+
102
+ # Pick a Dangerfile plugin for a chosen request_source and cache it
103
+ # based on https://github.com/danger/danger/blob/master/lib/danger/plugin_support/plugin.rb#L31
104
+ def plugin
105
+ plugins = Plugin.all_plugins.select { |plugin| Dangerfile.essential_plugin_classes.include? plugin }
106
+ @plugin ||= plugins.select { |p| p.method_defined? :html_link }.map { |p| p.new(@dangerfile) }.compact.first
107
+ end
108
+ # rubocop:enable Lint/DuplicateMethods
109
+
89
110
  # Reads a file with JSON Xcode summary and reports it.
90
111
  #
91
112
  # @param [String] file_path Path for Xcode summary in JSON format.
@@ -99,6 +120,22 @@ module Danger
99
120
  end
100
121
  end
101
122
 
123
+ # Reads a file with JSON Xcode summary and reports its warning and error count.
124
+ #
125
+ # @param [String] file_path Path for Xcode summary in JSON format.
126
+ # @return [String] JSON string with warningCount and errorCount
127
+ def warning_error_count(file_path)
128
+ if File.file?(file_path)
129
+ xcode_summary = JSON.parse(File.read(file_path), symbolize_names: true)
130
+ warning_count = warnings(xcode_summary).count
131
+ error_count = errors(xcode_summary).count
132
+ result = { warnings: warning_count, errors: error_count }
133
+ result.to_json
134
+ else
135
+ fail 'summary file not found'
136
+ end
137
+ end
138
+
102
139
  private
103
140
 
104
141
  def format_summary(xcode_summary)
@@ -110,6 +147,7 @@ module Danger
110
147
  warn(result.message, sticky: false)
111
148
  end
112
149
  end
150
+ # rubocop:disable Lint/UnreachableLoop
113
151
  errors(xcode_summary).each do |result|
114
152
  if inline_mode && result.location
115
153
  fail(result.message, sticky: false, file: result.location.file_name, line: result.location.line)
@@ -117,6 +155,7 @@ module Danger
117
155
  fail(result.message, sticky: false)
118
156
  end
119
157
  end
158
+ # rubocop:enable Lint/UnreachableLoop
120
159
  end
121
160
 
122
161
  def messages(xcode_summary)
@@ -130,6 +169,10 @@ module Danger
130
169
  end
131
170
 
132
171
  def warnings(xcode_summary)
172
+ if ignores_warnings
173
+ return []
174
+ end
175
+
133
176
  warnings = [
134
177
  xcode_summary.fetch(:warnings, []).map { |message| Result.new(message, nil) },
135
178
  xcode_summary.fetch(:ld_warnings, []).map { |message| Result.new(message, nil) },
@@ -164,9 +207,10 @@ module Danger
164
207
  errors.delete_if(&ignored_results)
165
208
  end
166
209
 
167
- def parse_location(h)
168
- file_path, line, _column = h[:file_path].split(':')
169
- Location.new(h[:file_name], file_path, line.to_i)
210
+ def parse_location(input)
211
+ file_path, line, _column = input[:file_path].split(':')
212
+ file_name = relative_path(file_path)
213
+ Location.new(file_name, file_path, line.to_i)
170
214
  end
171
215
 
172
216
  def parse_test_location(failure)
@@ -176,27 +220,24 @@ module Danger
176
220
  end
177
221
 
178
222
  def format_path(path)
179
- clean_path, line = parse_filename(path)
180
- path = clean_path + '#L' + line if clean_path && line
181
-
182
- # Pick a Dangerfile plugin for a chosen request_source
183
- # based on https://github.com/danger/danger/blob/master/lib/danger/plugin_support/plugin.rb#L31
184
- plugins = Plugin.all_plugins.select { |plugin| Dangerfile.essential_plugin_classes.include? plugin }
185
- plugin = plugins.select { |p| p.method_defined? :html_link }.map { |p| p.new(@dangerfile) }.compact.first
186
-
187
- plugin.html_link(path)
223
+ if plugin
224
+ clean_path, line = parse_filename(path)
225
+ path = "#{clean_path}#L#{line}" if clean_path && line
226
+ plugin.html_link(path)
227
+ else
228
+ path
229
+ end
188
230
  end
189
231
 
190
232
  def parse_filename(path)
191
233
  regex = /^(.*?):(\d*):?\d*$/
192
234
  match = path.match(regex)
193
- if match
194
- match.captures
195
- end
235
+ match&.captures
196
236
  end
197
237
 
198
238
  def relative_path(path)
199
239
  return nil if project_root.nil?
240
+
200
241
  path.gsub(project_root, '')
201
242
  end
202
243
 
@@ -210,38 +251,38 @@ module Danger
210
251
  reason.gsub('>', '\>').gsub('<', '\<')
211
252
  end
212
253
 
213
- def format_compile_warning(h)
214
- path = relative_path(h[:file_path])
254
+ def format_compile_warning(input)
255
+ path = relative_path(input[:file_path])
215
256
  return nil if should_ignore_warning?(path)
216
257
 
217
258
  path_link = format_path(path)
218
259
 
219
- warning = "**#{path_link}**: #{escape_reason(h[:reason])} <br />"
220
- if h[:line] && !h[:line].empty?
260
+ warning = "**#{path_link}**: #{escape_reason(input[:reason])} <br />"
261
+ if input[:line] && !input[:line].empty?
221
262
  "#{warning}" \
222
263
  "```\n" \
223
- "#{h[:line]}\n" \
264
+ "#{input[:line]}\n" \
224
265
  '```'
225
266
  else
226
267
  warning
227
268
  end
228
269
  end
229
270
 
230
- def format_format_file_missing_error(h)
231
- path = relative_path(h[:file_path])
271
+ def format_format_file_missing_error(input)
272
+ path = relative_path(input[:file_path])
232
273
  path_link = format_path(path)
233
- "**#{escape_reason(h[:reason])}**: #{path_link}"
274
+ "**#{escape_reason(input[:reason])}**: #{path_link}"
234
275
  end
235
276
 
236
- def format_undefined_symbols(h)
237
- "#{h[:message]} <br />" \
238
- "> Symbol: #{h[:symbol]} <br />" \
239
- "> Referenced from: #{h[:reference]}"
277
+ def format_undefined_symbols(input)
278
+ "#{input[:message]} <br />" \
279
+ "> Symbol: #{input[:symbol]} <br />" \
280
+ "> Referenced from: #{input[:reference]}"
240
281
  end
241
282
 
242
- def format_duplicate_symbols(h)
243
- "#{h[:message]} <br />" \
244
- "> #{h[:file_paths].map { |path| path.split('/').last }.join('<br /> ')}"
283
+ def format_duplicate_symbols(input)
284
+ "#{input[:message]} <br />" \
285
+ "> #{input[:file_paths].map { |path| path.split('/').last }.join('<br /> ')}"
245
286
  end
246
287
 
247
288
  def format_test_failure(suite_name, failure)
@@ -0,0 +1,32 @@
1
+ {
2
+ "warnings": [
3
+ "some warning",
4
+ "another warning"
5
+ ],
6
+ "ld_warnings": [
7
+
8
+ ],
9
+ "compile_warnings": [
10
+
11
+ ],
12
+ "errors": [
13
+ "some error",
14
+ "another error"
15
+ ],
16
+ "compile_errors": [
17
+
18
+ ],
19
+ "file_missing_errors": [
20
+
21
+ ],
22
+ "undefined_symbols_errors": [
23
+
24
+ ],
25
+ "duplicate_symbols_errors": [
26
+
27
+ ],
28
+ "tests_failures": {
29
+ },
30
+ "tests_summary_messages": [
31
+ ]
32
+ }
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'pathname'
2
- ROOT = Pathname.new(File.expand_path('../../', __FILE__))
3
- $LOAD_PATH.unshift((ROOT + 'lib').to_s)
4
- $LOAD_PATH.unshift((ROOT + 'spec').to_s)
4
+ ROOT = Pathname.new(File.expand_path('..', __dir__))
5
+ $LOAD_PATH.unshift("#{ROOT}lib".to_s)
6
+ $LOAD_PATH.unshift("#{ROOT}spec".to_s)
5
7
 
6
8
  require 'bundler/setup'
7
9
  require 'pry'
@@ -55,9 +57,12 @@ end
55
57
  def testing_bitbucket_env
56
58
  {
57
59
  'GIT_URL' => 'https://github.com/diogot/danger-xcode_summary.git',
60
+ 'CHANGE_ID' => '4d4c0f31857e3185b51b6865a0700525bc0cb2bb',
58
61
  'JENKINS_URL' => 'http://jenkins.server.com/',
59
62
  'DANGER_BITBUCKETCLOUD_USERNAME' => 'username',
60
- 'DANGER_BITBUCKETCLOUD_PASSWORD' => 'password'
63
+ 'DANGER_BITBUCKETCLOUD_PASSWORD' => 'password',
64
+ 'DANGER_BITBUCKETCLOUD_UUID' => 'c91be865-efc6-49a6-93c5-24e1267c479b',
65
+ 'ghprbPullId' => '2080'
61
66
  }
62
67
  end
63
68
 
@@ -1,4 +1,6 @@
1
- require File.expand_path('../spec_helper', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('spec_helper', __dir__)
2
4
 
3
5
  module Danger
4
6
  describe Danger::DangerXcodeSummary do
@@ -52,19 +54,19 @@ module Danger
52
54
  it 'formats compile warnings' do
53
55
  @xcode_summary.report('spec/fixtures/summary.json')
54
56
  expect(@dangerfile.status_report[:warnings]).to eq [
55
- # rubocop:disable LineLength
57
+ # rubocop:disable Layout/LineLength
56
58
  "**<a href='https://github.com/diogot/danger-xcode_summary/blob/129jef029jf029fj2039fj203f92/MyWeight/Bla.m#L32'>MyWeight/Bla.m#L32</a>**: Value stored to 'theme' is never read <br />```\n theme = *ptr++;\n```",
57
59
  "**<a href='https://github.com/diogot/danger-xcode_summary/blob/129jef029jf029fj2039fj203f92/MyWeight/Pods/ISO8601DateFormatter/ISO8601DateFormatter.m#L176'>MyWeight/Pods/ISO8601DateFormatter/ISO8601DateFormatter.m#L176</a>**: 'NSUndefinedDateComponent' is deprecated: first deprecated in iOS 8.0 - Use NSDateComponentUndefined instead [-Wdeprecated-declarations] <br />```\n month_or_week = NSUndefinedDateComponent,\n```"
58
- # rubocop:enable LineLength
60
+ # rubocop:enable Layout/LineLength
59
61
  ]
60
62
  end
61
63
 
62
64
  it 'formats compile warnings with empty line' do
63
65
  @xcode_summary.report('spec/fixtures/summary_with_empty_line.json')
64
66
  expect(@dangerfile.status_report[:warnings]).to eq [
65
- # rubocop:disable LineLength
67
+ # rubocop:disable Layout/LineLength
66
68
  "**<a href='https://github.com/diogot/danger-xcode_summary/blob/129jef029jf029fj2039fj203f92/Users/marcelofabri/Developer/MyAwesomeProject/MyAwesomeProject/Classes/AppDelegate.swift#L10001'>/Users/marcelofabri/Developer/MyAwesomeProject/MyAwesomeProject/Classes/AppDelegate.swift#L10001</a>**: File should contain 400 lines or less: currently contains 10001 <br />"
67
- # rubocop:enable LineLength
69
+ # rubocop:enable Layout/LineLength
68
70
  ]
69
71
  end
70
72
 
@@ -72,9 +74,9 @@ module Danger
72
74
  @xcode_summary.ignored_files = '**/Pods/**'
73
75
  @xcode_summary.report('spec/fixtures/summary.json')
74
76
  expect(@dangerfile.status_report[:warnings]).to eq [
75
- # rubocop:disable LineLength
76
- "**<a href='https://github.com/diogot/danger-xcode_summary/blob/129jef029jf029fj2039fj203f92/MyWeight/Bla.m#L32'>MyWeight/Bla.m#L32</a>**: Value stored to 'theme' is never read <br />```\n theme = *ptr++;\n```",
77
- # rubocop:enable LineLength
77
+ # rubocop:disable Layout/LineLength
78
+ "**<a href='https://github.com/diogot/danger-xcode_summary/blob/129jef029jf029fj2039fj203f92/MyWeight/Bla.m#L32'>MyWeight/Bla.m#L32</a>**: Value stored to 'theme' is never read <br />```\n theme = *ptr++;\n```"
79
+ # rubocop:enable Layout/LineLength
78
80
  ]
79
81
  end
80
82
 
@@ -87,10 +89,8 @@ module Danger
87
89
  it 'formats test errors' do
88
90
  @xcode_summary.report('spec/fixtures/test_errors.json')
89
91
  expect(@dangerfile.status_report[:errors]).to eq [
90
- # rubocop:disable LineLength
91
92
  '**MyWeight.MyWeightSpec**: works_with_success, expected to eventually not be nil, got \<nil\> <br /> ' \
92
- "<a href='https://github.com/diogot/danger-xcode_summary/blob/129jef029jf029fj2039fj203f92/MyWeight/MyWeightTests/Tests.swift#L86'>MyWeight/MyWeightTests/Tests.swift#L86</a>",
93
- # rubocop:enable LineLength
93
+ "<a href='https://github.com/diogot/danger-xcode_summary/blob/129jef029jf029fj2039fj203f92/MyWeight/MyWeightTests/Tests.swift#L86'>MyWeight/MyWeightTests/Tests.swift#L86</a>"
94
94
  ]
95
95
  end
96
96
 
@@ -102,6 +102,11 @@ module Danger
102
102
  ]
103
103
  end
104
104
 
105
+ it 'report waring and error counts' do
106
+ result = @xcode_summary.warning_error_count('spec/fixtures/summary.json')
107
+ expect(result).to eq '{"warnings":2,"errors":0}'
108
+ end
109
+
105
110
  context 'with inline_mode' do
106
111
  before do
107
112
  @xcode_summary.inline_mode = true
@@ -124,13 +129,13 @@ module Danger
124
129
  expect(@xcode_summary).to have_received(:warn).with(
125
130
  instance_of(String),
126
131
  sticky: false,
127
- file: 'Bla.m',
132
+ file: 'MyWeight/Bla.m',
128
133
  line: 32
129
134
  )
130
135
  expect(@xcode_summary).to have_received(:warn).with(
131
136
  instance_of(String),
132
137
  sticky: false,
133
- file: 'ISO8601DateFormatter.m',
138
+ file: 'MyWeight/Pods/ISO8601DateFormatter/ISO8601DateFormatter.m',
134
139
  line: 176
135
140
  )
136
141
  end
@@ -150,6 +155,38 @@ module Danger
150
155
  @xcode_summary.report('spec/fixtures/ld_warnings.json')
151
156
  expect(@dangerfile.status_report[:warnings]).to eq ['another warning']
152
157
  end
158
+
159
+ it 'report warning and error counts with no errors' do
160
+ result = @xcode_summary.warning_error_count('spec/fixtures/errors.json')
161
+ expect(result).to eq '{"warnings":0,"errors":1}'
162
+ end
163
+
164
+ it 'report waring and error counts with no warnings' do
165
+ result = @xcode_summary.warning_error_count('spec/fixtures/ld_warnings.json')
166
+ expect(result).to eq '{"warnings":1,"errors":0}'
167
+ end
168
+ end
169
+
170
+ context 'with ignores_warnings' do
171
+ before do
172
+ @xcode_summary.ignores_warnings = true
173
+ end
174
+
175
+ it 'asserts no ld warnings' do
176
+ @xcode_summary.report('spec/fixtures/ld_warnings.json')
177
+ expect(@dangerfile.status_report[:warnings]).to eq []
178
+ end
179
+
180
+ it 'asserts no errors' do
181
+ @xcode_summary.report('spec/fixtures/warnings_errors.json')
182
+ expect(@dangerfile.status_report[:warnings]).to eq []
183
+ expect(@dangerfile.status_report[:errors]).to eq ['some error', 'another error']
184
+ end
185
+
186
+ it 'report warning and error counts with no warning' do
187
+ result = @xcode_summary.warning_error_count('spec/fixtures/warnings_errors.json')
188
+ expect(result).to eq '{"warnings":0,"errors":2}'
189
+ end
153
190
  end
154
191
  end
155
192
  end
@@ -159,18 +196,14 @@ module Danger
159
196
  before do
160
197
  @dangerfile = testing_bitbucket_dangerfile
161
198
  @xcode_summary = @dangerfile.xcode_summary
162
- # rubocop:disable LineLength
163
199
  @xcode_summary.env.request_source.pr_json = JSON.parse(IO.read('spec/fixtures/bitbucket_pr.json'), symbolize_names: true)
164
- # rubocop:enable LineLength
165
200
  @xcode_summary.project_root = '/Users/diogo/src/danger-xcode_summary'
166
201
  end
167
202
 
168
203
  describe 'where request source' do
169
204
  it 'should be bitbucket' do
170
- path = @xcode_summary.send(:format_path, 'lib/xcode_summary/plugin.rb#L3')
171
- # rubocop:disable LineLength
172
- expect(path).to eq "<a href='https://github.com/diogot/danger-xcode_summary/lib/xcode_summary/plugin.rb?at=4d4c0f31857e3185b51b6865a0700525bc0cb2bb#L3'>lib/xcode_summary/plugin.rb</a>"
173
- # rubocop:enable LineLength
205
+ path = @xcode_summary.send(:format_path, 'lib/xcode_summary/plugin.rb:3')
206
+ expect(path).to eq 'lib/xcode_summary/plugin.rb:3'
174
207
  end
175
208
  end
176
209
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-xcode_summary
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Diogo Tridapalli
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-05-31 00:00:00.000000000 Z
12
+ date: 2021-05-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: danger-plugin-api
@@ -29,30 +29,30 @@ dependencies:
29
29
  name: bundler
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: '1.3'
34
+ version: 2.2.10
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - "~>"
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: '1.3'
41
+ version: 2.2.10
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '10.0'
48
+ version: '13.0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '10.0'
55
+ version: '13.0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -153,6 +153,7 @@ files:
153
153
  - spec/fixtures/summary_messages.json
154
154
  - spec/fixtures/summary_with_empty_line.json
155
155
  - spec/fixtures/test_errors.json
156
+ - spec/fixtures/warnings_errors.json
156
157
  - spec/spec_helper.rb
157
158
  - spec/xcode_summary_spec.rb
158
159
  homepage: https://github.com/diogot/danger-xcode_summary
@@ -167,15 +168,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
168
  requirements:
168
169
  - - ">="
169
170
  - !ruby/object:Gem::Version
170
- version: '0'
171
+ version: 2.4.0
171
172
  required_rubygems_version: !ruby/object:Gem::Requirement
172
173
  requirements:
173
174
  - - ">="
174
175
  - !ruby/object:Gem::Version
175
176
  version: '0'
176
177
  requirements: []
177
- rubyforge_project:
178
- rubygems_version: 2.4.5.2
178
+ rubygems_version: 3.0.3
179
179
  signing_key:
180
180
  specification_version: 4
181
181
  summary: A [Danger](http://danger.systems) plugin that shows all build errors, warnings
@@ -189,5 +189,6 @@ test_files:
189
189
  - spec/fixtures/summary_messages.json
190
190
  - spec/fixtures/summary_with_empty_line.json
191
191
  - spec/fixtures/test_errors.json
192
+ - spec/fixtures/warnings_errors.json
192
193
  - spec/spec_helper.rb
193
194
  - spec/xcode_summary_spec.rb