rspec-core 3.13.5 → 4.0.0.beta1

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/Changelog.md +56 -1
  4. data/LICENSE.md +2 -2
  5. data/README.md +33 -44
  6. data/lib/rspec/core/bisect/example_minimizer.rb +3 -3
  7. data/lib/rspec/core/bisect/fork_runner.rb +0 -6
  8. data/lib/rspec/core/bisect/shell_command.rb +2 -0
  9. data/lib/rspec/core/bisect/shell_runner.rb +2 -25
  10. data/lib/rspec/core/bisect/utilities.rb +3 -7
  11. data/lib/rspec/core/configuration.rb +128 -330
  12. data/lib/rspec/core/configuration_options.rb +4 -16
  13. data/lib/rspec/core/drb.rb +0 -5
  14. data/lib/rspec/core/dsl.rb +3 -48
  15. data/lib/rspec/core/example.rb +5 -41
  16. data/lib/rspec/core/example_group.rb +36 -75
  17. data/lib/rspec/core/filter_manager.rb +2 -11
  18. data/lib/rspec/core/formatters/deprecation_formatter.rb +4 -4
  19. data/lib/rspec/core/formatters/exception_presenter.rb +30 -60
  20. data/lib/rspec/core/formatters/helpers.rb +1 -1
  21. data/lib/rspec/core/formatters/html_printer.rb +8 -7
  22. data/lib/rspec/core/formatters/html_snippet_extractor.rb +0 -4
  23. data/lib/rspec/core/formatters/profile_formatter.rb +2 -2
  24. data/lib/rspec/core/formatters/snippet_extractor.rb +3 -1
  25. data/lib/rspec/core/formatters/syntax_highlighter.rb +2 -0
  26. data/lib/rspec/core/formatters.rb +4 -8
  27. data/lib/rspec/core/hooks.rb +24 -45
  28. data/lib/rspec/core/memoized_helpers.rb +30 -120
  29. data/lib/rspec/core/metadata.rb +8 -216
  30. data/lib/rspec/core/metadata_filter.rb +15 -69
  31. data/lib/rspec/core/minitest_assertions_adapter.rb +2 -2
  32. data/lib/rspec/core/mocking_adapters/mocha.rb +2 -31
  33. data/lib/rspec/core/notifications.rb +4 -16
  34. data/lib/rspec/core/option_parser.rb +6 -14
  35. data/lib/rspec/core/ordering.rb +5 -6
  36. data/lib/rspec/core/output_wrapper.rb +2 -2
  37. data/lib/rspec/core/pending.rb +1 -9
  38. data/lib/rspec/core/project_initializer/spec/spec_helper.rb +14 -31
  39. data/lib/rspec/core/rake_task.rb +6 -7
  40. data/lib/rspec/core/shared_example_group.rb +7 -82
  41. data/lib/rspec/core/shell_escape.rb +2 -0
  42. data/lib/rspec/core/test_unit_assertions_adapter.rb +4 -17
  43. data/lib/rspec/core/version.rb +1 -1
  44. data/lib/rspec/core/world.rb +8 -23
  45. data/lib/rspec/core.rb +1 -22
  46. data.tar.gz.sig +0 -0
  47. metadata +24 -25
  48. metadata.gz.sig +0 -0
  49. data/lib/rspec/core/flat_map.rb +0 -20
@@ -15,38 +15,31 @@
15
15
  # See https://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
16
16
  RSpec.configure do |config|
17
17
  # rspec-expectations config goes here. You can use an alternate
18
- # assertion/expectation library such as wrong or the stdlib/minitest
18
+ # assertion/expectation library such as wrong or minitest
19
19
  # assertions if you prefer.
20
20
  config.expect_with :rspec do |expectations|
21
- # This option will default to `true` in RSpec 4. It makes the `description`
22
- # and `failure_message` of custom matchers include text for helper methods
23
- # defined using `chain`, e.g.:
24
- # be_bigger_than(2).and_smaller_than(4).description
25
- # # => "be bigger than 2 and smaller than 4"
26
- # ...rather than:
27
- # # => "be bigger than 2"
28
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
21
+ # The default output length is 200, you can increase it to make the
22
+ # output more verbose, or decrease it to make it more concise.
23
+ expectations.max_formatted_output_length = 200
29
24
  end
30
25
 
31
26
  # rspec-mocks config goes here. You can use an alternate test double
32
27
  # library (such as bogus or mocha) by changing the `mock_with` option here.
33
28
  config.mock_with :rspec do |mocks|
34
29
  # Prevents you from mocking or stubbing a method that does not exist on
35
- # a real object. This is generally recommended, and will default to
36
- # `true` in RSpec 4.
30
+ # a real object. This is generally recommended, and is the default since
31
+ # RSpec 4.
37
32
  mocks.verify_partial_doubles = true
38
33
  end
39
34
 
40
- # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
41
- # have no way to turn it off -- the option exists only for backwards
42
- # compatibility in RSpec 3). It causes shared context metadata to be
43
- # inherited by the metadata hash of host groups and examples, rather than
44
- # triggering implicit auto-inclusion in groups with matching metadata.
45
- config.shared_context_metadata_behavior = :apply_to_host_groups
46
-
47
35
  # The settings below are suggested to provide a good initial experience
48
36
  # with RSpec, but feel free to customize to your heart's content.
49
37
  =begin
38
+ # This setting turns on all Ruby warnings. It's recommended, but in some cases may
39
+ # be too noisy due to issues in dependencies. The default is set to `:deprecations_only`
40
+ # but it can also be set to `:none` to suppress them.
41
+ config.warnings = :all
42
+
50
43
  # This allows you to limit a spec run to individual examples or groups
51
44
  # you care about by tagging them with `:focus` metadata. When nothing
52
45
  # is tagged with `:focus`, all examples get run. RSpec also provides
@@ -59,15 +52,6 @@ RSpec.configure do |config|
59
52
  # you configure your source control system to ignore this file.
60
53
  config.example_status_persistence_file_path = "spec/examples.txt"
61
54
 
62
- # Limits the available syntax to the non-monkey patched syntax that is
63
- # recommended. For more details, see:
64
- # https://rspec.info/features/3-12/rspec-core/configuration/zero-monkey-patching-mode/
65
- config.disable_monkey_patching!
66
-
67
- # This setting enables warnings. It's recommended, but in some cases may
68
- # be too noisy due to issues in dependencies.
69
- config.warnings = true
70
-
71
55
  # Many RSpec users commonly either run the entire suite or an individual
72
56
  # file, and it's useful to allow more verbose output when running an
73
57
  # individual spec file.
@@ -83,10 +67,9 @@ RSpec.configure do |config|
83
67
  # particularly slow.
84
68
  config.profile_examples = 10
85
69
 
86
- # Run specs in random order to surface order dependencies. If you find an
87
- # order dependency and want to debug it, you can fix the order by providing
88
- # the seed, which is printed after each run.
89
- # --seed 1234
70
+ # RSpec runs specs in a random order by default to surface order dependencies.
71
+ # We recommend this setting but it can be changed to others, such as `:defined`
72
+ # to run specs in the defined order. See the documentation for more details.
90
73
  config.order = :random
91
74
 
92
75
  # Seed global randomization in this process using the `--seed` CLI option.
@@ -24,14 +24,11 @@ module RSpec
24
24
  # Default path to the RSpec executable.
25
25
  DEFAULT_RSPEC_PATH = File.expand_path('../../../../exe/rspec', __FILE__)
26
26
 
27
- # Default pattern for spec files.
28
- DEFAULT_PATTERN = 'spec/**{,/*/**}/*_spec.rb'
29
-
30
27
  # Name of task. Defaults to `:spec`.
31
28
  attr_accessor :name
32
29
 
33
30
  # Files matching this pattern will be loaded.
34
- # Defaults to `'spec/**{,/*/**}/*_spec.rb'`.
31
+ # Defaults to `nil`.
35
32
  attr_accessor :pattern
36
33
 
37
34
  # Files matching this pattern will be excluded.
@@ -45,11 +42,11 @@ module RSpec
45
42
  # A message to print to stderr when there are failures.
46
43
  attr_accessor :failure_message
47
44
 
48
- if RUBY_VERSION < "1.9.0" || Support::Ruby.jruby?
45
+ if Support::Ruby.jruby?
49
46
  # Run RSpec with a clean (empty) environment is not supported
50
47
  # :nocov:
51
48
  def with_clean_environment=(_value)
52
- raise ArgumentError, "Running in a clean environment is not supported on Ruby versions before 1.9.0"
49
+ raise ArgumentError, "Running in a clean environment is not supported on JRuby"
53
50
  end
54
51
 
55
52
  # Run RSpec with a clean (empty) environment is not supported
@@ -83,7 +80,7 @@ module RSpec
83
80
  @verbose = true
84
81
  @fail_on_error = true
85
82
  @rspec_path = DEFAULT_RSPEC_PATH
86
- @pattern = DEFAULT_PATTERN
83
+ @pattern = nil
87
84
 
88
85
  define(args, &task_block)
89
86
  end
@@ -126,6 +123,8 @@ module RSpec
126
123
  elsif String === pattern && !File.exist?(pattern)
127
124
  return if [*rspec_opts].any? { |opt| opt =~ /--pattern/ }
128
125
  "--pattern #{escape pattern}"
126
+ elsif pattern.nil?
127
+ ""
129
128
  else
130
129
  # Before RSpec 3.1, we used `FileList` to get the list of matched
131
130
  # files, and then pass that along to the `rspec` command. Starting
@@ -45,9 +45,8 @@ module RSpec
45
45
  # examples that you wish to use in multiple example groups.
46
46
  #
47
47
  # When defined, the shared group block is stored for later evaluation.
48
- # It can later be included in an example group either explicitly
49
- # (using `include_examples`, `include_context` or `it_behaves_like`)
50
- # or implicitly (via matching metadata).
48
+ # It can later be included in an example group explicitly using
49
+ # `include_examples`, `include_context` or `it_behaves_like`.
51
50
  #
52
51
  # Named shared example groups are scoped based on where they are
53
52
  # defined. Shared groups defined in an example group are available
@@ -62,9 +61,7 @@ module RSpec
62
61
  # @overload shared_examples(name, metadata, &block)
63
62
  # @param name [String, Symbol, Module] identifer to use when looking up
64
63
  # this shared group
65
- # @param metadata [Array<Symbol>, Hash] metadata to attach to this
66
- # group; any example group or example with matching metadata will
67
- # automatically include this shared example group.
64
+ # @param metadata [Array<Symbol>, Hash] metadata to attach to this group
68
65
  # @param block The block to be eval'd
69
66
  #
70
67
  # Stores the block for later use. The block will be evaluated
@@ -114,56 +111,22 @@ module RSpec
114
111
  alias shared_examples_for shared_examples
115
112
  end
116
113
  end
117
-
118
- # @private
119
- def self.exposed_globally?
120
- @exposed_globally ||= false
121
- end
122
-
123
- # @api private
124
- #
125
- # Adds the top level DSL methods to Module and the top level binding.
126
- def self.expose_globally!
127
- return if exposed_globally?
128
- Core::DSL.change_global_dsl(&definitions)
129
- @exposed_globally = true
130
- end
131
-
132
- # @api private
133
- #
134
- # Removes the top level DSL methods to Module and the top level binding.
135
- def self.remove_globally!
136
- return unless exposed_globally?
137
-
138
- Core::DSL.change_global_dsl do
139
- undef shared_examples
140
- undef shared_context
141
- undef shared_examples_for
142
- end
143
-
144
- @exposed_globally = false
145
- end
146
114
  end
147
115
 
148
116
  # @private
149
117
  class Registry
150
118
  def add(context, name, *metadata_args, &block)
151
119
  unless block
152
- RSpec.warning "Shared example group #{name} was defined without a "\
153
- "block and will have no effect. Please define a "\
120
+ RSpec.warning "Shared example group #{name} was defined without a " \
121
+ "block and will have no effect. Please define a " \
154
122
  "block or remove the definition."
155
123
  end
156
124
 
157
- if RSpec.configuration.shared_context_metadata_behavior == :trigger_inclusion
158
- return legacy_add(context, name, *metadata_args, &block)
159
- end
160
-
161
125
  unless valid_name?(name)
162
126
  raise ArgumentError, "Shared example group names can only be a string, " \
163
127
  "symbol or module but got: #{name.inspect}"
164
128
  end
165
129
 
166
- ensure_block_has_source_location(block) { CallerFilter.first_non_rspec_line }
167
130
  warn_if_key_taken context, name, block
168
131
 
169
132
  metadata = Metadata.build_hash_from(metadata_args)
