rspec-expectations 2.0.0.beta.3 → 2.0.0.beta.4
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/cucumber.yml +1 -1
- data/features/matchers/access_running_example.feature +48 -0
- data/lib/rspec/expectations/differs/load-diff-lcs.rb +1 -6
- data/lib/rspec/matchers/extensions/instance_exec.rb +3 -3
- data/lib/rspec/matchers/matcher.rb +11 -4
- data/rspec-expectations.gemspec +13 -11
- data/spec/rspec/matchers/dsl_spec.rb +2 -2
- data/spec/rspec/matchers/matcher_spec.rb +33 -0
- data/specs.watchr +57 -0
- metadata +11 -9
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.0.beta.
|
1
|
+
2.0.0.beta.4
|
data/cucumber.yml
CHANGED
@@ -4,4 +4,4 @@ rerun_opts = rerun.to_s.strip.empty? ? "--format progress features" : "--format
|
|
4
4
|
std_opts = "#{rerun_opts} --require features --format rerun --out rerun.txt --strict --tags ~@wip"
|
5
5
|
%>
|
6
6
|
default: <%= std_opts %>
|
7
|
-
wip: --tags @wip:3 --wip features
|
7
|
+
wip: --require features --tags @wip:3 --wip features
|
@@ -0,0 +1,48 @@
|
|
1
|
+
@wip
|
2
|
+
Feature: access running example
|
3
|
+
|
4
|
+
Scenario: matcher defined via DSL
|
5
|
+
Given a file named "example_spec.rb" with:
|
6
|
+
"""
|
7
|
+
Rspec::Matchers.define :bar do
|
8
|
+
match do |_|
|
9
|
+
running_example.foo == "foo"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "something" do
|
14
|
+
def foo
|
15
|
+
"foo"
|
16
|
+
end
|
17
|
+
|
18
|
+
it "does something" do
|
19
|
+
"foo".should bar
|
20
|
+
end
|
21
|
+
end
|
22
|
+
"""
|
23
|
+
When I run "rspec example_spec.rb"
|
24
|
+
Then I should see "1 example, 0 failures"
|
25
|
+
|
26
|
+
Scenario: matcher defined via #new
|
27
|
+
Given a file named "example_spec.rb" with:
|
28
|
+
"""
|
29
|
+
describe "something" do
|
30
|
+
def bar
|
31
|
+
Rspec::Matchers::Matcher.new :bar do
|
32
|
+
match do |_|
|
33
|
+
running_example.foo == "foo"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def foo
|
39
|
+
"foo"
|
40
|
+
end
|
41
|
+
|
42
|
+
it "does something" do
|
43
|
+
"foo".should bar
|
44
|
+
end
|
45
|
+
end
|
46
|
+
"""
|
47
|
+
When I run "rspec example_spec.rb"
|
48
|
+
Then I should see "1 example, 0 failures"
|
@@ -1,12 +1,7 @@
|
|
1
1
|
begin
|
2
2
|
require 'diff/lcs'
|
3
3
|
rescue LoadError
|
4
|
-
|
5
|
-
require 'rubygems' unless ENV['NO_RUBYGEMS']
|
6
|
-
require 'diff/lcs'
|
7
|
-
rescue LoadError
|
8
|
-
raise "You must gem install diff-lcs to use diffing"
|
9
|
-
end
|
4
|
+
raise "You must gem install diff-lcs to use diffing"
|
10
5
|
end
|
11
6
|
|
12
7
|
require 'diff/lcs/hunk'
|
@@ -15,14 +15,14 @@ module Rspec
|
|
15
15
|
orig_critical, Thread.critical = Thread.critical, true
|
16
16
|
n = 0
|
17
17
|
n += 1 while respond_to?(method_name="__instance_exec#{n}")
|
18
|
-
singleton_class.module_eval{ define_method(
|
18
|
+
singleton_class.module_eval{ define_method(method_name, &block) }
|
19
19
|
ensure
|
20
20
|
Thread.critical = orig_critical
|
21
21
|
end
|
22
22
|
begin
|
23
|
-
return send(
|
23
|
+
return send(method_name, *args)
|
24
24
|
ensure
|
25
|
-
singleton_class.module_eval{ remove_method(
|
25
|
+
singleton_class.module_eval{ remove_method(method_name) } rescue nil
|
26
26
|
end
|
27
27
|
end
|
28
28
|
end
|
@@ -6,7 +6,6 @@ module Rspec
|
|
6
6
|
include Rspec::Matchers
|
7
7
|
|
8
8
|
attr_reader :expected, :actual
|
9
|
-
|
10
9
|
def initialize(name, *expected, &declarations)
|
11
10
|
@name = name
|
12
11
|
@expected = expected
|
@@ -22,7 +21,12 @@ module Rspec
|
|
22
21
|
instance_exec(*@expected, &declarations)
|
23
22
|
end
|
24
23
|
end
|
25
|
-
|
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
|
+
|
26
30
|
#Used internally by objects returns by +should+ and +should_not+.
|
27
31
|
def matches?(actual)
|
28
32
|
@actual = actual
|
@@ -87,9 +91,12 @@ module Rspec
|
|
87
91
|
end
|
88
92
|
end
|
89
93
|
end
|
90
|
-
|
94
|
+
|
95
|
+
protected
|
96
|
+
attr_accessor :running_example
|
97
|
+
|
91
98
|
private
|
92
|
-
|
99
|
+
|
93
100
|
def making_declared_methods_public # :nodoc:
|
94
101
|
# Our home-grown instance_exec in ruby 1.8.6 results in any methods
|
95
102
|
# declared in the block eval'd by instance_exec in the block to which we
|
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.4"
|
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-03-
|
12
|
+
s.date = %q{2010-03-15}
|
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 = [
|
@@ -26,6 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
"cucumber.yml",
|
27
27
|
"features/expectations/customized_message.feature",
|
28
28
|
"features/expectations/implicit_docstrings.feature",
|
29
|
+
"features/matchers/access_running_example.feature",
|
29
30
|
"features/matchers/define_diffable_matcher.feature",
|
30
31
|
"features/matchers/define_matcher.feature",
|
31
32
|
"features/matchers/define_matcher_outside_rspec.feature",
|
@@ -102,12 +103,13 @@ Gem::Specification.new do |s|
|
|
102
103
|
"spec/rspec/matchers/throw_symbol_spec.rb",
|
103
104
|
"spec/spec_helper.rb",
|
104
105
|
"spec/suite.rb",
|
105
|
-
"spec/support/classes.rb"
|
106
|
+
"spec/support/classes.rb",
|
107
|
+
"specs.watchr"
|
106
108
|
]
|
107
109
|
s.homepage = %q{http://github.com/rspec/expectations}
|
108
110
|
s.post_install_message = %q{**************************************************
|
109
111
|
|
110
|
-
Thank you for installing rspec-expectations-2.0.0.beta.
|
112
|
+
Thank you for installing rspec-expectations-2.0.0.beta.4
|
111
113
|
|
112
114
|
This is beta software. If you are looking
|
113
115
|
for a supported production release, please
|
@@ -119,7 +121,7 @@ Gem::Specification.new do |s|
|
|
119
121
|
s.require_paths = ["lib"]
|
120
122
|
s.rubyforge_project = %q{rspec}
|
121
123
|
s.rubygems_version = %q{1.3.6}
|
122
|
-
s.summary = %q{rspec-expectations-2.0.0.beta.
|
124
|
+
s.summary = %q{rspec-expectations-2.0.0.beta.4}
|
123
125
|
s.test_files = [
|
124
126
|
"spec/rspec/expectations/differs/default_spec.rb",
|
125
127
|
"spec/rspec/expectations/extensions/kernel_spec.rb",
|
@@ -161,19 +163,19 @@ Gem::Specification.new do |s|
|
|
161
163
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
162
164
|
s.add_development_dependency(%q<cucumber>, [">= 0.6.2"])
|
163
165
|
s.add_development_dependency(%q<aruba>, [">= 0.1.1"])
|
164
|
-
s.add_development_dependency(%q<rspec-core>, [">= 2.0.0.beta.
|
165
|
-
s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
166
|
+
s.add_development_dependency(%q<rspec-core>, [">= 2.0.0.beta.4"])
|
167
|
+
s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.4"])
|
166
168
|
else
|
167
169
|
s.add_dependency(%q<cucumber>, [">= 0.6.2"])
|
168
170
|
s.add_dependency(%q<aruba>, [">= 0.1.1"])
|
169
|
-
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.
|
170
|
-
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
171
|
+
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.4"])
|
172
|
+
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.4"])
|
171
173
|
end
|
172
174
|
else
|
173
175
|
s.add_dependency(%q<cucumber>, [">= 0.6.2"])
|
174
176
|
s.add_dependency(%q<aruba>, [">= 0.1.1"])
|
175
|
-
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.
|
176
|
-
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
177
|
+
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.4"])
|
178
|
+
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.4"])
|
177
179
|
end
|
178
180
|
end
|
179
181
|
|
@@ -284,6 +284,39 @@ module Rspec
|
|
284
284
|
matcher.expecting('value').matches?('value').should be_true
|
285
285
|
matcher.expecting('value').matches?('other value').should be_false
|
286
286
|
end
|
287
|
+
|
288
|
+
context "defined using the dsl" do
|
289
|
+
it "can access the running_example" do
|
290
|
+
Rspec::Matchers.define(:__access_running_example) do
|
291
|
+
match do |actual|
|
292
|
+
actual == running_example
|
293
|
+
end
|
294
|
+
end
|
295
|
+
running_example.should __access_running_example
|
296
|
+
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
|
+
|
306
|
+
context "wrapped in a method" do
|
307
|
+
|
308
|
+
def access_running_example
|
309
|
+
Matcher.new(:access_running_example) do
|
310
|
+
match do |actual|
|
311
|
+
actual == running_example
|
312
|
+
end
|
313
|
+
end
|
314
|
+
end
|
315
|
+
|
316
|
+
it "can access the running_example" do
|
317
|
+
running_example.should access_running_example
|
318
|
+
end
|
319
|
+
end
|
287
320
|
end
|
288
321
|
end
|
289
322
|
end
|
data/specs.watchr
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
# Run me with:
|
2
|
+
#
|
3
|
+
# $ watchr specs.watchr
|
4
|
+
|
5
|
+
# --------------------------------------------------
|
6
|
+
# Convenience Methods
|
7
|
+
# --------------------------------------------------
|
8
|
+
def all_test_files
|
9
|
+
Dir['spec/**/*_spec.rb']
|
10
|
+
end
|
11
|
+
|
12
|
+
def run_test_matching(thing_to_match)
|
13
|
+
matches = all_test_files.grep(/#{thing_to_match}/i)
|
14
|
+
if matches.empty?
|
15
|
+
puts "Sorry, thanks for playing, but there were no matches for #{thing_to_match}"
|
16
|
+
else
|
17
|
+
run matches.join(' ')
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def run(files_to_run)
|
22
|
+
puts("Running: #{files_to_run}")
|
23
|
+
system("clear;rspec -cfs #{files_to_run}")
|
24
|
+
no_int_for_you
|
25
|
+
end
|
26
|
+
|
27
|
+
def run_all_tests
|
28
|
+
run(all_test_files.join(' '))
|
29
|
+
end
|
30
|
+
|
31
|
+
# --------------------------------------------------
|
32
|
+
# Watchr Rules
|
33
|
+
# --------------------------------------------------
|
34
|
+
watch('^spec/(.*)_spec\.rb' ) { |m| run_test_matching(m[1]) }
|
35
|
+
watch('^lib/(.*)\.rb' ) { |m| run_test_matching(m[1]) }
|
36
|
+
watch('^spec/spec_helper\.rb') { run_all_tests }
|
37
|
+
# --------------------------------------------------
|
38
|
+
# Signal Handling
|
39
|
+
# --------------------------------------------------
|
40
|
+
|
41
|
+
def no_int_for_you
|
42
|
+
@sent_an_int = nil
|
43
|
+
end
|
44
|
+
|
45
|
+
Signal.trap 'INT' do
|
46
|
+
if @sent_an_int then
|
47
|
+
puts " A second INT? Ok, I get the message. Shutting down now."
|
48
|
+
exit
|
49
|
+
else
|
50
|
+
puts " Did you just send me an INT? Ugh. I'll quit for real if you do it again."
|
51
|
+
@sent_an_int = true
|
52
|
+
Kernel.sleep 1.5
|
53
|
+
run_all_tests
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
# vim:ft=ruby
|
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
|
+
- 4
|
11
|
+
version: 2.0.0.beta.4
|
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-03-
|
20
|
+
date: 2010-03-15 00:00:00 -05: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
|
+
- 4
|
64
|
+
version: 2.0.0.beta.4
|
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
|
+
- 4
|
80
|
+
version: 2.0.0.beta.4
|
81
81
|
type: :development
|
82
82
|
version_requirements: *id004
|
83
83
|
description: rspec expectations (should[_not] and matchers)
|
@@ -99,6 +99,7 @@ files:
|
|
99
99
|
- cucumber.yml
|
100
100
|
- features/expectations/customized_message.feature
|
101
101
|
- features/expectations/implicit_docstrings.feature
|
102
|
+
- features/matchers/access_running_example.feature
|
102
103
|
- features/matchers/define_diffable_matcher.feature
|
103
104
|
- features/matchers/define_matcher.feature
|
104
105
|
- features/matchers/define_matcher_outside_rspec.feature
|
@@ -176,6 +177,7 @@ files:
|
|
176
177
|
- spec/spec_helper.rb
|
177
178
|
- spec/suite.rb
|
178
179
|
- spec/support/classes.rb
|
180
|
+
- specs.watchr
|
179
181
|
has_rdoc: true
|
180
182
|
homepage: http://github.com/rspec/expectations
|
181
183
|
licenses: []
|
@@ -183,7 +185,7 @@ licenses: []
|
|
183
185
|
post_install_message: |
|
184
186
|
**************************************************
|
185
187
|
|
186
|
-
Thank you for installing rspec-expectations-2.0.0.beta.
|
188
|
+
Thank you for installing rspec-expectations-2.0.0.beta.4
|
187
189
|
|
188
190
|
This is beta software. If you are looking
|
189
191
|
for a supported production release, please
|
@@ -217,7 +219,7 @@ rubyforge_project: rspec
|
|
217
219
|
rubygems_version: 1.3.6
|
218
220
|
signing_key:
|
219
221
|
specification_version: 3
|
220
|
-
summary: rspec-expectations-2.0.0.beta.
|
222
|
+
summary: rspec-expectations-2.0.0.beta.4
|
221
223
|
test_files:
|
222
224
|
- spec/rspec/expectations/differs/default_spec.rb
|
223
225
|
- spec/rspec/expectations/extensions/kernel_spec.rb
|