rspec_junit_formatter 0.4.0.pre → 0.4.0.pre2

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
2
  SHA1:
3
- metadata.gz: ad7496b872a273636e473effb145427f2cf66d94
4
- data.tar.gz: b61510be2cfa388a7d450937f8bfb3f75b7c1ee1
3
+ metadata.gz: 7e45b452b3b1ddc9a5fe134c0f440b5c75f61ede
4
+ data.tar.gz: cb0b99afd6014613c513c98e52cdf7b7244e07a6
5
5
  SHA512:
6
- metadata.gz: 18f054c82f287d788bfe67b6288f697bfdcfd2d9e568425c4443b8a507ac37e6e00f190c1f7c7bf6ca3a371d2a31c29dbc1f88ea0347b002c0daa609e596a8c8
7
- data.tar.gz: d0ec6791a67eb4c740e12850d95cc13487d107bea68ae6875a4d430da13a426dd3422e60cd79129c86ecad668f453b352fb575b2e1ded75dab406ac6db41bc0a
6
+ metadata.gz: f49ef97111a63bb72f5b4b55eba04f1afa1e17e6f1a57a1d0f492b3030db8d810f3ba1dded5bfbae9b27f77284282148c51c763c974352f9abcb42bbde82284f
7
+ data.tar.gz: 5a3421440dec87320bd86e230a31e18fdd395ab41d6c105296b3cef80101f49c3bc2696e77762184a0d030e8634e2182922b1889449c55b9b3a6ca78c6c17649
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -60,16 +60,19 @@ The formatter includes `$TEST_ENV_NUMBER` in the test suite name within the XML,
60
60
 
61
61
  ## Caveats
62
62
 
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`.
63
+ * 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`.
67
64
 
68
65
  ## Roadmap
69
66
 
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.
67
+ * It would be nice to split things up into individual test suites, although would this correspond to example groups? The subject? The spec file? Not sure yet.
68
+
69
+ ## Development
70
+
71
+ Run the specs with `bundle exec rake spec`. Run the specs against a matrix of rspec versions using `bundle exec rake spec:all`.
72
+
73
+ ## Releasing
74
+
75
+ 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
76
 
74
77
  ## License
75
78
 
@@ -149,6 +149,22 @@ private
149
149
  # Make sure it's utf-8, replace illegal characters with ruby-like escapes, and replace special and discouraged characters with entities
150
150
  text.to_s.encode(Encoding::UTF_8).gsub(ILLEGAL_REGEXP, ILLEGAL_REPLACEMENT).gsub(DISCOURAGED_REGEXP, DISCOURAGED_REPLACEMENTS)
151
151
  end
