rspec 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +31 -1
- data/Manifest.txt +14 -12
- data/Rakefile +1 -1
- data/Upgrade.rdoc +43 -3
- data/examples/failing/failing_implicit_docstrings_example.rb +5 -5
- data/examples/passing/implicit_docstrings_example.rb +3 -3
- data/features/before_and_after_blocks/before_and_after_blocks.feature +20 -21
- data/features/example_groups/example_group_with_should_methods.feature +20 -8
- data/features/example_groups/implicit_docstrings.feature +36 -20
- data/features/example_groups/nested_groups.feature +25 -10
- data/features/extensions/custom_example_group.feature +19 -0
- data/features/formatters/custom_formatter.feature +30 -0
- data/features/heckle/heckle.feature +7 -7
- data/features/interop/examples_and_tests_together.feature +63 -14
- data/features/interop/rspec_output.feature +25 -0
- data/features/interop/test_but_not_test_unit.feature +19 -7
- data/features/interop/test_case_with_should_methods.feature +37 -8
- data/features/matchers/{create_matcher.feature → define_matcher.feature} +54 -30
- data/features/matchers/{create_matcher_outside_rspec.feature → define_matcher_outside_rspec.feature} +7 -7
- data/features/mock_framework_integration/use_flexmock.feature +3 -3
- data/features/mock_framework_integration/use_mocha.feature +3 -3
- data/features/mock_framework_integration/use_rr.feature +3 -3
- data/features/mocks/mix_stubs_and_mocks.feature +4 -4
- data/features/pending/pending_examples.feature +18 -18
- data/features/runner/specify_line_number.feature +32 -0
- data/features/step_definitions/running_rspec_steps.rb +41 -0
- data/features/subject/explicit_subject.feature +4 -4
- data/features/subject/implicit_subject.feature +4 -4
- data/features/support/env.rb +64 -11
- data/features/support/matchers/smart_match.rb +10 -35
- data/lib/spec.rb +1 -0
- data/lib/spec/deprecation.rb +40 -0
- data/lib/spec/dsl/main.rb +10 -5
- data/lib/spec/example.rb +1 -27
- data/lib/spec/example/args_and_options.rb +27 -0
- data/lib/spec/example/before_and_after_hooks.rb +30 -21
- data/lib/spec/example/errors.rb +8 -18
- data/lib/spec/example/example_group_factory.rb +0 -4
- data/lib/spec/example/example_group_methods.rb +27 -41
- data/lib/spec/example/example_group_proxy.rb +12 -22
- data/lib/spec/example/example_methods.rb +8 -18
- data/lib/spec/example/example_proxy.rb +4 -4
- data/lib/spec/example/pending.rb +3 -4
- data/lib/spec/example/predicate_matchers.rb +1 -1
- data/lib/spec/example/subject.rb +2 -0
- data/lib/spec/expectations.rb +1 -26
- data/lib/spec/expectations/extensions.rb +1 -1
- data/lib/spec/expectations/extensions/kernel.rb +52 -0
- data/lib/spec/expectations/handler.rb +21 -10
- data/lib/spec/matchers/be.rb +3 -3
- data/lib/spec/matchers/be_close.rb +17 -21
- data/lib/spec/matchers/be_instance_of.rb +7 -26
- data/lib/spec/matchers/be_kind_of.rb +7 -26
- data/lib/spec/matchers/dsl.rb +9 -4
- data/lib/spec/matchers/eql.rb +24 -25
- data/lib/spec/matchers/equal.rb +25 -25
- data/lib/spec/matchers/exist.rb +5 -21
- data/lib/spec/matchers/include.rb +22 -44
- data/lib/spec/matchers/match.rb +5 -25
- data/lib/spec/matchers/match_array.rb +8 -4
- data/lib/spec/matchers/matcher.rb +13 -2
- data/lib/spec/matchers/pretty.rb +1 -0
- data/lib/spec/matchers/simple_matcher.rb +2 -2
- data/lib/spec/mocks/mock.rb +10 -10
- data/lib/spec/mocks/spec_methods.rb +1 -1
- data/lib/spec/runner/configuration.rb +53 -42
- data/lib/spec/{expectations → runner}/differs/default.rb +0 -0
- data/lib/spec/{expectations → runner}/differs/load-diff-lcs.rb +0 -0
- data/lib/spec/runner/drb_command_line.rb +1 -1
- data/lib/spec/runner/example_group_runner.rb +0 -12
- data/lib/spec/runner/formatter/base_formatter.rb +77 -30
- data/lib/spec/runner/formatter/base_text_formatter.rb +19 -24
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +1 -1
- data/lib/spec/runner/formatter/html_formatter.rb +4 -6
- data/lib/spec/runner/formatter/nested_text_formatter.rb +2 -2
- data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
- data/lib/spec/runner/formatter/profile_formatter.rb +0 -4
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +4 -5
- data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +2 -2
- data/lib/spec/runner/option_parser.rb +14 -7
- data/lib/spec/runner/options.rb +17 -7
- data/lib/spec/runner/reporter.rb +69 -64
- data/lib/spec/version.rb +1 -1
- data/spec/spec/dsl/main_spec.rb +7 -0
- data/spec/spec/example/example_group_methods_spec.rb +16 -32
- data/spec/spec/example/example_group_proxy_spec.rb +25 -5
- data/spec/spec/example/example_group_spec.rb +2 -2
- data/spec/spec/example/example_methods_spec.rb +19 -24
- data/spec/spec/example/example_proxy_spec.rb +11 -1
- data/spec/spec/example/pending_module_spec.rb +2 -108
- data/spec/spec/example/predicate_matcher_spec.rb +23 -3
- data/spec/spec/expectations/extensions/object_spec.rb +9 -9
- data/spec/spec/expectations/fail_with_spec.rb +13 -13
- data/spec/spec/expectations/handler_spec.rb +44 -15
- data/spec/spec/matchers/be_close_spec.rb +9 -0
- data/spec/spec/matchers/be_instance_of_spec.rb +6 -4
- data/spec/spec/matchers/be_kind_of_spec.rb +5 -3
- data/spec/spec/matchers/be_spec.rb +1 -5
- data/spec/spec/matchers/compatibility_spec.rb +1 -1
- data/spec/spec/matchers/dsl_spec.rb +10 -1
- data/spec/spec/matchers/eql_spec.rb +8 -4
- data/spec/spec/matchers/equal_spec.rb +8 -4
- data/spec/spec/matchers/exist_spec.rb +1 -1
- data/spec/spec/matchers/include_spec.rb +1 -1
- data/spec/spec/matchers/match_array_spec.rb +26 -1
- data/spec/spec/matchers/match_spec.rb +2 -2
- data/spec/spec/matchers/matcher_methods_spec.rb +0 -3
- data/spec/spec/matchers/matcher_spec.rb +53 -0
- data/spec/spec/matchers/operator_matcher_spec.rb +1 -1
- data/spec/spec/mocks/mock_spec.rb +6 -0
- data/spec/spec/runner/configuration_spec.rb +11 -1
- data/spec/spec/runner/drb_command_line_spec.rb +13 -1
- data/spec/spec/runner/example_group_runner_spec.rb +0 -7
- data/spec/spec/runner/formatter/base_formatter_spec.rb +19 -12
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +4 -4
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +2 -2
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +31 -34
- data/spec/spec/runner/formatter/html_formatter_spec.rb +20 -0
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +20 -20
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +22 -3
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +24 -3
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +6 -6
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +25 -28
- data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +2 -2
- data/spec/spec/runner/option_parser_spec.rb +108 -40
- data/spec/spec/runner/reporter_spec.rb +16 -17
- data/spec/spec_helper.rb +4 -1
- metadata +20 -18
- data/features/example_groups/output.feature +0 -20
- data/features/step_definitions/running_rspec.rb +0 -69
- data/lib/spec/expectations/extensions/object.rb +0 -63
- data/resources/spec/example_group_with_should_methods.rb +0 -12
- data/resources/spec/simple_spec.rb +0 -8
- data/resources/test/spec_and_test_together.rb +0 -56
- data/resources/test/spec_including_test_but_not_unit.rb +0 -11
- data/resources/test/test_case_with_should_methods.rb +0 -29
@@ -12,17 +12,24 @@ describe Spec::Expectations, "#fail_with with no diff" do
|
|
12
12
|
}.should fail_with("the message")
|
13
13
|
end
|
14
14
|
|
15
|
-
it "should handle an Array" do
|
16
|
-
lambda {
|
17
|
-
Spec::Expectations.fail_with ["the message","expected","actual"]
|
18
|
-
}.should fail_with("the message")
|
19
|
-
end
|
20
|
-
|
21
15
|
after(:each) do
|
22
16
|
Spec::Expectations.differ = @old_differ
|
23
17
|
end
|
24
18
|
end
|
25
19
|
|
20
|
+
describe Spec::Expectations, "#fail_with with Array" do
|
21
|
+
before(:each) do
|
22
|
+
Spec.stub!(:warn)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "is deprecated" do
|
26
|
+
Spec.should_receive(:warn)
|
27
|
+
lambda {
|
28
|
+
Spec::Expectations.fail_with ["message", "expected", "actual"]
|
29
|
+
}.should raise_error
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
26
33
|
describe Spec::Expectations, "#fail_with with diff" do
|
27
34
|
before(:each) do
|
28
35
|
@old_differ = Spec::Expectations.differ
|
@@ -58,13 +65,6 @@ describe Spec::Expectations, "#fail_with with diff" do
|
|
58
65
|
}.should fail_with("the message")
|
59
66
|
end
|
60
67
|
|
61
|
-
it "should call differ if expected/actual are presented in an Array with message" do
|
62
|
-
@differ.should_receive(:diff_as_string).with("actual","expected").and_return("diff")
|
63
|
-
lambda {
|
64
|
-
Spec::Expectations.fail_with(["the message", "expected", "actual"])
|
65
|
-
}.should fail_with(/the message\nDiff:diff/)
|
66
|
-
end
|
67
|
-
|
68
68
|
after(:each) do
|
69
69
|
Spec::Expectations.differ = @old_differ
|
70
70
|
end
|
@@ -7,9 +7,7 @@ module ExampleExpectations
|
|
7
7
|
if args.last.is_a? Hash
|
8
8
|
@expected = args.last[:expected]
|
9
9
|
end
|
10
|
-
if
|
11
|
-
@expected = block.call
|
12
|
-
end
|
10
|
+
@expected = block.call if block
|
13
11
|
@block = block
|
14
12
|
end
|
15
13
|
|
@@ -48,20 +46,20 @@ end
|
|
48
46
|
|
49
47
|
module Spec
|
50
48
|
module Expectations
|
51
|
-
describe
|
49
|
+
describe PositiveExpectationHandler do
|
52
50
|
describe "#handle_matcher" do
|
53
51
|
it "asks the matcher if it matches" do
|
54
52
|
matcher = mock("matcher")
|
55
53
|
actual = Object.new
|
56
54
|
matcher.should_receive(:matches?).with(actual).and_return(true)
|
57
|
-
Spec::Expectations::
|
55
|
+
Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
|
58
56
|
end
|
59
57
|
|
60
58
|
it "returns the match value" do
|
61
59
|
matcher = mock("matcher")
|
62
60
|
actual = Object.new
|
63
61
|
matcher.should_receive(:matches?).with(actual).and_return(:this_value)
|
64
|
-
Spec::Expectations::
|
62
|
+
Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher).should == :this_value
|
65
63
|
end
|
66
64
|
|
67
65
|
it "calls failure_message_for_should if the matcher implements it" do
|
@@ -70,8 +68,22 @@ module Spec
|
|
70
68
|
|
71
69
|
::Spec::Expectations.should_receive(:fail_with).with("message")
|
72
70
|
|
73
|
-
Spec::Expectations::
|
71
|
+
Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "calls fail if matcher.diffable?" do
|
75
|
+
matcher = mock("matcher",
|
76
|
+
:diffable? => true,
|
77
|
+
:failure_message_for_should => "message",
|
78
|
+
:matches? => false,
|
79
|
+
:expected => [1],
|
80
|
+
:actual => 2
|
81
|
+
)
|
82
|
+
actual = Object.new
|
83
|
+
|
84
|
+
::Spec::Expectations.should_receive(:fail_with).with("message", 1, 2)
|
74
85
|
|
86
|
+
Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
|
75
87
|
end
|
76
88
|
|
77
89
|
it "calls failure_message if the matcher does not implement failure_message_for_should" do
|
@@ -80,19 +92,19 @@ module Spec
|
|
80
92
|
|
81
93
|
::Spec::Expectations.should_receive(:fail_with).with("message")
|
82
94
|
|
83
|
-
Spec::Expectations::
|
95
|
+
Spec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)
|
84
96
|
|
85
97
|
end
|
86
98
|
end
|
87
99
|
end
|
88
100
|
|
89
|
-
describe
|
101
|
+
describe NegativeExpectationHandler do
|
90
102
|
describe "#handle_matcher" do
|
91
103
|
it "asks the matcher if it doesn't match when the matcher responds to #does_not_match?" do
|
92
104
|
matcher = mock("matcher", :does_not_match? => true, :negative_failure_message => nil)
|
93
105
|
actual = Object.new
|
94
106
|
matcher.should_receive(:does_not_match?).with(actual).and_return(true)
|
95
|
-
Spec::Expectations::
|
107
|
+
Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
|
96
108
|
end
|
97
109
|
|
98
110
|
it "asks the matcher if it matches when the matcher doesn't respond to #does_not_match?" do
|
@@ -100,7 +112,7 @@ module Spec
|
|
100
112
|
actual = Object.new
|
101
113
|
matcher.stub!(:negative_failure_message)
|
102
114
|
matcher.should_receive(:matches?).with(actual).and_return(false)
|
103
|
-
Spec::Expectations::
|
115
|
+
Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
|
104
116
|
end
|
105
117
|
|
106
118
|
it "returns the match value" do
|
@@ -108,7 +120,7 @@ module Spec
|
|
108
120
|
actual = Object.new
|
109
121
|
matcher.should_receive(:matches?).with(actual).and_return(false)
|
110
122
|
matcher.stub!(:negative_failure_message).and_return("ignore")
|
111
|
-
Spec::Expectations::
|
123
|
+
Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher).should be_false
|
112
124
|
end
|
113
125
|
|
114
126
|
|
@@ -118,7 +130,7 @@ module Spec
|
|
118
130
|
|
119
131
|
::Spec::Expectations.should_receive(:fail_with).with("message")
|
120
132
|
|
121
|
-
Spec::Expectations::
|
133
|
+
Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
|
122
134
|
|
123
135
|
end
|
124
136
|
|
@@ -128,13 +140,30 @@ module Spec
|
|
128
140
|
|
129
141
|
::Spec::Expectations.should_receive(:fail_with).with("message")
|
130
142
|
|
131
|
-
Spec::Expectations::
|
143
|
+
Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
|
144
|
+
|
145
|
+
end
|
146
|
+
|
147
|
+
|
148
|
+
it "calls fail if matcher.diffable?" do
|
149
|
+
matcher = mock("matcher",
|
150
|
+
:diffable? => true,
|
151
|
+
:failure_message_for_should_not => "message",
|
152
|
+
:matches? => true,
|
153
|
+
:expected => [1],
|
154
|
+
:actual => 2
|
155
|
+
)
|
156
|
+
actual = Object.new
|
157
|
+
|
158
|
+
::Spec::Expectations.should_receive(:fail_with).with("message", 1, 2)
|
132
159
|
|
160
|
+
Spec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)
|
133
161
|
end
|
162
|
+
|
134
163
|
end
|
135
164
|
end
|
136
165
|
|
137
|
-
describe
|
166
|
+
describe PositiveExpectationHandler do
|
138
167
|
include ExampleExpectations
|
139
168
|
|
140
169
|
it "should handle submitted args" do
|
@@ -31,6 +31,15 @@ module Spec
|
|
31
31
|
#then
|
32
32
|
matcher.failure_message_for_should.should == "expected 5.0 +/- (< 0.5), got 5.51"
|
33
33
|
end
|
34
|
+
|
35
|
+
it "provides a failure message for should tno" do
|
36
|
+
#given
|
37
|
+
matcher = be_close(5.0, 0.5)
|
38
|
+
#when
|
39
|
+
matcher.matches?(5.49)
|
40
|
+
#then
|
41
|
+
matcher.failure_message_for_should_not.should == "expected 5.0 +/- (< 0.5), got 5.49"
|
42
|
+
end
|
34
43
|
it "provides a description" do
|
35
44
|
matcher = be_close(5.0, 0.5)
|
36
45
|
matcher.matches?(5.1)
|
@@ -2,22 +2,24 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
3
3
|
module Spec
|
4
4
|
module Matchers
|
5
|
-
[:
|
5
|
+
[:be_an_instance_of, :be_instance_of].each do |method|
|
6
6
|
describe "actual.should #{method}(expected)" do
|
7
7
|
it "passes if actual is instance of expected class" do
|
8
8
|
5.should send(method, Fixnum)
|
9
9
|
end
|
10
10
|
|
11
11
|
it "fails if actual is instance of subclass of expected class" do
|
12
|
-
lambda { 5.should send(method, Numeric) }.should fail_with(%Q{expected instance of Numeric
|
12
|
+
lambda { 5.should send(method, Numeric) }.should fail_with(%Q{expected 5 to be an instance of Numeric})
|
13
13
|
end
|
14
14
|
|
15
15
|
it "fails with failure message for should unless actual is instance of expected class" do
|
16
|
-
lambda { "foo".should send(method, Array) }.should fail_with(%Q{expected instance of Array
|
16
|
+
lambda { "foo".should send(method, Array) }.should fail_with(%Q{expected "foo" to be an instance of Array})
|
17
17
|
end
|
18
18
|
|
19
19
|
it "provides a description" do
|
20
|
-
|
20
|
+
matcher = be_an_instance_of(Fixnum)
|
21
|
+
matcher.matches?(Numeric)
|
22
|
+
matcher.description.should == "be an instance of Fixnum"
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
3
3
|
module Spec
|
4
4
|
module Matchers
|
5
|
-
[:
|
5
|
+
[:be_a_kind_of, :be_kind_of].each do |method|
|
6
6
|
describe "actual.should #{method}(expected)" do
|
7
7
|
it "passes if actual is instance of expected class" do
|
8
8
|
5.should send(method, Fixnum)
|
@@ -13,11 +13,13 @@ module Spec
|
|
13
13
|
end
|
14
14
|
|
15
15
|
it "fails with failure message for should unless actual is kind of expected class" do
|
16
|
-
lambda { "foo".should send(method, Array) }.should fail_with(%Q{expected kind of Array
|
16
|
+
lambda { "foo".should send(method, Array) }.should fail_with(%Q{expected "foo" to be a kind of Array})
|
17
17
|
end
|
18
18
|
|
19
19
|
it "provides a description" do
|
20
|
-
|
20
|
+
matcher = be_a_kind_of(String)
|
21
|
+
matcher.matches?("this")
|
22
|
+
matcher.description.should == "be a kind of String"
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
@@ -219,7 +219,7 @@ describe "should_not with operators" do
|
|
219
219
|
it "should coach user to stop using operators with should_not" do
|
220
220
|
lambda {
|
221
221
|
5.should_not be < 6
|
222
|
-
}.should raise_error(/not only FAILED,\nit
|
222
|
+
}.should raise_error(/not only FAILED,\nit is a bit confusing./m)
|
223
223
|
end
|
224
224
|
end
|
225
225
|
|
@@ -259,10 +259,6 @@ end
|
|
259
259
|
|
260
260
|
describe "arbitrary predicate with DelegateClass" do
|
261
261
|
it "should access methods defined in the delegating class (LH[#48])" do
|
262
|
-
pending(%{
|
263
|
-
Looks like DelegateClass is delegating #should to the
|
264
|
-
delegate. Not sure how to fix this one. Or if we even should."
|
265
|
-
})
|
266
262
|
require 'delegate'
|
267
263
|
class ArrayDelegate < DelegateClass(Array)
|
268
264
|
def initialize(array)
|
@@ -4,13 +4,22 @@ module Spec
|
|
4
4
|
module Matchers
|
5
5
|
module DSL
|
6
6
|
describe "#create" do
|
7
|
+
it "is deprecated" do
|
8
|
+
Spec.should_receive(:deprecate)
|
9
|
+
mod = Module.new
|
10
|
+
mod.extend Spec::Matchers::DSL
|
11
|
+
mod.create(:foo)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "#define" do
|
7
16
|
it "creates a method that initializes a new matcher with the submitted name and expected arg" do
|
8
17
|
# FIXME - this expects new to be called, but we need something
|
9
18
|
# more robust - that expects new to be called with a specific
|
10
19
|
# block (lambda, proc, whatever)
|
11
20
|
mod = Module.new
|
12
21
|
mod.extend Spec::Matchers::DSL
|
13
|
-
mod.
|
22
|
+
mod.define(:foo)
|
14
23
|
|
15
24
|
obj = Object.new
|
16
25
|
obj.extend mod
|
@@ -4,25 +4,29 @@ module Spec
|
|
4
4
|
module Matchers
|
5
5
|
describe "eql" do
|
6
6
|
it "should match when actual.eql?(expected)" do
|
7
|
-
|
7
|
+
1.should eql(1)
|
8
8
|
end
|
9
|
+
|
9
10
|
it "should not match when !actual.eql?(expected)" do
|
10
|
-
|
11
|
+
1.should_not eql(2)
|
11
12
|
end
|
13
|
+
|
12
14
|
it "should describe itself" do
|
13
15
|
matcher = eql(1)
|
14
16
|
matcher.matches?(1)
|
15
17
|
matcher.description.should == "eql 1"
|
16
18
|
end
|
19
|
+
|
17
20
|
it "should provide message, expected and actual on #failure_message" do
|
18
21
|
matcher = eql("1")
|
19
22
|
matcher.matches?(1)
|
20
|
-
matcher.failure_message_for_should.should ==
|
23
|
+
matcher.failure_message_for_should.should == "\nexpected \"1\"\n got 1\n\n(compared using eql?)\n"
|
21
24
|
end
|
25
|
+
|
22
26
|
it "should provide message, expected and actual on #negative_failure_message" do
|
23
27
|
matcher = eql(1)
|
24
28
|
matcher.matches?(1)
|
25
|
-
matcher.failure_message_for_should_not.should ==
|
29
|
+
matcher.failure_message_for_should_not.should == "\nexpected 1 not to equal 1\n\n(compared using eql?)\n"
|
26
30
|
end
|
27
31
|
end
|
28
32
|
end
|
@@ -4,25 +4,29 @@ module Spec
|
|
4
4
|
module Matchers
|
5
5
|
describe "equal" do
|
6
6
|
it "should match when actual.equal?(expected)" do
|
7
|
-
|
7
|
+
1.should equal(1)
|
8
8
|
end
|
9
|
+
|
9
10
|
it "should not match when !actual.equal?(expected)" do
|
10
|
-
|
11
|
+
1.should_not equal("1")
|
11
12
|
end
|
13
|
+
|
12
14
|
it "should describe itself" do
|
13
15
|
matcher = equal(1)
|
14
16
|
matcher.matches?(1)
|
15
17
|
matcher.description.should == "equal 1"
|
16
18
|
end
|
19
|
+
|
17
20
|
it "should provide message, expected and actual on #failure_message" do
|
18
21
|
matcher = equal("1")
|
19
22
|
matcher.matches?(1)
|
20
|
-
matcher.failure_message_for_should.should ==
|
23
|
+
matcher.failure_message_for_should.should == "\nexpected \"1\"\n got 1\n \n(compared using equal?)\n"
|
21
24
|
end
|
25
|
+
|
22
26
|
it "should provide message, expected and actual on #negative_failure_message" do
|
23
27
|
matcher = equal(1)
|
24
28
|
matcher.matches?(1)
|
25
|
-
matcher.failure_message_for_should_not.should ==
|
29
|
+
matcher.failure_message_for_should_not.should == "\nexpected 1 not to equal 1\n\n(compared using equal?)\n"
|
26
30
|
end
|
27
31
|
end
|
28
32
|
end
|
@@ -35,7 +35,7 @@ describe "should include(with, multiple, args)" do
|
|
35
35
|
it "should fail if target does not include any one of the items" do
|
36
36
|
lambda {
|
37
37
|
[1,2,3].should include(1,2,4)
|
38
|
-
}.should fail_with("expected [1, 2, 3] to include 1, 2 and 4")
|
38
|
+
}.should fail_with("expected [1, 2, 3] to include 1, 2, and 4")
|
39
39
|
end
|
40
40
|
|
41
41
|
it 'should pass if target is a Hash missing any item as a key' do
|
@@ -1,5 +1,19 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
2
|
|
3
|
+
class UnsortableObject
|
4
|
+
def initialize(id)
|
5
|
+
@id = id
|
6
|
+
end
|
7
|
+
|
8
|
+
def inspect
|
9
|
+
@id.to_s
|
10
|
+
end
|
11
|
+
|
12
|
+
def ==(other)
|
13
|
+
false
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
3
17
|
describe "array.should =~ other_array" do
|
4
18
|
it "should pass if target contains all items" do
|
5
19
|
[1,2,3].should =~ [1,2,3]
|
@@ -41,7 +55,7 @@ the extra elements were: [4]
|
|
41
55
|
MESSAGE
|
42
56
|
end
|
43
57
|
|
44
|
-
it "should sort items in the error message" do
|
58
|
+
it "should sort items in the error message if they all respond to <=>" do
|
45
59
|
lambda {
|
46
60
|
[6,2,1,5].should =~ [4,1,2,3]
|
47
61
|
}.should fail_with(<<-MESSAGE)
|
@@ -52,6 +66,17 @@ the extra elements were: [5, 6]
|
|
52
66
|
MESSAGE
|
53
67
|
end
|
54
68
|
|
69
|
+
it "should not sort items in the error message if they don't all respond to <=>" do
|
70
|
+
lambda {
|
71
|
+
[UnsortableObject.new(2), UnsortableObject.new(1)].should =~ [UnsortableObject.new(4), UnsortableObject.new(3)]
|
72
|
+
}.should fail_with(<<-MESSAGE)
|
73
|
+
expected collection contained: [4, 3]
|
74
|
+
actual collection contained: [2, 1]
|
75
|
+
the missing elements were: [4, 3]
|
76
|
+
the extra elements were: [2, 1]
|
77
|
+
MESSAGE
|
78
|
+
end
|
79
|
+
|
55
80
|
it "should accurately report extra elements when there are duplicates" do
|
56
81
|
lambda {
|
57
82
|
[1,1,1,5].should =~ [1,5]
|
@@ -14,7 +14,7 @@ describe "should match(expected)" do
|
|
14
14
|
it "should provide message, expected and actual on failure" do
|
15
15
|
matcher = match(/rings/)
|
16
16
|
matcher.matches?("string")
|
17
|
-
matcher.failure_message_for_should.should ==
|
17
|
+
matcher.failure_message_for_should.should == "expected \"string\" to match /rings/"
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -32,6 +32,6 @@ describe "should_not match(expected)" do
|
|
32
32
|
it "should provide message, expected and actual on failure" do
|
33
33
|
matcher = match(/tri/)
|
34
34
|
matcher.matches?("string")
|
35
|
-
matcher.failure_message_for_should_not.should ==
|
35
|
+
matcher.failure_message_for_should_not.should == "expected \"string\" not to match /tri/"
|
36
36
|
end
|
37
37
|
end
|