minitest-junit 0.1.0 → 0.4.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: 2b91b566809b95993d90be26881a2b7301965f4b
4
- data.tar.gz: d3dbd54d0b1811587bfa6f8298a64e933a429e18
2
+ SHA256:
3
+ metadata.gz: 0fa66307fd2fdfd6109450defbb4413afdf292d773222c93a04622680ebb6c37
4
+ data.tar.gz: 103ddd1223b0d692972416eb0551e072f06734658069906a986f9d0c1975a16f
5
5
  SHA512:
6
- metadata.gz: 788bc66cc5ce34ae8fa1944e59299d38d072039dae2ef36ea8938e5eb4bdbf8364a861c6c5ed252add21f23598fd3fb1207022fdcdfa892b4876226629886c98
7
- data.tar.gz: 26ebf4dbd2d4dfcdbcf0bee8f63dd5aff2fab5d20bea5468b6e6e5fdb2b6e130206993cb8fc739b147652b5ee6ef318733dfd9127da82bd442f653cf3d32d921
6
+ metadata.gz: 4c4dabfdcf0a30f2dc9d858962444d88fa445983404189b3fce805374f23d64c2c3ed43e044f5275bb68446ffe7b72365fc9e2d8bb82fcab58d9320103204a24
7
+ data.tar.gz: 5777cfd69357a6855de6e5609d8e1c5cc6a227ae670fe4abaef56ce28d10e9b579e1aeef0022cc5dc00731cd5bb31829b22f6c8a14b232cbf25df43eb15d3122
data/README.md CHANGED
@@ -24,6 +24,7 @@ Or install it yourself as:
24
24
  Known extensions: junit, ...
25
25
  --junit Generate a junit xml report
26
26
  --junit-filename=OUT Target output filename. Defaults to report.xml
27
+ --junit-jenkins Sanitize test names for Jenkins display
27
28
  ...
28
29
 
29
30
  ## Contributing
data/Rakefile CHANGED
@@ -6,4 +6,5 @@ RuboCop::RakeTask.new
6
6
 
7
7
  Rake::TestTask.new do |t|
8
8
  t.test_files = FileList['test/*_test.rb']
9
+ t.options = '--junit --junit-jenkins' if ENV['CI']
9
10
  end
@@ -1,6 +1,6 @@
1
1
  module Minitest
2
2
  # :nodoc:
3
3
  module Junit
4
- VERSION = '0.1.0'
4
+ VERSION = '0.4.0'
5
5
  end
6
6
  end
@@ -7,9 +7,10 @@ module Minitest
7
7
  module Junit
8
8
  # :nodoc:
9
9
  class Reporter
10
- def initialize(io)
10
+ def initialize(io, options)
11
11
  @io = io
12
12
  @results = []
13
+ @options = options
13
14
  end
14
15
 
15
16
  def passed?
@@ -32,10 +33,13 @@ module Minitest
32
33
  xml = Builder::XmlMarkup.new
33
34
  xml.testcase classname: format_class(result), name: format_name(result),
34
35
  time: result.time, assertions: result.assertions do |t|
35
- t.skipped if result.skipped?
36
- result.failures.each do |failure|
37
- type = classify failure
38
- xml.tag! type, format_backtrace(failure), message: result
36
+ if result.skipped?
37
+ t.skipped message: result
38
+ else
39
+ result.failures.each do |failure|
40
+ type = classify failure
41
+ xml.tag! type, format_backtrace(failure), message: result
42
+ end
39
43
  end
40
44
  end
41
45
  xml.target!
@@ -56,12 +60,14 @@ module Minitest
56
60
  end
57
61
 
58
62
  def format_class(result)
59
- result.class.to_s.gsub(/(.*)::(.*)/, '\1.\2')
60
- result.class
63
+ if @options[:junit_jenkins]
64
+ result.class.to_s.gsub(/(.*)::(.*)/, '\1.\2')
65
+ else
66
+ result.class
67
+ end
61
68
  end
62
69
 
63
70
  def format_name(result)
64
- result.name.sub(/^test_/, '').gsub('_', ' ')
65
71
  result.name
66
72
  end
67
73
  end
@@ -10,12 +10,15 @@ module Minitest
10
10
  ' Defaults to report.xml' do |out|
11
11
  options[:junit_filename] = out
12
12
  end
13
+ opts.on '--junit-jenkins', 'Sanitize test names for Jenkins display' do
14
+ options[:junit_jenkins] = true
15
+ end
13
16
  end
14
17
 
15
18
  def self.plugin_junit_init(options)
16
- return unless options[:junit]
17
- file_klass = options[:file_klass] || File
18
- io = file_klass.new options[:junit_filename] || 'report.xml', 'w'
19
- reporter << Junit::Reporter.new(io) if options[:junit]
19
+ return unless options.delete :junit
20
+ file_klass = options.delete(:file_klass) || File
21
+ io = file_klass.new options.delete(:junit_filename) || 'report.xml', 'w'
22
+ reporter << Junit::Reporter.new(io, options)
20
23
  end