152
+
153
+ STRIP_DIFF_COLORS_BLOCK_REGEXP = /^ ( [ ]* ) Diff: (?: \e\[0m )? (?: \n \1 \e\[\d+m .* )* /x
154
+ STRIP_DIFF_COLORS_CODES_REGEXP = /\e\[\d+m/
155
+
156
+ def strip_diff_colors(string)
157
+ # XXX: RSpec diffs are appended to the message lines fairly early and will
158
+ # contain ANSI escape codes for colorizing terminal output if the global
159
+ # rspec configuration is turned on, regardless of which notification lines
160
+ # we ask for. We need to strip the codes from the diff part of the message
161
+ # for XML output here.
162
+ #
163
+ # We also only want to target the diff hunks because the failure message
164
+ # itself might legitimately contain ansi escape codes.
165
+ #
166
+ string.sub(STRIP_DIFF_COLORS_BLOCK_REGEXP) { |match| match.gsub(STRIP_DIFF_COLORS_CODES_REGEXP, "".freeze) }
167
+ end
152
168
  end
153
169
 
154
170
  RspecJunitFormatter = RSpecJUnitFormatter
@@ -47,18 +47,19 @@ private
47
47
  end
48
48
 
49
49
  def failure_message_for(example)
50
- exception_for(example).to_s
50
+ strip_diff_colors(exception_for(example).to_s)
51
51
  end
52
52
 
53
53
  def failure_for(example)
54
54
  exception = exception_for(example)
55
+ message = strip_diff_colors(exception.message)
55
56
  backtrace = format_backtrace(exception.backtrace, example)
56
57
 
57
58
  if shared_group = find_shared_group(example)
58
59
  backtrace << "Shared Example Group: \"#{shared_group.metadata[:shared_group_name]}\" called from #{shared_group.metadata[:example_group][:location]}"
59
60
  end
60
61
 
61
- "#{exception.message}\n#{backtrace.join("\n")}"
62
+ "#{message}\n#{backtrace.join("\n")}"
62
63
  end
63
64
 
64
65
  def find_shared_group(example)
@@ -84,45 +84,42 @@ private
84
84
  notification.example.execution_result.exception
85
85
  end
86
86
 
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
87
+ # rspec makes it really difficult to swap in configuration temporarily due to
88
+ # the way it cascades defaults, command line arguments, and user
89
+ # configuration. This method makes sure configuration gets swapped in
90
+ # correctly, but also that the original state is definitely restored.
91
+ def swap_rspec_configuration(key, value)
112
92
  unset = Object.new
113
- force = RSpec.configuration.send(:value_for, WITHOUT_COLOR_KEY) { unset }
93
+ force = RSpec.configuration.send(:value_for, key) { unset }
114
94
  if unset.equal?(force)
115
- previous = RSpec.configuration.send(WITHOUT_COLOR_KEY)
116
- RSpec.configuration.send(:"#{WITHOUT_COLOR_KEY}=", WITHOUT_COLOR_VALUE)
95
+ previous = RSpec.configuration.send(key)
96
+ RSpec.configuration.send(:"#{key}=", value)
117
97
  else
118
- RSpec.configuration.force({WITHOUT_COLOR_KEY => WITHOUT_COLOR_VALUE})
98
+ RSpec.configuration.force({key => value})
119
99
  end
120
100
  yield
121
101
  ensure
122
102
  if unset.equal?(force)
123
- RSpec.configuration.send(:"#{WITHOUT_COLOR_KEY}=", previous)
103
+ RSpec.configuration.send(:"#{key}=", previous)
124
104
  else
125
- RSpec.configuration.force({WITHOUT_COLOR_KEY => force})
105
+ RSpec.configuration.force({key => force})
106
+ end
107
+ end
108
+
109
+ # Completely gross hack for absolutely forcing off colorising for the
110
+ # duration of a block.
111
+ if RSpec.configuration.respond_to?(:color_mode=)
112
+ def without_color(&block)
113
+ swap_rspec_configuration(:color_mode, :off, &block)
114
+ end
115
+ elsif RSpec.configuration.respond_to?(:color=)
116
+ def without_color(&block)
117
+ swap_rspec_configuration(:color, false, &block)
118
+ end
119
+ else
120
+ warn 'rspec_junit_formatter cannot prevent colorising due to an unexpected RSpec.configuration format'
121
+ def without_color
122
+ yield
126
123
  end
127
124
  end
128
125
  end
metadata CHANGED
@@ -1,7 +1,7 @@
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.4.0.pre2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Cochran
@@ -28,7 +28,7 @@ cert_chain:
28
28
  P4lSfmXxsd1C71ckIp0cyXkPhyTtpyS/5hq9HhuUNzEHkSDe36/Rd1xYKV5JxMC2
29
29
  YAttWFUs06lor2q1wwncPaMtUtbWwW35+1IV6xhs2rFY6DD/I6ZkK3GnHdY=
30
30
  -----END CERTIFICATE-----
31
- date: 2017-12-05 00:00:00.000000000 Z
31
+ date: 2017-12-17 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rspec-core
@@ -56,6 +56,20 @@ 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: '1.16'
66
+ type: :development
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '1.16'
59
73
  - !ruby/object:Gem::Dependency
60
74
  name: nokogiri
61
75
  requirement: !ruby/object:Gem::Requirement
@@ -70,6 +84,34 @@ dependencies:
70
84
  - - "~>"
71
85
  - !ruby/object:Gem::Version
72
86
  version: '1.6'
87
+ - !ruby/object:Gem::Dependency
88
+ name: rake
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '10.0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '10.0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: coderay
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '1.0'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '1.0'
73
115
  description: RSpec results that your continuous integration service can read.
74
116
  email: sj26@sj26.com
75
117
  executables: []
metadata.gz.sig CHANGED
Binary file