rspec_junit_formatter 0.4.0.pre → 0.5.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: ad7496b872a273636e473effb145427f2cf66d94
4
- data.tar.gz: b61510be2cfa388a7d450937f8bfb3f75b7c1ee1
2
+ SHA256:
3
+ metadata.gz: ea46534b4275bee49fd9211ab8d702273475b2cf8ae6ec6fadf70242036b47a6
4
+ data.tar.gz: 1095a37248d6a758198fc605ff5306efa200051d8b1526ded3b70642169a9bc6
5
5
  SHA512:
6
- metadata.gz: 18f054c82f287d788bfe67b6288f697bfdcfd2d9e568425c4443b8a507ac37e6e00f190c1f7c7bf6ca3a371d2a31c29dbc1f88ea0347b002c0daa609e596a8c8
7
- data.tar.gz: d0ec6791a67eb4c740e12850d95cc13487d107bea68ae6875a4d430da13a426dd3422e60cd79129c86ecad668f453b352fb575b2e1ded75dab406ac6db41bc0a
6
+ metadata.gz: 87a3d85fa44c45b8721b65115636a1d3eaf53dde58077aeb1d37417136350440edf0a1e20b3260604a7135482b710f45a25ed8853755f1bf3c9ca255ab47ef52
7
+ data.tar.gz: '09b6904589c20fdff3470e7a243b2d018d283fff53cacc60f7c9f6a646506e2c3148e6aa08e825acf56dd4c453a0bca14d9177f6648cb5a17087dfa1fa272ada'
checksums.yaml.gz.sig CHANGED
Binary file
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2011 Samuel Cochran
1
+ Copyright (c) 2011-2022 Samuel Cochran
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,11 +1,15 @@
1
1
  # RSpec JUnit Formatter
2
2
 
