rspec-expectations 2.0.0.beta.4 → 2.0.0.beta.5
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/features/expectations/customized_message.feature +1 -1
- data/features/matchers/access_running_example.feature +22 -17
- data/features/matchers/define_matcher.feature +4 -4
- data/features/matchers/define_matcher_with_fluent_interface.feature +1 -1
- data/lib/rspec/matchers/dsl.rb +1 -0
- data/lib/rspec/matchers/matcher.rb +8 -8
- data/rspec-expectations.gemspec +10 -10
- data/spec/rspec/matchers/matcher_spec.rb +14 -19
- metadata +9 -9
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.0.beta.
|
1
|
+
2.0.0.beta.5
|
@@ -45,7 +45,7 @@ Feature: customized message
|
|
45
45
|
end
|
46
46
|
|
47
47
|
"""
|
48
|
-
When I run "rspec node_spec.rb --format
|
48
|
+
When I run "rspec node_spec.rb --format documentation"
|
49
49
|
Then I should see "3 examples, 3 failures"
|
50
50
|
And I should not see "to return true, got false"
|
51
51
|
And I should not see "to return false, got true"
|
@@ -1,12 +1,20 @@
|
|
1
|
-
@wip
|
2
1
|
Feature: access running example
|
3
2
|
|
4
|
-
|
3
|
+
In order to take advantage of services that are available
|
4
|
+
in my examples when I'm writing matchers
|
5
|
+
As a spec author
|
6
|
+
I want to call methods on the running example
|
7
|
+
|
8
|
+
If the method exists in the context of the example, it gets
|
9
|
+
called. If not, a NoMethodError is raised on the Matcher itself
|
10
|
+
(not the example).
|
11
|
+
|
12
|
+
Scenario: call method defined on example from matcher
|
5
13
|
Given a file named "example_spec.rb" with:
|
6
14
|
"""
|
7
15
|
Rspec::Matchers.define :bar do
|
8
16
|
match do |_|
|
9
|
-
|
17
|
+
foo == "foo"
|
10
18
|
end
|
11
19
|
end
|
12
20
|
|
@@ -22,27 +30,24 @@ Feature: access running example
|
|
22
30
|
"""
|
23
31
|
When I run "rspec example_spec.rb"
|
24
32
|
Then I should see "1 example, 0 failures"
|
25
|
-
|
26
|
-
Scenario:
|
33
|
+
|
34
|
+
Scenario: call method _not_ defined on example from matcher
|
27
35
|
Given a file named "example_spec.rb" with:
|
28
36
|
"""
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
match do |_|
|
33
|
-
running_example.foo == "foo"
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def foo
|
39
|
-
"foo"
|
37
|
+
Rspec::Matchers.define :bar do
|
38
|
+
match do |_|
|
39
|
+
foo == "foo"
|
40
40
|
end
|
41
|
+
end
|
41
42
|
|
43
|
+
describe "something" do
|
42
44
|
it "does something" do
|
43
45
|
"foo".should bar
|
44
46
|
end
|
45
47
|
end
|
46
48
|
"""
|
47
49
|
When I run "rspec example_spec.rb"
|
48
|
-
Then I should see "1 example,
|
50
|
+
Then I should see "1 example, 1 failure"
|
51
|
+
And I should see "undefined local variable"
|
52
|
+
And I should see "Rspec::Matchers::Matcher"
|
53
|
+
And I should not see "ExampleGroup"
|
@@ -34,7 +34,7 @@ Feature: define matcher
|
|
34
34
|
end
|
35
35
|
|
36
36
|
"""
|
37
|
-
When I run "rspec matcher_with_default_message_spec.rb --format
|
37
|
+
When I run "rspec matcher_with_default_message_spec.rb --format documentation"
|
38
38
|
Then the exit status should not be 0
|
39
39
|
|
40
40
|
And I should see "should be a multiple of 3"
|
@@ -116,7 +116,7 @@ Feature: define matcher
|
|
116
116
|
it {should_not be_a_multiple_of(4)}
|
117
117
|
end
|
118
118
|
"""
|
119
|
-
When I run "rspec matcher_overriding_description_spec.rb --format
|
119
|
+
When I run "rspec matcher_overriding_description_spec.rb --format documentation"
|
120
120
|
Then the exit status should be 0
|
121
121
|
And the stdout should contain "2 examples, 0 failures"
|
122
122
|
And the stdout should contain "should be multiple of 3"
|
@@ -141,7 +141,7 @@ Feature: define matcher
|
|
141
141
|
it {should have_7_fingers}
|
142
142
|
end
|
143
143
|
"""
|
144
|
-
When I run "rspec matcher_with_no_args_spec.rb --format
|
144
|
+
When I run "rspec matcher_with_no_args_spec.rb --format documentation"
|
145
145
|
Then the exit status should be 0
|
146
146
|
And the stdout should contain "1 example, 0 failures"
|
147
147
|
And the stdout should contain "should have 7 fingers"
|
@@ -161,7 +161,7 @@ Feature: define matcher
|
|
161
161
|
it {should be_the_sum_of(1,2,3,4)}
|
162
162
|
end
|
163
163
|
"""
|
164
|
-
When I run "rspec matcher_with_multiple_args_spec.rb --format
|
164
|
+
When I run "rspec matcher_with_multiple_args_spec.rb --format documentation"
|
165
165
|
Then the exit status should be 0
|
166
166
|
And the stdout should contain "1 example, 0 failures"
|
167
167
|
And the stdout should contain "should be the sum of 1, 2, 3, and 4"
|
@@ -22,6 +22,6 @@ Feature: define matcher
|
|
22
22
|
it { should be_bigger_than(4).but_smaller_than(6) }
|
23
23
|
end
|
24
24
|
"""
|
25
|
-
When I run "rspec between_spec.rb --format
|
25
|
+
When I run "rspec between_spec.rb --format documentation"
|
26
26
|
Then I should see "1 example, 0 failures"
|
27
27
|
And I should see "should be bigger than 4"
|
data/lib/rspec/matchers/dsl.rb
CHANGED
@@ -22,11 +22,6 @@ module Rspec
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def instance_exec(*args, &block)
|
26
|
-
self.running_example ||= eval("running_example", block.binding) rescue nil
|
27
|
-
super(*args, &block)
|
28
|
-
end
|
29
|
-
|
30
25
|
#Used internally by objects returns by +should+ and +should_not+.
|
31
26
|
def matches?(actual)
|
32
27
|
@actual = actual
|
@@ -92,10 +87,15 @@ module Rspec
|
|
92
87
|
end
|
93
88
|
end
|
94
89
|
|
95
|
-
protected
|
96
|
-
attr_accessor :running_example
|
97
|
-
|
98
90
|
private
|
91
|
+
|
92
|
+
def method_missing(name, *args, &block)
|
93
|
+
if $matcher_execution_context.respond_to?(name)
|
94
|
+
$matcher_execution_context.send name, *args, &block
|
95
|
+
else
|
96
|
+
super(name, *args, &block)
|
97
|
+
end
|
98
|
+
end
|
99
99
|
|
100
100
|
def making_declared_methods_public # :nodoc:
|
101
101
|
# Our home-grown instance_exec in ruby 1.8.6 results in any methods
|
data/rspec-expectations.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rspec-expectations}
|
8
|
-
s.version = "2.0.0.beta.
|
8
|
+
s.version = "2.0.0.beta.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["David Chelimsky", "Chad Humphries"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-04-04}
|
13
13
|
s.description = %q{rspec expectations (should[_not] and matchers)}
|
14
14
|
s.email = %q{dchelimsky@gmail.com;chad.humphries@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -109,7 +109,7 @@ Gem::Specification.new do |s|
|
|
109
109
|
s.homepage = %q{http://github.com/rspec/expectations}
|
110
110
|
s.post_install_message = %q{**************************************************
|
111
111
|
|
112
|
-
Thank you for installing rspec-expectations-2.0.0.beta.
|
112
|
+
Thank you for installing rspec-expectations-2.0.0.beta.5
|
113
113
|
|
114
114
|
This is beta software. If you are looking
|
115
115
|
for a supported production release, please
|
@@ -121,7 +121,7 @@ Gem::Specification.new do |s|
|
|
121
121
|
s.require_paths = ["lib"]
|
122
122
|
s.rubyforge_project = %q{rspec}
|
123
123
|
s.rubygems_version = %q{1.3.6}
|
124
|
-
s.summary = %q{rspec-expectations-2.0.0.beta.
|
124
|
+
s.summary = %q{rspec-expectations-2.0.0.beta.5}
|
125
125
|
s.test_files = [
|
126
126
|
"spec/rspec/expectations/differs/default_spec.rb",
|
127
127
|
"spec/rspec/expectations/extensions/kernel_spec.rb",
|
@@ -163,19 +163,19 @@ Gem::Specification.new do |s|
|
|
163
163
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
164
164
|
s.add_development_dependency(%q<cucumber>, [">= 0.6.2"])
|
165
165
|
s.add_development_dependency(%q<aruba>, [">= 0.1.1"])
|
166
|
-
s.add_development_dependency(%q<rspec-core>, [">= 2.0.0.beta.
|
167
|
-
s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
166
|
+
s.add_development_dependency(%q<rspec-core>, [">= 2.0.0.beta.5"])
|
167
|
+
s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.5"])
|
168
168
|
else
|
169
169
|
s.add_dependency(%q<cucumber>, [">= 0.6.2"])
|
170
170
|
s.add_dependency(%q<aruba>, [">= 0.1.1"])
|
171
|
-
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.
|
172
|
-
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
171
|
+
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.5"])
|
172
|
+
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.5"])
|
173
173
|
end
|
174
174
|
else
|
175
175
|
s.add_dependency(%q<cucumber>, [">= 0.6.2"])
|
176
176
|
s.add_dependency(%q<aruba>, [">= 0.1.1"])
|
177
|
-
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.
|
178
|
-
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
177
|
+
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.5"])
|
178
|
+
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.5"])
|
179
179
|
end
|
180
180
|
end
|
181
181
|
|
@@ -286,37 +286,32 @@ module Rspec
|
|
286
286
|
end
|
287
287
|
|
288
288
|
context "defined using the dsl" do
|
289
|
-
|
289
|
+
def a_method_in_the_example
|
290
|
+
"method defined in the example"
|
291
|
+
end
|
292
|
+
|
293
|
+
it "can access methods in the running_example" do
|
290
294
|
Rspec::Matchers.define(:__access_running_example) do
|
291
295
|
match do |actual|
|
292
|
-
|
296
|
+
a_method_in_the_example == "method defined in the example"
|
293
297
|
end
|
294
298
|
end
|
295
299
|
running_example.should __access_running_example
|
296
300
|
end
|
297
|
-
end
|
298
|
-
|
299
|
-
context "defined using #new" do
|
300
|
-
it "can access the running_example" do
|
301
|
-
@matcher = Rspec::Matchers::Matcher.new(:something) {}
|
302
|
-
@matcher.send(:running_example).should eq(running_example)
|
303
|
-
end
|
304
|
-
end
|
305
301
|
|
306
|
-
|
307
|
-
|
308
|
-
def access_running_example
|
309
|
-
Matcher.new(:access_running_example) do
|
302
|
+
it "raises NoMethodError for methods not in the running_example" do
|
303
|
+
Rspec::Matchers.define(:__raise_no_method_error) do
|
310
304
|
match do |actual|
|
311
|
-
|
305
|
+
a_method_not_in_the_example == "method defined in the example"
|
312
306
|
end
|
313
307
|
end
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
308
|
+
|
309
|
+
expect do
|
310
|
+
running_example.should __raise_no_method_error
|
311
|
+
end.to raise_error(/Rspec::Matchers::Matcher/)
|
318
312
|
end
|
319
313
|
end
|
314
|
+
|
320
315
|
end
|
321
316
|
end
|
322
317
|
end
|
metadata
CHANGED
@@ -7,8 +7,8 @@ version: !ruby/object:Gem::Version
|
|
7
7
|
- 0
|
8
8
|
- 0
|
9
9
|
- beta
|
10
|
-
-
|
11
|
-
version: 2.0.0.beta.
|
10
|
+
- 5
|
11
|
+
version: 2.0.0.beta.5
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- David Chelimsky
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2010-
|
20
|
+
date: 2010-04-04 00:00:00 -03:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -60,8 +60,8 @@ dependencies:
|
|
60
60
|
- 0
|
61
61
|
- 0
|
62
62
|
- beta
|
63
|
-
-
|
64
|
-
version: 2.0.0.beta.
|
63
|
+
- 5
|
64
|
+
version: 2.0.0.beta.5
|
65
65
|
type: :development
|
66
66
|
version_requirements: *id003
|
67
67
|
- !ruby/object:Gem::Dependency
|
@@ -76,8 +76,8 @@ dependencies:
|
|
76
76
|
- 0
|
77
77
|
- 0
|
78
78
|
- beta
|
79
|
-
-
|
80
|
-
version: 2.0.0.beta.
|
79
|
+
- 5
|
80
|
+
version: 2.0.0.beta.5
|
81
81
|
type: :development
|
82
82
|
version_requirements: *id004
|
83
83
|
description: rspec expectations (should[_not] and matchers)
|
@@ -185,7 +185,7 @@ licenses: []
|
|
185
185
|
post_install_message: |
|
186
186
|
**************************************************
|
187
187
|
|
188
|
-
Thank you for installing rspec-expectations-2.0.0.beta.
|
188
|
+
Thank you for installing rspec-expectations-2.0.0.beta.5
|
189
189
|
|
190
190
|
This is beta software. If you are looking
|
191
191
|
for a supported production release, please
|
@@ -219,7 +219,7 @@ rubyforge_project: rspec
|
|
219
219
|
rubygems_version: 1.3.6
|
220
220
|
signing_key:
|
221
221
|
specification_version: 3
|
222
|
-
summary: rspec-expectations-2.0.0.beta.
|
222
|
+
summary: rspec-expectations-2.0.0.beta.5
|
223
223
|
test_files:
|
224
224
|
- spec/rspec/expectations/differs/default_spec.rb
|
225
225
|
- spec/rspec/expectations/extensions/kernel_spec.rb
|