danger-junit 0.5.0 → 0.6.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
2
  SHA1:
3
- metadata.gz: fd37e7d87505b8882f61d0f5a9177d39f8990d6a
4
- data.tar.gz: ef98520c2399b83cb9081bb4a84a16ef4c87d7ee
3
+ metadata.gz: b38b37d5c91b3b94bd40bfd1f992bea06cdf53ff
4
+ data.tar.gz: e4195e8fec3601f580c1e7002b69a89a0f8e05dc
5
5
  SHA512:
6
- metadata.gz: 6b102f1eb6e859468b7594d9f91ee05ffed730ac1cd30f44428704d38bc838638bf96708c4e258992566c75086fb32e94831736fdc3bebc90ae13075fa9fcb0e
7
- data.tar.gz: 4f5944bc1493db882898df5bb439694c7bdfeb3f44eb3c87c20701acb28241bfe9f2e4064a1bab87f29ac0b6a07edc74370b54f560ffcbce2c4c7099eb013a87
6
+ metadata.gz: bfce1b8cb7f2e33dc4ccb299ac1d77b6912788c5dd4d32792851cf0ae6ad5d8de58c48d5c68c5aadadea9305796a5b6a3ba48c88cbd37fbec932ea7539491ea1
7
+ data.tar.gz: 0c7b6bffd9f5f3ab657cc64ceb0a7dd2d40da4347702e6f291861cf775304575e65a92a35976bf9b352171f1859411d95e468e576f8b1e9c37f88ddb074716d1
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
1
  .DS_Store
2
2
  pkg
3
3
  .idea/
4
+ danger-junit-fail.xml
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- danger-junit (0.5.0)
4
+ danger-junit (0.6.0)
5
5
  danger (~> 2.0)
6
6
  ox (~> 2.0)
7
7
 
@@ -10,6 +10,7 @@ GEM
10
10
  specs:
11
11
  addressable (2.4.0)
12
12
  ast (2.3.0)
13
+ builder (3.2.2)
13
14
  claide (1.0.0)
14
15
  claide-plugins (0.9.1)
15
16
  cork
@@ -93,6 +94,9 @@ GEM
93
94
  diff-lcs (>= 1.2.0, < 2.0)
94
95
  rspec-support (~> 3.5.0)
95
96
  rspec-support (3.5.0)
97
+ rspec_junit_formatter (0.2.3)
98
+ builder (< 4)
99
+ rspec-core (>= 2, < 4, != 2.12.0)
96
100
  rubocop (0.42.0)
97
101
  parser (>= 2.3.1.1, < 3.0)
98
102
  powerpack (~> 0.1)
@@ -122,6 +126,7 @@ DEPENDENCIES
122
126
  pry
123
127
  rake (~> 10.0)
124
128
  rspec (~> 3.4)
129
+ rspec_junit_formatter (~> 0.2)
125
130
  rubocop (~> 0.41)
126
131
  yard (~> 0.8)
127
132
 
data/README.md CHANGED
@@ -40,10 +40,27 @@ junit.show_skipped_tests = true
40
40
  junit.report</pre>
41
41
  </blockquote>
42
42
 
43
+ <blockquote>Only show specific parts of your results
44
+ <pre>
45
+ junit.parse "/path/to/output.xml"
46
+ junit.headers = [:name, :file]
47
+ junit.report</pre>
48
+ </blockquote>
49
+
50
+ <blockquote>Only show specific parts of your results
51
+ <pre>
52
+ junit.parse "/path/to/output.xml"
53
+ all_test = junit.tests.map(&:attributes)
54
+ slowest_test = sort_by { |attributes| attributes[:time].to_f }.last
55
+ message "#{slowest_test[:time]} took #{slowest_test[:time]} seconds"</pre>
56
+ </blockquote>
57
+
43
58
 
44
59
 
45
60
  #### Attributes
46
61
  <tr>
62
+ `tests` - All the tests for introspection
63
+ <tr>
47
64
  `passes` - An array of XML elements that represent passed tests.
48
65
  <tr>
49
66
  `failures` - An array of XML elements that represent failed tests.
@@ -53,6 +70,9 @@ junit.report</pre>
53
70
  `skipped` - An array of XML elements that represent skipped tests.
54
71
  <tr>
55
72
  `show_skipped_tests` - An attribute to make the plugin show a warning on skipped tests.
73
+ <tr>
74
+ `headers` - An array of symbols that become the columns of your tests,
75
+ if `nil`, the default, it will be all of the attribues.
56
76
 
57
77
 
58
78
 
@@ -21,6 +21,9 @@ Gem::Specification.new do |spec|
21
21
  spec.add_runtime_dependency 'danger', '~> 2.0'
22
22
  spec.add_runtime_dependency 'ox', '~> 2.0'
23
23
 
24
+ # So we can run our specs with junit
25
+ spec.add_development_dependency "rspec_junit_formatter", "~> 0.2"
26
+
24
27
  # General ruby development
25
28
  spec.add_development_dependency 'bundler', '~> 1.3'
26
29
  spec.add_development_dependency 'rake', '~> 10.0'
@@ -1,3 +1,3 @@
1
1
  module Junit
2
- VERSION = '0.5.0'.freeze
2
+ VERSION = '0.6.0'.freeze
3
3
  end
