rspec-support 3.5.0.beta3 → 3.5.0.beta4

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: d159591f4da601722c04e7443c888b74e6def234
4
- data.tar.gz: 81984c1aed88ed161165bcee99627e9a4903e6d2
3
+ metadata.gz: 84d1bc98a925d004f624058ae1b2355360156ad3
4
+ data.tar.gz: c744684300e9dc6c0e63649f689a9a44cbefd151
5
5
  SHA512:
6
- metadata.gz: 0650cc39b1439e2f7309fecf5feb528c4b3c35bf17b6e3ee58019d79cf0b26fcac1fe6eb1a580690e029ef5027f3ed20b7439872c56b02a0774e3adbc839084f
7
- data.tar.gz: a966de2f00b14b2a3952f1bc930421692f966027e4b6dcd843321ae476319c6a743d0920e5b73ba96ab7db53dcf98e8b7b0c4ece15cbd4fcb3b02294e6b32ef8
6
+ metadata.gz: a988e90cc6f7e44425a2904d29bd8bf694277dce686fbc97c8fa0e9da2352a3a36b47d44b84316fd25a22d85d51575679f8c16d9a7a6ab6c2c289c8055372bd2
7
+ data.tar.gz: 4ef5d0461477029eb0045ffc0b933fe8c6469d066b4075d5e907bd6f19094fa57bba02d2ef645ec9c20d1a203aa45b00050bef22585c386d963d4ce3c317d044
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,14 +1,30 @@
1
- ### Development
2
- [Full Changelog](http://github.com/rspec/rspec-support/compare/v3.5.0.beta1...master)
1
+ ### 3.5 Development
2
+ [Full Changelog](http://github.com/rspec/rspec-support/compare/v3.5.0.beta4...master)
3
+
4
+ ### 3.5.0.beta4 / 2016-06-05
5
+ [Full Changelog](http://github.com/rspec/rspec-support/compare/v3.5.0.beta3...v3.5.0.beta4)
6
+
7
+ Enhancements:
8
+ * Improve `MethodSignature` to better support keyword arguments. (#250, Rob Smith).
9
+
10
+ ### 3.5.0.beta3 / 2016-04-02
11
+ [Full Changelog](http://github.com/rspec/rspec-support/compare/v3.5.0.beta2...v3.5.0.beta3)
3
12
 
4
13
  Bug Fixes:
5
14
 
15
+ * Fix `EncodedString` to properly handle the behavior of `String#split`
16
+ on JRuby when the string contains invalid bytes. (Jon Rowe, #268)
6
17
  * Fix `ObjectFormatter` so that formatting objects that don't respond to
7
18
  `#inspect` (such as `BasicObject`) does not cause `NoMethodError`.
8
19
  (Yuji Nakayama, #269)
9
20
  * Fix `ObjectFormatter` so that formatting recursive array or hash does not
10
21
  cause `SystemStackError`. (Yuji Nakayama, #270, #272)
11
22
 
23
+ ### 3.5.0.beta2 / 2016-03-10
24
+ [Full Changelog](http://github.com/rspec/rspec-support/compare/v3.5.0.beta1...v3.5.0.beta2)
25
+
26
+ No user-facing changes.
27
+
12
28
  ### 3.5.0.beta1 / 2016-02-06
13
29
  [Full Changelog](http://github.com/rspec/rspec-support/compare/v3.4.1...v3.5.0.beta1)
14
30
 
@@ -8,7 +8,7 @@ module RSpec
8
8
  # keyword args of a given method.
9
9
  #
10
10
  # @private
11
- class MethodSignature
11
+ class MethodSignature # rubocop:disable ClassLength
12
12
  attr_reader :min_non_kw_args, :max_non_kw_args, :optional_kw_args, :required_kw_args
13
13
 
14
14
  def initialize(method)
@@ -26,9 +26,11 @@ module RSpec
26
26
  end
27
27
  end
28
28
 
29
- def valid_non_kw_args?(positional_arg_count)
29
+ def valid_non_kw_args?(positional_arg_count, optional_max_arg_count=positional_arg_count)
30
+ return true if positional_arg_count.nil?
31
+
30
32
  min_non_kw_args <= positional_arg_count &&
31
- positional_arg_count <= max_non_kw_args
33
+ optional_max_arg_count <= max_non_kw_args
32
34
  end
33
35
 
34
36
  if RubyFeatures.optional_and_splat_args_supported?
@@ -74,6 +76,14 @@ module RSpec
74
76
  @allows_any_kw_args || @allowed_kw_args.any?
75
77
  end
76
78
 
79
+ def arbitrary_kw_args?
80
+ @allows_any_kw_args
81
+ end
82
+
83
+ def unlimited_args?
84
+ @max_non_kw_args == INFINITY
85
+ end
86
+
77
87
  def classify_parameters
78
88
  optional_non_kw_args = @min_non_kw_args = 0
79
89
  @allows_any_kw_args = false
@@ -119,6 +129,14 @@ module RSpec
119
129
  false
120
130
  end
121
131
 
132
+ def arbitrary_kw_args?
133
+ false
134
+ end
135
+
136
+ def unlimited_args?
137
+ false
138
+ end
139
+
122
140
  def classify_parameters
123
141
  arity = @method.arity
124
142
  if arity < 0
@@ -153,6 +171,50 @@ module RSpec
153
171
  end
154
172
  end
155
173
 
174
+ # Encapsulates expectations about the number of arguments and
175
+ # allowed/required keyword args of a given method.
176
+ #
177
+ # @api private
178
+ class MethodSignatureExpectation
179
+ def initialize
180
+ @min_count = nil
181
+ @max_count = nil
182
+ @keywords = []
183
+
184
+ @expect_unlimited_arguments = false
185
+ @expect_arbitrary_keywords = false
186
+ end
187
+
188
+ attr_reader :min_count, :max_count, :keywords
189
+
190
+ attr_accessor :expect_unlimited_arguments, :expect_arbitrary_keywords
191
+
192
+ def max_count=(number)
193
+ raise ArgumentError, 'must be a non-negative integer or nil' \
194
+ unless number.nil? || (number.is_a?(Integer) && number >= 0)
195
+
196
+ @max_count = number
197
+ end
198
+
199
+ def min_count=(number)
200
+ raise ArgumentError, 'must be a non-negative integer or nil' \
201
+ unless number.nil? || (number.is_a?(Integer) && number >= 0)
202
+
203
+ @min_count = number
204
+ end
205
+
206
+ def empty?
207
+ @min_count.nil? &&
208
+ @keywords.to_a.empty? &&
209
+ !@expect_arbitrary_keywords &&
210
+ !@expect_unlimited_arguments
211
+ end
212
+
213
+ def keywords=(values)
214
+ @keywords = values.to_a || []
215
+ end
216
+ end
217
+
156
218
  # Deals with the slightly different semantics of block arguments.
157
219
  # For methods, arguments are required unless a default value is provided.
158
220
  # For blocks, arguments are optional, even if no default value is provided.
@@ -175,17 +237,49 @@ module RSpec
175
237
  #
176
238
  # @api private
177
239
  class MethodSignatureVerifier
178
- attr_reader :non_kw_args, :kw_args
240
+ attr_reader :non_kw_args, :kw_args, :min_non_kw_args, :max_non_kw_args
179
241
 
180
- def initialize(signature, args)
242
+ def initialize(signature, args=[])
181
243
  @signature = signature
182
244
  @non_kw_args, @kw_args = split_args(*args)
245
+ @min_non_kw_args = @max_non_kw_args = @non_kw_args
246
+ @arbitrary_kw_args = @unlimited_args = false
247
+ end
248
+
249
+ def with_expectation(expectation) # rubocop:disable MethodLength
250
+ return self unless MethodSignatureExpectation === expectation
251
+
252
+ if expectation.empty?
253
+ @min_non_kw_args = @max_non_kw_args = @non_kw_args = nil
254
+ @kw_args = []
255
+ else
256
+ @min_non_kw_args = @non_kw_args = expectation.min_count || 0
257
+ @max_non_kw_args = expectation.max_count || @min_non_kw_args
258
+
259
+ if RubyFeatures.optional_and_splat_args_supported?
260
+ @unlimited_args = expectation.expect_unlimited_arguments
261
+ else
262
+ @unlimited_args = false
263
+ end
264
+
265
+ if RubyFeatures.kw_args_supported?
266
+ @kw_args = expectation.keywords
267
+ @arbitrary_kw_args = expectation.expect_arbitrary_keywords
268
+ else
269
+ @kw_args = []
270
+ @arbitrary_kw_args = false
271
+ end
272
+ end
273
+
274
+ self
183
275
  end
184
276
 
185
277
  def valid?
186
278
  missing_kw_args.empty? &&
187
279
  invalid_kw_args.empty? &&
188
- valid_non_kw_args?
280
+ valid_non_kw_args? &&
281
+ arbitrary_kw_args? &&
282
+ unlimited_args?
189
283
  end
190
284
 
191
285
  def error_message
@@ -200,7 +294,7 @@ module RSpec
200
294
  elsif !valid_non_kw_args?
201
295
  "Wrong number of arguments. Expected %s, got %s." % [
202
296
  @signature.non_kw_args_arity_description,
203
- non_kw_args.length
297
+ non_kw_args
204
298
  ]
205
299
  end
206
300
  end
@@ -208,7 +302,7 @@ module RSpec
208
302
  private
209
303
 
210
304
  def valid_non_kw_args?
211
- @signature.valid_non_kw_args?(non_kw_args.length)
305
+ @signature.valid_non_kw_args?(min_non_kw_args, max_non_kw_args)
212
306
  end
213
307
 
214
308
  def missing_kw_args
@@ -219,6 +313,14 @@ module RSpec
219
313
  @signature.invalid_kw_args_from(kw_args)
220
314
  end
221
315
 
316
+ def arbitrary_kw_args?
317
+ !@arbitrary_kw_args || @signature.arbitrary_kw_args?
318
+ end
319
+
320
+ def unlimited_args?
321
+ !@unlimited_args || @signature.unlimited_args?
322
+ end
323
+
222
324
  def split_args(*args)
223
325
  kw_args = if @signature.has_kw_args_in?(args)
224
326
  args.pop.keys
@@ -226,7 +328,7 @@ module RSpec
226
328
  []
227
329
  end
228
330
 
229
- [args, kw_args]
331
+ [args.length, kw_args]
230
332
  end
231
333
  end
232
334
 
@@ -68,9 +68,7 @@ RSpec.shared_examples_for "library wide checks" do |lib, options|
68
68
  run_ruby_with_current_load_path(command, *options)
69
69
  end
70
70
 
71
- # Ignore bundler warning.
72
- stderr = stderr.split("\n").reject { |l| l =~ %r{bundler/source/rubygems} }.join("\n")
73
- [stdout, stderr, status.exitstatus]
71
+ [stdout, strip_known_warnings(stderr), status.exitstatus]
74
72
  end
75
73
 
76
74
  define_method :load_all_lib_files do
@@ -53,6 +53,17 @@ module RSpec
53
53
  end
54
54
  end
55
55
 
56
+ def strip_known_warnings(input)
57
+ input.split("\n").reject do |l|
58
+ # Ignore bundler warning.
59
+ l =~ %r{bundler/source/rubygems} ||
60
+ # Ignore bundler + rubygems warning.
61
+ l =~ %r{site_ruby/\d\.\d\.\d/rubygems} ||
62
+ # This is required for windows for some reason
63
+ l =~ %r{lib/bundler/rubygems}
64
+ end.join("\n")
65
+ end
66
+
56
67
  private
57
68
 
58
69
  if Ruby.jruby?
@@ -1,7 +1,7 @@
1
1
  module RSpec
2
2
  module Support
3
3
  module Version
4
- STRING = '3.5.0.beta3'
4
+ STRING = '3.5.0.beta4'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-support
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.0.beta3
4
+ version: 3.5.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Chelimsky
@@ -48,7 +48,7 @@ cert_chain:
48
48
  ZsVDj6a7lH3cNqtWXZxrb2wO38qV5AkYj8SQK7Hj3/Yui9myUX3crr+PdetazSqQ
49
49
  F3MdtaDehhjC
50
50
  -----END CERTIFICATE-----
51
- date: 2016-04-02 00:00:00.000000000 Z
51
+ date: 2016-06-05 00:00:00.000000000 Z
52
52
  dependencies:
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: bundler
@@ -149,8 +149,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
149
  version: 1.3.1
150
150
  requirements: []
151
151
  rubyforge_project:
152
- rubygems_version: 2.4.5.1
152
+ rubygems_version: 2.2.2
153
153
  signing_key:
154
154
  specification_version: 4
155
- summary: rspec-support-3.5.0.beta3
155
+ summary: rspec-support-3.5.0.beta4
156
156
  test_files: []
metadata.gz.sig CHANGED
Binary file