danger-junit 0.7.4 → 1.0.0

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: e4fee6603ee8518a035652d71f265d6d2e868a86
4
- data.tar.gz: 488242d6b63b32f260f581581d8a6feb890596be
2
+ SHA256:
3
+ metadata.gz: a77f977d090351e161a00681133882722b68f9bb6b28ac4cbebff16c2e36828e
4
+ data.tar.gz: 43c9a8ed5b86acfe14408d24da7555d396a2495c5ac4eac891390c843e3e4465
5
5
  SHA512:
6
- metadata.gz: b8a8f6051e4dc5fa807708f6f79f8ade2c4df1358234ab4710bac1034bc146142b71fabf91bae376a70da0c94a8510ab6b9a0a334403cf81d8e4c2761c9e5193
7
- data.tar.gz: 5087c98670f0151e6e290b4ab0cfe77a12bb445d3d380a78b8df281ffd03c8af81ca19a9ebb279a17f54c210080a452e75d8bae20a70059406f82846efdf06bd
6
+ metadata.gz: c2592d04156cdab05b89e5462b018ad9fededda320c544d05bea486a468cc6bf30ded2b20c503de339004b3bb588707a39e83d57494ec56b6bc7bd7fbcde35c5
7
+ data.tar.gz: b58ab5044bee356598b5f7458d76c40e319e8aa9103087825d3612bffa0a3b6ab022661660d89edca3113da3df67dfbe9ab4e9bde6695cb3b7c47f40668e70d3
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-junit (0.7.4)
4
+ danger-junit (1.0.0)
5
5
  danger (> 2.0)
6
6
  ox (~> 2.0)
7
7
 
@@ -21,25 +21,26 @@ GEM
21
21
  colored2 (3.1.2)
22
22
  cork (0.3.0)
23
23
  colored2 (~> 3.1)
24
- danger (5.3.3)
24
+ danger (5.9.0)
25
25
  claide (~> 1.0)
26
26
  claide-plugins (>= 0.9.2)
27
27
  colored2 (~> 3.1)
28
28
  cork (~> 0.1)
29
29
  faraday (~> 0.9)
30
30
  faraday-http-cache (~> 1.0)
31
- git (~> 1)
31
+ git (~> 1.5)
32
32
  kramdown (~> 1.5)
33
+ no_proxy_fix
33
34
  octokit (~> 4.7)
34
35
  terminal-table (~> 1)
35
36
  diff-lcs (1.2.5)
36
- faraday (0.13.1)
37
+ faraday (0.15.4)
37
38
  multipart-post (>= 1.2, < 3)
38
39
  faraday-http-cache (1.3.1)
39
40
  faraday (~> 0.8)
40
41
  ffi (1.9.14)
41
42
  formatador (0.2.5)
42
- git (1.3.0)
43
+ git (1.5.0)
43
44
  guard (2.14.0)
44
45
  formatador (>= 0.2.4)
45
46
  listen (>= 2.7, < 4.0)
@@ -54,7 +55,7 @@ GEM
54
55
  guard (~> 2.1)
55
56
  guard-compat (~> 1.1)
56
57
  rspec (>= 2.99.0, < 4.0)
57
- kramdown (1.15.0)
58
+ kramdown (1.17.0)
58
59
  listen (3.0.7)
59
60
  rb-fsevent (>= 0.9.3)
60
61
  rb-inotify (>= 0.9.7)
@@ -63,13 +64,14 @@ GEM
63
64
  multipart-post (2.0.0)
64
65
  nap (1.1.0)
65
66
  nenv (0.3.0)
67
+ no_proxy_fix (0.1.2)
66
68
  notiffany (0.1.1)
67
69
  nenv (~> 0.1)
68
70
  shellany (~> 0.0)
69
- octokit (4.7.0)
71
+ octokit (4.13.0)
70
72
  sawyer (~> 0.8.0, >= 0.5.3)
71
73
  open4 (1.3.4)
72
- ox (2.5.0)
74
+ ox (2.10.0)
73
75
  parser (2.3.1.2)
74
76
  ast (~> 2.2)
75
77
  powerpack (0.1.1)
@@ -77,7 +79,7 @@ GEM
77
79
  coderay (~> 1.1.0)
78
80
  method_source (~> 0.8.1)
79
81
  slop (~> 3.4)
80
- public_suffix (2.0.5)
82
+ public_suffix (3.0.3)
81
83
  rainbow (2.1.0)
82
84
  rake (10.5.0)
83
85
  rb-fsevent (0.9.7)
@@ -134,4 +136,4 @@ DEPENDENCIES
134
136
  yard (~> 0.8)
135
137
 
136
138
  BUNDLED WITH
137
- 1.15.4
139
+ 1.16.3
@@ -1,3 +1,3 @@
1
1
  module Junit
2
- VERSION = '0.7.4'.freeze
2
+ VERSION = '1.0.0'.freeze
3
3
  end
@@ -14,6 +14,16 @@ module Danger
14
14
  # junit.parse "/path/to/output.xml"
15
15
  # junit.report
16
16
  #
17
+ # @example Parse multiple XML files by passing multiple file names
18
+ #
19
+ # junit.parse_files "/path/to/integration-tests.xml", "/path/to/unit-tests.xml"
20
+ # junit.report
21
+ #
22
+ # @example Parse multiple XML files by passing an array
23
+ # result_files = %w(/path/to/integration-tests.xml /path/to/unit-tests.xml)
24
+ # junit.parse_files result_files
25
+ # junit.report
26
+ #
17
27
  # @example Let the plugin parse the XML file, and report yourself
18
28
  #
19
29
  # junit.parse "/path/to/output.xml"
