rspec 1.2.2 → 1.2.3
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/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
|