rspec-expectations 3.0.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +6 -14
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/Changelog.md +10 -0
  5. data/README.md +22 -1
  6. data/lib/rspec/expectations.rb +0 -1
  7. data/lib/rspec/expectations/configuration.rb +5 -8
  8. data/lib/rspec/expectations/expectation_target.rb +4 -6
  9. data/lib/rspec/expectations/fail_with.rb +5 -8
  10. data/lib/rspec/expectations/handler.rb +2 -4
  11. data/lib/rspec/expectations/minitest_integration.rb +5 -4
  12. data/lib/rspec/expectations/syntax.rb +13 -13
  13. data/lib/rspec/expectations/version.rb +1 -1
  14. data/lib/rspec/matchers.rb +10 -11
  15. data/lib/rspec/matchers/built_in/all.rb +3 -5
  16. data/lib/rspec/matchers/built_in/base_matcher.rb +3 -4
  17. data/lib/rspec/matchers/built_in/be.rb +3 -6
  18. data/lib/rspec/matchers/built_in/be_instance_of.rb +0 -1
  19. data/lib/rspec/matchers/built_in/be_kind_of.rb +1 -1
  20. data/lib/rspec/matchers/built_in/change.rb +4 -4
  21. data/lib/rspec/matchers/built_in/compound.rb +5 -8
  22. data/lib/rspec/matchers/built_in/contain_exactly.rb +10 -9
  23. data/lib/rspec/matchers/built_in/eq.rb +0 -1
  24. data/lib/rspec/matchers/built_in/eql.rb +0 -1
  25. data/lib/rspec/matchers/built_in/equal.rb +2 -3
  26. data/lib/rspec/matchers/built_in/exist.rb +0 -4
  27. data/lib/rspec/matchers/built_in/include.rb +3 -3
  28. data/lib/rspec/matchers/built_in/match.rb +0 -1
  29. data/lib/rspec/matchers/built_in/operators.rb +7 -7
  30. data/lib/rspec/matchers/built_in/output.rb +1 -1
  31. data/lib/rspec/matchers/built_in/raise_error.rb +15 -12
  32. data/lib/rspec/matchers/built_in/respond_to.rb +5 -3
  33. data/lib/rspec/matchers/built_in/start_and_end_with.rb +0 -2
  34. data/lib/rspec/matchers/built_in/throw_symbol.rb +9 -5
  35. data/lib/rspec/matchers/built_in/yield.rb +14 -15
  36. data/lib/rspec/matchers/composable.rb +4 -2
  37. data/lib/rspec/matchers/dsl.rb +1 -3
  38. data/lib/rspec/matchers/matcher_delegator.rb +0 -1
  39. data/lib/rspec/matchers/pretty.rb +11 -11
  40. metadata +49 -56
  41. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MTJkNmM4ZmNlYTk2M2QyOGIwNWU3MTI3ZGE2ZTQ0OWJhNWM2MTc5NQ==
5
- data.tar.gz: !binary |-
6
- YWExNzcwODcxZTBkZWY2MDIyMTI2ZjhjMTYwMjBlZDVkMWNiNjQ2Ng==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- NjdiYjlhYzI4ZDk5YTMyZjFjMjA4OWJlOTQ3MzgwODNhZGNjMWM3ZmZmM2Q0
10
- NzU3MWFmMzIzYjI0OGE1NzlkZTBlMDI2NmY4ZWUwMjlmN2Y3MTFjODkzOGQ4
11
- NWQ3NzBhMmQzNGQ2ZjNmZjQ1MjRmMWJjMjE4OTBhNDMyOGJjZTU=
12
- data.tar.gz: !binary |-
13
- MzIyOGQ2NjI3MzJmZjM5MTU1ZDdiOTFlZDY5NWMyN2RjOGE4NGNlNGRiYmZk
14
- NWUxZmVkMTdhMGM5YjdiZmRmNWJmNmM0MDBmMWIyODhlZmM3MzIyYWY0ZmQx
15
- NTJlYjVlZWQ0NzE4MzBiMjIxNDEyZTE3ZjE0ZDUxOGRkZDQ4MTE=
2
+ SHA1:
3
+ metadata.gz: d379423e0b4e64ab171259aadfc7c135fc10e1a5
4
+ data.tar.gz: 801537a8f0cb606eaa4b814f32eecd39e09ed431
5
+ SHA512:
6
+ metadata.gz: ca469b494c808f9f76aff95b1818459b1da61577825f6162e6fa4b5b33b4f9b8b728890da22388c177b2d05e04ca4b9378d528b1dfb02465a5679fef24084f8f
7
+ data.tar.gz: 9a97e088ce0fa1761ae2693d8cd61b42dcc3184f4137a4f578871d4df61c3c72f293aecfafd5e85eaf0e7d7179f6f18e7f46fa067626c6a0dd9043530b9cc857
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,13 @@
1
+ ### 3.0.1 / 2014-06-12
2
+ [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.0...v3.0.1)
3
+
4
+ Bug Fixes:
5
+
6
+ * Add a missing `require` that would cause the `respond_to` matcher to
7
+ fail when used in a project where the rest of RSpec (e.g. core and
8
+ expecatations) weren't being used. (Myron Marston, #566)
9
+ * Structs are no longer treated as arrays when diffed. (Jon Rowe, #576)
10
+
1
11
  ### 3.0.0 / 2014-06-01
2
12
  [Full Changelog](http://github.com/rspec/rspec-expectations/compare/v3.0.0.rc1...v3.0.0)
3
13
 
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # RSpec Expectations [![Build Status](https://secure.travis-ci.org/rspec/rspec-expectations.png?branch=master)](http://travis-ci.org/rspec/rspec-expectations) [![Code Climate](https://codeclimate.com/github/rspec/rspec-expectations.png)](https://codeclimate.com/github/rspec/rspec-expectations) [![Inline docs](http://inch-pages.github.io/github/rspec/rspec-expectations.png)](http://inch-pages.github.io/github/rspec/rspec-expectations)
1
+ # RSpec Expectations [![Build Status](https://secure.travis-ci.org/rspec/rspec-expectations.png?branch=master)](http://travis-ci.org/rspec/rspec-expectations) [![Code Climate](https://codeclimate.com/github/rspec/rspec-expectations.png)](https://codeclimate.com/github/rspec/rspec-expectations)
2
2
 
3
3
  RSpec::Expectations lets you express expected outcomes on an object in an
4
4
  example.
@@ -249,6 +249,27 @@ expect { |probe|
249
249
  }.to yield_successive_args( a_value < 2, 2, a_value > 2 )
250
250
  ```
251
251
 
252
+ ## Usage outside rspec-core
253
+
254
+ You always need to load `rspec/expectations` even if you only want to use one part of the library:
255
+
256
+ ```ruby
257
+ require 'rspec/expectations'
258
+ ```
259
+
260
+ Then simply include `RSpec::Matchers` in any class:
261
+
262
+ ```ruby
263
+ class MyClass
264
+ include RSpec::Matchers
265
+
266
+ def do_something(arg)
267
+ expect(arg).to be > 0
268
+ # do other stuff
269
+ end
270
+ end
271
+ ```
272
+
252
273
  ## Also see
253
274
 
254
275
  * [http://github.com/rspec/rspec](http://github.com/rspec/rspec)
@@ -66,4 +66,3 @@ module RSpec
66
66
  ExpectationNotMetError = Class.new(::Exception)
67
67
  end
68
68
  end
69
-
@@ -65,9 +65,7 @@ module RSpec
65
65
  # Indicates whether or not diffs should be colored.
66
66
  # Delegates to rspec-core's color option if rspec-core
67
67
  # is loaded; otherwise you can set it here.
68
- def color=(value)
69
- @color = value
70
- end
68
+ attr_writer :color
71
69
 
72
70
  # Indicates whether or not diffs should be colored.
73
71
  # Delegates to rspec-core's color option if rspec-core
@@ -103,10 +101,10 @@ module RSpec
103
101
  attr_writer :backtrace_formatter
104
102
  def backtrace_formatter
105
103
  @backtrace_formatter ||= if defined?(::RSpec.configuration.backtrace_formatter)
106
- ::RSpec.configuration.backtrace_formatter
107
- else
108
- NullBacktraceFormatter
109
- end
104
+ ::RSpec.configuration.backtrace_formatter
105
+ else
106
+ NullBacktraceFormatter
107
+ end
110
108
  end
111
109
 
112
110
  # @private
@@ -135,4 +133,3 @@ module RSpec
135
133
  configuration.reset_syntaxes_to_default
136
134
  end
137
135
  end
138
-
@@ -71,7 +71,7 @@ module RSpec
71
71
  private
72
72
 
73
73
  def prevent_operator_matchers(verb)
74
- raise ArgumentError, "The expect syntax does not support operator matchers, " +
74
+ raise ArgumentError, "The expect syntax does not support operator matchers, " \
75
75
  "so you must pass a matcher to `##{verb}`."
76
76
  end
77
77
  end
@@ -98,10 +98,9 @@ module RSpec
98
98
  def enforce_block_expectation(matcher)
99
99
  return if supports_block_expectations?(matcher)
100
100
 
101
- raise ExpectationNotMetError,
102
- "You must pass an argument rather than a block to use the provided " +
103
- "matcher (#{description_of matcher}), or the matcher must implement " +
104
- "`supports_block_expectations?`."
101
+ raise ExpectationNotMetError, "You must pass an argument rather than " \
102
+ "a block to use the provided matcher (#{description_of matcher}), or " \
103
+ "the matcher must implement `supports_block_expectations?`."
105
104
  end
106
105
 
107
106
  def supports_block_expectations?(matcher)
@@ -118,4 +117,3 @@ module RSpec
118
117
  end
119
118
  end
120
119
  end
121
-
@@ -6,7 +6,7 @@ module RSpec
6
6
  # @private
7
7
  def differ
8
8
  RSpec::Support::Differ.new(
9
- :object_preparer => lambda {|object| RSpec::Matchers::Composable.surface_descriptions_in(object) },
9
+ :object_preparer => lambda { |object| RSpec::Matchers::Composable.surface_descriptions_in(object) },
10
10
  :color => RSpec::Matchers.configuration.color?
11
11
  )
12
12
  end
@@ -19,18 +19,15 @@ module RSpec
19
19
  # Adds a diff to the failure message when `expected` and `actual` are
20
20
  # both present.
21
21
  def fail_with(message, expected=nil, actual=nil)
22
- if !message
23
- raise ArgumentError, "Failure message is nil. Does your matcher define the " +
22
+ unless message
23
+ raise ArgumentError, "Failure message is nil. Does your matcher define the " \
24
24
  "appropriate failure_message[_when_negated] method to return a string?"
25
25
  end
26
26
 
27
27
  diff = differ.diff(actual, expected)
28
+ message = "#{message}\nDiff:#{diff}" unless diff.empty?
28
29
 
29
- unless diff.empty?
30
- message = "#{message}\nDiff:#{diff}"
31
- end
32
-
33
- raise RSpec::Expectations::ExpectationNotMetError.new(message)
30
+ raise RSpec::Expectations::ExpectationNotMetError, message
34
31
  end
35
32
  end
36
33
  end
@@ -1,6 +1,5 @@
1
1
  module RSpec
2
2
  module Expectations
3
-
4
3
  # @private
5
4
  module ExpectationHelper
6
5
  def self.check_message(msg)
@@ -46,7 +45,7 @@ module RSpec
46
45
  matcher = ExpectationHelper.setup(self, initial_matcher, message)
47
46
 
48
47
  return ::RSpec::Matchers::BuiltIn::PositiveOperatorMatcher.new(actual) unless initial_matcher
49
- matcher.matches?(actual, &block) or ExpectationHelper.handle_failure(matcher, message, :failure_message)
48
+ matcher.matches?(actual, &block) || ExpectationHelper.handle_failure(matcher, message, :failure_message)
50
49
  end
51
50
 
52
51
  def self.verb
@@ -68,7 +67,7 @@ module RSpec
68
67
  matcher = ExpectationHelper.setup(self, initial_matcher, message)
69
68
 
70
69
  return ::RSpec::Matchers::BuiltIn::NegativeOperatorMatcher.new(actual) unless initial_matcher
71
- !(does_not_match?(matcher, actual, &block) or ExpectationHelper.handle_failure(matcher, message, :failure_message_when_negated))
70
+ !(does_not_match?(matcher, actual, &block) || ExpectationHelper.handle_failure(matcher, message, :failure_message_when_negated))
72
71
  end
73
72
 
74
73
  def self.does_not_match?(matcher, actual, &block)
@@ -160,4 +159,3 @@ module RSpec
160
159
  end
161
160
  end
162
161
  end
163
-
@@ -9,8 +9,9 @@ Minitest::Test.class_eval do
9
9
  end
10
10
  end
11
11
 
12
- module RSpec::Expectations
13
- remove_const :ExpectationNotMetError
14
- ExpectationNotMetError = ::Minitest::Assertion
12
+ module RSpec
13
+ module Expectations
14
+ remove_const :ExpectationNotMetError
15
+ ExpectationNotMetError = ::Minitest::Assertion
16
+ end
15
17
  end
16
-
@@ -23,19 +23,19 @@ module RSpec
23
23
  # Generates a deprecation warning for the given method if no warning
24
24
  # has already been issued.
25
25
  def warn_about_should_unless_configured(method_name)
26
- if @warn_about_should
27
- RSpec.deprecate(
28
- "Using `#{method_name}` from rspec-expectations' old `:should` syntax without explicitly enabling the syntax",
29
- :replacement => "the new `:expect` syntax or explicitly enable `:should`"
30
- )
26
+ return unless @warn_about_should
31
27
 
32
- @warn_about_should = false
33
- end
28
+ RSpec.deprecate(
29
+ "Using `#{method_name}` from rspec-expectations' old `:should` syntax without explicitly enabling the syntax",
30
+ :replacement => "the new `:expect` syntax or explicitly enable `:should`"
31
+ )
32
+
33
+ @warn_about_should = false
34
34
  end
35
35
 
36
36
  # @api private
37
37
  # Enables the `should` syntax.
38
- def enable_should(syntax_host = default_should_host)
38
+ def enable_should(syntax_host=default_should_host)
39
39
  @warn_about_should = false if syntax_host == default_should_host
40
40
  return if should_enabled?(syntax_host)
41
41
 
@@ -54,7 +54,7 @@ module RSpec
54
54
 
55
55
  # @api private
56
56
  # Disables the `should` syntax.
57
- def disable_should(syntax_host = default_should_host)
57
+ def disable_should(syntax_host=default_should_host)
58
58
  return unless should_enabled?(syntax_host)
59
59
 
60
60
  syntax_host.module_exec do
@@ -65,7 +65,7 @@ module RSpec
65
65
 
66
66
  # @api private
67
67
  # Enables the `expect` syntax.
68
- def enable_expect(syntax_host = ::RSpec::Matchers)
68
+ def enable_expect(syntax_host=::RSpec::Matchers)
69
69
  return if expect_enabled?(syntax_host)
70
70
 
71
71
  syntax_host.module_exec do
@@ -77,7 +77,7 @@ module RSpec
77
77
 
78
78
  # @api private
79
79
  # Disables the `expect` syntax.
80
- def disable_expect(syntax_host = ::RSpec::Matchers)
80
+ def disable_expect(syntax_host=::RSpec::Matchers)
81
81
  return unless expect_enabled?(syntax_host)
82
82
 
83
83
  syntax_host.module_exec do
@@ -87,13 +87,13 @@ module RSpec
87
87
 
88
88
  # @api private
89
89
  # Indicates whether or not the `should` syntax is enabled.
90
- def should_enabled?(syntax_host = default_should_host)
90
+ def should_enabled?(syntax_host=default_should_host)
91
91
  syntax_host.method_defined?(:should)
92
92
  end
93
93
 
94
94
  # @api private
95
95
  # Indicates whether or not the `expect` syntax is enabled.
96
- def expect_enabled?(syntax_host = ::RSpec::Matchers)
96
+ def expect_enabled?(syntax_host=::RSpec::Matchers)
97
97
  syntax_host.method_defined?(:expect)
98
98
  end
99
99
  end
@@ -2,7 +2,7 @@ module RSpec
2
2
  module Expectations
3
3
  # @private
4
4
  module Version
5
- STRING = '3.0.0'
5
+ STRING = '3.0.1'
6
6
  end
7
7
  end
8
8
  end
@@ -301,8 +301,7 @@ module RSpec
301
301
  # (e.g. be_empty), letting you choose the prefix that best suits the
302
302
  # predicate.
303
303
  def be(*args)
304
- args.empty? ?
305
- Matchers::BuiltIn::Be.new : equal(*args)
304
+ args.empty? ? Matchers::BuiltIn::Be.new : equal(*args)
306
305
  end
307
306
  alias_matcher :a_value, :be
308
307
 
@@ -322,7 +321,7 @@ module RSpec
322
321
  def be_an_instance_of(expected)
323
322
  BuiltIn::BeAnInstanceOf.new(expected)
324
323
  end
325
- alias_method :be_instance_of, :be_an_instance_of
324
+ alias_method :be_instance_of, :be_an_instance_of
326
325
  alias_matcher :an_instance_of, :be_an_instance_of
327
326
 
328
327
  # Passes if actual.kind_of?(expected)
@@ -335,7 +334,7 @@ module RSpec
335
334
  def be_a_kind_of(expected)
336
335
  BuiltIn::BeAKindOf.new(expected)
337
336
  end
338
- alias_method :be_kind_of, :be_a_kind_of
337
+ alias_method :be_kind_of, :be_a_kind_of
339
338
  alias_matcher :a_kind_of, :be_a_kind_of
340
339
 
341
340
  # Passes if actual.between?(min, max). Works with any Comparable object,
@@ -702,7 +701,7 @@ module RSpec
702
701
  def raise_error(error=Exception, message=nil, &block)
703
702
  BuiltIn::RaiseError.new(error, message, &block)
704
703
  end
705
- alias_method :raise_exception, :raise_error
704
+ alias_method :raise_exception, :raise_error
706
705
 
707
706
  alias_matcher :a_block_raising, :raise_error do |desc|
708
707
  desc.sub("raise", "a block raising")
@@ -895,12 +894,12 @@ module RSpec
895
894
 
896
895
  def method_missing(method, *args, &block)
897
896
  case method.to_s
898
- when BE_PREDICATE_REGEX
899
- BuiltIn::BePredicate.new(method, *args, &block)
900
- when HAS_REGEX
901
- BuiltIn::Has.new(method, *args, &block)
902
- else
903
- super
897
+ when BE_PREDICATE_REGEX
898
+ BuiltIn::BePredicate.new(method, *args, &block)
899
+ when HAS_REGEX
900
+ BuiltIn::Has.new(method, *args, &block)
901
+ else
902
+ super
904
903
  end
905
904
  end
906
905
 
@@ -5,7 +5,6 @@ module RSpec
5
5
  # Provides the implementation for `all`.
6
6
  # Not intended to be instantiated directly.
7
7
  class All < BaseMatcher
8
-
9
8
  # @private
10
9
  attr_reader :matcher, :failed_objects
11
10
 
@@ -15,7 +14,7 @@ module RSpec
15
14
  end
16
15
 
17
16
  # @private
18
- def does_not_match?(actual)
17
+ def does_not_match?(_actual)
19
18
  raise NotImplementedError, '`expect().not_to all( matcher )` is not supported.'
20
19
  end
21
20
 
@@ -38,7 +37,7 @@ module RSpec
38
37
 
39
38
  private
40
39
 
41
- def match(_, actual)
40
+ def match(_expected, _actual)
42
41
  index_failed_objects
43
42
  failed_objects.empty?
44
43
  end
@@ -52,7 +51,7 @@ module RSpec
52
51
  end
53
52
 
54
53
  def failure_message_for_item(index, failure_message)
55
- failure_message = indent_multiline_message( add_new_line_if_needed(failure_message) )
54
+ failure_message = indent_multiline_message(add_new_line_if_needed(failure_message))
56
55
  indent_multiline_message("object at index #{index} failed to match:#{failure_message}")
57
56
  end
58
57
 
@@ -71,7 +70,6 @@ module RSpec
71
70
  @matcher = @matcher.clone
72
71
  super
73
72
  end
74
-
75
73
  end
76
74
  end
77
75
  end
@@ -23,7 +23,7 @@ module RSpec
23
23
  # @private
24
24
  attr_reader :actual, :expected, :rescued_exception
25
25
 
26
- def initialize(expected = UNDEFINED)
26
+ def initialize(expected=UNDEFINED)
27
27
  @expected = expected unless UNDEFINED.equal?(expected)
28
28
  end
29
29
 
@@ -98,9 +98,8 @@ module RSpec
98
98
  private
99
99
 
100
100
  def assert_ivars(*expected_ivars)
101
- if (expected_ivars - present_ivars).any?
102
- raise "#{self.class.name} needs to supply#{to_sentence expected_ivars}"
103
- end
101
+ return unless (expected_ivars - present_ivars).any?
102
+ raise "#{self.class.name} needs to supply#{to_sentence expected_ivars}"
104
103
  end
105
104
 
106
105
  if RUBY_VERSION.to_f < 1.9
@@ -5,7 +5,6 @@ module RSpec
5
5
  # Provides the implementation for `be_truthy`.
6
6
  # Not intended to be instantiated directly.
7
7
  class BeTruthy < BaseMatcher
8
-
9
8
  # @api private
10
9
  # @return [String]
11
10
  def failure_message
@@ -29,7 +28,6 @@ module RSpec
29
28
  # Provides the implementation for `be_falsey`.
30
29
  # Not intended to be instantiated directly.
31
30
  class BeFalsey < BaseMatcher
32
-
33
31
  # @api private
34
32
  # @return [String]
35
33
  def failure_message
@@ -53,7 +51,6 @@ module RSpec
53
51
  # Provides the implementation for `be_nil`.
54
52
  # Not intended to be instantiated directly.
55
53
  class BeNil < BaseMatcher
56
-
57
54
  # @api private
58
55
  # @return [String]
59
56
  def failure_message
@@ -75,7 +72,7 @@ module RSpec
75
72
 
76
73
  # @private
77
74
  module BeHelpers
78
- private
75
+ private
79
76
 
80
77
  def args_to_s
81
78
  @args.empty? ? "" : parenthesize(inspected_args.join(', '))
@@ -86,7 +83,7 @@ module RSpec
86
83
  end
87
84
 
88
85
  def inspected_args
89
- @args.collect{|a| a.inspect}
86
+ @args.map { |a| a.inspect }
90
87
  end
91
88
 
92
89
  def expected_to_sentence
@@ -104,7 +101,7 @@ module RSpec
104
101
  class Be < BaseMatcher
105
102
  include BeHelpers
106
103
 
107
- def initialize(*args, &block)
104
+ def initialize(*args)
108
105
  @args = args
109
106
  end
110
107