minitest-junit_formatter 0.2.0 → 0.3.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
  SHA256:
3
- metadata.gz: 2244c89fd3b7c3f76b0ce49128493d789c1bea57596822f91b299f13d4366d02
4
- data.tar.gz: ba60d1e162b3bf1aefcb7191a73265aad154b57e426f888831a6844bc5d44348
3
+ metadata.gz: 48efdf67a0c1a27752128640d319129d3575a5212d5a74def0ae6dfecb27b58f
4
+ data.tar.gz: 66bca0a2dd39f15b4d2b9e24bca3baca67e51ef019857b1675e94b1b84961d07
5
5
  SHA512:
6
- metadata.gz: 15616fc36e4d49e9424a978bea0d9b862da6e8e87f33e361ad7edbb9c0e62d47bcc4b08cbbcd6bc26d036da121804186f3a7617edd150ae2f5b6778b212a436e
7
- data.tar.gz: 3097d847d538b471f8d780e7247b3609f492e39301b010dbf739b38d5276ba903d566b87507447a97bfd4e830a4f6c019e347e78fbd5daccf11b62f4601fe000
6
+ metadata.gz: 58548caa1d3bc7b99cad7d3a5bb834aea49cb1f47770dde967146fc524589bf9c4ae1e172f234f6b8629880b3fbd14992413f5721ed0e55b649d5389c9405e8f
7
+ data.tar.gz: ac6d1f4c2c04bab8574acedc4020b4f2c6b20f5ef198b87be0ecbbb4a326fac3fea0fb1e5402db5bfa915f70a95ef9381a893df98f633cfcff670c9ef7999937
@@ -1,18 +1,21 @@
1
1
  name: Main
2
2
  on:
3
3
  push:
4
- branches: [release]
4
+ branches: [main, release]
5
5
  pull_request:
6
- types: [opened, synchronize]
6
+ workflow_dispatch:
7
7
 
8
8
  jobs:
9
9
  tests:
10
- name: Tests
10
+ name: Ruby ${{ matrix.ruby }} / Minitest ${{ matrix.minitest }}
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  fail-fast: false
14
14
  matrix:
15
- ruby: ["2.7", "3.0", "3.1", "3.2"]
15
+ ruby: ["3.2", "3.3", "3.4", "jruby-10.0", "jruby-10.1"]
16
+ minitest: ["5", "6"]
17
+ env:
18
+ MINITEST_VERSION: ${{ matrix.minitest }}
16
19
 
17
20
  steps:
18
21
  - name: Checkout code
@@ -23,12 +26,8 @@ jobs:
23
26
  with:
24
27
  ruby-version: ${{ matrix.ruby }}
25
28
  bundler-cache: true
26
-
27
- - name: Generate lockfile
28
- run: bundle lock
29
-
30
- - name: Bundle
31
- run: bundle check || bundle install
29
+ # Separate gem caches per Minitest major version.
30
+ cache-version: minitest-${{ matrix.minitest }}
32
31
 
33
32
  - name: Run tests
34
33
  run: bundle exec rake test
data/.gitignore CHANGED
@@ -20,3 +20,5 @@ tmp
20
20
  *.o
21
21
  *.a
22
22
  mkmf.log
23
+ pik.sh
24
+ report.xml
data/Gemfile CHANGED
@@ -2,3 +2,11 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in minitest-junit.gemspec
4
4
  gemspec
5
+
6
+ # Test against a specific Minitest major version, e.g. MINITEST_VERSION=5
7
+ # Minitest 6 requires Ruby 3.2+.
8
+ minitest_version = ENV.fetch('MINITEST_VERSION') { RUBY_VERSION >= '3.2' ? '6' : '5' }
9
+ gem 'minitest', "~> #{minitest_version}.0"
10
+
11
+ # Minitest 6 extracted minitest/mock into its own gem.
12
+ gem 'minitest-mock' if minitest_version.to_i >= 6
@@ -1,6 +1,6 @@
1
1
  module Minitest
2
2
  # :nodoc:
3
3
  module JunitFormatter
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
6
6
  end
