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 +4 -4
- data/.gitignore +1 -0
- data/Gemfile.lock +6 -1
- data/README.md +20 -0
- data/danger-junit.gemspec +3 -0
- data/lib/junit/gem_version.rb +1 -1
- data/lib/junit/plugin.rb +42 -4
- data/spec/junit_spec.rb +23 -0
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b38b37d5c91b3b94bd40bfd1f992bea06cdf53ff
|
4
|
+
data.tar.gz: e4195e8fec3601f580c1e7002b69a89a0f8e05dc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfce1b8cb7f2e33dc4ccb299ac1d77b6912788c5dd4d32792851cf0ae6ad5d8de58c48d5c68c5aadadea9305796a5b6a3ba48c88cbd37fbec932ea7539491ea1
|
7
|
+
data.tar.gz: 0c7b6bffd9f5f3ab657cc64ceb0a7dd2d40da4347702e6f291861cf775304575e65a92a35976bf9b352171f1859411d95e468e576f8b1e9c37f88ddb074716d1
|
data/.gitignore
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
danger-junit (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
|
|
data/danger-junit.gemspec
CHANGED
@@ -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'
|
data/lib/junit/gem_version.rb
CHANGED
data/lib/junit/plugin.rb
CHANGED
@@ -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
|
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
|
-
|
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
|
data/spec/junit_spec.rb
CHANGED
@@ -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.
|
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
|