@@ -76,7 +86,8 @@ module Danger
76
86
  attr_accessor :show_skipped_tests
77
87
 
78
88
  # An array of symbols that become the columns of your tests,
79
- # if `nil`, the default, it will be all of the attributes.
89
+ # if `nil`, the default, it will be all of the attributes for a single parse
90
+ # or all of the common attributes between multiple files
80
91
  #
81
92
  # @return [Array<Symbol>]
82
93
  attr_accessor :headers
@@ -85,17 +96,29 @@ module Danger
85
96
  # will `raise` for errors
86
97
  # @return [void]
87
98
  def parse(file)
99
+ parse_files(file)
100
+ end
101
+
102
+ # Parses multiple XML files, which fills all the attributes,
103
+ # will `raise` for errors
104
+ # @return [void]
105
+ def parse_files(*files)
88
106
  require 'ox'
89
- raise "No JUnit file was found at #{file}" unless File.exist? file
107
+ @tests = []
108
+ failed_tests = []
90
109
 
91
- xml_string = File.read(file)
92
- @doc = Ox.parse(xml_string)
110
+ Array(files).flatten.each do |file|
111
+ raise "No JUnit file was found at #{file}" unless File.exist? file
93
112
 
94
- suite_root = @doc.nodes.first.value == 'testsuites' ? @doc.nodes.first : @doc
95
- @tests = suite_root.nodes.map(&:nodes).flatten.select { |node| node.kind_of?(Ox::Element) && node.value == 'testcase' }
113
+ xml_string = File.read(file)
114
+ doc = Ox.parse(xml_string)
96
115
 
97
- failed_suites = suite_root.nodes.select { |suite| suite[:failures].to_i > 0 || suite[:errors].to_i > 0 }
98
- failed_tests = failed_suites.map(&:nodes).flatten.select { |node| node.kind_of?(Ox::Element) && node.value == 'testcase' }
116
+ suite_root = doc.nodes.first.value == 'testsuites' ? doc.nodes.first : doc
117
+ @tests += suite_root.nodes.map(&:nodes).flatten.select { |node| node.kind_of?(Ox::Element) && node.value == 'testcase' }
118
+
119
+ failed_suites = suite_root.nodes.select { |suite| suite[:failures].to_i > 0 || suite[:errors].to_i > 0 }
120
+ failed_tests += failed_suites.map(&:nodes).flatten.select { |node| node.kind_of?(Ox::Element) && node.value == 'testcase' }
121
+ end
99
122
 
100
123
  @failures = failed_tests.select do |test|
101
124
  test.nodes.count > 0
@@ -135,14 +158,15 @@ module Danger
135
158
 
136
159
  tests = (failures + errors)
137
160
 
161
+ common_attributes = tests.map{|test| test.attributes.keys }.inject(&:&)
162
+
138
163
  # check the provided headers are available
139
164
  unless headers.nil?
140
- attributtesKey = tests.first.attributes.keys
141
- not_available_headers = headers.select { |header| not attributtesKey.include?(header) }
165
+ not_available_headers = headers.select { |header| not common_attributes.include?(header) }
142
166
  raise "Some of headers provided aren't available in the JUnit report (#{not_available_headers})" unless not_available_headers.empty?
143
167
  end
144
168
 
145
- keys = headers || tests.first.attributes.keys
169
+ keys = headers || common_attributes
146
170
  attributes = keys.map(&:to_s).map(&:capitalize)
147
171
 
148
172
  # Create the headers
@@ -87,6 +87,36 @@ module Danger
87
87
  outputs = @junit.status_report[:markdowns].first
88
88
  expect(outputs.to_s).to include('github.com/thing/thingy')
89
89
  end
90
+
91
+ describe 'parsing multiple files' do
92
+ it 'gets the right results for multiple files' do
93
+ @junit.parse_files 'spec/fixtures/rspec_fail.xml', 'spec/fixtures/fastlane_trainer.xml'
94
+
95
+ expect(@junit.failures.count).to eq 1 + 1
96
+ expect(@junit.passes.count).to eq 190 + 1
97
+ expect(@junit.errors.count).to eq 0 + 0
98
+ expect(@junit.skipped.count).to eq 7 + 0
99
+ end
100
+
101
+ it 'gets the right results for an array of files' do
102
+ files = %w(spec/fixtures/rspec_fail.xml spec/fixtures/fastlane_trainer.xml)
103
+ @junit.parse_files files
104
+
105
+ expect(@junit.failures.count).to eq 1 + 1
106
+ expect(@junit.passes.count).to eq 190 + 1
107
+ expect(@junit.errors.count).to eq 0 + 0
108
+ expect(@junit.skipped.count).to eq 7 + 0
109
+ end
110
+
111
+ it 'defaults to reporting common attributes for multiple files' do
112
+ @junit.parse_files 'spec/fixtures/rspec_fail.xml', 'spec/fixtures/eigen_fail.xml'
113
+
114
+ @junit.report
115
+
116
+ outputs = @junit.status_report[:markdowns].first
117
+ expect(outputs.to_s).to include('Classname | Name')
118
+ end
119
+ end
90
120
  end
91
121
  end
92
122
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-junit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Orta Therox
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-11 00:00:00.000000000 Z
11
+ date: 2019-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: danger
@@ -225,8 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
225
225
  - !ruby/object:Gem::Version
226
226
  version: '0'
227
227
  requirements: []
228
- rubyforge_project:
229
- rubygems_version: 2.6.14
228
+ rubygems_version: 3.0.3
230
229
  signing_key:
231
230
  specification_version: 4
232
231
  summary: Get automatic inline test reporting for JUnit-conforming XML files