minitest-junit 0.1.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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: