rspec-core 3.8.0 → 3.8.1

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: 01f0ed2875b8c4e0801d2857936e4a4116ceb309
4
- data.tar.gz: 58b9a780de52779ef48a2c510d99c14dd7a22f1d
2
+ SHA256:
3
+ metadata.gz: 2e83f32ce194b3903060d4338a0dd48d533c2322a91c2c50cf4a4c6b34b6ca48
4
+ data.tar.gz: c63129c5d7bbc1bdfa955772aac6f5a2aff7a1b925bda15ea1099b608cf6aef2
5
5
  SHA512:
6
- metadata.gz: dc81061f5a9badff82a346285c6571447b9884906540c0502aeec96c1d100d4c764e2422f87dadd46148a8db96926b9c1a5e5d57a72adda28d6f05ddceae65e9
7
- data.tar.gz: 940193670454593373c80e55c407e31a70b3eb8f9579b108663ec9234e2025149a93aed2d8aec8e2e7eeffd124853bf1a5a068d2a79e4bbcaed551b769d485fd
6
+ metadata.gz: 5530f82ce2eb36ddd2b0b6c4fb062b1538fdb6615fe18d43ca7b959bda00b5c80331020dfcbe808d3e2c5352ad4cd3bd496792951fb1d600c2fcf7f7b1cf6e9b
7
+ data.tar.gz: 526bcd7bf5a7f85afa55559ea99fc4d9ff0811a5b1547a586dacfa584f4ecf74288a691f1968b262ae0fc47c2b89b2d6a90ef1a4a2549ee2c01cc54e40716d74
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,16 @@
1
+ ### 3.8.1 / 2019-06-13
2
+ [Full Changelog](http://github.com/rspec/rspec-core/compare/v3.8.0...3-8-maintenance)
3
+
4
+ Bug Fixes:
5
+
6
+ * Handle RSpec description(s) with japanese chars in CP932 encoded files.
7
+ (Benoit Tigeot, #2575)
8
+ * When defining `let` methods that overwrite an existing method, prevent
9
+ a warning being issued by removing the old definition. (Jon Rowe, #2593)
10
+ * Prevent warning on Ruby 2.6.0-rc1 (Keiji Yoshimi, #2582)
11
+ * Fix `config.define_derived_metadata` so that it supports cascades.
12
+ (Myron Marston, #2630).
13
+
1
14
  ### 3.8.0 / 2018-08-04
2
15
  [Full Changelog](http://github.com/rspec/rspec-core/compare/v3.7.1...v3.8.0)
3
16
 
data/README.md CHANGED
@@ -19,20 +19,6 @@ RSpec repos as well. Add the following to your `Gemfile`:
19
19
  end
20
20
  ```
21
21
 
22
- ## Contributing
23
-
24
- Once you've set up the environment, you'll need to cd into the working
25
- directory of whichever repo you want to work in. From there you can run the
26
- specs and cucumber features, and make patches.
27
-
28
- NOTE: You do not need to use rspec-dev to work on a specific RSpec repo. You
29
- can treat each RSpec repo as an independent project.
30
-
31
- * [Build details](BUILD_DETAIL.md)
32
- * [Code of Conduct](CODE_OF_CONDUCT.md)
33
- * [Detailed contributing guide](CONTRIBUTING.md)
34
- * [Development setup guide](DEVELOPMENT.md)
35
-
36
22
  ## Basic Structure
37
23
 
38
24
  RSpec uses the words "describe" and "it" so we can express concepts like a conversation:
@@ -376,6 +362,20 @@ Finished in 0.000379 seconds
376
362
  1 example, 0 failures
377
363
  ```
378
364
 
365
+ ## Contributing
366
+
367
+ Once you've set up the environment, you'll need to cd into the working
368
+ directory of whichever repo you want to work in. From there you can run the
369
+ specs and cucumber features, and make patches.
370
+
371
+ NOTE: You do not need to use rspec-dev to work on a specific RSpec repo. You
372
+ can treat each RSpec repo as an independent project.
373
+
374
+ * [Build details](BUILD_DETAIL.md)
375
+ * [Code of Conduct](CODE_OF_CONDUCT.md)
376
+ * [Detailed contributing guide](CONTRIBUTING.md)
377
+ * [Development setup guide](DEVELOPMENT.md)
378
+
379
379
  ## Also see
380
380
 
381
381
  * [https://github.com/rspec/rspec](https://github.com/rspec/rspec)
@@ -1855,9 +1855,28 @@ module RSpec
1855
1855
 
1856
1856
  # @private
1857
1857
  def apply_derived_metadata_to(metadata)
1858
- @derived_metadata_blocks.items_for(metadata).each do |block|
1859
- block.call(metadata)
1858
+ already_run_blocks = Set.new
1859
+
1860
+ # We loop and attempt to re-apply metadata blocks to support cascades
1861
+ # (e.g. where a derived bit of metadata triggers the application of
1862
+ # another piece of derived metadata, etc)
1863
+ #
1864
+ # We limit our looping to 200 times as a way to detect infinitely recursing derived metadata blocks.
1865
+ # It's hard to imagine a valid use case for a derived metadata cascade greater than 200 iterations.
1866
+ 200.times do
1867
+ return if @derived_metadata_blocks.items_for(metadata).all? do |block|
1868
+ already_run_blocks.include?(block).tap do |skip_block|
1869
+ block.call(metadata) unless skip_block
1870
+ already_run_blocks << block
1871
+ end
1872
+ end
1860
1873
  end
1874
+
1875
+ # If we got here, then `@derived_metadata_blocks.items_for(metadata).all?` never returned
1876
+ # `true` above and we treat this as an attempt to recurse infinitely. It's better to fail
1877
+ # with a clear # error than hang indefinitely, which is what would happen if we didn't limit
1878
+ # the looping above.
1879
+ raise SystemStackError, "Attempted to recursively derive metadata indefinitely."
1861
1880
  end
1862
1881
 
1863
1882
  # Defines a `before` hook. See {Hooks#before} for full docs.
@@ -81,7 +81,7 @@ module RSpec
81
81
 
82
82
  def fully_formatted_lines(failure_number, colorizer)
83
83
  lines = [
84
- description,
84
+ encoded_description(description),
85
85
  detail_formatter.call(example, colorizer),
86
86
  formatted_message_and_backtrace(colorizer),
87
87
  extra_detail_formatter.call(failure_number, colorizer),
@@ -244,6 +244,17 @@ module RSpec
244
244
  end
245
245
  end
246
246
 
247
+ if String.method_defined?(:encoding)
248
+ def encoded_description(description)
249
+ return if description.nil?
250
+ encoded_string(description)
251
+ end
252
+ else # for 1.8.7
253
+ def encoded_description(description)
254
+ description
255
+ end
256
+ end
257
+
247
258
  def exception_backtrace
248
259
  exception.backtrace || []
249
260
  end
@@ -288,7 +288,26 @@ EOS
288
288
  raise(
289
289
  "#let or #subject called with a reserved name #initialize"
290
290
  ) if :initialize == name
291
- MemoizedHelpers.module_for(self).__send__(:define_method, name, &block)
291
+ our_module = MemoizedHelpers.module_for(self)
292
+
293
+ # If we have a module clash in our helper module
294
+ # then we need to remove it to prevent a warning.
295
+ #
296
+ # Note we do not check ancestor modules (see: `instance_methods(false)`)
297
+ # as we can override them.
298
+ if our_module.instance_methods(false).include?(name)
299
+ our_module.__send__(:remove_method, name)
300
+ end
301
+ our_module.__send__(:define_method, name, &block)
302
+
303
+ # If we have a module clash in the example module
304
+ # then we need to remove it to prevent a warning.
305
+ #
306
+ # Note we do not check ancestor modules (see: `instance_methods(false)`)
307
+ # as we can override them.
308
+ if instance_methods(false).include?(name)
309
+ remove_method(name)
310
+ end
292
311
 
293
312
  # Apply the memoization. The method has been defined in an ancestor
294
313
  # module so we can use `super` here to get the value.
@@ -169,7 +169,7 @@ module RSpec
169
169
  end
170
170
 
171
171
  def description_separator(parent_part, child_part)
172
- if parent_part.is_a?(Module) && child_part =~ /^(#|::|\.)/
172
+ if parent_part.is_a?(Module) && /^(?:#|::|\.)/.match(child_part.to_s)
173
173
  ''.freeze
174
174
  else
175
175
  ' '.freeze
@@ -3,7 +3,7 @@ module RSpec
3
3
  # Version information for RSpec Core.
4
4
  module Version
5
5
  # Current version of RSpec Core, in semantic versioning format.
6
- STRING = '3.8.0'
6
+ STRING = '3.8.1'
7
7
  end
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.0
4
+ version: 3.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Baker
@@ -46,7 +46,7 @@ cert_chain:
46
46
  ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
47
47
  F3MdtaDehhjC
48
48
  -----END CERTIFICATE-----
49
- date: 2018-08-04 00:00:00.000000000 Z
49
+ date: 2019-06-13 00:00:00.000000000 Z
50
50
  dependencies:
51
51
  - !ruby/object:Gem::Dependency
52
52
  name: rspec-support
@@ -263,7 +263,12 @@ files:
263
263
  homepage: https://github.com/rspec/rspec-core
264
264
  licenses:
265
265
  - MIT
266
- metadata: {}
266
+ metadata:
267
+ bug_tracker_uri: https://github.com/rspec/rspec-core/issues
268
+ changelog_uri: https://github.com/rspec/rspec-core/blob/v3.8.1/Changelog.md
269
+ documentation_uri: https://rspec.info/documentation/
270
+ mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
271
+ source_code_uri: https://github.com/rspec/rspec-core
267
272
  post_install_message:
268
273
  rdoc_options:
269
274
  - "--charset=UTF-8"
@@ -280,9 +285,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
285
  - !ruby/object:Gem::Version
281
286
  version: '0'
282
287
  requirements: []
283
- rubyforge_project:
284
- rubygems_version: 2.6.13
288
+ rubygems_version: 3.0.3
285
289
  signing_key:
286
290
  specification_version: 4
287
- summary: rspec-core-3.8.0
291
+ summary: rspec-core-3.8.1
288
292
  test_files: []
metadata.gz.sig CHANGED
Binary file