@@ -1,9 +1,12 @@
1
1
  module Minitest
2
2
  module JunitFormatter
3
3
  class NokogiriDocument
4
- def document
4
+ def initialize
5
5
  @doc = Nokogiri::XML::Document.new
6
6
  @doc.encoding = 'UTF-8'
7
+ end
8
+
9
+ def document
7
10
  @doc
8
11
  end
9
12
 
@@ -1,6 +1,9 @@
1
1
  module Minitest
2
2
  module JunitFormatter
3
3
  class RexmlDocument
4
+ # Emit double-quoted attributes, matching the Nokogiri backend.
5
+ CONTEXT = { attribute_quote: :quote }.freeze
6
+
4
7
  def document
5
8
  doc = REXML::Document.new
6
9
  doc << REXML::XMLDecl.new('1.0', 'UTF-8')
@@ -8,7 +11,7 @@ module Minitest
8
11
  end
9
12
 
10
13
  def element(name)
11
- REXML::Element.new(name)
14
+ REXML::Element.new(name, nil, CONTEXT)
12
15
  end
13
16
 
14
17
  def set_attr(el, name, value)
@@ -27,6 +27,13 @@ module Minitest
27
27
  @doc = document_factory.new
28
28
  end
29
29
 
30
+ def prerecord(klass, name)
31
+ return unless @options[:verbose]
32
+
33
+ io.print "%s#%s = " % [klass.name, name]
34
+ io.flush
35
+ end
36
+
30
37
  def passed?
31
38
  true
32
39
  end
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Minitest::JunitFormatter::VERSION
9
9
  spec.authors = ["Jesse Chavez", "Allan Espinosa"]
10
10
  spec.email = ["jesse.chavez.jp@gmail.com"]
11
- spec.summary = "Junit report formatter for Minitest ~> 5.0"
12
- spec.description = "Junit report formatter for Minitest ~> 5.0"
11
+ spec.summary = "Junit report formatter for Minitest 5 and 6"
12
+ spec.description = "Junit report formatter for Minitest 5 and 6"
13
13
  spec.homepage = "https://github.com/JesseChavez/minitest-junit_formatter"
14
14
  spec.license = "MIT"
15
15
 
@@ -18,10 +18,11 @@ 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.11'
21
+ spec.add_dependency 'minitest', '>= 5.11', '< 7'
22
22
 
23
23
  spec.add_development_dependency 'bundler'
24
24
  spec.add_development_dependency 'nokogiri'
25
25
  spec.add_development_dependency 'rake', '~> 13'
26
+ spec.add_development_dependency 'rexml'
26
27
  spec.add_development_dependency 'rubocop', '~> 1'
27
28
  end
@@ -1,5 +1,4 @@
1
- require 'minitest/autorun'
2
- require 'minitest/mock'
1
+ require_relative 'test_helper'
3
2
  require "minitest/junit_formatter_plugin"
4
3
 
5
4
  class PluginTest < Minitest::Test
@@ -1,4 +1,4 @@
1
- require 'minitest/autorun'
1
+ require_relative 'test_helper'
2
2
  require 'stringio'
3
3
  require 'time'
4
4
  require 'nokogiri'
@@ -13,10 +13,22 @@ class ReporterTest < Minitest::Test
13
13
 
14
14
  reporter.report
15
15
 