3
- [![Build results](http://img.shields.io/travis/sj26/rspec_junit_formatter/master.svg)](https://travis-ci.org/sj26/rspec_junit_formatter)
3
+ [![Build results](https://github.com/sj26/rspec_junit_formatter/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/sj26/rspec_junit_formatter/actions/workflows/ci.yml?branch=main)
4
4
  [![Gem version](http://img.shields.io/gem/v/rspec_junit_formatter.svg)](https://rubygems.org/gems/rspec_junit_formatter)
5
5
 
6
- [RSpec][rspec] 2 & 3 results that [Jenkins][jenkins] can read. Probably a few other CI services, too.
6
+ [RSpec][rspec] 2 & 3 results that your CI can read. [Jenkins][jenkins-junit], [Buildkite][buildkite-junit], [CircleCI][circleci-junit], [Gitlab][gitlab-junit], and probably more, too.
7
7
 
8
- Inspired by the work of [Diego Souza][dgvncsz0f] on [RSpec Formatters][dgvncsz0f/rspec_formatters] after frustration with [CI Reporter][ci_reporter].
8
+ [rspec]: http://rspec.info/
9
+ [jenkins-junit]: https://jenkins.io/doc/pipeline/steps/junit/
10
+ [buildkite-junit]: https://github.com/buildkite/rspec-junit-example
11
+ [circleci-junit]: https://circleci.com/docs/2.0/collect-test-data/
12
+ [gitlab-junit]: https://docs.gitlab.com/ee/ci/junit_test_reports.html#ruby-example
9
13
 
10
14
  ## Usage
11
15
 
@@ -29,6 +33,8 @@ You can use it in combination with other [formatters][rspec-formatters], too:
29
33
  rspec --format progress --format RspecJunitFormatter --out rspec.xml
30
34
  ```
31
35
 
36
+ [rspec-formatters]: https://relishapp.com/rspec/rspec-core/v/3-6/docs/formatters
37
+
32
38
  ### Using in your project with Bundler
33
39
 
34
40
  Add it to your Gemfile if you're using [Bundler][bundler]. Put it in the same groups as rspec.
@@ -46,6 +52,8 @@ Put the same arguments as the commands above in [your `.rspec`][rspec-file]:
46
52
  --format RspecJunitFormatter
47
53
  --out rspec.xml
48
54
  ```
55
+ [bundler]: https://bundler.io
56
+ [rspec-file]: https://relishapp.com/rspec/rspec-core/v/3-6/docs/configuration/read-command-line-configuration-options-from-files
49
57
 
50
58
  ### Parallel tests
51
59
 
@@ -58,31 +66,56 @@ For use with `parallel_tests`, add `$TEST_ENV_NUMBER` in the output file option
58
66
 
59
67
  The formatter includes `$TEST_ENV_NUMBER` in the test suite name within the XML, too.
60
68
 
69
+ ### Capturing output
70
+
71
+ If you like, you can capture the standard output and error streams of each test into the `:stdout` and `:stderr` example metadata which will be added to the junit report, e.g.:
72
+
73
+ ```ruby
74
+ # spec_helper.rb
75
+
76
+ RSpec.configure do |config|
77
+ # register around filter that captures stdout and stderr
78
+ config.around(:each) do |example|
79
+ $stdout = StringIO.new
80
+ $stderr = StringIO.new
81
+
82
+ example.run
83
+
84
+ example.metadata[:stdout] = $stdout.string
85
+ example.metadata[:stderr] = $stderr.string
86
+
87
+ $stdout = STDOUT
88
+ $stderr = STDERR
89
+ end
90
+ end
91
+ ```
92
+
93
+ Note that this example captures all output from every example all the time, potentially interfering with local debugging. You might like to restrict this to only on CI, or by using [rspec filters](https://relishapp.com/rspec/rspec-core/docs/hooks/filters).
94
+
61
95
  ## Caveats
62
96
 
63
- * XML can only represent a [limited subset of characters][xml-charsets] which
64
- excludes null bytes and most control characters. This gem will use character
65
- entities where possible and fall back to replacing invalid characters with
66
- Ruby-like escape codes otherwise. For example, the null byte becomes `\0`.
97
+ * XML can only represent a [limited subset of characters][xml-charsets] which excludes null bytes and most control characters. This gem will use character entities where possible and fall back to replacing invalid characters with Ruby-like escape codes otherwise. For example, the null byte becomes `\0`.
98
+
99
+ [xml-charsets]: https://www.w3.org/TR/xml/#charsets
100
+
101
+ ## Development
102
+
103
+ Run the specs with `bundle exec rake`, which uses [Appraisal][appraisal] to run the specs against all supported versions of rspec.
104
+
105
+ [appraisal]: https://github.com/thoughtbot/appraisal
67
106
 
68
- ## Roadmap
107
+ ## Releasing
69
108
 
70
- * It would be nice to split things up into individual test suites, although
71
- would this correspond to example groups? The subject? The spec file? Not
72
- sure yet.
109
+ Bump the gem version in the gemspec, and commit. Then `bundle exec rake build` to build a gem package, `bundle exec rake install` to install and test it locally, then `bundle exec rake release` to tag and push the commits and gem.
73
110
 
74
111
  ## License
75
112
 
76
- The MIT License, see [LICENSE][license].
113
+ The MIT License, see [LICENSE](./LICENSE).
114
+
115
+ ## Thanks
116
+
117
+ Inspired by the work of [Diego Souza][dgvncsz0f] on [RSpec Formatters][dgvncsz0f/rspec_formatters] after frustration with [CI Reporter][ci_reporter].
77
118
 
78
- [rspec]: http://rspec.info/
79
- [rspec-formatters]: https://relishapp.com/rspec/rspec-core/v/3-6/docs/formatters
80
- [rspec-file]: https://relishapp.com/rspec/rspec-core/v/3-6/docs/configuration/read-command-line-configuration-options-from-files
81
- [jenkins]: http://jenkins-ci.org/
82
119
  [dgvncsz0f]: https://github.com/dgvncsz0f
83
120
  [dgvncsz0f/rspec_formatters]: https://github.com/dgvncsz0f/rspec_formatters
84
121
  [ci_reporter]: https://github.com/nicksieger/ci_reporter
85
- [bundler]: http://gembundler.com/
86
- [fuubar]: http://jeffkreeftmeijer.com/2010/fuubar-the-instafailing-rspec-progress-bar-formatter/
87
- [license]: https://github.com/sj26/rspec-junit-formatter/blob/master/LICENSE
88
- [xml-charsets]: https://www.w3.org/TR/xml/#charsets
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RSpecJUnitFormatter < RSpec::Core::Formatters::BaseFormatter
2
4
  attr_reader :started
3
5
 
@@ -47,18 +49,23 @@ private
47
49
  end
48
50
 
49
51
  def failure_message_for(example)
50
- exception_for(example).to_s
52
+ strip_diff_colors(exception_for(example).to_s)
51
53
  end
52
54
 
53
55
  def failure_for(example)
54
56
  exception = exception_for(example)
57
+ message = strip_diff_colors(exception.message)
55
58
  backtrace = format_backtrace(exception.backtrace, example)
56
59
 
57
60
  if shared_group = find_shared_group(example)
58
61
  backtrace << "Shared Example Group: \"#{shared_group.metadata[:shared_group_name]}\" called from #{shared_group.metadata[:example_group][:location]}"
59
62
  end
60
63
 
61
- "#{exception.message}\n#{backtrace.join("\n")}"
64
+ "#{message}\n#{backtrace.join("\n")}"
65
+ end
66
+
67
+ def error_count
68
+ 0
62
69
  end
63
70
 
64
71
  def find_shared_group(example)
@@ -68,4 +75,12 @@ private
68
75
  def group_and_parent_groups(example)
69
76
  example.example_group.parent_groups + [example.example_group]
70
77
  end
78
+
79
+ def stdout_for(example)
80
+ example.metadata[:stdout]
81
+ end
82
+
83
+ def stderr_for(example)
84
+ example.metadata[:stderr]
85
+ end
71
86
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class RSpecJUnitFormatter < RSpec::Core::Formatters::BaseFormatter
2
4
  RSpec::Core::Formatters.register self,
3
5
  :start,
@@ -43,6 +45,15 @@ private
43
45
  @examples_notification.notifications
44
46
  end
45
47
 
48
+ def error_count
49
+ # Introduced in rspec 3.6
50
+ if @summary_notification.respond_to?(:errors_outside_of_examples_count)
51
+ @summary_notification.errors_outside_of_examples_count
52
+ else
53
+ 0
54
+ end
55
+ end
56
+
46
57
  def result_of(notification)
47
58
  notification.example.execution_result.status
48
59
  end
@@ -84,47 +95,52 @@ private
84
95
  notification.example.execution_result.exception
85
96
  end
86
97
 
87
- STRIP_DIFF_COLORS_BLOCK_REGEXP = /^ ( [ ]* ) Diff: \e\[0m (?: \n \1 \e\[0m .* )* /x
88
- STRIP_DIFF_COLORS_CODES_REGEXP = /\e\[\d+m/
89
-
90
- def strip_diff_colors(string)
91
- # XXX: RSpec diffs are appended to the message lines fairly early and will
92
- # contain ANSI escape codes for colorizing terminal output if the global
93
- # rspec configuration is turned on, regardless of which notification lines
94
- # we ask for. We need to strip the codes from the diff part of the message
95
- # for XML output here.
96
- #
97
- # We also only want to target the diff hunks because the failure message
98
- # itself might legitimately contain ansi escape codes.
99
- #
100
- string.sub(STRIP_DIFF_COLORS_BLOCK_REGEXP) { |match| match.gsub(STRIP_DIFF_COLORS_CODES_REGEXP, "".freeze) }
101
- end
102
-
103
- # Completely gross hack for forcing off colorising
104
- if Gem::Version.new(RSpec::Core::Version::STRING) >= Gem::Version.new("3.6")
105
- WITHOUT_COLOR_KEY = :color_mode
106
- WITHOUT_COLOR_VALUE = :off
107
- else
108
- WITHOUT_COLOR_KEY = :color
109
- WITHOUT_COLOR_VALUE = false
110
- end
111
- def without_color
98
+ # rspec makes it really difficult to swap in configuration temporarily due to
99
+ # the way it cascades defaults, command line arguments, and user
100
+ # configuration. This method makes sure configuration gets swapped in
101
+ # correctly, but also that the original state is definitely restored.
102
+ def swap_rspec_configuration(key, value)
112
103
  unset = Object.new
113
- force = RSpec.configuration.send(:value_for, WITHOUT_COLOR_KEY) { unset }
104
+ force = RSpec.configuration.send(:value_for, key) { unset }
114
105
  if unset.equal?(force)
115
- previous = RSpec.configuration.send(WITHOUT_COLOR_KEY)
116
- RSpec.configuration.send(:"#{WITHOUT_COLOR_KEY}=", WITHOUT_COLOR_VALUE)
106
+ previous = RSpec.configuration.send(key)
107
+ RSpec.configuration.send(:"#{key}=", value)
117
108
  else
118
- RSpec.configuration.force({WITHOUT_COLOR_KEY => WITHOUT_COLOR_VALUE})
109
+ RSpec.configuration.force({key => value})
119
110
  end
120
111
  yield
121
112
  ensure
122
113
  if unset.equal?(force)
123
- RSpec.configuration.send(:"#{WITHOUT_COLOR_KEY}=", previous)
114
+ RSpec.configuration.send(:"#{key}=", previous)
124
115
  else
125
- RSpec.configuration.force({WITHOUT_COLOR_KEY => force})
116
+ RSpec.configuration.force({key => force})
126
117
  end
127
118
  end
119
+
120
+ # Completely gross hack for absolutely forcing off colorising for the
121
+ # duration of a block.
122
+ if RSpec.configuration.respond_to?(:color_mode=)
123
+ def without_color(&block)
124
+ swap_rspec_configuration(:color_mode, :off, &block)
125
+ end
126
+ elsif RSpec.configuration.respond_to?(:color=)
127
+ def without_color(&block)
128
+ swap_rspec_configuration(:color, false, &block)
129
+ end
130
+ else
131
+ warn 'rspec_junit_formatter cannot prevent colorising due to an unexpected RSpec.configuration format'
132
+ def without_color
133
+ yield
134
+ end
135
+ end
136
+
137
+ def stdout_for(example_notification)
138
+ example_notification.example.metadata[:stdout]
139
+ end
140
+
141
+ def stderr_for(example_notification)
142
+ example_notification.example.metadata[:stderr]
143
+ end
128
144
  end
129
145
 
130
146
  # rspec-core 3.0.x forgot to mark this as a module function which causes:
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "socket"
2
4
  require "time"
3
5
 
@@ -18,7 +20,7 @@ private
18
20
  output << %{ tests="#{example_count}"}
19
21
  output << %{ skipped="#{pending_count}"}
20
22
  output << %{ failures="#{failure_count}"}
21
- output << %{ errors="0"}
23
+ output << %{ errors="#{error_count}"}
22
24
  output << %{ time="#{escape("%.6f" % duration)}"}
23
25
  output << %{ timestamp="#{escape(started.iso8601)}"}
24
26
  output << %{ hostname="#{escape(Socket.gethostname)}"}
@@ -71,12 +73,27 @@ private
71
73
  output << %{ time="#{escape("%.6f" % duration_for(example))}"}
72
74
  output << %{>}
73
75
  yield if block_given?
76
+ xml_dump_output(example)
74
77
  output << %{</testcase>\n}
75
78
  end
76
79
 
80
+ def xml_dump_output(example)
81
+ if (stdout = stdout_for(example)) && !stdout.empty?
82
+ output << %{<system-out>}
83
+ output << escape(stdout)
84
+ output << %{</system-out>}
85
+ end
86
+
87
+ if (stderr = stderr_for(example)) && !stderr.empty?
88
+ output << %{<system-err>}
89
+ output << escape(stderr)
90
+ output << %{</system-err>}
91
+ end
92
+ end
93
+
77
94
  # Inversion of character range from https://www.w3.org/TR/xml/#charsets
78
95
  ILLEGAL_REGEXP = Regexp.new(
79
- "[^" <<
96
+ +"[^" <<
80
97
  "\u{9}" << # => \t
81
98
  "\u{a}" << # => \n
82
99
  "\u{d}" << # => \r
@@ -108,7 +125,7 @@ private
108
125
  # Discouraged characters from https://www.w3.org/TR/xml/#charsets
109
126
  # Plus special characters with well-known entity replacements
110
127
  DISCOURAGED_REGEXP = Regexp.new(
111
- "[" <<
128
+ +"[" <<
112
129
  "\u{22}" << # => "
113
130
  "\u{26}" << # => &
114
131
  "\u{27}" << # => '
@@ -149,6 +166,22 @@ private
149
166
  # Make sure it's utf-8, replace illegal characters with ruby-like escapes, and replace special and discouraged characters with entities
150
167
  text.to_s.encode(Encoding::UTF_8).gsub(ILLEGAL_REGEXP, ILLEGAL_REPLACEMENT).gsub(DISCOURAGED_REGEXP, DISCOURAGED_REPLACEMENTS)
151
168
  end
169
+
170
+ STRIP_DIFF_COLORS_BLOCK_REGEXP = /^ ( [ ]* ) Diff: (?: \e\[ 0 m )? (?: \n \1 \e\[ \d+ (?: ; \d+ )* m .* )* /x
171
+ STRIP_DIFF_COLORS_CODES_REGEXP = /\e\[ \d+ (?: ; \d+ )* m/x
172
+
173
+ def strip_diff_colors(string)
174
+ # XXX: RSpec diffs are appended to the message lines fairly early and will
175
+ # contain ANSI escape codes for colorizing terminal output if the global
176
+ # rspec configuration is turned on, regardless of which notification lines
177
+ # we ask for. We need to strip the codes from the diff part of the message
178
+ # for XML output here.
179
+ #
180
+ # We also only want to target the diff hunks because the failure message
181
+ # itself might legitimately contain ansi escape codes.
182
+ #
183
+ string.sub(STRIP_DIFF_COLORS_BLOCK_REGEXP) { |match| match.gsub(STRIP_DIFF_COLORS_CODES_REGEXP, "".freeze) }
184
+ end
152
185
  end
153
186
 
154
187
  RspecJunitFormatter = RSpecJUnitFormatter
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec_junit_formatter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0.pre
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Cochran
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDKDCCAhCgAwIBAgIBBTANBgkqhkiG9w0BAQUFADA6MQ0wCwYDVQQDDARzajI2
14
- MRQwEgYKCZImiZPyLGQBGRYEc2oyNjETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0x
15
- NzA3MzEwNTQ3MDVaFw0xODA3MzEwNTQ3MDVaMDoxDTALBgNVBAMMBHNqMjYxFDAS
13
+ MIIDKDCCAhCgAwIBAgIBCDANBgkqhkiG9w0BAQsFADA6MQ0wCwYDVQQDDARzajI2
14
+ MRQwEgYKCZImiZPyLGQBGRYEc2oyNjETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0y
15
+ MTA0MjcwMzIxMjZaFw0yMjA0MjcwMzIxMjZaMDoxDTALBgNVBAMMBHNqMjYxFDAS
16
16
  BgoJkiaJk/IsZAEZFgRzajI2MRMwEQYKCZImiZPyLGQBGRYDY29tMIIBIjANBgkq
17
17
  hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr60Eo/ttCk8GMTMFiPr3GoYMIMFvLak
18
18
  xSmTk9YGCB6UiEePB4THSSA5w6IPyeaCF/nWkDp3/BAam0eZMWG1IzYQB23TqIM0
@@ -21,14 +21,14 @@ cert_chain:
21
21
  4O/FL2ChjL2CPCpLZW55ShYyrzphWJwLOJe+FJ/ZBl6YXwrzQM9HKnt4titSNvyU
22
22
  KzE3L63A3PZvExzLrN9u09kuWLLJfXB2sGOlw3n9t72rJiuBr3/OQQIDAQABozkw
23
23
  NzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU99dfRjEKFyczTeIz
24
- m3ZsDWrNC80wDQYJKoZIhvcNAQEFBQADggEBADGiXpvK754s0zTFx3y31ZRDdvAI
25
- lA209JIjUlDyr9ptCRadihyfF2l9/hb+hLemiPEYppzG6vEK1TIyzbAR36yOJ8CX
26
- 4vPkCXLuwHhs6UIRbwN+IEy41nsIlBxmjLYei8h3t/G2Vm2oOaLdbjDXS+Srl9U8
27
- shsE8ft81PxSQfzEL7Mr9cC9XvWbHW+SyTpfGm8rAtaqZkNeke4U8a0di4oz2EfA
28
- P4lSfmXxsd1C71ckIp0cyXkPhyTtpyS/5hq9HhuUNzEHkSDe36/Rd1xYKV5JxMC2
29
- YAttWFUs06lor2q1wwncPaMtUtbWwW35+1IV6xhs2rFY6DD/I6ZkK3GnHdY=
24
+ m3ZsDWrNC80wDQYJKoZIhvcNAQELBQADggEBAInkmTwBeGEJ7Xu9jjZIuFaE197m
25
+ YfvrzVoE6Q1DlWXpgyhhxbPIKg2acvM/Z18A7kQrF7paYl64Ti84dC64seOFIBNx
26
+ Qj/lxzPHMBoAYqeXYJhnYIXnvGCZ4Fkic5Bhs+VdcDP/uwYp3adqy+4bT/XDFZQg
27
+ tSjrAOTg3wck5aI+Tz90ONQJ83bnCRr1UPQ0T3PbWMjnNsEa9CAxUB845Sg+9yUz
28
+ Tvf+pbX8JT9rawFDogxPhL7eRAbjg4MH9amp5l8HTVCAsW8vqv7wM4rtMNAaXmik
29
+ LJghfDEf70fTtbs4Zv57pPhn1b7wBNf8fh+TZOlYAA6dFtQXoCwfE6bWgQU=
30
30
  -----END CERTIFICATE-----
31
- date: 2017-12-05 00:00:00.000000000 Z
31
+ date: 2022-01-04 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rspec-core
@@ -56,20 +56,82 @@ dependencies:
56
56
  - - "!="
57
57
  - !ruby/object:Gem::Version
58
58
  version: 2.12.0
59
+ - !ruby/object:Gem::Dependency
60
+ name: bundler
61
+ requirement: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: appraisal
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
59
87
  - !ruby/object:Gem::Dependency
60
88
  name: nokogiri
61
89
  requirement: !ruby/object:Gem::Requirement
62
90
  requirements:
63
91
  - - "~>"
64
92
  - !ruby/object:Gem::Version
65
- version: '1.6'
93
+ version: '1.8'
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 1.8.2
66
97
  type: :development
67
98
  prerelease: false
68
99
  version_requirements: !ruby/object:Gem::Requirement
69
100
  requirements:
70
101
  - - "~>"
71
102
  - !ruby/object:Gem::Version
72
- version: '1.6'
103
+ version: '1.8'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 1.8.2
107
+ - !ruby/object:Gem::Dependency
108
+ name: rake
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ type: :development
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - ">="
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
121
+ - !ruby/object:Gem::Dependency
122
+ name: coderay
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ type: :development
129
+ prerelease: false
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
73
135
  description: RSpec results that your continuous integration service can read.
74
136
  email: sj26@sj26.com
75
137
  executables: []
@@ -81,11 +143,12 @@ files:
81
143
  - lib/rspec_junit_formatter.rb
82
144
  - lib/rspec_junit_formatter/rspec2.rb
83
145
  - lib/rspec_junit_formatter/rspec3.rb
84
- homepage: http://github.com/sj26/rspec_junit_formatter
146
+ homepage: https://github.com/sj26/rspec_junit_formatter
85
147
  licenses:
86
148
  - MIT
87
- metadata: {}
88
- post_install_message:
149
+ metadata:
150
+ changelog_uri: https://github.com/sj26/rspec_junit_formatter/blob/HEAD/CHANGELOG.md
151
+ post_install_message:
89
152
  rdoc_options: []
90
153
  require_paths:
91
154
  - lib
@@ -100,9 +163,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
163
  - !ruby/object:Gem::Version
101
164
  version: 2.0.0
102
165
  requirements: []
103
- rubyforge_project:
104
- rubygems_version: 2.6.13
105
- signing_key:
166
+ rubygems_version: 3.2.26
167
+ signing_key:
106
168
  specification_version: 4
107
169
  summary: RSpec JUnit XML formatter
108
170
  test_files: []
metadata.gz.sig CHANGED
Binary file