21
24
  end
@@ -18,10 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(/^(test)\//)
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'minitest', '~> 5.0'
21
+ spec.add_dependency 'minitest', '~> 5.0', '< 5.11'
22
22
  spec.add_dependency 'builder', '~> 3.2'
23
23
 
24
- spec.add_development_dependency 'bundler', '~> 1.6'
24
+ spec.add_development_dependency 'bundler'
25
25
  spec.add_development_dependency 'rake', '~> 10.3.2'
26
26
  spec.add_development_dependency 'rubocop', '~> 0.24.1'
27
27
  end
@@ -72,4 +72,12 @@ class PluginTest < Minitest::Test
72
72
 
73
73
  assert_equal 'somefile.xml', options[:junit_filename]
74
74
  end
75
+
76
+ def test_jenkins_sanitization_is_specified_by_a_flag
77
+ opts = OptionParser.new
78
+ options = {}
79
+ Minitest.plugin_junit_options opts, options
80
+ opts.parse('--junit-jenkins')
81
+ assert options[:junit_jenkins]
82
+ end
75
83
  end
@@ -31,7 +31,7 @@ class ReporterTest < Minitest::Test
31
31
 
32
32
  def create_reporter
33
33
  io = StringIO.new
34
- reporter = Minitest::Junit::Reporter.new io
34
+ reporter = Minitest::Junit::Reporter.new io, {}
35
35
  def reporter.output
36
36
  @io.string
37
37
  end
@@ -20,7 +20,7 @@ class TestCaseFormatter < Minitest::Test
20
20
 
21
21
  reporter.report
22
22
 
23
- assert_match(/<skipped\/>/, reporter.output)
23
+ assert_match(/<skipped message="[^<>]+"\/><\/testcase>\n<\/testsuite>\n/, reporter.output)
24
24
  end
25
25
 
26
26
  def test_failing_tests_creates_failure_tag
@@ -45,6 +45,16 @@ class TestCaseFormatter < Minitest::Test
45
45
  assert_match(/<error/, reporter.output)
46
46
  end
47
47
 
48
+ def test_jenkins_sanitizer_uses_modules_as_packages
49
+ test = create_test_result 'FirstModule::SecondModule::TestClass'
50
+ reporter = create_reporter junit_jenkins: true
51
+ reporter.record test
52
+
53
+ reporter.report
54
+
55
+ assert_match 'FirstModule::SecondModule.TestClass', reporter.output
56
+ end
57
+
48
58
  private
49
59
 
50
60
  def create_error(klass)
@@ -53,11 +63,12 @@ class TestCaseFormatter < Minitest::Test
53
63
  e
54
64
  end
55
65
 
56
- def create_test_result
57
- test = Minitest::Test.new 'passing test'
58
- def test.class
59
- 'ATestClass'
60
- end
66
+ def create_test_result(name = 'ATestClass')
67
+ test = Class.new Minitest::Test do
68
+ define_method 'class' do
69
+ name
70
+ end
71
+ end.new 'test_method_name'
61
72
  test.time = a_number
62
73
  test.assertions = a_number
63
74
  test
@@ -67,9 +78,9 @@ class TestCaseFormatter < Minitest::Test
67
78
  rand(100)
68
79
  end
69
80
 
70
- def create_reporter
81
+ def create_reporter(options = {})
71
82
  io = StringIO.new ''
72
- reporter = Minitest::Junit::Reporter.new io
83
+ reporter = Minitest::Junit::Reporter.new io, options
73
84
  def reporter.output
74
85
  @io.string
75
86
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-junit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Allan Espinosa
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-11 00:00:00.000000000 Z
11
+ date: 1980-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '5.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.11'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,9 @@ dependencies:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
29
  version: '5.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.11'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: builder
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +48,16 @@ dependencies:
42
48
  name: bundler
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - "~>"
51
+ - - ">="
46
52
  - !ruby/object:Gem::Version
47
- version: '1.6'
53
+ version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - "~>"
58
+ - - ">="
53
59
  - !ruby/object:Gem::Version
54
- version: '1.6'
60
+ version: '0'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: rake
57
63
  requirement: !ruby/object:Gem::Requirement
@@ -104,7 +110,7 @@ homepage: http://github.com/aespinosa/minitest-junit
104
110
  licenses:
105
111
  - MIT
106
112
  metadata: {}
107
- post_install_message:
113
+ post_install_message:
108
114
  rdoc_options: []
109
115
  require_paths:
110
116
  - lib
@@ -119,9 +125,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
119
125
  - !ruby/object:Gem::Version
120
126
  version: '0'
121
127
  requirements: []
122
- rubyforge_project:
123
- rubygems_version: 2.4.1
124
- signing_key:
128
+ rubygems_version: 3.2.26
129
+ signing_key:
125
130
  specification_version: 4
126
131
  summary: Junit reporter for Minitest ~> 5.0
127
132
  test_files: