rspec-expectations 2.13.0 → 2.14.0.rc1
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/Changelog.md +34 -0
- data/README.md +43 -87
- data/features/README.md +8 -9
- data/features/built_in_matchers/README.md +41 -41
- data/features/built_in_matchers/be_within.feature +3 -3
- data/features/built_in_matchers/expect_change.feature +6 -6
- data/features/built_in_matchers/expect_error.feature +2 -2
- data/features/built_in_matchers/start_with.feature +1 -1
- data/features/built_in_matchers/throw_symbol.feature +11 -11
- data/features/built_in_matchers/yield.feature +18 -3
- data/features/custom_matchers/define_diffable_matcher.feature +1 -1
- data/features/custom_matchers/define_matcher_outside_rspec.feature +6 -6
- data/features/custom_matchers/define_matcher_with_fluent_interface.feature +1 -1
- data/features/customized_message.feature +1 -1
- data/features/support/env.rb +10 -1
- data/features/syntax_configuration.feature +3 -0
- data/features/test_frameworks/test_unit.feature +15 -17
- data/lib/rspec/expectations.rb +1 -1
- data/lib/rspec/expectations/deprecation.rb +12 -33
- data/lib/rspec/expectations/differ.rb +25 -7
- data/lib/rspec/expectations/expectation_target.rb +7 -8
- data/lib/rspec/expectations/extensions/object.rb +2 -12
- data/lib/rspec/expectations/fail_with.rb +11 -1
- data/lib/rspec/expectations/handler.rb +11 -6
- data/lib/rspec/expectations/syntax.rb +2 -2
- data/lib/rspec/expectations/version.rb +1 -1
- data/lib/rspec/matchers.rb +134 -144
- data/lib/rspec/matchers/be_close.rb +1 -1
- data/lib/rspec/matchers/built_in/be_within.rb +1 -1
- data/lib/rspec/matchers/built_in/have.rb +20 -4
- data/lib/rspec/matchers/built_in/raise_error.rb +23 -7
- data/lib/rspec/matchers/built_in/yield.rb +78 -3
- data/lib/rspec/matchers/operator_matcher.rb +1 -1
- data/lib/rspec/matchers/test_unit_integration.rb +11 -0
- data/spec/rspec/expectations/differ_spec.rb +27 -5
- data/spec/rspec/expectations/expectation_target_spec.rb +10 -3
- data/spec/rspec/expectations/extensions/kernel_spec.rb +5 -5
- data/spec/rspec/expectations/fail_with_spec.rb +19 -0
- data/spec/rspec/expectations/handler_spec.rb +42 -21
- data/spec/rspec/expectations/syntax_spec.rb +45 -3
- data/spec/rspec/matchers/be_close_spec.rb +6 -6
- data/spec/rspec/matchers/be_spec.rb +36 -36
- data/spec/rspec/matchers/be_within_spec.rb +4 -0
- data/spec/rspec/matchers/change_spec.rb +6 -6
- data/spec/rspec/matchers/configuration_spec.rb +57 -89
- data/spec/rspec/matchers/description_generation_spec.rb +1 -1
- data/spec/rspec/matchers/exist_spec.rb +9 -9
- data/spec/rspec/matchers/has_spec.rb +1 -1
- data/spec/rspec/matchers/have_spec.rb +12 -2
- data/spec/rspec/matchers/include_matcher_integration_spec.rb +2 -2
- data/spec/rspec/matchers/include_spec.rb +4 -4
- data/spec/rspec/matchers/match_array_spec.rb +1 -1
- data/spec/rspec/matchers/match_spec.rb +1 -1
- data/spec/rspec/matchers/raise_error_spec.rb +189 -99
- data/spec/rspec/matchers/respond_to_spec.rb +4 -4
- data/spec/rspec/matchers/satisfy_spec.rb +1 -1
- data/spec/rspec/matchers/start_with_end_with_spec.rb +2 -2
- data/spec/rspec/matchers/yield_spec.rb +81 -4
- data/spec/spec_helper.rb +1 -1
- metadata +10 -12
@@ -6,9 +6,21 @@ module RSpec
|
|
6
6
|
context "when passing a message to an expectation" do
|
7
7
|
let(:warner) { ::Kernel }
|
8
8
|
|
9
|
+
let(:string_like_object) do
|
10
|
+
Struct.new(:to_str, :to_s).new(*(["Ceci n'est pas une Chaine."]*2))
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:insufficiently_string_like_object) do
|
14
|
+
Struct.new(:to_s).new("Ceci n'est pas une Chaine.")
|
15
|
+
end
|
16
|
+
|
17
|
+
let(:callable_object) do
|
18
|
+
Struct.new(:call).new("Ceci n'est pas une Chaine.")
|
19
|
+
end
|
20
|
+
|
9
21
|
describe "expect(...).to" do
|
10
22
|
it "prints a warning when the message object isn't a String" do
|
11
|
-
warner.should_receive(:warn).with
|
23
|
+
warner.should_receive(:warn).with(/ignoring.*message/)
|
12
24
|
expect(3).to eq(3), :not_a_string
|
13
25
|
end
|
14
26
|
|
@@ -16,11 +28,26 @@ module RSpec
|
|
16
28
|
warner.should_not_receive(:warn)
|
17
29
|
expect(3).to eq(3), "a string"
|
18
30
|
end
|
31
|
+
|
32
|
+
it "doesn't print a warning when message responds to to_str" do
|
33
|
+
warner.should_not_receive(:warn)
|
34
|
+
expect(3).to eq(3), string_like_object
|
35
|
+
end
|
36
|
+
|
37
|
+
it "prints a warning when the message object handles to_s but not to_str" do
|
38
|
+
warner.should_receive(:warn).with(/ignoring.*message/)
|
39
|
+
expect(3).to eq(3), insufficiently_string_like_object
|
40
|
+
end
|
41
|
+
|
42
|
+
it "doesn't print a warning when message responds to call" do
|
43
|
+
warner.should_not_receive(:warn)
|
44
|
+
expect(3).to eq(3), callable_object
|
45
|
+
end
|
19
46
|
end
|
20
47
|
|
21
|
-
describe "expect(...).
|
48
|
+
describe "expect(...).not_to" do
|
22
49
|
it "prints a warning when the message object isn't a String" do
|
23
|
-
warner.should_receive(:warn).with
|
50
|
+
warner.should_receive(:warn).with(/ignoring.*message/)
|
24
51
|
expect(3).not_to eq(4), :not_a_string
|
25
52
|
end
|
26
53
|
|
@@ -28,6 +55,21 @@ module RSpec
|
|
28
55
|
warner.should_not_receive(:warn)
|
29
56
|
expect(3).not_to eq(4), "a string"
|
30
57
|
end
|
58
|
+
|
59
|
+
it "doesn't print a warning when message responds to to_str" do
|
60
|
+
warner.should_not_receive(:warn)
|
61
|
+
expect(3).not_to eq(4), string_like_object
|
62
|
+
end
|
63
|
+
|
64
|
+
it "prints a warning when the message object handles to_s but not to_str" do
|
65
|
+
warner.should_receive(:warn).with(/ignoring.*message/)
|
66
|
+
expect(3).not_to eq(4), insufficiently_string_like_object
|
67
|
+
end
|
68
|
+
|
69
|
+
it "doesn't print a warning when message responds to call" do
|
70
|
+
warner.should_not_receive(:warn)
|
71
|
+
expect(3).not_to eq(4), callable_object
|
72
|
+
end
|
31
73
|
end
|
32
74
|
end
|
33
75
|
|
@@ -4,17 +4,17 @@ module RSpec
|
|
4
4
|
module Matchers
|
5
5
|
describe "expect(actual).to be_close(expected, delta)" do
|
6
6
|
before(:each) do
|
7
|
-
RSpec.
|
7
|
+
allow(RSpec).to receive(:deprecate)
|
8
8
|
end
|
9
9
|
|
10
|
-
it "
|
11
|
-
|
12
|
-
be_within_matcher.should_receive(:of).with(3.0)
|
10
|
+
it "is deprecated" do
|
11
|
+
expect(RSpec).to receive(:deprecate).with(/be_close.*/, :replacement => "be_within(0.5).of(3.0)")
|
13
12
|
be_close(3.0, 0.5)
|
14
13
|
end
|
15
14
|
|
16
|
-
it "
|
17
|
-
|
15
|
+
it "delegates to be_within(delta).of(expected)" do
|
16
|
+
should_receive(:be_within).with(0.5).and_return( be_within_matcher = double )
|
17
|
+
be_within_matcher.should_receive(:of).with(3.0)
|
18
18
|
be_close(3.0, 0.5)
|
19
19
|
end
|
20
20
|
end
|
@@ -2,24 +2,24 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "expect(...).to be_predicate" do
|
4
4
|
it "passes when actual returns true for :predicate?" do
|
5
|
-
actual =
|
5
|
+
actual = double("actual", :happy? => true)
|
6
6
|
expect(actual).to be_happy
|
7
7
|
end
|
8
8
|
|
9
9
|
it "passes when actual returns true for :predicates? (present tense)" do
|
10
|
-
actual =
|
10
|
+
actual = double("actual", :exists? => true, :exist? => true)
|
11
11
|
expect(actual).to be_exist
|
12
12
|
end
|
13
13
|
|
14
14
|
it "fails when actual returns false for :predicate?" do
|
15
|
-
actual =
|
15
|
+
actual = double("actual", :happy? => false)
|
16
16
|
expect {
|
17
17
|
expect(actual).to be_happy
|
18
18
|
}.to fail_with("expected happy? to return true, got false")
|
19
19
|
end
|
20
20
|
|
21
21
|
it "fails when actual returns false for :predicate?" do
|
22
|
-
actual =
|
22
|
+
actual = double("actual", :happy? => nil)
|
23
23
|
expect {
|
24
24
|
expect(actual).to be_happy
|
25
25
|
}.to fail_with("expected happy? to return true, got nil")
|
@@ -32,7 +32,7 @@ describe "expect(...).to be_predicate" do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it "fails on error other than NameError" do
|
35
|
-
actual =
|
35
|
+
actual = double("actual")
|
36
36
|
actual.should_receive(:foo?).and_raise("aaaah")
|
37
37
|
expect {
|
38
38
|
expect(actual).to be_foo
|
@@ -50,17 +50,17 @@ end
|
|
50
50
|
|
51
51
|
describe "expect(...).not_to be_predicate" do
|
52
52
|
it "passes when actual returns false for :sym?" do
|
53
|
-
actual =
|
53
|
+
actual = double("actual", :happy? => false)
|
54
54
|
expect(actual).not_to be_happy
|
55
55
|
end
|
56
56
|
|
57
57
|
it "passes when actual returns nil for :sym?" do
|
58
|
-
actual =
|
58
|
+
actual = double("actual", :happy? => nil)
|
59
59
|
expect(actual).not_to be_happy
|
60
60
|
end
|
61
61
|
|
62
62
|
it "fails when actual returns true for :sym?" do
|
63
|
-
actual =
|
63
|
+
actual = double("actual", :happy? => true)
|
64
64
|
expect {
|
65
65
|
expect(actual).not_to be_happy
|
66
66
|
}.to fail_with("expected happy? to return false, got true")
|
@@ -75,13 +75,13 @@ end
|
|
75
75
|
|
76
76
|
describe "expect(...).to be_predicate(*args)" do
|
77
77
|
it "passes when actual returns true for :predicate?(*args)" do
|
78
|
-
actual =
|
78
|
+
actual = double("actual")
|
79
79
|
actual.should_receive(:older_than?).with(3).and_return(true)
|
80
80
|
expect(actual).to be_older_than(3)
|
81
81
|
end
|
82
82
|
|
83
83
|
it "fails when actual returns false for :predicate?(*args)" do
|
84
|
-
actual =
|
84
|
+
actual = double("actual")
|
85
85
|
actual.should_receive(:older_than?).with(3).and_return(false)
|
86
86
|
expect {
|
87
87
|
expect(actual).to be_older_than(3)
|
@@ -97,13 +97,13 @@ end
|
|
97
97
|
|
98
98
|
describe "expect(...).not_to be_predicate(*args)" do
|
99
99
|
it "passes when actual returns false for :predicate?(*args)" do
|
100
|
-
actual =
|
100
|
+
actual = double("actual")
|
101
101
|
actual.should_receive(:older_than?).with(3).and_return(false)
|
102
102
|
expect(actual).not_to be_older_than(3)
|
103
103
|
end
|
104
104
|
|
105
105
|
it "fails when actual returns true for :predicate?(*args)" do
|
106
|
-
actual =
|
106
|
+
actual = double("actual")
|
107
107
|
actual.should_receive(:older_than?).with(3).and_return(true)
|
108
108
|
expect {
|
109
109
|
expect(actual).not_to be_older_than(3)
|
@@ -119,16 +119,16 @@ end
|
|
119
119
|
|
120
120
|
describe "expect(...).to be_predicate(&block)" do
|
121
121
|
it "passes when actual returns true for :predicate?(&block)" do
|
122
|
-
actual =
|
123
|
-
delegate =
|
122
|
+
actual = double("actual")
|
123
|
+
delegate = double("delegate")
|
124
124
|
actual.should_receive(:happy?).and_yield
|
125
125
|
delegate.should_receive(:check_happy).and_return(true)
|
126
126
|
expect(actual).to be_happy { delegate.check_happy }
|
127
127
|
end
|
128
128
|
|
129
129
|
it "fails when actual returns false for :predicate?(&block)" do
|
130
|
-
actual =
|
131
|
-
delegate =
|
130
|
+
actual = double("actual")
|
131
|
+
delegate = double("delegate")
|
132
132
|
actual.should_receive(:happy?).and_yield
|
133
133
|
delegate.should_receive(:check_happy).and_return(false)
|
134
134
|
expect {
|
@@ -137,7 +137,7 @@ describe "expect(...).to be_predicate(&block)" do
|
|
137
137
|
end
|
138
138
|
|
139
139
|
it "fails when actual does not respond to :predicate?" do
|
140
|
-
delegate =
|
140
|
+
delegate = double("delegate", :check_happy => true)
|
141
141
|
expect {
|
142
142
|
expect(Object.new).to be_happy { delegate.check_happy }
|
143
143
|
}.to raise_error(NameError)
|
@@ -146,16 +146,16 @@ end
|
|
146
146
|
|
147
147
|
describe "expect(...).not_to be_predicate(&block)" do
|
148
148
|
it "passes when actual returns false for :predicate?(&block)" do
|
149
|
-
actual =
|
150
|
-
delegate =
|
149
|
+
actual = double("actual")
|
150
|
+
delegate = double("delegate")
|
151
151
|
actual.should_receive(:happy?).and_yield
|
152
152
|
delegate.should_receive(:check_happy).and_return(false)
|
153
153
|
expect(actual).not_to be_happy { delegate.check_happy }
|
154
154
|
end
|
155
155
|
|
156
156
|
it "fails when actual returns true for :predicate?(&block)" do
|
157
|
-
actual =
|
158
|
-
delegate =
|
157
|
+
actual = double("actual")
|
158
|
+
delegate = double("delegate")
|
159
159
|
actual.should_receive(:happy?).and_yield
|
160
160
|
delegate.should_receive(:check_happy).and_return(true)
|
161
161
|
expect {
|
@@ -164,7 +164,7 @@ describe "expect(...).not_to be_predicate(&block)" do
|
|
164
164
|
end
|
165
165
|
|
166
166
|
it "fails when actual does not respond to :predicate?" do
|
167
|
-
delegate =
|
167
|
+
delegate = double("delegate", :check_happy => true)
|
168
168
|
expect {
|
169
169
|
expect(Object.new).not_to be_happy { delegate.check_happy }
|
170
170
|
}.to raise_error(NameError)
|
@@ -173,16 +173,16 @@ end
|
|
173
173
|
|
174
174
|
describe "expect(...).to be_predicate(*args, &block)" do
|
175
175
|
it "passes when actual returns true for :predicate?(*args, &block)" do
|
176
|
-
actual =
|
177
|
-
delegate =
|
176
|
+
actual = double("actual")
|
177
|
+
delegate = double("delegate")
|
178
178
|
actual.should_receive(:older_than?).with(3).and_yield(3)
|
179
179
|
delegate.should_receive(:check_older_than).with(3).and_return(true)
|
180
180
|
expect(actual).to be_older_than(3) { |age| delegate.check_older_than(age) }
|
181
181
|
end
|
182
182
|
|
183
183
|
it "fails when actual returns false for :predicate?(*args, &block)" do
|
184
|
-
actual =
|
185
|
-
delegate =
|
184
|
+
actual = double("actual")
|
185
|
+
delegate = double("delegate")
|
186
186
|
actual.should_receive(:older_than?).with(3).and_yield(3)
|
187
187
|
delegate.should_receive(:check_older_than).with(3).and_return(false)
|
188
188
|
expect {
|
@@ -191,7 +191,7 @@ describe "expect(...).to be_predicate(*args, &block)" do
|
|
191
191
|
end
|
192
192
|
|
193
193
|
it "fails when actual does not respond to :predicate?" do
|
194
|
-
delegate =
|
194
|
+
delegate = double("delegate", :check_older_than => true)
|
195
195
|
expect {
|
196
196
|
expect(Object.new).to be_older_than(3) { |age| delegate.check_older_than(age) }
|
197
197
|
}.to raise_error(NameError)
|
@@ -200,16 +200,16 @@ end
|
|
200
200
|
|
201
201
|
describe "expect(...).not_to be_predicate(*args, &block)" do
|
202
202
|
it "passes when actual returns false for :predicate?(*args, &block)" do
|
203
|
-
actual =
|
204
|
-
delegate =
|
203
|
+
actual = double("actual")
|
204
|
+
delegate = double("delegate")
|
205
205
|
actual.should_receive(:older_than?).with(3).and_yield(3)
|
206
206
|
delegate.should_receive(:check_older_than).with(3).and_return(false)
|
207
207
|
expect(actual).not_to be_older_than(3) { |age| delegate.check_older_than(age) }
|
208
208
|
end
|
209
209
|
|
210
210
|
it "fails when actual returns true for :predicate?(*args, &block)" do
|
211
|
-
actual =
|
212
|
-
delegate =
|
211
|
+
actual = double("actual")
|
212
|
+
delegate = double("delegate")
|
213
213
|
actual.should_receive(:older_than?).with(3).and_yield(3)
|
214
214
|
delegate.should_receive(:check_older_than).with(3).and_return(true)
|
215
215
|
expect {
|
@@ -218,7 +218,7 @@ describe "expect(...).not_to be_predicate(*args, &block)" do
|
|
218
218
|
end
|
219
219
|
|
220
220
|
it "fails when actual does not respond to :predicate?" do
|
221
|
-
delegate =
|
221
|
+
delegate = double("delegate", :check_older_than => true)
|
222
222
|
expect {
|
223
223
|
expect(Object.new).not_to be_older_than(3) { |age| delegate.check_older_than(age) }
|
224
224
|
}.to raise_error(NameError)
|
@@ -465,10 +465,10 @@ end
|
|
465
465
|
|
466
466
|
describe "'expect(...).to be' with operator" do
|
467
467
|
it "includes 'be' in the description" do
|
468
|
-
expect((be > 6).description).to match
|
469
|
-
expect((be >= 6).description).to match
|
470
|
-
expect((be <= 6).description).to match
|
471
|
-
expect((be < 6).description).to match
|
468
|
+
expect((be > 6).description).to match(/be > 6/)
|
469
|
+
expect((be >= 6).description).to match(/be >= 6/)
|
470
|
+
expect((be <= 6).description).to match(/be <= 6/)
|
471
|
+
expect((be < 6).description).to match(/be < 6/)
|
472
472
|
end
|
473
473
|
end
|
474
474
|
|
@@ -27,6 +27,10 @@ module RSpec
|
|
27
27
|
expect(5.5).to be_within(0.5).of(5.0)
|
28
28
|
end
|
29
29
|
|
30
|
+
it "passes with integer arguments that are near each other" do
|
31
|
+
expect(1.0001).to be_within(5).percent_of(1)
|
32
|
+
end
|
33
|
+
|
30
34
|
it "fails when actual < (expected - delta)" do
|
31
35
|
expect {
|
32
36
|
expect(4.49).to be_within(0.5).of(5.0)
|
@@ -156,12 +156,12 @@ describe "expect { ... }.not_to change(actual, message)" do
|
|
156
156
|
end
|
157
157
|
|
158
158
|
it "passes when actual is not modified by the block" do
|
159
|
-
expect { }.
|
159
|
+
expect { }.not_to change(@instance, :some_value)
|
160
160
|
end
|
161
161
|
|
162
162
|
it "fails when actual is not modified by the block" do
|
163
163
|
expect do
|
164
|
-
expect {@instance.some_value = 6}.
|
164
|
+
expect {@instance.some_value = 6}.not_to change(@instance, :some_value)
|
165
165
|
end.to fail_with("some_value should not have changed, but did change from 5 to 6")
|
166
166
|
end
|
167
167
|
end
|
@@ -206,18 +206,18 @@ describe "expect { ... }.not_to change { block }" do
|
|
206
206
|
end
|
207
207
|
|
208
208
|
it "passes when actual is modified by the block" do
|
209
|
-
expect {}.
|
209
|
+
expect {}.not_to change{ @instance.some_value }
|
210
210
|
end
|
211
211
|
|
212
212
|
it "fails when actual is not modified by the block" do
|
213
213
|
expect do
|
214
|
-
expect {@instance.some_value = 6}.
|
214
|
+
expect {@instance.some_value = 6}.not_to change { @instance.some_value }
|
215
215
|
end.to fail_with("result should not have changed, but did change from 5 to 6")
|
216
216
|
end
|
217
217
|
|
218
218
|
it "warns if passed a block using do/end instead of {}" do
|
219
219
|
expect do
|
220
|
-
expect {}.
|
220
|
+
expect {}.not_to change do; end
|
221
221
|
end.to raise_error(SyntaxError, /block passed to should or should_not/)
|
222
222
|
end
|
223
223
|
end
|
@@ -537,6 +537,6 @@ describe RSpec::Matchers::BuiltIn::Change do
|
|
537
537
|
|
538
538
|
expect {
|
539
539
|
expect { @instance.some_value = "cat" }.to change(@instance, :some_value)
|
540
|
-
}.
|
540
|
+
}.not_to raise_error
|
541
541
|
end
|
542
542
|
end
|
@@ -22,7 +22,12 @@ module RSpec
|
|
22
22
|
end
|
23
23
|
|
24
24
|
before do
|
25
|
-
RSpec.configuration.
|
25
|
+
@old_patterns = RSpec.configuration.backtrace_exclusion_patterns
|
26
|
+
RSpec.configuration.backtrace_exclusion_patterns = [/clean-me/]
|
27
|
+
end
|
28
|
+
|
29
|
+
after do
|
30
|
+
RSpec.configuration.backtrace_exclusion_patterns = @old_patterns
|
26
31
|
end
|
27
32
|
|
28
33
|
it "defaults to rspec-core's backtrace formatter when rspec-core is loaded" do
|
@@ -36,7 +41,7 @@ module RSpec
|
|
36
41
|
end
|
37
42
|
|
38
43
|
it "can be set to another backtrace formatter" do
|
39
|
-
config.backtrace_formatter =
|
44
|
+
config.backtrace_formatter = double(:format_backtrace => ['a'])
|
40
45
|
expect(formatted_backtrace).to eq(['a'])
|
41
46
|
end
|
42
47
|
end
|
@@ -60,134 +65,97 @@ module RSpec
|
|
60
65
|
end
|
61
66
|
|
62
67
|
shared_examples_for "configuring the expectation syntax" do
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
# On jRuby we just re-enable both syntaxes at the end of the example;
|
70
|
-
# however, this is a generally inferior approach because it depends on
|
71
|
-
# the code-under-test working properly; if it doesn't work properly,
|
72
|
-
# it could leave things in a "broken" state where tons of other examples fail.
|
73
|
-
if RUBY_PLATFORM == "java"
|
74
|
-
def sandboxed
|
75
|
-
orig_syntax = RSpec::Matchers.configuration.syntax
|
76
|
-
yield
|
77
|
-
ensure
|
78
|
-
configure_syntax(orig_syntax)
|
79
|
-
end
|
80
|
-
else
|
81
|
-
include InSubProcess
|
82
|
-
alias sandboxed in_sub_process
|
68
|
+
before do
|
69
|
+
@orig_syntax = RSpec::Matchers.configuration.syntax
|
70
|
+
end
|
71
|
+
|
72
|
+
after do
|
73
|
+
configure_syntax(@orig_syntax)
|
83
74
|
end
|
84
75
|
|
85
76
|
it 'can limit the syntax to :should' do
|
86
|
-
|
87
|
-
|
88
|
-
configured_syntax.should eq([:should])
|
77
|
+
configure_syntax :should
|
78
|
+
configured_syntax.should eq([:should])
|
89
79
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
end
|
80
|
+
3.should eq(3)
|
81
|
+
3.should_not eq(4)
|
82
|
+
lambda { expect(6).to eq(6) }.should raise_error(NameError)
|
94
83
|
end
|
95
84
|
|
96
85
|
it 'is a no-op when configured to :should twice' do
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
stub(:method_added).
|
102
|
-
and_raise("no methods should be added here")
|
103
|
-
|
104
|
-
configure_syntax :should
|
105
|
-
end
|
86
|
+
configure_syntax :should
|
87
|
+
Expectations::Syntax.default_should_host.should_not_receive(:method_added)
|
88
|
+
configure_syntax :should
|
89
|
+
RSpec::Mocks.verify # because configure_syntax is called again in an after hook
|
106
90
|
end
|
107
91
|
|
108
92
|
it 'can limit the syntax to :expect' do
|
109
|
-
|
110
|
-
|
111
|
-
expect(configured_syntax).to eq([:expect])
|
93
|
+
configure_syntax :expect
|
94
|
+
expect(configured_syntax).to eq([:expect])
|
112
95
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
end
|
96
|
+
expect(3).to eq(3)
|
97
|
+
expect { 3.should eq(3) }.to raise_error(NameError)
|
98
|
+
expect { 3.should_not eq(3) }.to raise_error(NameError)
|
117
99
|
end
|
118
100
|
|
119
101
|
it 'is a no-op when configured to :expect twice' do
|
120
|
-
|
121
|
-
RSpec::Matchers.stub(:method_added).and_raise("no methods should be added here")
|
102
|
+
RSpec::Matchers.stub(:method_added).and_raise("no methods should be added here")
|
122
103
|
|
123
|
-
|
124
|
-
|
125
|
-
end
|
104
|
+
configure_syntax :expect
|
105
|
+
configure_syntax :expect
|
126
106
|
end
|
127
107
|
|
128
108
|
it 'can re-enable the :should syntax' do
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
configured_syntax.should eq([:should, :expect])
|
109
|
+
configure_syntax :expect
|
110
|
+
configure_syntax [:should, :expect]
|
111
|
+
configured_syntax.should eq([:should, :expect])
|
133
112
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
end
|
113
|
+
3.should eq(3)
|
114
|
+
3.should_not eq(4)
|
115
|
+
expect(3).to eq(3)
|
138
116
|
end
|
139
117
|
|
140
118
|
it 'can re-enable the :expect syntax' do
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
configured_syntax.should eq([:should, :expect])
|
119
|
+
configure_syntax :should
|
120
|
+
configure_syntax [:should, :expect]
|
121
|
+
configured_syntax.should eq([:should, :expect])
|
145
122
|
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
end
|
123
|
+
3.should eq(3)
|
124
|
+
3.should_not eq(4)
|
125
|
+
expect(3).to eq(3)
|
150
126
|
end
|
151
127
|
|
152
128
|
it 'does not add the deprecated #should to ExpectationTarget when only :should is enabled' do
|
153
129
|
et = Expectations::ExpectationTarget
|
154
130
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
et.new(Proc.new {}).should_not be_a(Proc)
|
159
|
-
end
|
131
|
+
configure_syntax :should
|
132
|
+
et.new(Proc.new {}).should be_an(et)
|
133
|
+
et.new(Proc.new {}).should_not be_a(Proc)
|
160
134
|
end
|
161
135
|
|
162
136
|
it 'does not add the deprecated #should to ExpectationTarget when only :expect is enabled' do
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
expect(expect(3)).not_to respond_to(:should_not)
|
167
|
-
end
|
137
|
+
configure_syntax :expect
|
138
|
+
expect(expect(3)).not_to respond_to(:should)
|
139
|
+
expect(expect(3)).not_to respond_to(:should_not)
|
168
140
|
end
|
169
141
|
|
170
142
|
context 'when both :expect and :should are enabled' do
|
171
|
-
before { RSpec.
|
143
|
+
before { allow(RSpec).to receive(:deprecate) }
|
172
144
|
|
173
145
|
it 'allows `expect {}.should` to be used' do
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
expect { }.should_not raise_error
|
178
|
-
end
|
146
|
+
configure_syntax [:should, :expect]
|
147
|
+
expect { raise "boom" }.should raise_error("boom")
|
148
|
+
expect { }.should_not raise_error
|
179
149
|
end
|
180
150
|
|
181
151
|
it 'prints a deprecation notice when `expect {}.should` is used' do
|
182
|
-
|
183
|
-
configure_syntax [:should, :expect]
|
152
|
+
configure_syntax [:should, :expect]
|
184
153
|
|
185
|
-
|
186
|
-
|
154
|
+
expect(RSpec).to receive(:deprecate)
|
155
|
+
expect { raise "boom" }.should raise_error("boom")
|
187
156
|
|
188
|
-
|
189
|
-
|
190
|
-
end
|
157
|
+
expect(RSpec).to receive(:deprecate)
|
158
|
+
expect { }.should_not raise_error
|
191
159
|
end
|
192
160
|
end
|
193
161
|
end
|