rspec 1.1.11 → 1.1.12
Sign up to get free protection for your applications and to get access to all the features.
- data/.autotest +4 -0
- data/History.txt +55 -0
- data/Manifest.txt +102 -122
- data/README.txt +30 -12
- data/Rakefile +10 -10
- data/TODO.txt +10 -2
- data/{failing_examples → examples/failing}/README.txt +0 -0
- data/{failing_examples → examples/failing}/diffing_spec.rb +0 -0
- data/{failing_examples → examples/failing}/failing_autogenerated_docstrings_example.rb +0 -0
- data/{failing_examples/failure_in_teardown.rb → examples/failing/failure_in_after.rb} +1 -1
- data/{failing_examples/failure_in_setup.rb → examples/failing/failure_in_before.rb} +1 -1
- data/{failing_examples → examples/failing}/mocking_example.rb +0 -0
- data/{failing_examples → examples/failing}/mocking_with_flexmock.rb +0 -0
- data/{failing_examples → examples/failing}/mocking_with_mocha.rb +0 -0
- data/{failing_examples → examples/failing}/mocking_with_rr.rb +0 -0
- data/{failing_examples → examples/failing}/partial_mock_example.rb +0 -0
- data/{failing_examples → examples/failing}/predicate_example.rb +5 -0
- data/{failing_examples → examples/failing}/raising_example.rb +0 -0
- data/{failing_examples → examples/failing}/spec_helper.rb +1 -1
- data/{failing_examples → examples/failing}/syntax_error_example.rb +0 -0
- data/{failing_examples → examples/failing}/team_spec.rb +0 -0
- data/{failing_examples → examples/failing}/timeout_behaviour.rb +0 -0
- data/examples/{pure → passing}/autogenerated_docstrings_example.rb +6 -0
- data/examples/{pure → passing}/before_and_after_example.rb +0 -0
- data/examples/{pure → passing}/behave_as_example.rb +0 -0
- data/examples/{pure → passing}/custom_expectation_matchers.rb +0 -0
- data/examples/{pure → passing}/custom_formatter.rb +1 -1
- data/examples/{pure → passing}/dynamic_spec.rb +2 -2
- data/examples/{pure → passing}/file_accessor.rb +0 -0
- data/examples/{pure → passing}/file_accessor_spec.rb +0 -0
- data/examples/{pure → passing}/greeter_spec.rb +0 -0
- data/examples/{pure → passing}/helper_method_example.rb +0 -0
- data/examples/{pure → passing}/io_processor.rb +0 -0
- data/examples/{pure → passing}/io_processor_spec.rb +0 -0
- data/examples/{pure → passing}/legacy_spec.rb +0 -0
- data/examples/{pure → passing}/mocking_example.rb +0 -0
- data/examples/{pure/multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +1 -3
- data/examples/{pure → passing}/nested_classes_example.rb +0 -0
- data/examples/{pure → passing}/partial_mock_example.rb +0 -0
- data/examples/{pure → passing}/pending_example.rb +0 -0
- data/examples/{pure → passing}/predicate_example.rb +0 -0
- data/examples/{pure → passing}/priority.txt +0 -0
- data/examples/{pure → passing}/shared_example_group_example.rb +0 -0
- data/examples/{pure → passing}/shared_stack_examples.rb +1 -3
- data/examples/passing/simple_matcher_example.rb +31 -0
- data/examples/{pure → passing}/spec_helper.rb +0 -0
- data/examples/{pure → passing}/stack.rb +0 -0
- data/examples/{pure → passing}/stack_spec.rb +3 -2
- data/examples/{pure → passing}/stack_spec_with_nested_example_groups.rb +0 -0
- data/examples/{pure → passing}/stubbing_example.rb +0 -0
- data/examples/{pure → passing}/yielding_example.rb +0 -0
- data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +86 -0
- data/features/before_and_after_blocks/before_and_after_blocks.feature +168 -0
- data/{stories/example_groups/autogenerated_docstrings → features/example_groups/autogenerated_docstrings.feature} +5 -5
- data/{stories/example_groups/example_group_with_should_methods → features/example_groups/example_group_with_should_methods.feature} +3 -3
- data/{stories/example_groups/nested_groups → features/example_groups/nested_groups.feature} +4 -4
- data/{stories/example_groups/output → features/example_groups/output.feature} +3 -8
- data/{stories/interop/examples_and_tests_together → features/interop/examples_and_tests_together.feature} +5 -4
- data/features/interop/test_but_not_test_unit.feature +14 -0
- data/{stories/interop/test_case_with_should_methods → features/interop/test_case_with_should_methods.feature} +2 -2
- data/{stories/mock_framework_integration/use_flexmock.story → features/mock_framework_integration/use_flexmock.feature} +1 -1
- data/features/step_definitions/running_rspec.rb +54 -0
- data/features/support/env.rb +26 -0
- data/{stories/resources → features/support}/helpers/cmdline.rb +0 -0
- data/{stories/resources → features/support}/helpers/story_helper.rb +1 -1
- data/{stories/resources → features/support}/matchers/smart_match.rb +0 -0
- data/{plugins → lib/adapters}/mock_frameworks/flexmock.rb +1 -1
- data/{plugins → lib/adapters}/mock_frameworks/mocha.rb +1 -1
- data/{plugins → lib/adapters}/mock_frameworks/rr.rb +1 -1
- data/{plugins → lib/adapters}/mock_frameworks/rspec.rb +2 -2
- data/lib/autotest/rspec.rb +4 -3
- data/lib/spec.rb +2 -27
- data/lib/spec/dsl.rb +1 -0
- data/lib/spec/{extensions → dsl}/main.rb +10 -10
- data/lib/spec/example.rb +175 -1
- data/lib/spec/example/before_and_after_hooks.rb +30 -24
- data/lib/spec/example/example_group.rb +1 -0
- data/lib/spec/example/example_group_factory.rb +26 -9
- data/lib/spec/example/example_group_methods.rb +138 -113
- data/lib/spec/example/example_methods.rb +88 -25
- data/lib/spec/example/shared_example_group.rb +28 -21
- data/lib/spec/expectations.rb +22 -18
- data/lib/spec/expectations/handler.rb +16 -36
- data/lib/spec/interop/test/unit/testcase.rb +19 -17
- data/lib/spec/interop/test/unit/testresult.rb +1 -1
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +1 -1
- data/lib/spec/matchers.rb +7 -28
- data/lib/spec/matchers/be.rb +103 -116
- data/lib/spec/matchers/be_close.rb +6 -22
- data/lib/spec/matchers/eql.rb +7 -25
- data/lib/spec/matchers/equal.rb +7 -25
- data/lib/spec/matchers/errors.rb +5 -0
- data/lib/spec/matchers/exist.rb +8 -14
- data/lib/spec/matchers/generated_descriptions.rb +48 -0
- data/lib/spec/matchers/has.rb +12 -28
- data/lib/spec/matchers/include.rb +12 -9
- data/lib/spec/matchers/match.rb +8 -27
- data/lib/spec/matchers/match_array.rb +79 -0
- data/lib/spec/matchers/method_missing.rb +9 -0
- data/lib/spec/matchers/operator_matcher.rb +39 -48
- data/lib/spec/matchers/raise_error.rb +4 -8
- data/lib/spec/matchers/respond_to.rb +33 -8
- data/lib/spec/matchers/throw_symbol.rb +49 -17
- data/lib/spec/matchers/wrap_expectation.rb +55 -0
- data/lib/spec/mocks/argument_constraints.rb +77 -5
- data/lib/spec/mocks/message_expectation.rb +7 -7
- data/lib/spec/mocks/proxy.rb +14 -12
- data/lib/spec/rake/spectask.rb +4 -6
- data/lib/spec/ruby.rb +9 -0
- data/lib/spec/runner.rb +37 -162
- data/lib/spec/runner/backtrace_tweaker.rb +5 -3
- data/lib/spec/runner/class_and_arguments_parser.rb +7 -9
- data/lib/spec/runner/command_line.rb +6 -8
- data/lib/spec/{example → runner}/configuration.rb +46 -47
- data/lib/spec/runner/example_group_runner.rb +15 -4
- data/lib/spec/runner/formatter/base_text_formatter.rb +4 -3
- data/lib/spec/runner/formatter/html_formatter.rb +14 -11
- data/lib/spec/runner/formatter/nested_text_formatter.rb +2 -2
- data/lib/spec/runner/heckle_runner.rb +58 -56
- data/lib/spec/runner/option_parser.rb +8 -4
- data/lib/spec/runner/options.rb +29 -14
- data/lib/spec/runner/reporter.rb +1 -1
- data/lib/spec/runner/spec_parser.rb +11 -9
- data/lib/spec/story/runner.rb +40 -42
- data/lib/spec/story/runner/story_runner.rb +10 -6
- data/lib/spec/story/world.rb +66 -70
- data/lib/spec/version.rb +4 -2
- data/{rake_tasks → resources/rake}/examples.rake +0 -0
- data/{rake_tasks → resources/rake}/examples_with_rcov.rake +0 -0
- data/{rake_tasks → resources/rake}/failing_examples_with_html.rake +0 -0
- data/{rake_tasks → resources/rake}/verify_rcov.rake +0 -0
- data/{stories/resources → resources}/spec/example_group_with_should_methods.rb +1 -1
- data/{stories/resources → resources}/spec/simple_spec.rb +1 -1
- data/resources/spec/spec_with_flexmock.rb +19 -0
- data/{stories/resources → resources}/test/spec_and_test_together.rb +1 -1
- data/resources/test/spec_including_test_but_not_unit.rb +11 -0
- data/{stories/resources → resources}/test/test_case_with_should_methods.rb +2 -2
- data/rspec.gemspec +16 -6
- data/spec/autotest/autotest_helper.rb +2 -2
- data/spec/autotest/discover_spec.rb +4 -15
- data/spec/autotest/failed_results_re_spec.rb +24 -0
- data/spec/autotest/rspec_spec.rb +2 -38
- data/spec/spec/dsl/main_spec.rb +88 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +6 -2
- data/spec/spec/example/example_group_factory_spec.rb +50 -10
- data/spec/spec/example/example_group_methods_spec.rb +210 -160
- data/spec/spec/example/example_group_spec.rb +44 -52
- data/spec/spec/example/example_matcher_spec.rb +6 -23
- data/spec/spec/example/example_methods_spec.rb +176 -54
- data/spec/spec/example/helper_method_spec.rb +24 -0
- data/spec/spec/example/pending_module_spec.rb +2 -8
- data/spec/spec/example/shared_example_group_spec.rb +56 -80
- data/spec/spec/expectations/extensions/object_spec.rb +0 -50
- data/spec/spec/expectations/wrap_expectation_spec.rb +30 -0
- data/spec/spec/interop/test/unit/spec_spec.rb +1 -5
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +4 -0
- data/spec/spec/matchers/be_close_spec.rb +12 -10
- data/spec/spec/matchers/be_spec.rb +62 -7
- data/spec/spec/matchers/description_generation_spec.rb +19 -0
- data/spec/spec/matchers/eql_spec.rb +7 -6
- data/spec/spec/matchers/equal_spec.rb +7 -6
- data/spec/spec/matchers/handler_spec.rb +4 -43
- data/spec/spec/matchers/has_spec.rb +1 -1
- data/spec/spec/matchers/have_spec.rb +23 -18
- data/spec/spec/matchers/include_spec.rb +24 -0
- data/spec/spec/matchers/match_array_spec.rb +83 -0
- data/spec/spec/matchers/matcher_methods_spec.rb +1 -13
- data/spec/spec/matchers/raise_error_spec.rb +18 -0
- data/spec/spec/matchers/respond_to_spec.rb +71 -9
- data/spec/spec/matchers/throw_symbol_spec.rb +85 -43
- data/spec/spec/mocks/bug_report_11545_spec.rb +4 -5
- data/spec/spec/mocks/bug_report_496.rb +11 -9
- data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
- data/spec/spec/mocks/hash_including_matcher_spec.rb +39 -2
- data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
- data/spec/spec/mocks/mock_spec.rb +5 -6
- data/spec/spec/mocks/nil_expectation_warning_spec.rb +2 -2
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +18 -3
- data/spec/spec/mocks/stub_spec.rb +6 -0
- data/spec/spec/mocks/stubbed_message_expectations_spec.rb +14 -0
- data/spec/spec/runner/command_line_spec.rb +4 -4
- data/spec/spec/runner/configuration_spec.rb +301 -0
- data/spec/spec/runner/drb_command_line_spec.rb +4 -4
- data/spec/spec/runner/example_group_runner_spec.rb +33 -0
- data/spec/spec/runner/formatter/base_formatter_spec.rb +13 -102
- data/spec/spec/runner/formatter/base_text_formatter_spec.rb +23 -0
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +5 -5
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +3 -3
- data/spec/spec/runner/formatter/html_formatted-1.8.4.html +6 -6
- data/spec/spec/runner/formatter/html_formatted-1.8.5-jruby.html +9 -9
- data/spec/spec/runner/formatter/html_formatted-1.8.5.html +6 -6
- data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +10 -10
- data/spec/spec/runner/formatter/html_formatted-1.8.6.html +39 -30
- data/spec/spec/runner/formatter/html_formatted-1.8.7.html +379 -0
- data/spec/spec/runner/formatter/html_formatted-1.9.1.html +379 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +14 -13
- data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +5 -5
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +7 -17
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +18 -17
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +5 -5
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.4.html +6 -6
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +33 -30
- data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +373 -0
- data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +373 -0
- data/spec/spec/runner/heckler_spec.rb +16 -9
- data/spec/spec/runner/option_parser_spec.rb +3 -18
- data/spec/spec/runner/options_spec.rb +27 -8
- data/spec/spec/runner/reporter_spec.rb +5 -5
- data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
- data/spec/spec/runner/resources/utf8_encoded.rb +7 -0
- data/spec/spec/runner/spec_parser_spec.rb +85 -79
- data/spec/spec/spec_spec.rb +21 -0
- data/spec/spec_helper.rb +9 -1
- data/story_server/prototype/javascripts/prototype.js +1 -1
- metadata +119 -131
- data/examples/stories/adder.rb +0 -13
- data/examples/stories/addition +0 -34
- data/examples/stories/addition.rb +0 -9
- data/examples/stories/calculator.rb +0 -65
- data/examples/stories/game-of-life/.loadpath +0 -5
- data/examples/stories/game-of-life/README.txt +0 -21
- data/examples/stories/game-of-life/behaviour/everything.rb +0 -6
- data/examples/stories/game-of-life/behaviour/examples/examples.rb +0 -3
- data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +0 -35
- data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +0 -66
- data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +0 -21
- data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +0 -21
- data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +0 -42
- data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +0 -42
- data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +0 -17
- data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +0 -53
- data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +0 -52
- data/examples/stories/game-of-life/behaviour/stories/helper.rb +0 -6
- data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +0 -26
- data/examples/stories/game-of-life/behaviour/stories/steps.rb +0 -5
- data/examples/stories/game-of-life/behaviour/stories/stories.rb +0 -3
- data/examples/stories/game-of-life/behaviour/stories/stories.txt +0 -22
- data/examples/stories/game-of-life/life.rb +0 -3
- data/examples/stories/game-of-life/life/game.rb +0 -23
- data/examples/stories/game-of-life/life/grid.rb +0 -43
- data/examples/stories/helper.rb +0 -9
- data/examples/stories/steps/addition_steps.rb +0 -18
- data/lib/spec/adapters.rb +0 -1
- data/lib/spec/adapters/ruby_engine.rb +0 -26
- data/lib/spec/adapters/ruby_engine/mri.rb +0 -8
- data/lib/spec/adapters/ruby_engine/rubinius.rb +0 -8
- data/lib/spec/extensions.rb +0 -4
- data/lib/spec/extensions/class.rb +0 -24
- data/lib/spec/extensions/metaclass.rb +0 -7
- data/lib/spec/extensions/object.rb +0 -6
- data/spec/spec/adapters/ruby_engine_spec.rb +0 -16
- data/spec/spec/example/configuration_spec.rb +0 -296
- data/spec/spec/example/example_runner_spec.rb +0 -194
- data/spec/spec/extensions/main_spec.rb +0 -71
- data/stories/all.rb +0 -5
- data/stories/configuration/before_blocks.story +0 -21
- data/stories/configuration/stories.rb +0 -7
- data/stories/example_groups/stories.rb +0 -7
- data/stories/helper.rb +0 -6
- data/stories/interop/stories.rb +0 -7
- data/stories/mock_framework_integration/stories.rb +0 -7
- data/stories/pending_stories/README +0 -3
- data/stories/resources/spec/before_blocks_example.rb +0 -32
- data/stories/resources/spec/spec_with_flexmock.rb +0 -18
- data/stories/resources/steps/running_rspec.rb +0 -50
- data/stories/resources/stories/failing_story.rb +0 -15
- data/stories/stories/multiline_steps.story +0 -23
- data/stories/stories/steps/multiline_steps.rb +0 -13
- data/stories/stories/stories.rb +0 -6
@@ -1,38 +1,40 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
2
|
module Spec
|
3
3
|
module Matchers
|
4
|
-
describe
|
4
|
+
describe "be_close" do
|
5
5
|
it "should match when value == target" do
|
6
|
-
|
6
|
+
be_close(5.0, 0.5).matches?(5.0).should be_true
|
7
7
|
end
|
8
8
|
it "should match when value < (target + delta)" do
|
9
|
-
|
9
|
+
be_close(5.0, 0.5).matches?(5.49).should be_true
|
10
10
|
end
|
11
11
|
it "should match when value > (target - delta)" do
|
12
|
-
|
12
|
+
be_close(5.0, 0.5).matches?(4.51).should be_true
|
13
13
|
end
|
14
14
|
it "should not match when value == (target - delta)" do
|
15
|
-
|
15
|
+
be_close(5.0, 0.5).matches?(4.5).should be_false
|
16
16
|
end
|
17
17
|
it "should not match when value < (target - delta)" do
|
18
|
-
|
18
|
+
be_close(5.0, 0.5).matches?(4.49).should be_false
|
19
19
|
end
|
20
20
|
it "should not match when value == (target + delta)" do
|
21
|
-
|
21
|
+
be_close(5.0, 0.5).matches?(5.5).should be_false
|
22
22
|
end
|
23
23
|
it "should not match when value > (target + delta)" do
|
24
|
-
|
24
|
+
be_close(5.0, 0.5).matches?(5.51).should be_false
|
25
25
|
end
|
26
26
|
it "should provide a useful failure message" do
|
27
27
|
#given
|
28
|
-
matcher =
|
28
|
+
matcher = be_close(5.0, 0.5)
|
29
29
|
#when
|
30
30
|
matcher.matches?(5.51)
|
31
31
|
#then
|
32
32
|
matcher.failure_message.should == "expected 5.0 +/- (< 0.5), got 5.51"
|
33
33
|
end
|
34
34
|
it "should describe itself" do
|
35
|
-
|
35
|
+
matcher = be_close(5.0, 0.5)
|
36
|
+
matcher.matches?(5.1)
|
37
|
+
matcher.description.should == "be close to 5.0 (within +- 0.5)"
|
36
38
|
end
|
37
39
|
end
|
38
40
|
end
|
@@ -7,7 +7,7 @@ describe "should be_predicate" do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should pass when actual returns true for :predicates? (present tense)" do
|
10
|
-
actual = stub("actual", :exists? => true)
|
10
|
+
actual = stub("actual", :exists? => true, :exist? => true)
|
11
11
|
actual.should be_exist
|
12
12
|
end
|
13
13
|
|
@@ -21,7 +21,23 @@ describe "should be_predicate" do
|
|
21
21
|
it "should fail when actual does not respond to :predicate?" do
|
22
22
|
lambda {
|
23
23
|
Object.new.should be_happy
|
24
|
-
}.should raise_error(NameError)
|
24
|
+
}.should raise_error(NameError, /happy\?/)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "should fail on error other than NameError" do
|
28
|
+
actual = stub("actual")
|
29
|
+
actual.should_receive(:foo?).and_raise("aaaah")
|
30
|
+
lambda {
|
31
|
+
actual.should be_foo
|
32
|
+
}.should raise_error(/aaaah/)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should fail on error other than NameError (with the present tense predicate)" do
|
36
|
+
actual = Object.new
|
37
|
+
actual.should_receive(:foos?).and_raise("aaaah")
|
38
|
+
lambda {
|
39
|
+
actual.should be_foo
|
40
|
+
}.should raise_error(/aaaah/)
|
25
41
|
end
|
26
42
|
end
|
27
43
|
|
@@ -121,7 +137,7 @@ describe "should be_nil" do
|
|
121
137
|
it "should fail when actual is not nil" do
|
122
138
|
lambda {
|
123
139
|
:not_nil.should be_nil
|
124
|
-
}.should fail_with("expected nil, got
|
140
|
+
}.should fail_with("expected nil? to return true, got false")
|
125
141
|
end
|
126
142
|
end
|
127
143
|
|
@@ -133,7 +149,7 @@ describe "should_not be_nil" do
|
|
133
149
|
it "should fail when actual is nil" do
|
134
150
|
lambda {
|
135
151
|
nil.should_not be_nil
|
136
|
-
}.should fail_with("expected
|
152
|
+
}.should fail_with("expected nil? to return false, got true")
|
137
153
|
end
|
138
154
|
end
|
139
155
|
|
@@ -195,7 +211,15 @@ describe "should be ===" do
|
|
195
211
|
end
|
196
212
|
|
197
213
|
it "should fail when === operator returns false" do
|
198
|
-
lambda { Hash.should be === "not a hash" }.should fail_with(%[expected ===
|
214
|
+
lambda { Hash.should be === "not a hash" }.should fail_with(%[expected === not a hash, got Hash])
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
describe "should_not with operators" do
|
219
|
+
it "should coach user to stop using operators with should_not" do
|
220
|
+
lambda {
|
221
|
+
5.should_not be < 6
|
222
|
+
}.should raise_error(/not only FAILED,\nit reads really poorly./m)
|
199
223
|
end
|
200
224
|
end
|
201
225
|
|
@@ -206,11 +230,11 @@ describe "should be" do
|
|
206
230
|
end
|
207
231
|
|
208
232
|
it "should fail if actual is false" do
|
209
|
-
lambda {false.should be}.should fail_with("expected
|
233
|
+
lambda {false.should be}.should fail_with("expected true, got false")
|
210
234
|
end
|
211
235
|
|
212
236
|
it "should fail if actual is nil" do
|
213
|
-
lambda {nil.should be}.should fail_with("expected
|
237
|
+
lambda {nil.should be}.should fail_with("expected true, got nil")
|
214
238
|
end
|
215
239
|
end
|
216
240
|
|
@@ -223,6 +247,15 @@ describe "should be(value)" do
|
|
223
247
|
end
|
224
248
|
end
|
225
249
|
|
250
|
+
describe "'should be' with operator" do
|
251
|
+
it "should include 'be' in the description" do
|
252
|
+
(be > 6).description.should =~ /be > 6/
|
253
|
+
(be >= 6).description.should =~ /be >= 6/
|
254
|
+
(be <= 6).description.should =~ /be <= 6/
|
255
|
+
(be < 6).description.should =~ /be < 6/
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
226
259
|
|
227
260
|
describe "arbitrary predicate with DelegateClass" do
|
228
261
|
it "should access methods defined in the delegating class (LH[#48])" do
|
@@ -246,3 +279,25 @@ describe "arbitrary predicate with DelegateClass" do
|
|
246
279
|
delegate.should be_large
|
247
280
|
end
|
248
281
|
end
|
282
|
+
|
283
|
+
describe "be_a, be_an" do
|
284
|
+
it "should pass when class matches" do
|
285
|
+
"foobar".should be_a(String)
|
286
|
+
[1,2,3].should be_an(Array)
|
287
|
+
end
|
288
|
+
|
289
|
+
it "should fail when class does not match" do
|
290
|
+
"foobar".should_not be_a(Hash)
|
291
|
+
[1,2,3].should_not be_an(Integer)
|
292
|
+
end
|
293
|
+
end
|
294
|
+
|
295
|
+
describe "be_an_instance_of" do
|
296
|
+
it "passes when direct class matches" do
|
297
|
+
5.should be_an_instance_of(Fixnum)
|
298
|
+
end
|
299
|
+
|
300
|
+
it "fails when class is higher up hierarchy" do
|
301
|
+
5.should_not be_an_instance_of(Numeric)
|
302
|
+
end
|
303
|
+
end
|
@@ -107,6 +107,11 @@ describe "Matchers should be able to generate their own descriptions" do
|
|
107
107
|
[1,2,3].should include(3)
|
108
108
|
Spec::Matchers.generated_description.should == "should include 3"
|
109
109
|
end
|
110
|
+
|
111
|
+
it "array.should =~ [1,2,3]" do
|
112
|
+
[1,2,3].should =~ [1,2,3]
|
113
|
+
Spec::Matchers.generated_description.should == "should contain exactly 1, 2 and 3"
|
114
|
+
end
|
110
115
|
|
111
116
|
it "should match" do
|
112
117
|
"this string".should match(/this string/)
|
@@ -151,3 +156,17 @@ describe "Matchers should be able to generate their own descriptions" do
|
|
151
156
|
end.new
|
152
157
|
end
|
153
158
|
end
|
159
|
+
|
160
|
+
describe "a Matcher with no description" do
|
161
|
+
def matcher
|
162
|
+
Class.new do
|
163
|
+
def matches?(ignore); true; end
|
164
|
+
def failure_message; ""; end
|
165
|
+
end.new
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should provide a helpful message when used in a string-less example block" do
|
169
|
+
5.should matcher
|
170
|
+
Spec::Matchers.generated_description.should =~ /When you call.*description method/m
|
171
|
+
end
|
172
|
+
end
|
@@ -2,24 +2,25 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
3
3
|
module Spec
|
4
4
|
module Matchers
|
5
|
-
describe
|
5
|
+
describe "eql" do
|
6
6
|
it "should match when actual.eql?(expected)" do
|
7
|
-
|
7
|
+
eql(1).matches?(1).should be_true
|
8
8
|
end
|
9
9
|
it "should not match when !actual.eql?(expected)" do
|
10
|
-
|
10
|
+
eql(1).matches?(2).should be_false
|
11
11
|
end
|
12
12
|
it "should describe itself" do
|
13
|
-
matcher =
|
13
|
+
matcher = eql(1)
|
14
|
+
matcher.matches?(1)
|
14
15
|
matcher.description.should == "eql 1"
|
15
16
|
end
|
16
17
|
it "should provide message, expected and actual on #failure_message" do
|
17
|
-
matcher =
|
18
|
+
matcher = eql("1")
|
18
19
|
matcher.matches?(1)
|
19
20
|
matcher.failure_message.should == ["expected \"1\", got 1 (using .eql?)", "1", 1]
|
20
21
|
end
|
21
22
|
it "should provide message, expected and actual on #negative_failure_message" do
|
22
|
-
matcher =
|
23
|
+
matcher = eql(1)
|
23
24
|
matcher.matches?(1)
|
24
25
|
matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .eql?)", 1, 1]
|
25
26
|
end
|
@@ -2,24 +2,25 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
3
3
|
module Spec
|
4
4
|
module Matchers
|
5
|
-
describe
|
5
|
+
describe "equal" do
|
6
6
|
it "should match when actual.equal?(expected)" do
|
7
|
-
|
7
|
+
equal(1).matches?(1).should be_true
|
8
8
|
end
|
9
9
|
it "should not match when !actual.equal?(expected)" do
|
10
|
-
|
10
|
+
equal("1").matches?("1").should be_false
|
11
11
|
end
|
12
12
|
it "should describe itself" do
|
13
|
-
matcher =
|
13
|
+
matcher = equal(1)
|
14
|
+
matcher.matches?(1)
|
14
15
|
matcher.description.should == "equal 1"
|
15
16
|
end
|
16
17
|
it "should provide message, expected and actual on #failure_message" do
|
17
|
-
matcher =
|
18
|
+
matcher = equal("1")
|
18
19
|
matcher.matches?(1)
|
19
20
|
matcher.failure_message.should == ["expected \"1\", got 1 (using .equal?)", "1", 1]
|
20
21
|
end
|
21
22
|
it "should provide message, expected and actual on #negative_failure_message" do
|
22
|
-
matcher =
|
23
|
+
matcher = equal(1)
|
23
24
|
matcher.matches?(1)
|
24
25
|
matcher.negative_failure_message.should == ["expected 1 not to equal 1 (using .equal?)", 1, 1]
|
25
26
|
end
|
@@ -54,66 +54,34 @@ module Spec
|
|
54
54
|
matcher = mock("matcher")
|
55
55
|
actual = Object.new
|
56
56
|
matcher.should_receive(:matches?).with(actual).and_return(true)
|
57
|
-
ExpectationMatcherHandler.handle_matcher(actual, matcher)
|
57
|
+
Spec::Expectations::ExpectationMatcherHandler.handle_matcher(actual, matcher)
|
58
58
|
end
|
59
59
|
|
60
|
-
it "should explain when the matcher parameter is not a matcher" do
|
61
|
-
begin
|
62
|
-
nonmatcher = mock("nonmatcher")
|
63
|
-
actual = Object.new
|
64
|
-
ExpectationMatcherHandler.handle_matcher(actual, nonmatcher)
|
65
|
-
rescue Spec::Expectations::InvalidMatcherError => e
|
66
|
-
end
|
67
|
-
|
68
|
-
e.message.should =~ /^Expected a matcher, got /
|
69
|
-
end
|
70
|
-
|
71
60
|
it "should return the match value" do
|
72
61
|
matcher = mock("matcher")
|
73
62
|
actual = Object.new
|
74
63
|
matcher.should_receive(:matches?).with(actual).and_return(:this_value)
|
75
|
-
ExpectationMatcherHandler.handle_matcher(actual, matcher).should == :this_value
|
64
|
+
Spec::Expectations::ExpectationMatcherHandler.handle_matcher(actual, matcher).should == :this_value
|
76
65
|
end
|
77
66
|
end
|
78
67
|
end
|
79
68
|
|
80
69
|
describe NegativeExpectationMatcherHandler do
|
81
70
|
describe "#handle_matcher" do
|
82
|
-
it "should explain when matcher does not support should_not" do
|
83
|
-
matcher = mock("matcher")
|
84
|
-
matcher.stub!(:matches?)
|
85
|
-
actual = Object.new
|
86
|
-
lambda {
|
87
|
-
NegativeExpectationMatcherHandler.handle_matcher(actual, matcher)
|
88
|
-
}.should fail_with(/Matcher does not support should_not.\n/)
|
89
|
-
end
|
90
|
-
|
91
71
|
it "should ask the matcher if it matches" do
|
92
72
|
matcher = mock("matcher")
|
93
73
|
actual = Object.new
|
94
74
|
matcher.stub!(:negative_failure_message)
|
95
75
|
matcher.should_receive(:matches?).with(actual).and_return(false)
|
96
|
-
NegativeExpectationMatcherHandler.handle_matcher(actual, matcher)
|
76
|
+
Spec::Expectations::NegativeExpectationMatcherHandler.handle_matcher(actual, matcher)
|
97
77
|
end
|
98
78
|
|
99
|
-
it "should explain when the matcher parameter is not a matcher" do
|
100
|
-
begin
|
101
|
-
nonmatcher = mock("nonmatcher")
|
102
|
-
actual = Object.new
|
103
|
-
NegativeExpectationMatcherHandler.handle_matcher(actual, nonmatcher)
|
104
|
-
rescue Spec::Expectations::InvalidMatcherError => e
|
105
|
-
end
|
106
|
-
|
107
|
-
e.message.should =~ /^Expected a matcher, got /
|
108
|
-
end
|
109
|
-
|
110
|
-
|
111
79
|
it "should return the match value" do
|
112
80
|
matcher = mock("matcher")
|
113
81
|
actual = Object.new
|
114
82
|
matcher.should_receive(:matches?).with(actual).and_return(false)
|
115
83
|
matcher.stub!(:negative_failure_message).and_return("ignore")
|
116
|
-
NegativeExpectationMatcherHandler.handle_matcher(actual, matcher).should be_false
|
84
|
+
Spec::Expectations::NegativeExpectationMatcherHandler.handle_matcher(actual, matcher).should be_false
|
117
85
|
end
|
118
86
|
end
|
119
87
|
end
|
@@ -138,13 +106,6 @@ module Spec
|
|
138
106
|
5.should arbitrary_matcher(:expected => 4).with(5) { 3 }
|
139
107
|
end
|
140
108
|
|
141
|
-
it "should explain when matcher does not support should_not" do
|
142
|
-
lambda {
|
143
|
-
5.should_not positive_only_matcher(:expected => 5)
|
144
|
-
}.should fail_with(/Matcher does not support should_not.\n/)
|
145
|
-
end
|
146
|
-
|
147
|
-
|
148
109
|
end
|
149
110
|
end
|
150
111
|
end
|
@@ -52,7 +52,7 @@ describe "should_not have_sym(*args)" do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
describe
|
55
|
+
describe "has" do
|
56
56
|
it "should work when the target implements #send" do
|
57
57
|
o = {:a => "A"}
|
58
58
|
def o.send(*args); raise "DOH! Library developers shouldn't use #send!" end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
2
|
|
3
|
-
|
3
|
+
share_as :HaveSpecHelper do
|
4
4
|
def create_collection_owner_with(n)
|
5
5
|
owner = Spec::Expectations::Helper::CollectionOwner.new
|
6
6
|
(1..n).each do |n|
|
@@ -9,8 +9,21 @@ module HaveSpecHelper
|
|
9
9
|
end
|
10
10
|
owner
|
11
11
|
end
|
12
|
+
before(:each) do
|
13
|
+
unless defined?(::ActiveSupport::Inflector)
|
14
|
+
@active_support_was_not_defined
|
15
|
+
module ::ActiveSupport
|
16
|
+
class Inflector
|
17
|
+
def self.pluralize(string)
|
18
|
+
string.to_s + 's'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
12
24
|
end
|
13
25
|
|
26
|
+
|
14
27
|
describe "should have(n).items" do
|
15
28
|
include HaveSpecHelper
|
16
29
|
|
@@ -50,19 +63,6 @@ end
|
|
50
63
|
describe 'should have(1).item when ActiveSupport::Inflector is defined' do
|
51
64
|
include HaveSpecHelper
|
52
65
|
|
53
|
-
before(:each) do
|
54
|
-
unless defined?(ActiveSupport::Inflector)
|
55
|
-
@active_support_was_not_defined
|
56
|
-
module ActiveSupport
|
57
|
-
class Inflector
|
58
|
-
def self.pluralize(string)
|
59
|
-
string.to_s + 's'
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
66
|
it 'should pluralize the collection name' do
|
67
67
|
owner = create_collection_owner_with(1)
|
68
68
|
owner.should have(1).item
|
@@ -70,7 +70,7 @@ describe 'should have(1).item when ActiveSupport::Inflector is defined' do
|
|
70
70
|
|
71
71
|
after(:each) do
|
72
72
|
if @active_support_was_not_defined
|
73
|
-
Object.
|
73
|
+
Object.__send__ :remove_const, :ActiveSupport
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
@@ -96,7 +96,7 @@ describe 'should have(1).item when Inflector is defined' do
|
|
96
96
|
|
97
97
|
after(:each) do
|
98
98
|
if @inflector_was_not_defined
|
99
|
-
Object.
|
99
|
+
Object.__send__ :remove_const, :Inflector
|
100
100
|
end
|
101
101
|
end
|
102
102
|
end
|
@@ -327,7 +327,7 @@ end
|
|
327
327
|
|
328
328
|
describe Spec::Matchers::Have, "for a collection owner that implements #send" do
|
329
329
|
include HaveSpecHelper
|
330
|
-
|
330
|
+
|
331
331
|
before(:each) do
|
332
332
|
@collection = Object.new
|
333
333
|
def @collection.floozles; [1,2] end
|
@@ -357,7 +357,12 @@ module Spec
|
|
357
357
|
module Matchers
|
358
358
|
describe Have do
|
359
359
|
it "should have method_missing as private" do
|
360
|
-
|
360
|
+
with_ruby '1.8' do
|
361
|
+
Have.private_instance_methods.should include("method_missing")
|
362
|
+
end
|
363
|
+
with_ruby '1.9' do
|
364
|
+
Have.private_instance_methods.should include(:method_missing)
|
365
|
+
end
|
361
366
|
end
|
362
367
|
|
363
368
|
describe "respond_to?" do
|