16
- assert_match(
17
- %r{<?xml version="1.0" encoding="UTF-8"\?>\n<testsuites>\n <testsuite name="minitest" timestamp="[^"]+" hostname="[^"]+" tests="0" skipped="0" failures="0" errors="0" time="0.000000"\/>\n<\/testsuites>\n},
18
- reporter.output
16
+ assert_match(/\A<\?xml version="1.0" encoding="UTF-8"\?>\n/, reporter.output)
17
+
18
+ # Parse rather than match text: JRuby's Nokogiri orders attributes and whitespace differently
19
+ parsed_report = Nokogiri::XML(reporter.output)
20
+ assert_equal 'testsuites', parsed_report.root.name
21
+ testsuites = parsed_report.root.element_children
22
+ assert_equal ['testsuite'], testsuites.map(&:name)
23
+
24
+ testsuite = testsuites.first
25
+ assert_empty testsuite.children
26
+ assert_equal(
27
+ { 'name' => 'minitest', 'tests' => '0', 'skipped' => '0', 'failures' => '0', 'errors' => '0', 'time' => '0.000000' },
28
+ testsuite.to_h.reject { |key, _| %w[timestamp hostname].include?(key) }
19
29
  )
30
+ refute_empty testsuite['timestamp']
31
+ refute_empty testsuite['hostname']
20
32
  end
21
33
 
22
34
  # NOTE: This test will generate a temp file: "test/tmp/report.xml"
@@ -35,9 +47,11 @@ class ReporterTest < Minitest::Test
35
47
  reporter = create_reporter
36
48
 
37
49
  results = do_formatting_test(reporter, count: rand(100), cause_failures: 0)
50
+ parsed_report = Nokogiri::XML(reporter.output)
38
51
 
39
52
  results.each do |result|
40
- assert_match("<testcase classname=\"FakeTestName\" name=\"#{result.name}\"", reporter.output)
53
+ assert parsed_report.at_xpath("//testcase[@classname='FakeTestName' and @name='#{result.name}']"),
54
+ "expected a testcase for #{result.name}"
41
55
  end
42
56
  end
43
57
 
@@ -0,0 +1,5 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/mock'
3
+
4
+ # Minitest 6 made plugin loading opt-in.
5
+ Minitest.load :junit_formatter if Minitest::VERSION.to_i >= 6
@@ -1,4 +1,4 @@
1
- require 'minitest/autorun'
1
+ require_relative 'test_helper'
2
2
  require 'stringio'
3
3
  require 'time'
4
4
 
@@ -31,7 +31,7 @@ class TestCaseFormatter < Minitest::Test
31
31
 
32
32
  reporter.report
33
33
 
34
- assert_match(/<skipped message="[^<>]+"\><\/skipped>\n\s+<\/testcase>\n\s*<\/testsuite>\n/, reporter.output)
34
+ assert_match(/<skipped message="[^<>]+"(\/>|><\/skipped>)\n\s+<\/testcase>\n\s*<\/testsuite>\n/, reporter.output)
35
35
  end
36
36
 
37
37
  def test_failing_tests_creates_failure_tag
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-junit_formatter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jesse Chavez
@@ -14,16 +14,22 @@ dependencies:
14
14
  name: minitest
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '5.11'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '5.11'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '7'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: bundler
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +72,20 @@ dependencies:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
74
  version: '13'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rexml
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
69
89
  - !ruby/object:Gem::Dependency
70
90
  name: rubocop
71
91
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +100,7 @@ dependencies:
80
100
  - - "~>"
81
101
  - !ruby/object:Gem::Version
82
102
  version: '1'
83
- description: Junit report formatter for Minitest ~> 5.0
103
+ description: Junit report formatter for Minitest 5 and 6
84
104
  email:
85
105
  - jesse.chavez.jp@gmail.com
86
106
  executables: []
@@ -102,6 +122,7 @@ files:
102
122
  - test/.rubocop.yml
103
123
  - test/junit_plugin_test.rb
104
124
  - test/reporter_test.rb
125
+ - test/test_helper.rb
105
126
  - test/testcase_formatter_test.rb
106
127
  - test/tmp/.keep
107
128
  homepage: https://github.com/JesseChavez/minitest-junit_formatter
@@ -122,12 +143,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
143
  - !ruby/object:Gem::Version
123
144
  version: '0'
124
145
  requirements: []
125
- rubygems_version: 3.6.9
146
+ rubygems_version: 3.7.2
126
147
  specification_version: 4
127
- summary: Junit report formatter for Minitest ~> 5.0
148
+ summary: Junit report formatter for Minitest 5 and 6
128
149
  test_files:
129
150
  - test/.rubocop.yml
130
151
  - test/junit_plugin_test.rb
131
152
  - test/reporter_test.rb
153
+ - test/test_helper.rb
132
154
  - test/testcase_formatter_test.rb
133
155
  - test/tmp/.keep