rspec 1.1.11 → 1.1.12
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/.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
|