rspec-expectations 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -5,7 +5,7 @@ source "http://rubygems.org"
5
5
  end
6
6
 
7
7
  gem "rake"
8
- gem "cucumber", "0.8.5"
8
+ gem "cucumber", "0.9.4"
9
9
  gem "aruba", "0.2.2"
10
10
  gem "autotest"
11
11
  gem "diff-lcs"
@@ -1,5 +1,9 @@
1
1
  ## rspec-expectations release history (incomplete)
2
2
 
3
+ ### 2.2.0 / 2010-11-28
4
+
5
+ [full changelog](http://github.com/rspec/rspec-expectations/compare/v2.1.0...v2.2.0)
6
+
3
7
  ### 2.1.0 / 2010-11-07
4
8
 
5
9
  [full changelog](http://github.com/rspec/rspec-expectations/compare/v2.0.1...v2.1.0)
@@ -1,6 +1,6 @@
1
1
  (The MIT License)
2
2
 
3
- Copyright (c) 2005-2010 The RSpec Development Team
3
+ Copyright (c) 2005 The RSpec Development Team
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining
6
6
  a copy of this software and associated documentation files (the
@@ -5,13 +5,21 @@ RSpec::Matchers, a library of standard matchers.
5
5
 
6
6
  ## Documentation
7
7
 
8
- * [Cucumber features](http://relishapp.com/rspec/rspec-expectations/v/2-0)
9
- * [RDoc](http://rubydoc.info/gems/rspec-expectations/2.0.1/frames)
8
+ The [Cucumber features](http://relishapp.com/rspec/rspec-expectations/v/2-1)
9
+ are the most comprehensive and up-to-date docs for end-users.
10
+
11
+ The [RDoc](http://rubydoc.info/gems/rspec-expectations/2.1/frames) provides
12
+ additional information for contributors and/or extenders.
13
+
14
+ All of the documentation is open source and a work in progress. If you find it
15
+ lacking or confusing, you can help improve it by submitting requests and
16
+ patches to the [rspec-expectations issue
17
+ tracker](https://github.com/rspec/rspec-expectations/issues).
10
18
 
11
19
  ## Install
12
20
 
13
21
  gem install rspec # for rspec-core, rspec-expectations, rspec-mocks
14
- gem install rspec-expecctations # for rspec-core only
22
+ gem install rspec-expecctations # for rspec-expectations only
15
23
 
16
24
  ## Matchers
17
25
 
@@ -1,54 +1,22 @@
1
1
  Feature: customized message
2
2
 
3
- In order to get the feedback I want
4
- As an RSpec user
5
- I want to customize the failure message per example
3
+ RSpec tries to provide useful failure messages, but for cases in which you
4
+ want more specific information, you can define your own message right in the
5
+ example. This works for any matcher _other than the operator matchers_.
6
6
 
7
- Scenario: one additional method
8
- Given a file named "node_spec.rb" with:
7
+ Scenario: customize failure message
8
+ Given a file named "example_spec.rb" with:
9
9
  """
10
- class Node
11
- def initialize(state=:waiting)
12
- @state = state
13
- end
14
- def state
15
- @state
16
- end
17
- def waiting?
18
- @state == :waiting
19
- end
20
- def started?
21
- @state == :started
22
- end
23
- def start
24
- @state = :started
25
- end
26
- end
27
-
28
- describe "a new Node" do
29
- it "should be waiting" do
30
- node = Node.new(:started) #start w/ started to trigger failure
31
- node.should be_waiting, "node.state: #{node.state} (first example)"
32
- end
33
-
34
- it "should not be started" do
35
- node = Node.new(:started) #start w/ started to trigger failure
36
- node.should_not be_started, "node.state: #{node.state} (second example)"
37
- end
38
- end
39
-
40
- describe "node.start" do
41
- it "should change the state" do
42
- node = Node.new(:started) #start w/ started to trigger failure
43
- lambda {node.start}.should change{node.state}, "expected a change"
10
+ describe Array do
11
+ context "when created with `new`" do
12
+ it "is empty" do
13
+ array = Array.new
14
+ array << 1 # trigger a failure to demonstrate the message
15
+ array.should be_empty, "expected empty array, got #{array.inspect}"
16
+ end
44
17
  end
45
18
  end
46
19
 
47
20
  """
48
- When I run "rspec ./node_spec.rb --format documentation"
49
- Then the output should contain "3 examples, 3 failures"
50
- And the output should not contain "to return true, got false"
51
- And the output should not contain "to return false, got true"
52
- And the output should contain "node.state: started (first example)"
53
- And the output should contain "node.state: started (second example)"
54
- And the output should contain "expected a change"
21
+ When I run "rspec example_spec.rb --format documentation"
22
+ Then the output should contain "expected empty array, got [1]"
@@ -0,0 +1,149 @@
1
+ Feature: be matchers
2
+
3
+ There are several related "be" matchers:
4
+
5
+ * obj.should be_true # passes if obj is truthy (not nil or false)
6
+ * obj.should be_false # passes if obj is falsey (nil or false)
7
+ * obj.should be_nil # passes if obj is nil
8
+ * obj.should be # passes if obj is not nil
9
+ * obj.should be < expected # passes if obj < expected
10
+ * obj.should be > expected # passes if obj > expected
11
+ * obj.should be <= expected # passes if obj <= expected
12
+ * obj.should be >= expected # passes if obj >= expected
13
+
14
+ Scenario: be_true matcher
15
+ Given a file named "be_true_spec.rb" with:
16
+ """
17
+ describe "be_true matcher" do
18
+ specify { true.should be_true }
19
+ specify { 7.should be_true }
20
+ specify { "foo".should be_true }
21
+ specify { nil.should_not be_true }
22
+ specify { false.should_not be_true }
23
+
24
+ # deliberate failures
25
+ specify { true.should_not be_true }
26
+ specify { 7.should_not be_true }
27
+ specify { "foo".should_not be_true }
28
+ specify { nil.should be_true }
29
+ specify { false.should be_true }
30
+ end
31
+ """
32
+ When I run "rspec be_true_spec.rb"
33
+ Then the output should contain all of these:
34
+ | 10 examples, 5 failures |
35
+ | expected true not to be true |
36
+ | expected 7 not to be true |
37
+ | expected "foo" not to be true |
38
+ | expected nil to be true |
39
+ | expected false to be true |
40
+
41
+ Scenario: be_false matcher
42
+ Given a file named "be_false_spec.rb" with:
43
+ """
44
+ describe "be_false matcher" do
45
+ specify { nil.should be_false }
46
+ specify { false.should be_false }
47
+ specify { true.should_not be_false }
48
+ specify { 7.should_not be_false }
49
+ specify { "foo".should_not be_false }
50
+
51
+ # deliberate failures
52
+ specify { nil.should_not be_false }
53
+ specify { false.should_not be_false }
54
+ specify { true.should be_false }
55
+ specify { 7.should be_false }
56
+ specify { "foo".should be_false }
57
+ end
58
+ """
59
+ When I run "rspec be_false_spec.rb"
60
+ Then the output should contain all of these:
61
+ | 10 examples, 5 failures |
62
+ | expected nil not to be false |
63
+ | expected false not to be false |
64
+ | expected true to be false |
65
+ | expected 7 to be false |
66
+ | expected "foo" to be false |
67
+
68
+ Scenario: be_nil matcher
69
+ Given a file named "be_nil_spec.rb" with:
70
+ """
71
+ describe "be_nil matcher" do
72
+ specify { nil.should be_nil }
73
+ specify { false.should_not be_nil }
74
+ specify { true.should_not be_nil }
75
+ specify { 7.should_not be_nil }
76
+ specify { "foo".should_not be_nil }
77
+
78
+ # deliberate failures
79
+ specify { nil.should_not be_nil }
80
+ specify { false.should be_nil }
81
+ specify { true.should be_nil }
82
+ specify { 7.should be_nil }
83
+ specify { "foo".should be_nil }
84
+ end
85
+ """
86
+ When I run "rspec be_nil_spec.rb"
87
+ Then the output should contain all of these:
88
+ | 10 examples, 5 failures |
89
+ | expected not nil, got nil |
90
+ | expected nil, got false |
91
+ | expected nil, got true |
92
+ | expected nil, got 7 |
93
+ | expected nil, got "foo" |
94
+
95
+ Scenario: be matcher
96
+ Given a file named "be_spec.rb" with:
97
+ """
98
+ describe "be_matcher" do
99
+ specify { true.should be }
100
+ specify { 7.should be }
101
+ specify { "foo".should be }
102
+ specify { nil.should_not be }
103
+ specify { false.should_not be }
104
+
105
+ # deliberate failures
106
+ specify { true.should_not be }
107
+ specify { 7.should_not be }
108
+ specify { "foo".should_not be }
109
+ specify { nil.should be }
110
+ specify { false.should be }
111
+ end
112
+ """
113
+ When I run "rspec be_spec.rb"
114
+ Then the output should contain all of these:
115
+ | 10 examples, 5 failures |
116
+ | expected true to evaluate to false |
117
+ | expected 7 to evaluate to false |
118
+ | expected "foo" to evaluate to false |
119
+ | expected nil to evaluate to true |
120
+ | expected false to evaluate to true |
121
+
122
+ Scenario: be operator matchers
123
+ Given a file named "be_operators_spec.rb" with:
124
+ """
125
+ describe 17 do
126
+ it { should be < 20 }
127
+ it { should be > 15 }
128
+ it { should be <= 17 }
129
+ it { should be >= 17 }
130
+ it { should_not be < 15 }
131
+ it { should_not be > 20 }
132
+ it { should_not be <= 16 }
133
+ it { should_not be >= 18 }
134
+
135
+ # deliberate failures
136
+ it { should be < 15 }
137
+ it { should be > 20 }
138
+ it { should be <= 16 }
139
+ it { should be >= 18 }
140
+ end
141
+ """
142
+ When I run "rspec be_operators_spec.rb"
143
+ Then the output should contain all of these:
144
+ | 12 examples, 4 failures |
145
+ | expected < 15, got 17 |
146
+ | expected > 20, got 17 |
147
+ | expected <= 16, got 17 |
148
+ | expected >= 18, got 17 |
149
+
@@ -0,0 +1,50 @@
1
+ Feature: match matcher
2
+
3
+ The match matcher calls #match on the object, passing if #match returns a
4
+ truthy (not false or nil) value. Regexp and String both provide a #match
5
+ method.
6
+
7
+ "a string".should match(/str/) # passes
8
+ "a string".should match(/foo/) # fails
9
+ /foo/.should match("food") # passes
10
+ /foo/.should match("drinks") # fails
11
+
12
+ This is equivalent to using the =~ matcher (see the operator matchers
13
+ feature for more details).
14
+
15
+ Scenario: string usage
16
+ Given a file named "string_match_spec.rb" with:
17
+ """
18
+ describe "a string" do
19
+ it { should match(/str/) }
20
+ it { should_not match(/foo/) }
21
+
22
+ # deliberate failures
23
+ it { should_not match(/str/) }
24
+ it { should match(/foo/) }
25
+ end
26
+ """
27
+ When I run "rspec string_match_spec.rb"
28
+ Then the output should contain all of these:
29
+ | 4 examples, 2 failures |
30
+ | expected "a string" not to match /str/ |
31
+ | expected "a string" to match /foo/ |
32
+
33
+ Scenario: regular expression usage
34
+ Given a file named "regexp_match_spec.rb" with:
35
+ """
36
+ describe /foo/ do
37
+ it { should match("food") }
38
+ it { should_not match("drinks") }
39
+
40
+ # deliberate failures
41
+ it { should_not match("food") }
42
+ it { should match("drinks") }
43
+ end
44
+ """
45
+ When I run "rspec regexp_match_spec.rb"
46
+ Then the output should contain all of these:
47
+ | 4 examples, 2 failures |
48
+ | expected /foo/ not to match "food" |
49
+ | expected /foo/ to match "drinks" |
50
+
@@ -1,7 +1,7 @@
1
1
  module RSpec # :nodoc:
2
2
  module Expectations # :nodoc:
3
3
  module Version # :nodoc:
4
- STRING = '2.1.0'
4
+ STRING = '2.2.0'
5
5
  end
6
6
  end
7
7
  end
@@ -73,10 +73,10 @@ EOF
73
73
 
74
74
  private
75
75
 
76
- def method_missing(sym, *args, &block)
77
- @collection_name = sym
76
+ def method_missing(method, *args, &block)
77
+ @collection_name = method
78
78
  if inflector = (defined?(ActiveSupport::Inflector) && ActiveSupport::Inflector.respond_to?(:pluralize) ? ActiveSupport::Inflector : (defined?(Inflector) ? Inflector : nil))
79
- @plural_collection_name = inflector.pluralize(sym.to_s)
79
+ @plural_collection_name = inflector.pluralize(method.to_s)
80
80
  end
81
81
  @args = args
82
82
  @block = block
@@ -107,11 +107,11 @@ module RSpec
107
107
 
108
108
  private
109
109
 
110
- def method_missing(name, *args, &block)
111
- if $matcher_execution_context.respond_to?(name)
112
- $matcher_execution_context.send name, *args, &block
110
+ def method_missing(method, *args, &block)
111
+ if $matcher_execution_context.respond_to?(method)
112
+ $matcher_execution_context.send method, *args, &block
113
113
  else
114
- super(name, *args, &block)
114
+ super(method, *args, &block)
115
115
  end
116
116
  end
117
117
 
@@ -1,8 +1,11 @@
1
1
  module RSpec
2
2
  module Matchers
3
- def method_missing(sym, *args, &block) # :nodoc:
4
- return Matchers::BePredicate.new(sym, *args, &block) if sym.to_s =~ /^be_/
5
- return Matchers::Has.new(sym, *args, &block) if sym.to_s =~ /^have_/
3
+
4
+ private
5
+
6
+ def method_missing(method, *args, &block) # :nodoc:
7
+ return Matchers::BePredicate.new(method, *args, &block) if method.to_s =~ /^be_/
8
+ return Matchers::Has.new(method, *args, &block) if method.to_s =~ /^have_/
6
9
  super
7
10
  end
8
11
  end
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.files = `git ls-files`.split("\n")
19
19
  s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
- s.extra_rdoc_files = [ "README.markdown" ]
21
+ s.extra_rdoc_files = [ "README.md" ]
22
22
  s.rdoc_options = ["--charset=UTF-8"]
23
23
  s.require_path = "lib"
24
24
 
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 2
7
- - 1
7
+ - 2
8
8
  - 0
9
- version: 2.1.0
9
+ version: 2.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - David Chelimsky
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-07 01:00:00 -05:00
18
+ date: 2010-11-28 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -40,14 +40,14 @@ executables: []
40
40
  extensions: []
41
41
 
42
42
  extra_rdoc_files:
43
- - README.markdown
43
+ - README.md
44
44
  files:
45
45
  - .document
46
46
  - .gitignore
47
47
  - Gemfile
48
48
  - History.markdown
49
49
  - License.txt
50
- - README.markdown
50
+ - README.md
51
51
  - Rakefile
52
52
  - Upgrade.markdown
53
53
  - cucumber.yml
@@ -57,6 +57,7 @@ files:
57
57
  - features/expectations/diffing.feature
58
58
  - features/expectations/implicit_docstrings.feature
59
59
  - features/matchers/access_running_example.feature
60
+ - features/matchers/be.feature
60
61
  - features/matchers/be_within.feature
61
62
  - features/matchers/define_diffable_matcher.feature
62
63
  - features/matchers/define_matcher.feature
@@ -68,6 +69,7 @@ files:
68
69
  - features/matchers/expect_error.feature
69
70
  - features/matchers/have.feature
70
71
  - features/matchers/include.feature
72
+ - features/matchers/match.feature
71
73
  - features/matchers/operators.feature
72
74
  - features/matchers/predicates.feature
73
75
  - features/matchers/respond_to.feature
@@ -167,7 +169,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
167
169
  requirements:
168
170
  - - ">="
169
171
  - !ruby/object:Gem::Version
170
- hash: -1883027973330642761
172
+ hash: -833655942959929431
171
173
  segments:
172
174
  - 0
173
175
  version: "0"
@@ -176,7 +178,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
178
  requirements:
177
179
  - - ">="
178
180
  - !ruby/object:Gem::Version
179
- hash: -1883027973330642761
181
+ hash: -833655942959929431
180
182
  segments:
181
183
  - 0
182
184
  version: "0"
@@ -186,7 +188,7 @@ rubyforge_project: rspec
186
188
  rubygems_version: 1.3.7
187
189
  signing_key:
188
190
  specification_version: 3
189
- summary: rspec-expectations-2.1.0
191
+ summary: rspec-expectations-2.2.0
190
192
  test_files:
191
193
  - features/README.markdown
192
194
  - features/expectations/attribute_of_subject.feature
@@ -194,6 +196,7 @@ test_files:
194
196
  - features/expectations/diffing.feature
195
197
  - features/expectations/implicit_docstrings.feature
196
198
  - features/matchers/access_running_example.feature
199
+ - features/matchers/be.feature
197
200
  - features/matchers/be_within.feature
198
201
  - features/matchers/define_diffable_matcher.feature
199
202
  - features/matchers/define_matcher.feature
@@ -205,6 +208,7 @@ test_files:
205
208
  - features/matchers/expect_error.feature
206
209
  - features/matchers/have.feature
207
210
  - features/matchers/include.feature
211
+ - features/matchers/match.feature
208
212
  - features/matchers/operators.feature
209
213
  - features/matchers/predicates.feature
210
214
  - features/matchers/respond_to.feature