@@ -24,10 +24,30 @@ module Danger
24
24
  # junit.show_skipped_tests = true
25
25
  # junit.report
26
26
  #
27
+ # @example Only show specific parts of your results
28
+ #
29
+ # junit.parse "/path/to/output.xml"
30
+ # junit.headers = [:name, :file]
31
+ # junit.report
32
+ #
33
+ # @example Only show specific parts of your results
34
+ #
35
+ # junit.parse "/path/to/output.xml"
36
+ # all_test = junit.tests.map(&:attributes)
37
+ # slowest_test = sort_by { |attributes| attributes[:time].to_f }.last
38
+ # message "#{slowest_test[:time]} took #{slowest_test[:time]} seconds"
39
+ #
40
+ #
27
41
  # @see orta/danger-junit, danger/danger, artsy/eigen
28
42
  # @tags testing, reporting, junit, rspec, jasmine, jest, xcpretty
29
43
  #
30
44
  class DangerJunit < Plugin
45
+
46
+ # All the tests for introspection
47
+ #
48
+ # @return [Array<Ox::Element>]
49
+ attr_accessor :tests
50
+
31
51
  # An array of XML elements that represent passed tests.
32
52
  #
33
53
  # @return [Array<Ox::Element>]
@@ -53,6 +73,12 @@ module Danger
53
73
  # @return [Bool]
54
74
  attr_accessor :show_skipped_tests
55
75
 
76
+ # An array of symbols that become the columns of your tests,
77
+ # if `nil`, the default, it will be all of the attribues.
78
+ #
79
+ # @return [Array<Symbol>]
80
+ attr_accessor :headers
81
+
56
82
  # Parses an XML file, which fills all the attributes
57
83
  # will `raise` for errors
58
84
  # @return [void]
@@ -64,7 +90,7 @@ module Danger
64
90
  @doc = Ox.parse xml_string
65
91
 
66
92
  suite_root = @doc.nodes.first.value == 'testsuites' ? @doc.nodes.first : @doc
67
- tests = suite_root.nodes.map(&:nodes).flatten.select { |node| node.value == 'testcase' }
93
+ @tests = suite_root.nodes.map(&:nodes).flatten.select { |node| node.value == 'testcase' }
68
94
 
69
95
  failed_suites = suite_root.nodes.select { |suite| suite[:failures].to_i > 0 || suite[:errors].to_i > 0 }
70
96
  failed_tests = failed_suites.map(&:nodes).flatten.select { |node| node.value == 'testcase' }
@@ -90,19 +116,31 @@ module Danger
90
116
  message = "### Tests: \n\n"
91
117
 
92
118
  tests = (failures + errors)
93
- keys = tests.first.attributes.keys
119
+ keys = headers || tests.first.attributes.keys
94
120
  attributes = keys.map(&:to_s).map(&:capitalize)
95
121
 
96
- # Create the header
122
+ # Create the headers
97
123
  message << attributes.join(' | ') + "|\n"
98
124
  message << attributes.map { |_| '---' }.join(' | ') + "|\n"
99
125
 
126
+ # Map out the keys to the tests
100
127
  tests.each do |test|
101
- message << test.attributes.values.join(' | ') + "|\n"
128
+ row_values = keys.map { |key| test.attributes[key] }.map { |v| auto_link(v) }
129
+ message << row_values.join(' | ') + "|\n"
102
130
  end
103
131
 
104
132
  markdown message
105
133
  end
106
134
  end
135
+
136
+ private
137
+
138
+ def auto_link(value)
139
+ if File.exist?(value) && defined?(@dangerfile.github)
140
+ github.html_link value
141
+ else
142
+ value
143
+ end
144
+ end
107
145
  end
108
146
  end
@@ -49,6 +49,16 @@ module Danger
49
49
  expect(output).to include(row)
50
50
  end
51
51
 
52
+ it 'shows a known markdown row' do
53
+ @junit.parse 'spec/fixtures/rspec_fail.xml'
54
+ @junit.headers = [:time]
55
+ @junit.report
56
+
57
+ output = @junit.status_report[:markdowns].first
58
+ row = "Time|\n"
59
+ expect(output).to include(row)
60
+ end
61
+
52
62
  it 'shows a warning for skipped' do
53
63
  @junit.parse 'spec/fixtures/rspec_fail.xml'
54
64
  @junit.show_skipped_tests = true
@@ -57,6 +67,19 @@ module Danger
57
67
  warnings = @junit.status_report[:warnings].first
58
68
  expect(warnings).to eq('Skipped 7 tests.')
59
69
  end
70
+
71
+ it 'links paths that are files' do
72
+ allow(@dangerfile.github).to receive(:pr_json).and_return({
73
+ head: { repo: { html_url: 'https://github.com/thing/thingy' } }
74
+ })
75
+ allow(@dangerfile.github).to receive(:head_commit).and_return("hello")
76
+
77
+ @junit.parse 'spec/fixtures/danger-junit-fail.xml'
78
+ @junit.report
79
+
80
+ outputs = @junit.status_report[:markdowns].first
81
+ expect(outputs).to include('github.com/thing/thingy')
82
+ end
60
83
  end
61
84
  end
62
85
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: danger-junit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Orta Therox
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec_junit_formatter
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.2'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.2'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement