rspec-expectations 2.0.0.beta.11 → 2.0.0.beta.12
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/Rakefile +1 -4
- data/VERSION +1 -1
- data/cucumber.yml +2 -6
- data/features/matchers/define_matcher.feature +29 -0
- data/lib/rspec/expectations/differ.rb +5 -3
- data/lib/rspec/expectations/fail_with.rb +27 -9
- data/lib/rspec/matchers/dsl.rb +2 -0
- data/lib/rspec/matchers/matcher.rb +3 -3
- data/rspec-expectations.gemspec +10 -14
- data/spec/rspec/expectations/fail_with_spec.rb +18 -12
- data/spec/rspec/matchers/matcher_spec.rb +18 -6
- metadata +9 -13
data/Rakefile
CHANGED
@@ -23,10 +23,6 @@ begin
|
|
23
23
|
|
24
24
|
Thank you for installing #{gem.summary}
|
25
25
|
|
26
|
-
This is beta software. If you are looking
|
27
|
-
for a supported production release, please
|
28
|
-
"gem install rspec" (without --pre).
|
29
|
-
|
30
26
|
#{"*"*50}
|
31
27
|
EOM
|
32
28
|
end
|
@@ -75,6 +71,7 @@ Rake::RDocTask.new do |rdoc|
|
|
75
71
|
end
|
76
72
|
|
77
73
|
task :clobber do
|
74
|
+
rm_rf 'doc'
|
78
75
|
rm_rf 'pkg'
|
79
76
|
rm_rf 'tmp'
|
80
77
|
rm_rf 'coverage'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.0.beta.
|
1
|
+
2.0.0.beta.12
|
data/cucumber.yml
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
|
2
|
-
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
3
|
-
rerun_opts = rerun.to_s.strip.empty? ? "--format progress features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
4
|
-
std_opts = "#{rerun_opts} --require features --format rerun --out rerun.txt --strict --tags ~@wip"
|
5
|
-
%>
|
6
|
-
default: <%= std_opts %>
|
1
|
+
default: --require features --tags ~@wip --format progress
|
7
2
|
wip: --require features --tags @wip:3 --wip features
|
3
|
+
|
@@ -191,3 +191,32 @@ Feature: define matcher
|
|
191
191
|
Then the exit status should be 0
|
192
192
|
And the stdout should contain "1 example, 0 failures"
|
193
193
|
|
194
|
+
Scenario: scoped
|
195
|
+
Given a file named "scoped_matcher_spec.rb" with:
|
196
|
+
"""
|
197
|
+
require 'rspec/expectations'
|
198
|
+
|
199
|
+
module MyHelpers
|
200
|
+
extend RSpec::Matchers::DSL
|
201
|
+
|
202
|
+
matcher :be_just_like do |expected|
|
203
|
+
match {|actual| actual == expected}
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
describe "group with MyHelpers" do
|
208
|
+
include MyHelpers
|
209
|
+
it "has access to the defined matcher" do
|
210
|
+
self.should respond_to(:be_just_like)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
|
214
|
+
describe "group without MyHelpers" do
|
215
|
+
it "does not have access to the defined matcher" do
|
216
|
+
self.should_not respond_to(:be_just_like)
|
217
|
+
end
|
218
|
+
end
|
219
|
+
"""
|
220
|
+
|
221
|
+
When I run "rspec ./scoped_matcher_spec.rb"
|
222
|
+
Then the stdout should contain "1 failure"
|
@@ -19,8 +19,9 @@ module RSpec
|
|
19
19
|
file_length_difference = 0
|
20
20
|
diffs.each do |piece|
|
21
21
|
begin
|
22
|
-
hunk = Diff::LCS::Hunk.new(
|
23
|
-
|
22
|
+
hunk = Diff::LCS::Hunk.new(
|
23
|
+
data_old, data_new, piece, context_lines, file_length_difference
|
24
|
+
)
|
24
25
|
file_length_difference = hunk.file_length_difference
|
25
26
|
next unless oldhunk
|
26
27
|
# Hunks may overlap, which is why we need to be careful when our
|
@@ -44,7 +45,8 @@ module RSpec
|
|
44
45
|
diff_as_string(PP.pp(target,""), PP.pp(expected,""))
|
45
46
|
end
|
46
47
|
|
47
|
-
|
48
|
+
protected
|
49
|
+
|
48
50
|
def format
|
49
51
|
:unified
|
50
52
|
end
|
@@ -8,21 +8,39 @@ module RSpec
|
|
8
8
|
# raises a RSpec::Expectations::ExpectationNotMetError with message
|
9
9
|
#
|
10
10
|
# When a differ has been assigned and fail_with is passed
|
11
|
-
# <code>expected</code> and <code>
|
11
|
+
# <code>expected</code> and <code>actual</code>, passes them
|
12
12
|
# to the differ to append a diff message to the failure message.
|
13
|
-
def fail_with(message, expected=nil,
|
14
|
-
if message
|
13
|
+
def fail_with(message, expected=nil, actual=nil) # :nodoc:
|
14
|
+
if !message
|
15
15
|
raise ArgumentError, "Failure message is nil. Does your matcher define the " +
|
16
16
|
"appropriate failure_message_for_* method to return a string?"
|
17
17
|
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
|
19
|
+
if actual && expected
|
20
|
+
if all_strings?(actual, expected)
|
21
|
+
if any_multiline_strings?(actual, expected)
|
22
|
+
message << "\nDiff:" << self.differ.diff_as_string(actual, expected)
|
23
|
+
end
|
24
|
+
elsif no_procs?(actual, expected)
|
25
|
+
message << "\nDiff:" << self.differ.diff_as_object(actual, expected)
|
23
26
|
end
|
24
27
|
end
|
25
|
-
|
28
|
+
|
29
|
+
raise(RSpec::Expectations::ExpectationNotMetError.new(message))
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def no_procs?(*args)
|
35
|
+
args.none? {|a| Proc === a}
|
36
|
+
end
|
37
|
+
|
38
|
+
def all_strings?(*args)
|
39
|
+
args.all? {|a| String === a}
|
40
|
+
end
|
41
|
+
|
42
|
+
def any_multiline_strings?(*args)
|
43
|
+
all_strings?(*args) && args.any? {|a| a =~ /\n/}
|
26
44
|
end
|
27
45
|
end
|
28
46
|
end
|
data/lib/rspec/matchers/dsl.rb
CHANGED
@@ -5,13 +5,13 @@ module RSpec
|
|
5
5
|
include RSpec::Matchers::Pretty
|
6
6
|
include RSpec::Matchers
|
7
7
|
|
8
|
-
attr_reader :expected, :actual
|
8
|
+
attr_reader :expected, :actual, :rescued_exception
|
9
9
|
def initialize(name, *expected, &declarations)
|
10
10
|
@name = name
|
11
11
|
@expected = expected
|
12
12
|
@actual = nil
|
13
13
|
@diffable = false
|
14
|
-
@expected_exception = nil
|
14
|
+
@expected_exception, @rescued_exception = nil
|
15
15
|
@messages = {
|
16
16
|
:description => lambda {"#{name_to_sentence}#{expected_to_sentence}"},
|
17
17
|
:failure_message_for_should => lambda {|actual| "expected #{actual.inspect} to #{name_to_sentence}#{expected_to_sentence}"},
|
@@ -29,7 +29,7 @@ module RSpec
|
|
29
29
|
begin
|
30
30
|
instance_exec(actual, &@match_block)
|
31
31
|
true
|
32
|
-
rescue @expected_exception
|
32
|
+
rescue @expected_exception => @rescued_exception
|
33
33
|
false
|
34
34
|
end
|
35
35
|
else
|
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.12"
|
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-06-
|
12
|
+
s.date = %q{2010-06-14}
|
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 = [
|
@@ -110,19 +110,15 @@ Gem::Specification.new do |s|
|
|
110
110
|
s.homepage = %q{http://github.com/rspec/expectations}
|
111
111
|
s.post_install_message = %q{**************************************************
|
112
112
|
|
113
|
-
Thank you for installing rspec-expectations-2.0.0.beta.
|
113
|
+
Thank you for installing rspec-expectations-2.0.0.beta.12
|
114
114
|
|
115
|
-
This is beta software. If you are looking
|
116
|
-
for a supported production release, please
|
117
|
-
"gem install rspec" (without --pre).
|
118
|
-
|
119
115
|
**************************************************
|
120
116
|
}
|
121
117
|
s.rdoc_options = ["--charset=UTF-8"]
|
122
118
|
s.require_paths = ["lib"]
|
123
119
|
s.rubyforge_project = %q{rspec}
|
124
120
|
s.rubygems_version = %q{1.3.6}
|
125
|
-
s.summary = %q{rspec-expectations-2.0.0.beta.
|
121
|
+
s.summary = %q{rspec-expectations-2.0.0.beta.12}
|
126
122
|
s.test_files = [
|
127
123
|
"spec/rspec/expectations/differ_spec.rb",
|
128
124
|
"spec/rspec/expectations/extensions/kernel_spec.rb",
|
@@ -165,21 +161,21 @@ Gem::Specification.new do |s|
|
|
165
161
|
s.add_runtime_dependency(%q<diff-lcs>, [">= 1.1.2"])
|
166
162
|
s.add_development_dependency(%q<cucumber>, [">= 0.6.2"])
|
167
163
|
s.add_development_dependency(%q<aruba>, [">= 0.1.1"])
|
168
|
-
s.add_development_dependency(%q<rspec-core>, [">= 2.0.0.beta.
|
169
|
-
s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
164
|
+
s.add_development_dependency(%q<rspec-core>, [">= 2.0.0.beta.12"])
|
165
|
+
s.add_development_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.12"])
|
170
166
|
else
|
171
167
|
s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
|
172
168
|
s.add_dependency(%q<cucumber>, [">= 0.6.2"])
|
173
169
|
s.add_dependency(%q<aruba>, [">= 0.1.1"])
|
174
|
-
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.
|
175
|
-
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
170
|
+
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.12"])
|
171
|
+
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.12"])
|
176
172
|
end
|
177
173
|
else
|
178
174
|
s.add_dependency(%q<diff-lcs>, [">= 1.1.2"])
|
179
175
|
s.add_dependency(%q<cucumber>, [">= 0.6.2"])
|
180
176
|
s.add_dependency(%q<aruba>, [">= 0.1.1"])
|
181
|
-
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.
|
182
|
-
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.
|
177
|
+
s.add_dependency(%q<rspec-core>, [">= 2.0.0.beta.12"])
|
178
|
+
s.add_dependency(%q<rspec-mocks>, [">= 2.0.0.beta.12"])
|
183
179
|
end
|
184
180
|
end
|
185
181
|
|
@@ -1,34 +1,40 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe RSpec::Expectations, "#fail_with with diff" do
|
4
|
+
let(:differ) { double("differ") }
|
5
|
+
|
4
6
|
before(:each) do
|
5
|
-
|
6
|
-
RSpec::Expectations.stub(:differ) { @differ }
|
7
|
+
RSpec::Expectations.stub(:differ) { differ }
|
7
8
|
end
|
8
9
|
|
9
|
-
it "
|
10
|
+
it "does not call differ if no expected/actual" do
|
10
11
|
lambda {
|
11
12
|
RSpec::Expectations.fail_with "the message"
|
12
13
|
}.should fail_with("the message")
|
13
14
|
end
|
14
15
|
|
15
|
-
it "
|
16
|
-
|
16
|
+
it "calls differ if expected/actual are presented separately" do
|
17
|
+
differ.should_receive(:diff_as_string).and_return("diff")
|
17
18
|
lambda {
|
18
|
-
RSpec::Expectations.fail_with "the message", "expected", "actual"
|
19
|
+
RSpec::Expectations.fail_with "the message", "expected\nthis", "actual"
|
19
20
|
}.should fail_with("the message\nDiff:diff")
|
20
21
|
end
|
21
22
|
|
22
|
-
it "
|
23
|
-
|
23
|
+
it "does not call differ if expected/actual are single line strings" do
|
24
|
+
differ.should_not_receive(:diff_as_string)
|
25
|
+
RSpec::Expectations.fail_with ("the message", "expected", "actual") rescue nil
|
26
|
+
end
|
27
|
+
|
28
|
+
it "calls differ if expected/actual are not strings" do
|
29
|
+
differ.should_receive(:diff_as_object).and_return("diff")
|
24
30
|
lambda {
|
25
|
-
RSpec::Expectations.fail_with "the message",
|
31
|
+
RSpec::Expectations.fail_with "the message", Object.new, Object.new
|
26
32
|
}.should fail_with("the message\nDiff:diff")
|
27
33
|
end
|
28
34
|
|
29
|
-
it "
|
30
|
-
|
31
|
-
|
35
|
+
it "does not call differ if expected or actual are procs" do
|
36
|
+
differ.should_not_receive(:diff_as_string)
|
37
|
+
differ.should_not_receive(:diff_as_object)
|
32
38
|
lambda {
|
33
39
|
RSpec::Expectations.fail_with "the message", lambda {}, lambda {}
|
34
40
|
}.should fail_with("the message")
|
@@ -230,11 +230,11 @@ module RSpec
|
|
230
230
|
end
|
231
231
|
|
232
232
|
describe "#match_unless_raises" do
|
233
|
-
context "with
|
233
|
+
context "with an assertion" do
|
234
234
|
let(:mod) do
|
235
235
|
Module.new do
|
236
236
|
def assert_equal(a,b)
|
237
|
-
a == b ? nil : (raise UnexpectedError.new("#{
|
237
|
+
a == b ? nil : (raise UnexpectedError.new("#{b} does not equal #{a}"))
|
238
238
|
end
|
239
239
|
end
|
240
240
|
end
|
@@ -247,11 +247,23 @@ module RSpec
|
|
247
247
|
end
|
248
248
|
end
|
249
249
|
end
|
250
|
-
|
251
|
-
|
250
|
+
|
251
|
+
context "with passing assertion" do
|
252
|
+
it "passes" do
|
253
|
+
matcher.matches?(4).should be_true
|
254
|
+
end
|
252
255
|
end
|
253
|
-
|
254
|
-
|
256
|
+
|
257
|
+
context "with failing assertion" do
|
258
|
+
it "fails" do
|
259
|
+
matcher.matches?(5).should be_false
|
260
|
+
end
|
261
|
+
|
262
|
+
it "provides the raised exception" do
|
263
|
+
matcher.matches?(5)
|
264
|
+
matcher.rescued_exception.message.
|
265
|
+
should eq("5 does not equal 4")
|
266
|
+
end
|
255
267
|
end
|
256
268
|
end
|
257
269
|
|
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
|
+
- 12
|
11
|
+
version: 2.0.0.beta.12
|
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-06-
|
20
|
+
date: 2010-06-14 00:00:00 -05:00
|
21
21
|
default_executable:
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
@@ -74,8 +74,8 @@ dependencies:
|
|
74
74
|
- 0
|
75
75
|
- 0
|
76
76
|
- beta
|
77
|
-
-
|
78
|
-
version: 2.0.0.beta.
|
77
|
+
- 12
|
78
|
+
version: 2.0.0.beta.12
|
79
79
|
type: :development
|
80
80
|
version_requirements: *id004
|
81
81
|
- !ruby/object:Gem::Dependency
|
@@ -90,8 +90,8 @@ dependencies:
|
|
90
90
|
- 0
|
91
91
|
- 0
|
92
92
|
- beta
|
93
|
-
-
|
94
|
-
version: 2.0.0.beta.
|
93
|
+
- 12
|
94
|
+
version: 2.0.0.beta.12
|
95
95
|
type: :development
|
96
96
|
version_requirements: *id005
|
97
97
|
description: rspec expectations (should[_not] and matchers)
|
@@ -200,12 +200,8 @@ licenses: []
|
|
200
200
|
post_install_message: |
|
201
201
|
**************************************************
|
202
202
|
|
203
|
-
Thank you for installing rspec-expectations-2.0.0.beta.
|
203
|
+
Thank you for installing rspec-expectations-2.0.0.beta.12
|
204
204
|
|
205
|
-
This is beta software. If you are looking
|
206
|
-
for a supported production release, please
|
207
|
-
"gem install rspec" (without --pre).
|
208
|
-
|
209
205
|
**************************************************
|
210
206
|
|
211
207
|
rdoc_options:
|
@@ -234,7 +230,7 @@ rubyforge_project: rspec
|
|
234
230
|
rubygems_version: 1.3.6
|
235
231
|
signing_key:
|
236
232
|
specification_version: 3
|
237
|
-
summary: rspec-expectations-2.0.0.beta.
|
233
|
+
summary: rspec-expectations-2.0.0.beta.12
|
238
234
|
test_files:
|
239
235
|
- spec/rspec/expectations/differ_spec.rb
|
240
236
|
- spec/rspec/expectations/extensions/kernel_spec.rb
|