rspec-expectations 2.6.0.rc2 → 2.6.0.rc4

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.
data/Gemfile CHANGED
@@ -1,7 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  ### rspec libs
4
- %w[rspec-core rspec-expectations rspec-mocks].each do |lib|
4
+ %w[rspec rspec-core rspec-expectations rspec-mocks].each do |lib|
5
5
  library_path = File.expand_path("../../#{lib}", __FILE__)
6
6
  if File.exist?(library_path)
7
7
  gem lib, :path => library_path
@@ -12,8 +12,8 @@ end
12
12
 
13
13
  ### dev dependencies
14
14
  gem "rake", "0.8.7"
15
- # gem "cucumber", "~> 0.10.2"
16
- # gem "aruba", :git => "git://github.com/aslakhellesoy/aruba"
15
+ gem "cucumber", "~> 0.10.2"
16
+ gem "aruba", "~> 0.3.6"
17
17
  gem "rcov", "0.9.9", :platforms => :mri
18
18
  gem "relish", "0.2.0"
19
19
  gem "guard-rspec", "0.1.9"
@@ -1,4 +1,5 @@
1
1
  - Upgrade.md
2
+ - Changelog.md
2
3
  - customized_message.feature
3
4
  - diffing.feature
4
5
  - implicit_docstrings.feature
@@ -1,6 +1,10 @@
1
+ ### 2.6.0.rc4 / 2011-05-01
2
+
3
+ [full changelog](http://github.com/rspec/rspec-expectations/compare/v2.6.0.rc2...v2.6.0.rc4)
4
+
1
5
  ### 2.6.0.rc2 / 2011-04-18
2
6
 
3
- [full changelog](http://github.com/rspec/rspec-expectations/compare/v2.5.0...v2.6.1.rc2)
7
+ [full changelog](http://github.com/rspec/rspec-expectations/compare/v2.5.0...v2.6.0.rc2)
4
8
 
5
9
  * Enhancments
6
10
  * `change` matcher accepts Regexps (Robert Davis)
@@ -1,4 +1,4 @@
1
- rspec-expectations is used to set expectations in executable examples.
1
+ rspec-expectations is used to define expected outcomes.
2
2
 
3
3
  describe Account do
4
4
  it "has a balance of zero when first created" do
@@ -6,14 +6,23 @@ rspec-expectations is used to set expectations in executable examples.
6
6
  end
7
7
  end
8
8
 
9
- ## should and should_not
9
+ ## Basic structure
10
10
 
11
- rspec-expectations adds `should` and `should_not` to every object. Each of
12
- these can accept a matcher and, in most cases, an optional custom failure
13
- message (see [customized
14
- message](/rspec/rspec-expectations/v/2-3/customized-message)).
11
+ The basic structure of an rspec expectation is:
15
12
 
16
- ## Matchers
13
+ actual.should matcher(expected)
14
+ actual.should_not matcher(expected)
15
+
16
+ ## `should` and `should_not`
17
+
18
+ `rspec-expectations` adds `should` and `should_not` to every object in
19
+ the system. These methods each accept a matcher as an argument. This allows
20
+ each matcher to work in a positive or negative mode:
21
+
22
+ 5.should eq(5)
23
+ 5.should_not eq(4)
24
+
25
+ ## What is a matcher?
17
26
 
18
27
  A Matcher is any object that responds to the following methods:
19
28
 
@@ -26,10 +35,8 @@ These methods are also part of the matcher protocol, but are optional:
26
35
  failure_message_for_should_not
27
36
  description
28
37
 
29
- RSpec ships with a number of [built-in
30
- matchers](/rspec/rspec-expectations/v/2-3/dir/built-in-matchers) and a DSL for
31
- writing your own [custom
32
- matchers](/rspec/rspec-expectations/v/2-3/dir/custom-matchers).
38
+ RSpec ships with a number of built-in matchers and a DSL for writing custom
39
+ matchers.
33
40
 
34
41
  ## Issues
35
42
 
@@ -0,0 +1,67 @@
1
+ ## Object identity
2
+
3
+ actual.should equal(expected) # passes if actual.equal?(expected)
4
+
5
+ ## Object equivalence
6
+
7
+ actual.should == expected # passes if actual == expected
8
+ actual.should eql(expected) # passes if actual.eql?(expected)
9
+
10
+ ## Optional APIs for identity/equivalence
11
+
12
+ actual.should eq(expected) # passes if actual == expected
13
+ actual.should be(expected) # passes if actual.equal?(expected)
14
+
15
+ ## Comparisons
16
+
17
+ actual.should be > expected
18
+ actual.should be >= expected
19
+ actual.should be <= expected
20
+ actual.should be < expected
21
+ actual.should =~ /expression/
22
+ actual.should match(/expression/)
23
+ actual.should be_within(delta).of(expected)
24
+
25
+ ## Types/classes
26
+
27
+ actual.should be_instance_of(expected)
28
+ actual.should be_kind_of(expected)
29
+
30
+ ## Truthiness and existentialism
31
+
32
+ actual.should be_true # passes if actual is anything but nil or false
33
+ actual.should be_false # passes if actual is nil or false
34
+ actual.should be_nil # passes if actual is nil
35
+ actual.should be # passes if actual is not nil
36
+
37
+ ## Expecting errors
38
+
39
+ expect { ... }.to raise_error
40
+ expect { ... }.to raise_error(ErrorClass)
41
+ expect { ... }.to raise_error("message")
42
+ expect { ... }.to raise_error(ErrorClass, "message")
43
+
44
+ ## Expecting throws
45
+
46
+ expect { ... }.to throw_symbol
47
+ expect { ... }.to throw_symbol(:symbol)
48
+ expect { ... }.to throw_symbol(:symbol, 'value')
49
+
50
+ ## Predicate matchers
51
+
52
+ actual.should be_xxx # passes if actual.xxx?
53
+
54
+ ### Example
55
+
56
+ [].should be_empty # passes because [].empty? returns true
57
+
58
+ ## Collection membership
59
+
60
+ actual.should include(expected)
61
+
62
+ ### Examples
63
+
64
+ [1,2,3].should include(1)
65
+ [1,2,3].should include(1, 2)
66
+ {:a => 'b'}.should include(:a => 'b')
67
+ "this string".should include("is str")
@@ -3,17 +3,17 @@ Feature: be_within matcher
3
3
  Normal equality expectations do not work well for floating point values.
4
4
  Consider this irb session:
5
5
 
6
- > radius = 3
7
- => 3
8
- > area_of_circle = radius * radius * Math::PI
9
- => 28.2743338823081
10
- > area_of_circle == 28.2743338823081
11
- => false
6
+ > radius = 3
7
+ => 3
8
+ > area_of_circle = radius * radius * Math::PI
9
+ => 28.2743338823081
10
+ > area_of_circle == 28.2743338823081
11
+ => false
12
12
 
13
13
  Instead, you should use the be_within matcher to check that the value
14
14
  is within a delta of your expected value:
15
15
 
16
- area_of_circle.should be_within(0.1).of(28.3)
16
+ area_of_circle.should be_within(0.1).of(28.3)
17
17
 
18
18
  Note that the difference between the actual and expected values must be
19
19
  smaller than your delta; if it is equal, the matcher will fail.
@@ -2,9 +2,9 @@ Feature: equality matchers
2
2
 
3
3
  Ruby exposes several different methods for handling equality:
4
4
 
5
- a.equal?(b) # object identity - a and b refer to the same object
6
- a.eql?(b) # object equivalence - a and b have the same value
7
- a == b # object equivalence - a and b have the same value with type conversions
5
+ a.equal?(b) # object identity - a and b refer to the same object
6
+ a.eql?(b) # object equivalence - a and b have the same value
7
+ a == b # object equivalence - a and b have the same value with type conversions
8
8
 
9
9
  Note that these descriptions are guidelines but are not forced by the
10
10
  language. Any object can implement any of these methods with its own
@@ -12,14 +12,17 @@ Feature: equality matchers
12
12
 
13
13
  rspec-expectations ships with matchers that align with each of these methods:
14
14
 
15
- a.should equal(b) # passes if a.equal?(b)
16
- a.should eql(b) # passes if a.eql?(b)
17
- a.should == b # passes if a == b
15
+ a.should equal(b) # passes if a.equal?(b)
16
+ a.should eql(b) # passes if a.eql?(b)
17
+ a.should == b # passes if a == b
18
18
 
19
19
  It also ships with two matchers that have more of a DSL feel to them:
20
20
 
21
- a.should be(b) # passes if a.equal?(b)
22
- a.should eq(b) # passes if a == b
21
+ a.should be(b) # passes if a.equal?(b)
22
+ a.should eq(b) # passes if a == b
23
+
24
+ These are a useful pair if you wish to avoid the warning that Ruby emits on
25
+ `a.should == b`
23
26
 
24
27
  Scenario: compare using eq (==)
25
28
  Given a file named "compare_using_eq.rb" with:
@@ -5,7 +5,7 @@ Feature: exist matcher
5
5
 
6
6
  obj.should exist # passes if obj.exist? or obj.exists?
7
7
 
8
- Scenario Outline: basic usage
8
+ Scenario: basic usage
9
9
  Given a file named "exist_matcher_spec.rb" with:
10
10
  """
11
11
  class Planet
@@ -19,21 +19,21 @@ Feature: exist matcher
19
19
  "<Planet: #{name}>"
20
20
  end
21
21
 
22
- def <predicate_method>
22
+ def exist? # also works with exists?
23
23
  %w[Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune].include?(name)
24
24
  end
25
25
  end
26
26
 
27
27
  describe "Earth" do
28
- subject { Planet.new("Earth") }
29
- it { should exist }
30
- it { should_not exist } # deliberate failure
28
+ let(:earth) { Planet.new("Earth") }
29
+ specify { earth.should exist }
30
+ specify { earth.should_not exist } # deliberate failure
31
31
  end
32
32
 
33
33
  describe "Tatooine" do
34
- subject { Planet.new("Tatooine") }
35
- it { should_not exist }
36
- it { should exist } # deliberate failure
34
+ let(:tatooine) { Planet.new("Tatooine") }
35
+ it { tatooine.should exist } # deliberate failure
36
+ it { tatooine.should_not exist }
37
37
  end
38
38
  """
39
39
  When I run `rspec exist_matcher_spec.rb`
@@ -41,9 +41,3 @@ Feature: exist matcher
41
41
  | 4 examples, 2 failures |
42
42
  | expected <Planet: Earth> not to exist |
43
43
  | expected <Planet: Tatooine> to exist |
44
-
45
- Examples:
46
- | predicate_method |
47
- | exist? |
48
- | exists? |
49
-
@@ -2,16 +2,16 @@ Feature: predicate matchers
2
2
 
3
3
  Ruby objects commonly provide predicate methods:
4
4
 
5
- * 7.zero? # => false
6
- * 0.zero? # => true
7
- * [1].empty? # => false
8
- * [].empty? # => true
9
- * { :a => 5 }.has_key?(:b) # => false
10
- * { :b => 5 }.has_key?(:b) # => true
5
+ 7.zero? # => false
6
+ 0.zero? # => true
7
+ [1].empty? # => false
8
+ [].empty? # => true
9
+ { :a => 5 }.has_key?(:b) # => false
10
+ { :b => 5 }.has_key?(:b) # => true
11
11
 
12
12
  You could use a basic equality matcher to set expectations on these:
13
13
 
14
- 7.zero?.should == true # fails with "expected true, got false (using ==)"
14
+ 7.zero?.should == true # fails with "expected true, got false (using ==)"
15
15
 
16
16
  ...but RSpec provides dynamic predicate matchers that are more readable and
17
17
  provide better failure output.
@@ -19,19 +19,19 @@ Feature: predicate matchers
19
19
  For any predicate method, RSpec gives you a corresponding matcher. Simply
20
20
  prefix the method with "be_" and remove the question mark. Examples:
21
21
 
22
- * 7.should_not be_zero # calls 7.zero?
23
- * [].should be_empty # calls [].empty?
24
- * x.should be_multiple_of(3) # calls x.multiple_of?(3)
22
+ 7.should_not be_zero # calls 7.zero?
23
+ [].should be_empty # calls [].empty?
24
+ x.should be_multiple_of(3) # calls x.multiple_of?(3)
25
25
 
26
26
  Alternately, for a predicate method that begins with "has_" like Hash#has_key?,
27
27
  RSpec allows you to use an alternate form since "be_has_key" makes no sense.
28
28
 
29
- * hash.should have_key(:foo) # calls hash.has_key?(:foo)
30
- * array.should_not have_odd_values # calls array.has_odd_values?
29
+ hash.should have_key(:foo) # calls hash.has_key?(:foo)
30
+ array.should_not have_odd_values # calls array.has_odd_values?
31
31
 
32
32
  In either case, RSpec provides nice, clear error messages, such as:
33
33
 
34
- expected zero? to return true, got false
34
+ expected zero? to return true, got false
35
35
 
36
36
  Any arguments passed to the matcher will be passed on to the predicate method.
37
37
 
@@ -1,7 +1,7 @@
1
1
  module RSpec # :nodoc:
2
2
  module Expectations # :nodoc:
3
3
  module Version # :nodoc:
4
- STRING = '2.6.0.rc2'
4
+ STRING = '2.6.0.rc4'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-expectations
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15424049
4
+ hash: 15424061
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 2
8
8
  - 6
9
9
  - 0
10
10
  - rc
11
- - 2
12
- version: 2.6.0.rc2
11
+ - 4
12
+ version: 2.6.0.rc4
13
13
  platform: ruby
14
14
  authors:
15
15
  - David Chelimsky
@@ -18,13 +18,10 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2011-04-18 00:00:00 -05:00
21
+ date: 2011-05-01 00:00:00 -04:00
22
22
  default_executable:
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
25
- prerelease: false
26
- type: :runtime
27
- name: diff-lcs
28
25
  version_requirements: &id001 !ruby/object:Gem::Requirement
29
26
  none: false
30
27
  requirements:
@@ -36,7 +33,10 @@ dependencies:
36
33
  - 1
37
34
  - 2
38
35
  version: 1.1.2
36
+ prerelease: false
37
+ type: :runtime
39
38
  requirement: *id001
39
+ name: diff-lcs
40
40
  description: rspec expectations (should[_not] and matchers)
41
41
  email: dchelimsky@gmail.com;chad.humphries@gmail.com
42
42
  executables: []
@@ -59,6 +59,7 @@ files:
59
59
  - features/Changelog.md
60
60
  - features/README.markdown
61
61
  - features/Upgrade.md
62
+ - features/built_in_matchers/README.md
62
63
  - features/built_in_matchers/be.feature
63
64
  - features/built_in_matchers/be_within.feature
64
65
  - features/built_in_matchers/equality.feature
@@ -195,14 +196,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
195
196
  requirements: []
196
197
 
197
198
  rubyforge_project: rspec
198
- rubygems_version: 1.5.2
199
+ rubygems_version: 1.6.2
199
200
  signing_key:
200
201
  specification_version: 3
201
- summary: rspec-expectations-2.6.0.rc2
202
+ summary: rspec-expectations-2.6.0.rc4
202
203
  test_files:
203
204
  - features/Changelog.md
204
205
  - features/README.markdown
205
206
  - features/Upgrade.md
207
+ - features/built_in_matchers/README.md
206
208
  - features/built_in_matchers/be.feature
207
209
  - features/built_in_matchers/be_within.feature
208
210
  - features/built_in_matchers/equality.feature