rspec-expectations 2.11.3 → 3.11.0

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.
Files changed (152) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/.document +1 -1
  4. data/.yardopts +1 -1
  5. data/Changelog.md +1026 -21
  6. data/{License.txt → LICENSE.md} +5 -3
  7. data/README.md +174 -78
  8. data/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  9. data/lib/rspec/expectations/configuration.rb +230 -0
  10. data/lib/rspec/expectations/expectation_target.rb +130 -55
  11. data/lib/rspec/expectations/fail_with.rb +17 -33
  12. data/lib/rspec/expectations/failure_aggregator.rb +212 -0
  13. data/lib/rspec/expectations/handler.rb +163 -29
  14. data/lib/rspec/expectations/minitest_integration.rb +58 -0
  15. data/lib/rspec/expectations/syntax.rb +68 -54
  16. data/lib/rspec/expectations/version.rb +1 -1
  17. data/lib/rspec/expectations.rb +59 -24
  18. data/lib/rspec/matchers/aliased_matcher.rb +116 -0
  19. data/lib/rspec/matchers/built_in/all.rb +86 -0
  20. data/lib/rspec/matchers/built_in/base_matcher.rb +150 -20
  21. data/lib/rspec/matchers/built_in/be.rb +115 -109
  22. data/lib/rspec/matchers/built_in/be_between.rb +77 -0
  23. data/lib/rspec/matchers/built_in/be_instance_of.rb +16 -1
  24. data/lib/rspec/matchers/built_in/be_kind_of.rb +10 -1
  25. data/lib/rspec/matchers/built_in/be_within.rb +43 -17
  26. data/lib/rspec/matchers/built_in/change.rb +392 -75
  27. data/lib/rspec/matchers/built_in/compound.rb +290 -0
  28. data/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  29. data/lib/rspec/matchers/built_in/count_expectation.rb +169 -0
  30. data/lib/rspec/matchers/built_in/cover.rb +3 -0
  31. data/lib/rspec/matchers/built_in/eq.rb +26 -8
  32. data/lib/rspec/matchers/built_in/eql.rb +19 -8
  33. data/lib/rspec/matchers/built_in/equal.rb +56 -19
  34. data/lib/rspec/matchers/built_in/exist.rb +74 -10
  35. data/lib/rspec/matchers/built_in/has.rb +141 -22
  36. data/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  37. data/lib/rspec/matchers/built_in/include.rb +175 -20
  38. data/lib/rspec/matchers/built_in/match.rb +95 -1
  39. data/lib/rspec/matchers/built_in/operators.rb +128 -0
  40. data/lib/rspec/matchers/built_in/output.rb +207 -0
  41. data/lib/rspec/matchers/built_in/raise_error.rb +212 -38
  42. data/lib/rspec/matchers/built_in/respond_to.rb +155 -29
  43. data/lib/rspec/matchers/built_in/satisfy.rb +39 -9
  44. data/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  45. data/lib/rspec/matchers/built_in/throw_symbol.rb +58 -14
  46. data/lib/rspec/matchers/built_in/yield.rb +252 -98
  47. data/lib/rspec/matchers/built_in.rb +47 -33
  48. data/lib/rspec/matchers/composable.rb +171 -0
  49. data/lib/rspec/matchers/dsl.rb +530 -10
  50. data/lib/rspec/matchers/english_phrasing.rb +58 -0
  51. data/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
  52. data/lib/rspec/matchers/fail_matchers.rb +42 -0
  53. data/lib/rspec/matchers/generated_descriptions.rb +15 -10
  54. data/lib/rspec/matchers/matcher_delegator.rb +35 -0
  55. data/lib/rspec/matchers/matcher_protocol.rb +105 -0
  56. data/lib/rspec/matchers.rb +604 -252
  57. data.tar.gz.sig +0 -0
  58. metadata +178 -278
  59. metadata.gz.sig +0 -0
  60. data/features/README.md +0 -49
  61. data/features/Upgrade.md +0 -53
  62. data/features/built_in_matchers/README.md +0 -90
  63. data/features/built_in_matchers/be.feature +0 -173
  64. data/features/built_in_matchers/be_within.feature +0 -46
  65. data/features/built_in_matchers/cover.feature +0 -45
  66. data/features/built_in_matchers/end_with.feature +0 -46
  67. data/features/built_in_matchers/equality.feature +0 -145
  68. data/features/built_in_matchers/exist.feature +0 -43
  69. data/features/built_in_matchers/expect_change.feature +0 -59
  70. data/features/built_in_matchers/expect_error.feature +0 -138
  71. data/features/built_in_matchers/have.feature +0 -103
  72. data/features/built_in_matchers/include.feature +0 -121
  73. data/features/built_in_matchers/match.feature +0 -50
  74. data/features/built_in_matchers/operators.feature +0 -221
  75. data/features/built_in_matchers/predicates.feature +0 -128
  76. data/features/built_in_matchers/respond_to.feature +0 -78
  77. data/features/built_in_matchers/satisfy.feature +0 -31
  78. data/features/built_in_matchers/start_with.feature +0 -46
  79. data/features/built_in_matchers/throw_symbol.feature +0 -85
  80. data/features/built_in_matchers/types.feature +0 -114
  81. data/features/built_in_matchers/yield.feature +0 -146
  82. data/features/custom_matchers/access_running_example.feature +0 -53
  83. data/features/custom_matchers/define_diffable_matcher.feature +0 -27
  84. data/features/custom_matchers/define_matcher.feature +0 -340
  85. data/features/custom_matchers/define_matcher_outside_rspec.feature +0 -38
  86. data/features/custom_matchers/define_matcher_with_fluent_interface.feature +0 -24
  87. data/features/customized_message.feature +0 -22
  88. data/features/diffing.feature +0 -85
  89. data/features/implicit_docstrings.feature +0 -52
  90. data/features/step_definitions/additional_cli_steps.rb +0 -22
  91. data/features/support/env.rb +0 -5
  92. data/features/syntax_configuration.feature +0 -68
  93. data/features/test_frameworks/test_unit.feature +0 -46
  94. data/lib/rspec/expectations/deprecation.rb +0 -38
  95. data/lib/rspec/expectations/differ.rb +0 -81
  96. data/lib/rspec/expectations/errors.rb +0 -9
  97. data/lib/rspec/expectations/extensions/array.rb +0 -9
  98. data/lib/rspec/expectations/extensions/object.rb +0 -39
  99. data/lib/rspec/expectations/extensions.rb +0 -2
  100. data/lib/rspec/matchers/be_close.rb +0 -9
  101. data/lib/rspec/matchers/built_in/have.rb +0 -108
  102. data/lib/rspec/matchers/built_in/match_array.rb +0 -45
  103. data/lib/rspec/matchers/built_in/start_and_end_with.rb +0 -48
  104. data/lib/rspec/matchers/compatibility.rb +0 -14
  105. data/lib/rspec/matchers/configuration.rb +0 -66
  106. data/lib/rspec/matchers/extensions/instance_eval_with_args.rb +0 -39
  107. data/lib/rspec/matchers/matcher.rb +0 -299
  108. data/lib/rspec/matchers/method_missing.rb +0 -12
  109. data/lib/rspec/matchers/operator_matcher.rb +0 -84
  110. data/lib/rspec/matchers/pretty.rb +0 -60
  111. data/lib/rspec-expectations.rb +0 -1
  112. data/spec/rspec/expectations/differ_spec.rb +0 -153
  113. data/spec/rspec/expectations/expectation_target_spec.rb +0 -65
  114. data/spec/rspec/expectations/extensions/kernel_spec.rb +0 -67
  115. data/spec/rspec/expectations/fail_with_spec.rb +0 -70
  116. data/spec/rspec/expectations/handler_spec.rb +0 -206
  117. data/spec/rspec/matchers/base_matcher_spec.rb +0 -60
  118. data/spec/rspec/matchers/be_close_spec.rb +0 -22
  119. data/spec/rspec/matchers/be_instance_of_spec.rb +0 -40
  120. data/spec/rspec/matchers/be_kind_of_spec.rb +0 -37
  121. data/spec/rspec/matchers/be_spec.rb +0 -452
  122. data/spec/rspec/matchers/be_within_spec.rb +0 -80
  123. data/spec/rspec/matchers/change_spec.rb +0 -528
  124. data/spec/rspec/matchers/configuration_spec.rb +0 -202
  125. data/spec/rspec/matchers/cover_spec.rb +0 -69
  126. data/spec/rspec/matchers/description_generation_spec.rb +0 -176
  127. data/spec/rspec/matchers/dsl_spec.rb +0 -57
  128. data/spec/rspec/matchers/eq_spec.rb +0 -54
  129. data/spec/rspec/matchers/eql_spec.rb +0 -41
  130. data/spec/rspec/matchers/equal_spec.rb +0 -60
  131. data/spec/rspec/matchers/exist_spec.rb +0 -110
  132. data/spec/rspec/matchers/has_spec.rb +0 -118
  133. data/spec/rspec/matchers/have_spec.rb +0 -461
  134. data/spec/rspec/matchers/include_spec.rb +0 -367
  135. data/spec/rspec/matchers/match_array_spec.rb +0 -124
  136. data/spec/rspec/matchers/match_spec.rb +0 -61
  137. data/spec/rspec/matchers/matcher_spec.rb +0 -434
  138. data/spec/rspec/matchers/matchers_spec.rb +0 -31
  139. data/spec/rspec/matchers/method_missing_spec.rb +0 -24
  140. data/spec/rspec/matchers/operator_matcher_spec.rb +0 -221
  141. data/spec/rspec/matchers/raise_error_spec.rb +0 -344
  142. data/spec/rspec/matchers/respond_to_spec.rb +0 -295
  143. data/spec/rspec/matchers/satisfy_spec.rb +0 -44
  144. data/spec/rspec/matchers/start_with_end_with_spec.rb +0 -182
  145. data/spec/rspec/matchers/throw_symbol_spec.rb +0 -116
  146. data/spec/rspec/matchers/yield_spec.rb +0 -402
  147. data/spec/spec_helper.rb +0 -27
  148. data/spec/support/classes.rb +0 -56
  149. data/spec/support/in_sub_process.rb +0 -31
  150. data/spec/support/matchers.rb +0 -22
  151. data/spec/support/ruby_version.rb +0 -10
  152. data/spec/support/shared_examples.rb +0 -13
@@ -1,202 +0,0 @@
1
- require 'spec_helper'
2
- require 'delegate'
3
-
4
- module RSpec
5
- module Matchers
6
- describe ".configuration" do
7
- it 'returns a memoized configuration instance' do
8
- RSpec::Matchers.configuration.should be_a(RSpec::Matchers::Configuration)
9
- RSpec::Matchers.configuration.should be(RSpec::Matchers.configuration)
10
- end
11
-
12
- context 'on an interpreter that does not provide BasicObject', :unless => defined?(::BasicObject) do
13
- before { RSpec::Expectations::Syntax.disable_should(Delegator) }
14
-
15
- let(:klass) do
16
- Class.new(SimpleDelegator) do
17
- def delegated?; true; end
18
- end
19
- end
20
-
21
- let(:instance) { klass.new(Object.new) }
22
-
23
- it 'provides a means to manually add it Delegator' do
24
- instance.should_not respond_to(:delegated?) # because #should is being delegated...
25
- RSpec::Matchers.configuration.add_should_and_should_not_to Delegator
26
- instance.should respond_to(:delegated?) # now it should work!
27
- end
28
- end
29
- end
30
-
31
- shared_examples_for "configuring the expectation syntax" do
32
- # We want a sandboxed method that ensures that we wind up with
33
- # both syntaxes properly enabled when the example ends.
34
- #
35
- # On platforms that fork, using a sub process is the easiest,
36
- # most robust way to achieve that.
37
- #
38
- # On jRuby we just re-enable both syntaxes at the end of the example;
39
- # however, this is a generally inferior approach because it depends on
40
- # the code-under-test working properly; if it doesn't work properly,
41
- # it could leave things in a "broken" state where tons of other examples fail.
42
- if RUBY_PLATFORM == "java"
43
- def sandboxed
44
- yield
45
- ensure
46
- configure_syntax([:should, :expect])
47
- end
48
- else
49
- include InSubProcess
50
- alias sandboxed in_sub_process
51
- end
52
-
53
- it 'is configured to :should and :expect by default' do
54
- configured_syntax.should eq([:should, :expect])
55
-
56
- 3.should eq(3)
57
- 3.should_not eq(4)
58
- expect(3).to eq(3)
59
- end
60
-
61
- it 'can limit the syntax to :should' do
62
- sandboxed do
63
- configure_syntax :should
64
- configured_syntax.should eq([:should])
65
-
66
- 3.should eq(3)
67
- 3.should_not eq(4)
68
- lambda { expect(6).to eq(6) }.should raise_error(NameError)
69
- end
70
- end
71
-
72
- it 'is a no-op when configured to :should twice' do
73
- sandboxed do
74
- ::Kernel.stub(:method_added).and_raise("no methods should be added here")
75
-
76
- configure_syntax :should
77
- configure_syntax :should
78
- end
79
- end
80
-
81
- it 'can limit the syntax to :expect' do
82
- sandboxed do
83
- configure_syntax :expect
84
- expect(configured_syntax).to eq([:expect])
85
-
86
- expect(3).to eq(3)
87
- expect { 3.should eq(3) }.to raise_error(NameError)
88
- expect { 3.should_not eq(3) }.to raise_error(NameError)
89
- end
90
- end
91
-
92
- it 'is a no-op when configured to :expect twice' do
93
- sandboxed do
94
- RSpec::Matchers.stub(:method_added).and_raise("no methods should be added here")
95
-
96
- configure_syntax :expect
97
- configure_syntax :expect
98
- end
99
- end
100
-
101
- it 'can re-enable the :should syntax' do
102
- sandboxed do
103
- configure_syntax :expect
104
- configure_syntax [:should, :expect]
105
- configured_syntax.should eq([:should, :expect])
106
-
107
- 3.should eq(3)
108
- 3.should_not eq(4)
109
- expect(3).to eq(3)
110
- end
111
- end
112
-
113
- it 'can re-enable the :expect syntax' do
114
- sandboxed do
115
- configure_syntax :should
116
- configure_syntax [:should, :expect]
117
- configured_syntax.should eq([:should, :expect])
118
-
119
- 3.should eq(3)
120
- 3.should_not eq(4)
121
- expect(3).to eq(3)
122
- end
123
- end
124
-
125
- it 'does not add the deprecated #should to ExpectationTarget when only :should is enabled' do
126
- et = Expectations::ExpectationTarget
127
-
128
- sandboxed do
129
- configure_syntax :should
130
- et.new(Proc.new {}).should be_an(et)
131
- et.new(Proc.new {}).should_not be_a(Proc)
132
- end
133
- end
134
-
135
- it 'does not add the deprecated #should to ExpectationTarget when only :expect is enabled' do
136
- sandboxed do
137
- configure_syntax :expect
138
- expect(expect(3)).not_to respond_to(:should)
139
- expect(expect(3)).not_to respond_to(:should_not)
140
- end
141
- end
142
-
143
- context 'when both :expect and :should are enabled' do
144
- before { RSpec.stub(:warn) }
145
-
146
- it 'allows `expect {}.should` to be used' do
147
- sandboxed do
148
- configure_syntax [:should, :expect]
149
- expect { raise "boom" }.should raise_error("boom")
150
- expect { }.should_not raise_error
151
- end
152
- end
153
-
154
- it 'prints a deprecation notice when `expect {}.should` is used' do
155
- sandboxed do
156
- configure_syntax [:should, :expect]
157
-
158
- RSpec.should_receive(:warn).with(/please use `expect \{ \}.to.*instead/)
159
- expect { raise "boom" }.should raise_error("boom")
160
-
161
- RSpec.should_receive(:warn).with(/please use `expect \{ \}.to_not.*instead/)
162
- expect { }.should_not raise_error
163
- end
164
- end
165
- end
166
- end
167
-
168
- describe "configuring rspec-expectations directly" do
169
- it_behaves_like "configuring the expectation syntax" do
170
- def configure_syntax(syntax)
171
- RSpec::Matchers.configuration.syntax = syntax
172
- end
173
-
174
- def configured_syntax
175
- RSpec::Matchers.configuration.syntax
176
- end
177
- end
178
- end
179
-
180
- describe "configuring using the rspec-core config API" do
181
- it_behaves_like "configuring the expectation syntax" do
182
- def configure_syntax(syntax)
183
- RSpec.configure do |rspec|
184
- rspec.expect_with :rspec do |c|
185
- c.syntax = syntax
186
- end
187
- end
188
- end
189
-
190
- def configured_syntax
191
- RSpec.configure do |rspec|
192
- rspec.expect_with :rspec do |c|
193
- return c.syntax
194
- end
195
- end
196
- end
197
- end
198
- end
199
-
200
- end
201
- end
202
-
@@ -1,69 +0,0 @@
1
- require 'spec_helper'
2
-
3
- if (1..2).respond_to?(:cover?)
4
- describe "should cover(expected)" do
5
- it_behaves_like "an RSpec matcher", :valid_value => (1..10), :invalid_value => (20..30) do
6
- let(:matcher) { cover(5) }
7
- end
8
-
9
- context "for a range target" do
10
- it "passes if target covers expected" do
11
- (1..10).should cover(5)
12
- end
13
-
14
- it "fails if target does not cover expected" do
15
- lambda {
16
- (1..10).should cover(11)
17
- }.should fail_with("expected 1..10 to cover 11")
18
- end
19
- end
20
- end
21
-
22
- describe "should cover(with, multiple, args)" do
23
- context "for a range target" do
24
- it "passes if target covers all items" do
25
- (1..10).should cover(4, 6)
26
- end
27
-
28
- it "fails if target does not cover any one of the items" do
29
- lambda {
30
- (1..10).should cover(4, 6, 11)
31
- }.should fail_with("expected 1..10 to cover 4, 6, and 11")
32
- end
33
- end
34
- end
35
-
36
- describe "should_not cover(expected)" do
37
- context "for a range target" do
38
- it "passes if target does not cover expected" do
39
- (1..10).should_not cover(11)
40
- end
41
-
42
- it "fails if target covers expected" do
43
- lambda {
44
- (1..10).should_not cover(5)
45
- }.should fail_with("expected 1..10 not to cover 5")
46
- end
47
- end
48
- end
49
-
50
- describe "should_not cover(with, multiple, args)" do
51
- context "for a range target" do
52
- it "passes if the target does not cover any of the expected" do
53
- (1..10).should_not cover(11, 12, 13)
54
- end
55
-
56
- it "fails if the target covers all of the expected" do
57
- expect {
58
- (1..10).should_not cover(4, 6)
59
- }.to fail_with("expected 1..10 not to cover 4 and 6")
60
- end
61
-
62
- it "fails if the target covers some (but not all) of the expected" do
63
- expect {
64
- (1..10).should_not cover(5, 11)
65
- }.to fail_with("expected 1..10 not to cover 5 and 11")
66
- end
67
- end
68
- end
69
- end
@@ -1,176 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "Matchers should be able to generate their own descriptions" do
4
- after(:each) do
5
- RSpec::Matchers.clear_generated_description
6
- end
7
-
8
- it "should eq expected" do
9
- "this".should eq "this"
10
- RSpec::Matchers.generated_description.should eq "should eq \"this\""
11
- end
12
-
13
- it "should not eq expected" do
14
- "this".should_not eq "that"
15
- RSpec::Matchers.generated_description.should eq "should not eq \"that\""
16
- end
17
-
18
- it "should be empty (arbitrary predicate)" do
19
- [].should be_empty
20
- RSpec::Matchers.generated_description.should eq "should be empty"
21
- end
22
-
23
- it "should not be empty (arbitrary predicate)" do
24
- [1].should_not be_empty
25
- RSpec::Matchers.generated_description.should eq "should not be empty"
26
- end
27
-
28
- it "should be true" do
29
- true.should be_true
30
- RSpec::Matchers.generated_description.should eq "should be true"
31
- end
32
-
33
- it "should be false" do
34
- false.should be_false
35
- RSpec::Matchers.generated_description.should eq "should be false"
36
- end
37
-
38
- it "should be nil" do
39
- nil.should be_nil
40
- RSpec::Matchers.generated_description.should eq "should be nil"
41
- end
42
-
43
- it "should be > n" do
44
- 5.should be > 3
45
- RSpec::Matchers.generated_description.should eq "should be > 3"
46
- end
47
-
48
- it "should be predicate arg1, arg2 and arg3" do
49
- 5.0.should be_between(0,10)
50
- RSpec::Matchers.generated_description.should eq "should be between 0 and 10"
51
- end
52
-
53
- it "should equal" do
54
- expected = "expected"
55
- expected.should equal(expected)
56
- RSpec::Matchers.generated_description.should eq "should equal \"expected\""
57
- end
58
-
59
- it "should_not equal" do
60
- 5.should_not equal(37)
61
- RSpec::Matchers.generated_description.should eq "should not equal 37"
62
- end
63
-
64
- it "should eql" do
65
- "string".should eql("string")
66
- RSpec::Matchers.generated_description.should eq "should eql \"string\""
67
- end
68
-
69
- it "should not eql" do
70
- "a".should_not eql(:a)
71
- RSpec::Matchers.generated_description.should eq "should not eql :a"
72
- end
73
-
74
- it "should have_key" do
75
- {:a => "a"}.should have_key(:a)
76
- RSpec::Matchers.generated_description.should eq "should have key :a"
77
- end
78
-
79
- it "should have_some_method" do
80
- object = Object.new
81
- def object.has_eyes_closed?; true; end
82
-
83
- object.should have_eyes_closed
84
- RSpec::Matchers.generated_description.should eq 'should have eyes closed'
85
- end
86
-
87
- it "should have_some_method(args*)" do
88
- object = Object.new
89
- def object.has_taste_for?(*args); true; end
90
-
91
- object.should have_taste_for("wine", "cheese")
92
- RSpec::Matchers.generated_description.should eq 'should have taste for "wine", "cheese"'
93
- end
94
-
95
- it "should have n items" do
96
- team.should have(3).players
97
- RSpec::Matchers.generated_description.should eq "should have 3 players"
98
- end
99
-
100
- it "should have at least n items" do
101
- team.should have_at_least(2).players
102
- RSpec::Matchers.generated_description.should eq "should have at least 2 players"
103
- end
104
-
105
- it "should have at most n items" do
106
- team.should have_at_most(4).players
107
- RSpec::Matchers.generated_description.should eq "should have at most 4 players"
108
- end
109
-
110
- it "should include" do
111
- [1,2,3].should include(3)
112
- RSpec::Matchers.generated_description.should eq "should include 3"
113
- end
114
-
115
- it "array.should =~ [1,2,3]" do
116
- [1,2,3].should =~ [1,2,3]
117
- RSpec::Matchers.generated_description.should eq "should contain exactly 1, 2 and 3"
118
- end
119
-
120
- it "should match" do
121
- "this string".should match(/this string/)
122
- RSpec::Matchers.generated_description.should eq "should match /this string/"
123
- end
124
-
125
- it "should raise_error" do
126
- lambda { raise }.should raise_error
127
- RSpec::Matchers.generated_description.should eq "should raise Exception"
128
- end
129
-
130
- it "should raise_error with type" do
131
- lambda { raise }.should raise_error(RuntimeError)
132
- RSpec::Matchers.generated_description.should eq "should raise RuntimeError"
133
- end
134
-
135
- it "should raise_error with type and message" do
136
- lambda { raise "there was an error" }.should raise_error(RuntimeError, "there was an error")
137
- RSpec::Matchers.generated_description.should eq "should raise RuntimeError with \"there was an error\""
138
- end
139
-
140
- it "should respond_to" do
141
- [].should respond_to(:insert)
142
- RSpec::Matchers.generated_description.should eq "should respond to #insert"
143
- end
144
-
145
- it "should throw symbol" do
146
- lambda { throw :what_a_mess }.should throw_symbol
147
- RSpec::Matchers.generated_description.should eq "should throw a Symbol"
148
- end
149
-
150
- it "should throw symbol (with named symbol)" do
151
- lambda { throw :what_a_mess }.should throw_symbol(:what_a_mess)
152
- RSpec::Matchers.generated_description.should eq "should throw :what_a_mess"
153
- end
154
-
155
- def team
156
- Class.new do
157
- def players
158
- [1,2,3]
159
- end
160
- end.new
161
- end
162
- end
163
-
164
- describe "a Matcher with no description" do
165
- def matcher
166
- Class.new do
167
- def matches?(ignore); true; end
168
- def failure_message; ""; end
169
- end.new
170
- end
171
-
172
- it "provides a helpful message when used in a string-less example block" do
173
- 5.should matcher
174
- RSpec::Matchers.generated_description.should =~ /When you call.*description method/m
175
- end
176
- end
@@ -1,57 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe "a matcher defined using the matcher DSL" do
4
- def question?
5
- :answer
6
- end
7
-
8
- def ok
9
- "ok"
10
- end
11
-
12
- it "supports calling custom matchers from within other custom matchers" do
13
- RSpec::Matchers.define :be_ok do
14
- match { |actual| actual == ok }
15
- end
16
-
17
- RSpec::Matchers.define :be_well do
18
- match { |actual| actual.should be_ok }
19
- end
20
-
21
- ok.should be_well
22
- end
23
-
24
- it "has access to methods available in the scope of the example" do
25
- RSpec::Matchers::define(:ignore) {}
26
- ignore.question?.should eq(:answer)
27
- end
28
-
29
- it "raises when method is missing from local scope as well as matcher" do
30
- RSpec::Matchers::define(:ignore) {}
31
- expect { ignore.i_dont_exist }.to raise_error(NameError)
32
- end
33
-
34
- it "clears user instance variables between invocations" do
35
- RSpec::Matchers::define(:be_just_like) do |expected|
36
- match do |actual|
37
- @foo ||= expected
38
- @foo == actual
39
- end
40
- end
41
-
42
- 3.should be_just_like(3)
43
- 4.should be_just_like(4)
44
- end
45
-
46
- describe "#respond_to?" do
47
- it "returns true for methods in example scope" do
48
- RSpec::Matchers::define(:ignore) {}
49
- ignore.should respond_to(:question?)
50
- end
51
-
52
- it "returns false for methods not defined in matcher or example scope" do
53
- RSpec::Matchers::define(:ignore) {}
54
- ignore.should_not respond_to(:i_dont_exist)
55
- end
56
- end
57
- end
@@ -1,54 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module RSpec
4
- module Matchers
5
- describe "eq" do
6
- it_behaves_like "an RSpec matcher", :valid_value => 1, :invalid_value => 2 do
7
- let(:matcher) { eq(1) }
8
- end
9
-
10
- it "is diffable" do
11
- eq(1).should be_diffable
12
- end
13
-
14
- it "matches when actual == expected" do
15
- 1.should eq(1)
16
- end
17
-
18
- it "does not match when actual != expected" do
19
- 1.should_not eq(2)
20
- end
21
-
22
- it "compares by sending == to actual (not expected)" do
23
- called = false
24
- actual = Class.new do
25
- define_method :== do |other|
26
- called = true
27
- end
28
- end.new
29
-
30
- actual.should eq :anything # to trigger the matches? method
31
- called.should be_true
32
- end
33
-
34
- it "describes itself" do
35
- matcher = eq(1)
36
- matcher.matches?(1)
37
- matcher.description.should eq "eq 1"
38
- end
39
-
40
- it "provides message, expected and actual on #failure_message" do
41
- matcher = eq("1")
42
- matcher.matches?(1)
43
- matcher.failure_message_for_should.should eq "\nexpected: \"1\"\n got: 1\n\n(compared using ==)\n"
44
- end
45
-
46
- it "provides message, expected and actual on #negative_failure_message" do
47
- matcher = eq(1)
48
- matcher.matches?(1)
49
- matcher.failure_message_for_should_not.should eq "\nexpected: value != 1\n got: 1\n\n(compared using ==)\n"
50
- end
51
- end
52
- end
53
- end
54
-
@@ -1,41 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module RSpec
4
- module Matchers
5
- describe "eql" do
6
- it_behaves_like "an RSpec matcher", :valid_value => 1, :invalid_value => 2 do
7
- let(:matcher) { eql(1) }
8
- end
9
-
10
- it "is diffable" do
11
- eql(1).should be_diffable
12
- end
13
-
14
- it "matches when actual.eql?(expected)" do
15
- 1.should eql(1)
16
- end
17
-
18
- it "does not match when !actual.eql?(expected)" do
19
- 1.should_not eql(2)
20
- end
21
-
22
- it "describes itself" do
23
- matcher = eql(1)
24
- matcher.matches?(1)
25
- matcher.description.should == "eql 1"
26
- end
27
-
28
- it "provides message, expected and actual on #failure_message" do
29
- matcher = eql("1")
30
- matcher.matches?(1)
31
- matcher.failure_message_for_should.should == "\nexpected: \"1\"\n got: 1\n\n(compared using eql?)\n"
32
- end
33
-
34
- it "provides message, expected and actual on #negative_failure_message" do
35
- matcher = eql(1)
36
- matcher.matches?(1)
37
- matcher.failure_message_for_should_not.should == "\nexpected: value != 1\n got: 1\n\n(compared using eql?)\n"
38
- end
39
- end
40
- end
41
- end
@@ -1,60 +0,0 @@
1
- require 'spec_helper'
2
- module RSpec
3
- module Matchers
4
- describe "equal" do
5
- it_behaves_like "an RSpec matcher", :valid_value => :a, :invalid_value => :b do
6
- let(:matcher) { equal(:a) }
7
- end
8
-
9
- def inspect_object(o)
10
- "#<#{o.class}:#{o.object_id}> => #{o.inspect}"
11
- end
12
-
13
- it "matches when actual.equal?(expected)" do
14
- 1.should equal(1)
15
- end
16
-
17
- it "does not match when !actual.equal?(expected)" do
18
- "1".should_not equal("1")
19
- end
20
-
21
- it "describes itself" do
22
- matcher = equal(1)
23
- matcher.matches?(1)
24
- matcher.description.should == "equal 1"
25
- end
26
-
27
- it "provides message on #failure_message" do
28
- expected, actual = "1", "1"
29
- matcher = equal(expected)
30
- matcher.matches?(actual)
31
-
32
- matcher.failure_message_for_should.should == <<-MESSAGE
33
-
34
- expected #{inspect_object(expected)}
35
- got #{inspect_object(actual)}
36
-
37
- Compared using equal?, which compares object identity,
38
- but expected and actual are not the same object. Use
39
- 'actual.should eq(expected)' if you don't care about
40
- object identity in this example.
41
-
42
- MESSAGE
43
- end
44
-
45
- it "provides message on #negative_failure_message" do
46
- expected = actual = "1"
47
- matcher = equal(expected)
48
- matcher.matches?(actual)
49
- matcher.failure_message_for_should_not.should == <<-MESSAGE
50
-
51
- expected not #{inspect_object(expected)}
52
- got #{inspect_object(actual)}
53
-
54
- Compared using equal?, which compares object identity.
55
-
56
- MESSAGE
57
- end
58
- end
59
- end
60
- end