@@ -182,25 +145,6 @@ module RSpec
182
145
 
183
146
  private
184
147
 
185
- # TODO: remove this in RSpec 4. This exists only to support
186
- # `config.shared_context_metadata_behavior == :trigger_inclusion`,
187
- # the legacy behavior of shared context metadata, which we do
188
- # not want to support in RSpec 4.
189
- def legacy_add(context, name, *metadata_args, &block)
190
- ensure_block_has_source_location(block) { CallerFilter.first_non_rspec_line }
191
- shared_module = SharedExampleGroupModule.new(name, block, {})
192
-
193
- if valid_name?(name)
194
- warn_if_key_taken context, name, block
195
- shared_example_groups[context][name] = shared_module
196
- else
197
- metadata_args.unshift name
198
- end
199
-
200
- return if metadata_args.empty?
201
- RSpec.configuration.include shared_module, *metadata_args
202
- end
203
-
204
148
  def shared_example_groups
205
149
  @shared_example_groups ||= Hash.new { |hash, context| hash[context] = {} }
206
150
  end
@@ -241,27 +185,8 @@ module RSpec
241
185
  end
242
186
  end
243
187
 
244
- if RUBY_VERSION.to_f >= 1.9
245
- def formatted_location(block)
246
- block.source_location.join(":")
247
- end
248
- else # 1.8.7
249
- # :nocov:
250
- def formatted_location(block)
251
- block.source_location.join(":").gsub(/:in.*$/, '')
252
- end
253
- # :nocov:
254
- end
255
-
256
- if Proc.method_defined?(:source_location)
257
- def ensure_block_has_source_location(_block); end
258
- else # for 1.8.7
259
- # :nocov:
260
- def ensure_block_has_source_location(block)
261
- source_location = yield.split(':')
262
- block.extend(Module.new { define_method(:source_location) { source_location } })
263
- end
264
- # :nocov:
188
+ def formatted_location(block)
189
+ block.source_location.take(2).join(":")
265
190
  end
266
191
  end
267
192
  end
@@ -1,3 +1,5 @@
1
+ RSpec::Support.require_rspec_support 'ruby_features'
2
+
1
3
  module RSpec
2
4
  module Core
3
5
  # @private
@@ -6,24 +6,11 @@ module RSpec
6
6
  module TestUnitAssertionsAdapter
7
7
  include ::Test::Unit::Assertions
8
8
 
9
- # If using test/unit from Ruby core with Ruby 1.9+, it includes
10
- # MiniTest::Assertions by default. Note the upcasing of 'Test'.
11
- #
12
- # If the test/unit gem is being loaded, it will not include any minitest
13
- # assertions.
14
- #
15
9
  # Only if Minitest 5.x is included / loaded do we need to worry about
16
- # adding a shim for the new updates. Thus instead of checking on the
17
- # RUBY_VERSION we need to check ancestors.
18
- begin
19
- # MiniTest is 4.x.
20
- # Minitest is 5.x.
21
- if ancestors.include?(::Minitest::Assertions)
22
- require 'rspec/core/minitest_assertions_adapter'
23
- include ::RSpec::Core::MinitestAssertionsAdapter
24
- end
25
- rescue NameError
26
- # No-op. Minitest 5.x was not loaded.
10
+ # adding a shim, older versions automatically included their assertion module.
11
+ if defined?(::Minitest::Assertions) && ancestors.include?(::Minitest::Assertions)
12
+ require 'rspec/core/minitest_assertions_adapter'
13
+ include ::RSpec::Core::MinitestAssertionsAdapter
27
14
  end
28
15
  end
29
16
  end
@@ -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.13.5'
6
+ STRING = '4.0.0.beta1'
7
7
  end
8
8
  end
9
9
  end
@@ -107,18 +107,18 @@ module RSpec
107
107
  #
108
108
  # Get count of examples to be run.
109
109
  def example_count(groups=example_groups)
110
- FlatMap.flat_map(groups) { |g| g.descendants }.
110
+ groups.flat_map { |g| g.descendants }.
111
111
  inject(0) { |a, e| a + e.filtered_examples.size }
112
112
  end
113
113
 
114
114
  # @private
115
115
  def all_example_groups
116
- FlatMap.flat_map(example_groups) { |g| g.descendants }
116
+ example_groups.flat_map { |g| g.descendants }
117
117
  end
118
118
 
119
119
  # @private
120
120
  def all_examples
121
- FlatMap.flat_map(all_example_groups) { |g| g.examples }
121
+ all_example_groups.flat_map { |g| g.examples }
122
122
  end
123
123
 
124
124
  # @private
@@ -183,12 +183,6 @@ module RSpec
183
183
  end
184
184
  end
185
185
 
186
- if @configuration.run_all_when_everything_filtered? && example_count.zero? && !@configuration.only_failures?
187
- report_filter_message("#{everything_filtered_message}; ignoring #{inclusion_filter.description}")
188
- filtered_examples.clear
189
- inclusion_filter.clear
190
- end
191
-
192
186
  return unless example_count.zero?
193
187
 
194
188
  example_groups.clear
@@ -233,19 +227,10 @@ module RSpec
233
227
 
234
228
  def descending_declaration_line_numbers_by_file
235
229
  @descending_declaration_line_numbers_by_file ||= begin
236
- declaration_locations = FlatMap.flat_map(example_groups, &:declaration_locations)
237
- hash_of_arrays = Hash.new { |h, k| h[k] = [] }
238
-
239
- # TODO: change `inject` to `each_with_object` when we drop 1.8.7 support.
240
- line_nums_by_file = declaration_locations.inject(hash_of_arrays) do |hash, (file_name, line_number)|
241
- hash[file_name] << line_number
242
- hash
243
- end
244
-
245
- line_nums_by_file.each_value do |list|
246
- list.sort!
247
- list.reverse!
248
- end
230
+ example_groups.
231
+ flat_map(&:declaration_locations).
232
+ group_by(&:first). # by file name
233
+ transform_values { |lines| lines.map(&:last).sort.reverse }
249
234
  end
250
235
  end
251
236
 
@@ -269,7 +254,7 @@ module RSpec
269
254
  []
270
255
  end
271
256
 
272
- def self.traverse_example_group_trees_until
257
+ def self.traverse_example_group_trees_until(&_block)
273
258
  end
274
259
 
275
260
  # :nocov:
data/lib/rspec/core.rb CHANGED
@@ -12,7 +12,6 @@ RSpec::Support.define_optimized_require_for_rspec(:core) { |f| require_relative
12
12
  warnings
13
13
 
14
14
  set
15
- flat_map
16
15
  filter_manager
17
16
  dsl
18
17
  notifications
@@ -101,24 +100,7 @@ module RSpec
101
100
  # The example being executed.
102
101
  #
103
102
  # The primary audience for this method is library authors who need access
104
- # to the example currently being executed and also want to support all
105
- # versions of RSpec 2 and 3.
106
- #
107
- # @example
108
- #
109
- # RSpec.configure do |c|
110
- # # context.example is deprecated, but RSpec.current_example is not
111
- # # available until RSpec 3.0.
112
- # fetch_current_example = RSpec.respond_to?(:current_example) ?
113
- # proc { RSpec.current_example } : proc { |context| context.example }
114
- #
115
- # c.before(:example) do
116
- # example = fetch_current_example.call(self)
117
- #
118
- # # ...
119
- # end
120
- # end
121
- #
103
+ # to the example currently being executed.
122
104
  def self.current_example
123
105
  RSpec::Support.thread_local_data[:current_example]
124
106
  end
@@ -206,7 +188,4 @@ module RSpec
206
188
  require MODULES_TO_AUTOLOAD.fetch(name) { return super }
207
189
  ::RSpec.const_get(name)
208
190
  end
209
-
210
- Core::DSL.expose_globally!
211
- Core::SharedExampleGroup::TopLevelDSL.expose_globally!
212
191
  end
data.tar.gz.sig CHANGED
Binary file
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.13.5
4
+ version: 4.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Baker
@@ -12,11 +12,11 @@ bindir: exe
12
12
  cert_chain:
13
13
  - |
14
14
  -----BEGIN CERTIFICATE-----
15
- MIIFvjCCA6agAwIBAgIJAPXjfUbCjdXVMA0GCSqGSIb3DQEBCwUAMIGAMQswCQYD
15
+ MIIFvjCCA6agAwIBAgIJAPXjfUbCjdXWMA0GCSqGSIb3DQEBCwUAMIGAMQswCQYD
16
16
  VQQGEwJVUzETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTEO
17
17
  MAwGA1UECgwFUlNwZWMxEzARBgNVBAMMCnJzcGVjLmluZm8xJTAjBgkqhkiG9w0B
18
- CQEWFnJzcGVjQGdvb2dsZWdyb3Vwcy5jb20wHhcNMjUwMjA2MTE0NjU2WhcNMjYw
19
- MjA2MTE0NjU2WjCBgDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24x
18
+ CQEWFnJzcGVjQGdvb2dsZWdyb3Vwcy5jb20wHhcNMjYwMjE3MTE0ODM0WhcNMjcw
19
+ MjE3MTE0ODM0WjCBgDELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24x
20
20
  EDAOBgNVBAcMB1NlYXR0bGUxDjAMBgNVBAoMBVJTcGVjMRMwEQYDVQQDDApyc3Bl
21
21
  Yy5pbmZvMSUwIwYJKoZIhvcNAQkBFhZyc3BlY0Bnb29nbGVncm91cHMuY29tMIIC
22
22
  IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsSmjgcHaKlD0jizRJowi2bGI
@@ -32,17 +32,17 @@ cert_chain:
32
32
  gpEMqf80lEmhX59VUsm0Pv6OEo+ZPHBvXPiJA6DShQh9t3YtpwyA8uVDMbT/i32u
33
33
  2FUsqZbbJcCmkBrGposCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
34
34
  HQYDVR0OBBYEFPPvQ5XT0Nvuhi6k+hrWVv35J+TeMA0GCSqGSIb3DQEBCwUAA4IC
35
- AQBGBr0ll2yLrkO6IeK5Q7qZFnANaUCKfi6Of9VztZJXgKAU5KAQxyOidGktoA5N
36
- lp+bFKudRkW8jSehqoNaNBdSZ9Bc07EGMXIhUFJZF9rq7Z2SKPwUm6EaSsBK13QR
37
- U4K6wuaw5ZJSFzklapoGOJRGnFlnNtlhNFY6+tTwCeblwZbcuYGyGY8+Rg7GbyVl
38
- 3Tr4Gi1aS/qG/MDXKdE8HWm39dmaAMdbw6dg1VBd0JrX2VqH7xvE1dM/D3OlKrNp
39
- gNFRNJig3Y8qPjocZR0cGkhgZoC9wribWxHSNawZm4CoV3fja2HNx9QyM7BaB+as
40
- yuqAiBbA7vBcyc8nKATip3mxbyXYXoDD7nmO8JCPP7O/WsgG+U/B2a0kPdvYFoxE
41
- Q0Js3GtFCuMvL+0rifqdxBOLtu0Pw9q4RvToTJIl2IR6eTgCb82B1hw9qKf7PjuL
42
- BoEsYjjDhGw6FZvcJG8O6uj7aB+z4aF21YR74UGL7sq/RIPNNez5JI95jTGfqCPy
43
- 6yo0w3zja3yg28QK3Fj+tbOHeSLv9SDQWi/1jiPprGzbxGvbVvjvX11YZc46vkmY
44
- AwP+qZPPf97FXXZGEGIYhhHpnj+Ltx9nCetRPiZ4rvYBcXgCWVQSg6eiEofrMwn/
45
- AKMCABhZ1Y2eATsfMgdkmIZk7JIPZiSi6eUxPiCMP9M/pw==
35
+ AQBaeeGIZtBFDP33D1/4sXldSgwntVcL5qC5pcjamLWM4HK4/a6ePMy1uoX+dEnJ
36
+ J+BjZWURsUfFOob+xnUe8AMSbv9gupckfVehZoBzOvJDaWcALo8GKjJlmVtzEIqZ
37
+ TvBLO5zQwR4cWIrg0NWjkDOSQOrNNQ2Degv/aOFrR8dFPJSgxZG/IC0/t6s72cEt
38
+ V4SIe/NLIU4RyBzfgn/RBsalDEF1yIVlDWspMa78clS3bPmntkNyfLwIUwINDHhn
39
+ swFA8bEKMQWqRlupuRmEiy3nGe6az46YlPXzK5UWfXJ6Lb1wIE8W80TRx0HpSC7j
40
+ JfXPfQ0PLgiU4nnQqain2bIn96Ooco8kspeqp8rSJ8sbaMPTNmcFuwD3gzWsRnJ3
41
+ rIaJbmrUcq6DlJ7jfv3u5TPt4JWzDP7oDPf3nXNiF2Cn48Ne598G5lHH6Heyxe39
42
+ pYZdhEptKJWPHxbJWHXD02omKprkNuQKHpnXrW+mmbiO4IcqAMggiud+DaEQg20x
43
+ Dae4cNbvK5p3D+5xqvcEO2G4uCMDmJjrSd61kvTLBnm1qroHqrpi9GauEVWZZmD0
44
+ n0ph8oFAXOsKQWxZ+4uh6yGISk+WhngCZEVPZUjq7SIGAuVhQy2ZgwdjnLEz//lD
45
+ x0Qexp5yGeoxAL9qKM/RXYKtuRZBJV1z+L9A1YOtwaXXNg==
46
46
  -----END CERTIFICATE-----
47
47
  date: 1980-01-02 00:00:00.000000000 Z
48
48
  dependencies:
@@ -50,16 +50,16 @@ dependencies:
50
50
  name: rspec-support
51
51
  requirement: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - "~>"
53
+ - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: 3.13.0
55
+ version: 4.0.0.beta1
56
56
  type: :runtime
57
57
  prerelease: false
58
58
  version_requirements: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
60
+ - - '='
61
61
  - !ruby/object:Gem::Version
62
- version: 3.13.0
62
+ version: 4.0.0.beta1
63
63
  description: BDD for Ruby. RSpec runner and example groups.
64
64
  email: rspec@googlegroups.com
65
65
  executables:
@@ -92,7 +92,6 @@ files:
92
92
  - lib/rspec/core/example_group.rb
93
93
  - lib/rspec/core/example_status_persister.rb
94
94
  - lib/rspec/core/filter_manager.rb
95
- - lib/rspec/core/flat_map.rb
96
95
  - lib/rspec/core/formatters.rb
97
96
  - lib/rspec/core/formatters/base_bisect_formatter.rb
98
97
  - lib/rspec/core/formatters/base_formatter.rb
@@ -153,11 +152,11 @@ licenses:
153
152
  - MIT
154
153
  metadata:
155
154
  bug_tracker_uri: https://github.com/rspec/rspec/issues
156
- changelog_uri: https://github.com/rspec/rspec/blob/rspec-core-v3.13.5/rspec-core/Changelog.md
155
+ changelog_uri: https://github.com/rspec/rspec/tree/rspec-core-v4.0.0.beta1/rspec-core/Changelog.md
157
156
  documentation_uri: https://rspec.info/documentation/
158
157
  mailing_list_uri: https://groups.google.com/forum/#!forum/rspec
158
+ source_code_uri: https://github.com/rspec/rspec/tree/rspec-core-v4.0.0.beta1/rspec-core
159
159
  rubygems_mfa_required: 'true'
160
- source_code_uri: https://github.com/rspec/rspec/blob/rspec-core-v3.13.5/rspec-core
161
160
  rdoc_options:
162
161
  - "--charset=UTF-8"
163
162
  require_paths:
@@ -166,14 +165,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
166
165
  requirements:
167
166
  - - ">="
168
167
  - !ruby/object:Gem::Version
169
- version: 1.8.7
168
+ version: 3.0.0
170
169
  required_rubygems_version: !ruby/object:Gem::Requirement
171
170
  requirements:
172
171
  - - ">="
173
172
  - !ruby/object:Gem::Version
174
173
  version: '0'
175
174
  requirements: []
176
- rubygems_version: 3.6.7
175
+ rubygems_version: 4.0.3
177
176
  specification_version: 4
178
- summary: rspec-core-3.13.5
177
+ summary: rspec-core-4.0.0.beta1
179
178
  test_files: []
metadata.gz.sig CHANGED
Binary file
@@ -1,20 +0,0 @@
1
- module RSpec
2
- module Core
3
- # @private
4
- module FlatMap
5
- if [].respond_to?(:flat_map)
6
- def flat_map(array, &block)
7
- array.flat_map(&block)
8
- end
9
- else # for 1.8.7
10
- # :nocov:
11
- def flat_map(array, &block)
12
- array.map(&block).flatten(1)
13
- end
14
- # :nocov:
15
- end
16
-
17
- module_function :flat_map
18
- end
19
- end
20
- end