rspec 1.0.8 → 1.1.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.
- data/CHANGES +122 -2
- data/README +10 -9
- data/Rakefile +22 -49
- data/TODO +2 -0
- data/bin/spec +1 -1
- data/bin/spec_translator +8 -8
- data/examples/{auto_spec_description_example.rb → pure/autogenerated_docstrings_example.rb} +0 -0
- data/examples/{before_and_after_example.rb → pure/before_and_after_example.rb} +1 -0
- data/examples/{behave_as_example.rb → pure/behave_as_example.rb} +0 -0
- data/examples/{custom_expectation_matchers.rb → pure/custom_expectation_matchers.rb} +0 -0
- data/examples/{custom_formatter.rb → pure/custom_formatter.rb} +1 -0
- data/examples/{dynamic_spec.rb → pure/dynamic_spec.rb} +0 -0
- data/examples/{file_accessor.rb → pure/file_accessor.rb} +1 -0
- data/examples/{file_accessor_spec.rb → pure/file_accessor_spec.rb} +0 -0
- data/examples/{greeter_spec.rb → pure/greeter_spec.rb} +1 -0
- data/examples/{helper_method_example.rb → pure/helper_method_example.rb} +0 -0
- data/examples/{io_processor.rb → pure/io_processor.rb} +0 -0
- data/examples/{io_processor_spec.rb → pure/io_processor_spec.rb} +0 -0
- data/examples/{legacy_spec.rb → pure/legacy_spec.rb} +1 -0
- data/examples/{mocking_example.rb → pure/mocking_example.rb} +0 -0
- data/examples/pure/multi_threaded_behaviour_runner.rb +28 -0
- data/examples/pure/nested_classes_example.rb +36 -0
- data/examples/{partial_mock_example.rb → pure/partial_mock_example.rb} +0 -0
- data/examples/{pending_example.rb → pure/pending_example.rb} +0 -0
- data/examples/{predicate_example.rb → pure/predicate_example.rb} +0 -0
- data/examples/{priority.txt → pure/priority.txt} +0 -0
- data/examples/pure/shared_example_group_example.rb +66 -0
- data/examples/pure/shared_stack_examples.rb +38 -0
- data/examples/pure/spec_helper.rb +3 -0
- data/examples/{stack.rb → pure/stack.rb} +0 -0
- data/examples/{stack_spec.rb → pure/stack_spec.rb} +1 -35
- data/examples/pure/stack_spec_with_nested_example_groups.rb +67 -0
- data/examples/{stubbing_example.rb → pure/stubbing_example.rb} +0 -0
- data/examples/stories/adder.rb +13 -0
- data/examples/stories/addition +34 -0
- data/examples/stories/addition.rb +9 -0
- data/examples/stories/calculator.rb +65 -0
- data/examples/stories/game-of-life/README.txt +21 -0
- data/examples/stories/game-of-life/behaviour/everything.rb +6 -0
- data/examples/stories/game-of-life/behaviour/examples/examples.rb +3 -0
- data/examples/stories/game-of-life/behaviour/examples/game_behaviour.rb +35 -0
- data/examples/stories/game-of-life/behaviour/examples/grid_behaviour.rb +66 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithLessThanTwoNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/CellsWithMoreThanThreeNeighboursDie.story +21 -0
- data/examples/stories/game-of-life/behaviour/stories/EmptySpacesWithThreeNeighboursCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanCreateACell.story +42 -0
- data/examples/stories/game-of-life/behaviour/stories/ICanKillACell.story +17 -0
- data/examples/stories/game-of-life/behaviour/stories/TheGridWraps.story +53 -0
- data/examples/stories/game-of-life/behaviour/stories/create_a_cell.rb +52 -0
- data/examples/stories/game-of-life/behaviour/stories/helper.rb +6 -0
- data/examples/stories/game-of-life/behaviour/stories/kill_a_cell.rb +26 -0
- data/examples/stories/game-of-life/behaviour/stories/steps.rb +5 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.rb +3 -0
- data/examples/stories/game-of-life/behaviour/stories/stories.txt +22 -0
- data/examples/stories/game-of-life/life.rb +3 -0
- data/examples/stories/game-of-life/life/game.rb +23 -0
- data/examples/stories/game-of-life/life/grid.rb +43 -0
- data/examples/stories/helper.rb +9 -0
- data/examples/stories/steps/addition_steps.rb +18 -0
- data/lib/autotest/rspec.rb +1 -2
- data/lib/spec.rb +30 -6
- data/lib/spec/example.rb +12 -0
- data/lib/spec/{dsl → example}/configuration.rb +48 -39
- data/lib/spec/{dsl → example}/errors.rb +2 -2
- data/lib/spec/example/example_group.rb +16 -0
- data/lib/spec/example/example_group_factory.rb +62 -0
- data/lib/spec/example/example_group_methods.rb +412 -0
- data/lib/spec/example/example_matcher.rb +42 -0
- data/lib/spec/example/example_methods.rb +101 -0
- data/lib/spec/example/module_reopening_fix.rb +21 -0
- data/lib/spec/example/pending.rb +18 -0
- data/lib/spec/example/shared_example_group.rb +58 -0
- data/lib/spec/expectations/differs/default.rb +15 -10
- data/lib/spec/expectations/errors.rb +7 -1
- data/lib/spec/expectations/extensions/object.rb +12 -7
- data/lib/spec/expectations/handler.rb +13 -4
- data/lib/spec/extensions.rb +2 -0
- data/lib/spec/extensions/class.rb +24 -0
- data/lib/spec/extensions/main.rb +54 -0
- data/lib/spec/extensions/object.rb +5 -1
- data/lib/spec/interop/test.rb +10 -0
- data/lib/spec/interop/test/unit/autorunner.rb +6 -0
- data/lib/spec/interop/test/unit/testcase.rb +61 -0
- data/lib/spec/interop/test/unit/testresult.rb +6 -0
- data/lib/spec/interop/test/unit/testsuite_adapter.rb +34 -0
- data/lib/spec/interop/test/unit/ui/console/testrunner.rb +60 -0
- data/lib/spec/matchers.rb +11 -15
- data/lib/spec/matchers/be.rb +23 -6
- data/lib/spec/matchers/change.rb +25 -1
- data/lib/spec/matchers/exist.rb +17 -0
- data/lib/spec/matchers/operator_matcher.rb +1 -0
- data/lib/spec/matchers/simple_matcher.rb +29 -0
- data/lib/spec/matchers/throw_symbol.rb +2 -0
- data/lib/spec/mocks.rb +5 -2
- data/lib/spec/mocks/argument_expectation.rb +1 -1
- data/lib/spec/mocks/message_expectation.rb +62 -44
- data/lib/spec/mocks/methods.rb +2 -2
- data/lib/spec/mocks/mock.rb +24 -3
- data/lib/spec/mocks/proxy.rb +26 -23
- data/lib/spec/mocks/space.rb +1 -1
- data/lib/spec/mocks/spec_methods.rb +20 -12
- data/lib/spec/rake/spectask.rb +19 -1
- data/lib/spec/rake/verify_rcov.rb +1 -1
- data/lib/spec/runner.rb +33 -10
- data/lib/spec/runner/backtrace_tweaker.rb +3 -3
- data/lib/spec/runner/class_and_arguments_parser.rb +16 -0
- data/lib/spec/runner/command_line.rb +18 -12
- data/lib/spec/runner/drb_command_line.rb +4 -5
- data/lib/spec/runner/example_group_runner.rb +59 -0
- data/lib/spec/runner/formatter/base_formatter.rb +10 -8
- data/lib/spec/runner/formatter/base_text_formatter.rb +18 -18
- data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +31 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +3 -5
- data/lib/spec/runner/formatter/html_formatter.rb +37 -27
- data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +3 -4
- data/lib/spec/runner/formatter/specdoc_formatter.rb +27 -13
- data/lib/spec/runner/formatter/story/html_formatter.rb +124 -0
- data/lib/spec/runner/formatter/story/plain_text_formatter.rb +123 -0
- data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
- data/lib/spec/runner/heckle_runner.rb +9 -9
- data/lib/spec/runner/option_parser.rb +140 -138
- data/lib/spec/runner/options.rb +168 -90
- data/lib/spec/runner/reporter.rb +58 -40
- data/lib/spec/runner/spec_parser.rb +11 -8
- data/lib/spec/story.rb +10 -0
- data/lib/spec/story/extensions.rb +1 -0
- data/lib/spec/story/extensions/main.rb +86 -0
- data/lib/spec/story/given_scenario.rb +14 -0
- data/lib/spec/story/runner.rb +58 -0
- data/lib/spec/story/runner/plain_text_story_runner.rb +48 -0
- data/lib/spec/story/runner/scenario_collector.rb +18 -0
- data/lib/spec/story/runner/scenario_runner.rb +46 -0
- data/lib/spec/story/runner/story_mediator.rb +123 -0
- data/lib/spec/story/runner/story_parser.rb +227 -0
- data/lib/spec/story/runner/story_runner.rb +67 -0
- data/lib/spec/story/scenario.rb +14 -0
- data/lib/spec/story/step.rb +48 -0
- data/lib/spec/story/step_group.rb +89 -0
- data/lib/spec/story/step_mother.rb +37 -0
- data/lib/spec/story/story.rb +42 -0
- data/lib/spec/story/world.rb +124 -0
- data/lib/spec/version.rb +4 -5
- data/plugins/mock_frameworks/rspec.rb +1 -1
- data/spec/autotest/rspec_spec.rb +13 -7
- data/spec/autotest_helper.rb +4 -3
- data/spec/rspec_suite.rb +7 -0
- data/spec/ruby_forker.rb +13 -0
- data/spec/spec/example/configuration_spec.rb +290 -0
- data/spec/spec/example/example_group_class_definition_spec.rb +48 -0
- data/spec/spec/example/example_group_factory_spec.rb +129 -0
- data/spec/spec/example/example_group_methods_spec.rb +465 -0
- data/spec/spec/example/example_group_spec.rb +711 -0
- data/spec/spec/{dsl → example}/example_matcher_spec.rb +23 -18
- data/spec/spec/example/example_methods_spec.rb +75 -0
- data/spec/spec/example/example_runner_spec.rb +194 -0
- data/spec/spec/example/example_spec.rb +53 -0
- data/spec/spec/example/nested_example_group_spec.rb +59 -0
- data/spec/spec/example/pending_module_spec.rb +31 -0
- data/spec/spec/{dsl → example}/predicate_matcher_spec.rb +1 -1
- data/spec/spec/example/shared_example_group_spec.rb +265 -0
- data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
- data/spec/spec/expectations/differs/default_spec.rb +5 -3
- data/spec/spec/expectations/extensions/object_spec.rb +63 -2
- data/spec/spec/extensions/main_spec.rb +50 -0
- data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +14 -0
- data/spec/spec/interop/test/unit/testcase_spec.rb +10 -0
- data/spec/spec/interop/test/unit/testcase_spec_with_test_unit.rb +20 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
- data/spec/spec/interop/test/unit/testsuite_adapter_spec_with_test_unit.rb +34 -0
- data/spec/spec/matchers/be_spec.rb +15 -0
- data/spec/spec/matchers/change_spec.rb +87 -0
- data/spec/spec/matchers/description_generation_spec.rb +31 -37
- data/spec/spec/matchers/exist_spec.rb +31 -22
- data/spec/spec/matchers/handler_spec.rb +42 -1
- data/spec/spec/matchers/have_spec.rb +1 -1
- data/spec/spec/matchers/mock_constraint_matchers_spec.rb +1 -1
- data/spec/spec/matchers/operator_matcher_spec.rb +1 -1
- data/spec/spec/matchers/simple_matcher_spec.rb +31 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +4 -1
- data/spec/spec/mocks/bug_report_10263.rb +24 -0
- data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
- data/spec/spec/mocks/bug_report_8165_spec.rb +2 -2
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +1 -0
- data/spec/spec/mocks/mock_spec.rb +200 -102
- data/spec/spec/mocks/multiple_return_value_spec.rb +1 -1
- data/spec/spec/mocks/options_hash_spec.rb +19 -7
- data/spec/spec/mocks/partial_mock_spec.rb +31 -9
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +6 -0
- data/spec/spec/mocks/stub_spec.rb +120 -98
- data/spec/spec/package/bin_spec_spec.rb +7 -5
- data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
- data/spec/spec/runner/command_line_spec.rb +140 -27
- data/spec/spec/runner/drb_command_line_spec.rb +39 -31
- data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +44 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +16 -11
- data/spec/spec/runner/formatter/html_formatter_spec.rb +60 -50
- data/spec/spec/runner/formatter/profile_formatter_spec.rb +65 -0
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +29 -13
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
- data/spec/spec/runner/formatter/spec_mate_formatter_spec.rb +103 -0
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +103 -39
- data/spec/spec/runner/formatter/story/html_formatter_spec.rb +56 -0
- data/spec/spec/runner/formatter/story/plain_text_formatter_spec.rb +289 -0
- data/spec/spec/runner/heckle_runner_spec.rb +29 -14
- data/spec/spec/runner/heckler_spec.rb +4 -5
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +5 -5
- data/spec/spec/runner/option_parser_spec.rb +86 -58
- data/spec/spec/runner/options_spec.rb +239 -120
- data/spec/spec/runner/output_one_time_fixture.rb +7 -0
- data/spec/spec/runner/output_one_time_fixture_runner.rb +8 -0
- data/spec/spec/runner/output_one_time_spec.rb +16 -0
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +6 -6
- data/spec/spec/runner/reporter_spec.rb +147 -163
- data/spec/spec/runner/spec_parser_spec.rb +31 -0
- data/spec/spec/runner_spec.rb +11 -0
- data/spec/spec/spec_classes.rb +12 -5
- data/spec/spec/story/builders.rb +46 -0
- data/spec/spec/story/extensions/main_spec.rb +161 -0
- data/spec/spec/story/extensions_spec.rb +14 -0
- data/spec/spec/story/given_scenario_spec.rb +27 -0
- data/spec/spec/story/runner/plain_text_story_runner_spec.rb +92 -0
- data/spec/spec/story/runner/scenario_collector_spec.rb +27 -0
- data/spec/spec/story/runner/scenario_runner_spec.rb +142 -0
- data/spec/spec/story/runner/story_mediator_spec.rb +133 -0
- data/spec/spec/story/runner/story_parser_spec.rb +384 -0
- data/spec/spec/story/runner/story_runner_spec.rb +219 -0
- data/spec/spec/story/runner_spec.rb +106 -0
- data/spec/spec/story/scenario_spec.rb +20 -0
- data/spec/spec/story/step_group_spec.rb +157 -0
- data/spec/spec/story/step_mother_spec.rb +72 -0
- data/spec/spec/story/step_spec.rb +147 -0
- data/spec/spec/story/story_helper.rb +2 -0
- data/spec/spec/story/story_spec.rb +86 -0
- data/spec/spec/story/world_spec.rb +416 -0
- data/spec/spec/translator_spec.rb +2 -1
- data/spec/spec_helper.rb +59 -2
- data/stories/all.rb +5 -0
- data/stories/example_groups/autogenerated_docstrings +26 -0
- data/stories/example_groups/example_group_with_should_methods +17 -0
- data/stories/example_groups/nested_groups +17 -0
- data/stories/example_groups/output +20 -0
- data/stories/example_groups/stories.rb +7 -0
- data/stories/helper.rb +6 -0
- data/stories/interop/examples_and_tests_together +30 -0
- data/stories/interop/stories.rb +7 -0
- data/stories/interop/test_case_with_should_methods +17 -0
- data/stories/pending_stories/README +3 -0
- data/stories/resources/helpers/cmdline.rb +9 -0
- data/stories/resources/helpers/story_helper.rb +16 -0
- data/stories/resources/matchers/smart_match.rb +37 -0
- data/stories/resources/spec/example_group_with_should_methods.rb +12 -0
- data/stories/resources/spec/simple_spec.rb +8 -0
- data/stories/resources/steps/running_rspec.rb +50 -0
- data/stories/resources/test/spec_and_test_together.rb +57 -0
- data/stories/resources/test/test_case_with_should_methods.rb +30 -0
- metadata +232 -106
- data/EXAMPLES.rd +0 -111
- data/examples/multi_threaded_behaviour_runner.rb +0 -25
- data/examples/shared_behaviours_example.rb +0 -39
- data/examples/spec_helper.rb +0 -1
- data/examples/test_case_adapter_example.rb +0 -26
- data/examples/test_case_spec.rb +0 -65
- data/lib/spec/dsl.rb +0 -11
- data/lib/spec/dsl/behaviour.rb +0 -220
- data/lib/spec/dsl/behaviour_callbacks.rb +0 -82
- data/lib/spec/dsl/behaviour_eval.rb +0 -231
- data/lib/spec/dsl/behaviour_factory.rb +0 -42
- data/lib/spec/dsl/composite_proc_builder.rb +0 -33
- data/lib/spec/dsl/description.rb +0 -76
- data/lib/spec/dsl/example.rb +0 -135
- data/lib/spec/dsl/example_matcher.rb +0 -40
- data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
- data/lib/spec/runner/behaviour_runner.rb +0 -123
- data/lib/spec/runner/extensions/kernel.rb +0 -50
- data/lib/spec/runner/extensions/object.rb +0 -32
- data/lib/spec/runner/formatter.rb +0 -9
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -29
- data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
- data/lib/spec/test_case_adapter.rb +0 -10
- data/spec/spec/dsl/behaviour_eval_spec.rb +0 -79
- data/spec/spec/dsl/behaviour_factory_spec.rb +0 -48
- data/spec/spec/dsl/behaviour_spec.rb +0 -661
- data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -44
- data/spec/spec/dsl/configuration_spec.rb +0 -55
- data/spec/spec/dsl/description_spec.rb +0 -89
- data/spec/spec/dsl/example_class_spec.rb +0 -24
- data/spec/spec/dsl/example_instance_spec.rb +0 -160
- data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
- data/spec/spec/dsl/shared_behaviour_spec.rb +0 -252
- data/spec/spec/runner/behaviour_runner_spec.rb +0 -229
- data/spec/spec/runner/context_matching_spec.rb +0 -27
- data/spec/spec/runner/extensions/bug_report_10577_spec.rb +0 -35
- data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -40
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -20
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
- data/spec/spec/runner/object_ext_spec.rb +0 -11
@@ -67,7 +67,7 @@ module Spec
|
|
67
67
|
describe "a Mock expectation with multiple return values specifying at_least less than the number of values" do
|
68
68
|
before(:each) do
|
69
69
|
@mock = Mock.new("mock")
|
70
|
-
@mock.should_receive(:message).at_least(:twice).with(
|
70
|
+
@mock.should_receive(:message).at_least(:twice).with(no_args).and_return(11, 22)
|
71
71
|
end
|
72
72
|
|
73
73
|
it "should use last return value for subsequent calls" do
|
@@ -3,30 +3,42 @@ require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
3
3
|
module Spec
|
4
4
|
module Mocks
|
5
5
|
describe "calling :should_receive with an options hash" do
|
6
|
+
it_should_behave_like "sandboxed rspec_options"
|
7
|
+
attr_reader :reporter, :example_group
|
8
|
+
before do
|
9
|
+
@reporter = ::Spec::Runner::Reporter.new(options)
|
10
|
+
@example_group = Class.new(::Spec::Example::ExampleGroup) do
|
11
|
+
plugin_mock_framework
|
12
|
+
describe("Some Examples")
|
13
|
+
end
|
14
|
+
reporter.add_example_group example_group
|
15
|
+
end
|
16
|
+
|
6
17
|
it "should report the file and line submitted with :expected_from" do
|
7
|
-
|
18
|
+
example_definition = example_group.it "spec" do
|
8
19
|
mock = Spec::Mocks::Mock.new("a mock")
|
9
20
|
mock.should_receive(:message, :expected_from => "/path/to/blah.ext:37")
|
10
21
|
mock.rspec_verify
|
11
22
|
end
|
12
|
-
|
23
|
+
example = example_group.new(example_definition)
|
24
|
+
|
13
25
|
reporter.should_receive(:example_finished) do |spec, error|
|
14
26
|
error.backtrace.detect {|line| line =~ /\/path\/to\/blah.ext:37/}.should_not be_nil
|
15
27
|
end
|
16
|
-
|
28
|
+
example.execute(options, {})
|
17
29
|
end
|
18
30
|
|
19
31
|
it "should use the message supplied with :message" do
|
20
|
-
|
32
|
+
example_definition = @example_group.it "spec" do
|
21
33
|
mock = Spec::Mocks::Mock.new("a mock")
|
22
34
|
mock.should_receive(:message, :message => "recebi nada")
|
23
35
|
mock.rspec_verify
|
24
36
|
end
|
25
|
-
|
26
|
-
reporter.should_receive(:example_finished) do |spec, error|
|
37
|
+
example = @example_group.new(example_definition)
|
38
|
+
@reporter.should_receive(:example_finished) do |spec, error|
|
27
39
|
error.message.should == "recebi nada"
|
28
40
|
end
|
29
|
-
|
41
|
+
example.execute(@options, {})
|
30
42
|
end
|
31
43
|
end
|
32
44
|
end
|
@@ -6,14 +6,14 @@ module Spec
|
|
6
6
|
before(:each) do
|
7
7
|
@object = Object.new
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
it "should name the class in the failure message" do
|
11
11
|
@object.should_receive(:foo)
|
12
12
|
lambda do
|
13
13
|
@object.rspec_verify
|
14
14
|
end.should raise_error(Spec::Mocks::MockExpectationError, /Object/)
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it "should not conflict with @options in the object" do
|
18
18
|
@object.instance_eval { @options = Object.new }
|
19
19
|
@object.should_receive(:blah)
|
@@ -27,39 +27,39 @@ module Spec
|
|
27
27
|
@object.rspec_verify
|
28
28
|
end.should raise_error(Spec::Mocks::MockExpectationError)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should_not_receive should return a negative message expectation" do
|
32
32
|
@object.should_not_receive(:foobar).should be_kind_of(NegativeMessageExpectation)
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
it "should_receive should mock out the method" do
|
36
36
|
@object.should_receive(:foobar).with(:test_param).and_return(1)
|
37
37
|
@object.foobar(:test_param).should equal(1)
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
it "should_receive should handle a hash" do
|
41
41
|
@object.should_receive(:foobar).with(:key => "value").and_return(1)
|
42
42
|
@object.foobar(:key => "value").should equal(1)
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
it "should_receive should handle an inner hash" do
|
46
46
|
hash = {:a => {:key => "value"}}
|
47
47
|
@object.should_receive(:foobar).with(:key => "value").and_return(1)
|
48
48
|
@object.foobar(hash[:a]).should equal(1)
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
it "should_receive should return a message expectation" do
|
52
52
|
@object.should_receive(:foobar).should be_kind_of(MessageExpectation)
|
53
53
|
@object.foobar
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
it "should_receive should verify method was called" do
|
57
57
|
@object.should_receive(:foobar).with(:test_param).and_return(1)
|
58
58
|
lambda do
|
59
59
|
@object.rspec_verify
|
60
60
|
end.should raise_error(Spec::Mocks::MockExpectationError)
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
it "should_receive should also take a String argument" do
|
64
64
|
@object.should_receive('foobar')
|
65
65
|
@object.foobar
|
@@ -80,5 +80,27 @@ module Spec
|
|
80
80
|
end.should raise_error(Spec::Mocks::MockExpectationError, /NilClass.*expected :foobar with/)
|
81
81
|
end
|
82
82
|
end
|
83
|
+
|
84
|
+
describe "Partially mocking an object that defines ==, after another mock has been defined" do
|
85
|
+
before(:each) do
|
86
|
+
stub("existing mock", :foo => :foo)
|
87
|
+
end
|
88
|
+
|
89
|
+
class PartiallyMockedEquals
|
90
|
+
attr_reader :val
|
91
|
+
def initialize(val)
|
92
|
+
@val = val
|
93
|
+
end
|
94
|
+
|
95
|
+
def ==(other)
|
96
|
+
@val == other.val
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should not raise an error when stubbing the object" do
|
101
|
+
o = PartiallyMockedEquals.new :foo
|
102
|
+
lambda { o.stub!(:bar) }.should_not raise_error(NoMethodError)
|
103
|
+
end
|
104
|
+
end
|
83
105
|
end
|
84
106
|
end
|
@@ -5,6 +5,7 @@ module Spec
|
|
5
5
|
describe "mock argument constraints", :shared => true do
|
6
6
|
before(:each) do
|
7
7
|
@mock = Mock.new("test mock")
|
8
|
+
Kernel.stub!(:warn)
|
8
9
|
end
|
9
10
|
|
10
11
|
after(:each) do
|
@@ -49,6 +50,11 @@ module Spec
|
|
49
50
|
@mock.should_receive(:random_call).with(:any_args)
|
50
51
|
@mock.random_call("a string")
|
51
52
|
end
|
53
|
+
|
54
|
+
it "should match no args against no_args" do
|
55
|
+
@mock.should_receive(:random_call).with(:no_args)
|
56
|
+
@mock.random_call
|
57
|
+
end
|
52
58
|
end
|
53
59
|
|
54
60
|
describe Methods, "handling argument constraints" do
|
@@ -13,112 +13,74 @@ module Spec
|
|
13
13
|
:original_value
|
14
14
|
end
|
15
15
|
end
|
16
|
-
@
|
16
|
+
@instance = @class.new
|
17
17
|
end
|
18
18
|
|
19
|
-
it "should
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
mock.msg(:arg).should equal(:mock_value)
|
24
|
-
mock.msg.should equal(:stub_value)
|
25
|
-
mock.msg.should equal(:stub_value)
|
26
|
-
mock.rspec_verify
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should allow for a mock expectation to temporarily replace a method stub on a non-mock" do
|
30
|
-
@obj.stub!(:msg).and_return(:stub_value)
|
31
|
-
@obj.should_receive(:msg).with(:arg).and_return(:mock_value)
|
32
|
-
@obj.msg(:arg).should equal(:mock_value)
|
33
|
-
@obj.msg.should equal(:stub_value)
|
34
|
-
@obj.msg.should equal(:stub_value)
|
35
|
-
@obj.rspec_verify
|
19
|
+
it "should return expected value when expected message is received" do
|
20
|
+
@instance.stub!(:msg).and_return(:return_value)
|
21
|
+
@instance.msg.should equal(:return_value)
|
22
|
+
@instance.rspec_verify
|
36
23
|
end
|
37
24
|
|
38
|
-
it "should ignore when expected message is
|
39
|
-
@
|
25
|
+
it "should ignore when expected message is received" do
|
26
|
+
@instance.stub!(:msg)
|
27
|
+
@instance.msg
|
40
28
|
lambda do
|
41
|
-
@
|
29
|
+
@instance.rspec_verify
|
42
30
|
end.should_not raise_error
|
43
31
|
end
|
44
|
-
|
45
|
-
it "should clear itself on rspec_verify" do
|
46
|
-
@obj.stub!(:this_should_go).and_return(:blah)
|
47
|
-
@obj.this_should_go.should == :blah
|
48
|
-
@obj.rspec_verify
|
49
|
-
lambda do
|
50
|
-
@obj.this_should_go
|
51
|
-
end.should raise_error
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should ignore when expected message is received" do
|
55
|
-
@obj.stub!(:msg)
|
56
|
-
@obj.msg
|
57
|
-
@obj.rspec_verify
|
58
|
-
end
|
59
32
|
|
60
33
|
it "should ignore when message is received with args" do
|
61
|
-
@
|
62
|
-
@
|
63
|
-
|
34
|
+
@instance.stub!(:msg)
|
35
|
+
@instance.msg(:an_arg)
|
36
|
+
lambda do
|
37
|
+
@instance.rspec_verify
|
38
|
+
end.should_not raise_error
|
64
39
|
end
|
65
40
|
|
66
|
-
it "should not
|
41
|
+
it "should ignore when expected message is not received" do
|
42
|
+
@instance.stub!(:msg)
|
67
43
|
lambda do
|
68
|
-
|
69
|
-
end.
|
44
|
+
@instance.rspec_verify
|
45
|
+
end.should_not raise_error
|
70
46
|
end
|
71
47
|
|
72
|
-
it "should
|
73
|
-
@
|
74
|
-
@
|
75
|
-
@
|
48
|
+
it "should clear itself when verified" do
|
49
|
+
@instance.stub!(:this_should_go).and_return(:blah)
|
50
|
+
@instance.this_should_go.should == :blah
|
51
|
+
@instance.rspec_verify
|
52
|
+
lambda do
|
53
|
+
@instance.this_should_go
|
54
|
+
end.should raise_error(NameError)
|
76
55
|
end
|
77
56
|
|
78
57
|
it "should return values in order to consecutive calls" do
|
79
58
|
return_values = ["1",2,Object.new]
|
80
|
-
@
|
81
|
-
@
|
82
|
-
@
|
83
|
-
@
|
59
|
+
@instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
|
60
|
+
@instance.msg.should == return_values[0]
|
61
|
+
@instance.msg.should == return_values[1]
|
62
|
+
@instance.msg.should == return_values[2]
|
84
63
|
end
|
85
64
|
|
86
65
|
it "should keep returning last value in consecutive calls" do
|
87
66
|
return_values = ["1",2,Object.new]
|
88
|
-
@
|
89
|
-
@
|
90
|
-
@
|
91
|
-
@
|
92
|
-
@
|
93
|
-
@
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should revert to original instance method if
|
97
|
-
@
|
98
|
-
@
|
99
|
-
@
|
100
|
-
@
|
101
|
-
|
102
|
-
# NativeException in 'Stub should revert to original instance method if existed'
|
103
|
-
# java.lang.ArrayIndexOutOfBoundsException: 0
|
104
|
-
# org.jruby.internal.runtime.methods.IterateCallable.internalCall(IterateCallable.java:63)
|
105
|
-
# org.jruby.internal.runtime.methods.AbstractCallable.call(AbstractCallable.java:64)
|
106
|
-
# org.jruby.runtime.ThreadContext.yieldInternal(ThreadContext.java:574)
|
107
|
-
# org.jruby.runtime.ThreadContext.yieldSpecificBlock(ThreadContext.java:549)
|
108
|
-
# org.jruby.runtime.Block.call(Block.java:158)
|
109
|
-
# org.jruby.RubyProc.call(RubyProc.java:118)
|
110
|
-
# org.jruby.internal.runtime.methods.ProcMethod.internalCall(ProcMethod.java:69)
|
111
|
-
# org.jruby.internal.runtime.methods.AbstractMethod.call(AbstractMethod.java:58)
|
112
|
-
# org.jruby.RubyObject.callMethod(RubyObject.java:379)
|
113
|
-
# org.jruby.RubyObject.callMethod(RubyObject.java:331)
|
114
|
-
# org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:472)
|
115
|
-
# org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:462)
|
116
|
-
# org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:390)
|
117
|
-
# org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:133)
|
118
|
-
@obj.existing_instance_method.should equal(:original_value)
|
67
|
+
@instance.stub!(:msg).and_return(return_values[0],return_values[1],return_values[2])
|
68
|
+
@instance.msg.should == return_values[0]
|
69
|
+
@instance.msg.should == return_values[1]
|
70
|
+
@instance.msg.should == return_values[2]
|
71
|
+
@instance.msg.should == return_values[2]
|
72
|
+
@instance.msg.should == return_values[2]
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should revert to original instance method if there is one" do
|
76
|
+
@instance.existing_instance_method.should equal(:original_value)
|
77
|
+
@instance.stub!(:existing_instance_method).and_return(:mock_value)
|
78
|
+
@instance.existing_instance_method.should equal(:mock_value)
|
79
|
+
@instance.rspec_verify
|
80
|
+
@instance.existing_instance_method.should equal(:original_value)
|
119
81
|
end
|
120
82
|
|
121
|
-
it "should revert to original class method if
|
83
|
+
it "should revert to original class method if there is one" do
|
122
84
|
@class.existing_class_method.should equal(:original_value)
|
123
85
|
@class.stub!(:existing_class_method).and_return(:mock_value)
|
124
86
|
@class.existing_class_method.should equal(:mock_value)
|
@@ -126,34 +88,94 @@ module Spec
|
|
126
88
|
@class.existing_class_method.should equal(:original_value)
|
127
89
|
end
|
128
90
|
|
129
|
-
it "should
|
130
|
-
@
|
131
|
-
|
132
|
-
@
|
133
|
-
|
134
|
-
|
135
|
-
|
91
|
+
it "should yield a specified object" do
|
92
|
+
@instance.stub!(:method_that_yields).and_yield(:yielded_obj)
|
93
|
+
current_value = :value_before
|
94
|
+
@instance.method_that_yields {|val| current_value = val}
|
95
|
+
current_value.should == :yielded_obj
|
96
|
+
@instance.rspec_verify
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should yield multiple times with multiple calls to and_yield" do
|
100
|
+
@instance.stub!(:method_that_yields_multiple_times).and_yield(:yielded_value).
|
101
|
+
and_yield(:another_value)
|
102
|
+
current_value = []
|
103
|
+
@instance.method_that_yields_multiple_times {|val| current_value << val}
|
104
|
+
current_value.should == [:yielded_value, :another_value]
|
105
|
+
@instance.rspec_verify
|
136
106
|
end
|
137
107
|
|
138
|
-
it "should
|
139
|
-
|
140
|
-
|
141
|
-
@
|
142
|
-
|
143
|
-
@obj.rspec_verify
|
108
|
+
it "should yield a specified object and return another specified object" do
|
109
|
+
yielded_obj = mock("my mock")
|
110
|
+
yielded_obj.should_receive(:foo).with(:bar)
|
111
|
+
@instance.stub!(:method_that_yields_and_returns).and_yield(yielded_obj).and_return(:baz)
|
112
|
+
@instance.method_that_yields_and_returns { |o| o.foo :bar }.should == :baz
|
144
113
|
end
|
145
114
|
|
146
115
|
it "should throw when told to" do
|
147
|
-
@mock.stub!(:something).and_throw(:
|
116
|
+
@mock.stub!(:something).and_throw(:up)
|
148
117
|
lambda do
|
149
118
|
@mock.something
|
150
|
-
end.should throw_symbol(:
|
119
|
+
end.should throw_symbol(:up)
|
151
120
|
end
|
152
121
|
|
153
|
-
it "should
|
122
|
+
it "should override a pre-existing stub" do
|
154
123
|
@stub.stub!(:existing_instance_method).and_return(:updated_stub_value)
|
155
124
|
@stub.existing_instance_method.should == :updated_stub_value
|
156
125
|
end
|
126
|
+
|
127
|
+
it "should limit " do
|
128
|
+
@stub.stub!(:foo).with("bar")
|
129
|
+
@stub.should_receive(:foo).with("baz")
|
130
|
+
@stub.foo("bar")
|
131
|
+
@stub.foo("baz")
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
describe "A method stub with args" do
|
136
|
+
before(:each) do
|
137
|
+
@stub = Object.new
|
138
|
+
@stub.stub!(:foo).with("bar")
|
139
|
+
end
|
140
|
+
|
141
|
+
it "should not complain if not called" do
|
142
|
+
end
|
143
|
+
|
144
|
+
it "should not complain if called with arg" do
|
145
|
+
@stub.foo("bar")
|
146
|
+
end
|
147
|
+
|
148
|
+
it "should complain if called with no arg" do
|
149
|
+
lambda do
|
150
|
+
@stub.foo
|
151
|
+
end.should raise_error
|
152
|
+
end
|
153
|
+
|
154
|
+
it "should complain if called with other arg" do
|
155
|
+
lambda do
|
156
|
+
@stub.foo("other")
|
157
|
+
end.should raise_error
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should not complain if also mocked w/ different args" do
|
161
|
+
@stub.should_receive(:foo).with("baz")
|
162
|
+
@stub.foo("bar")
|
163
|
+
@stub.foo("baz")
|
164
|
+
end
|
165
|
+
|
166
|
+
it "should complain if also mocked w/ different args AND called w/ a 3rd set of args" do
|
167
|
+
@stub.should_receive(:foo).with("baz")
|
168
|
+
@stub.foo("bar")
|
169
|
+
@stub.foo("baz")
|
170
|
+
lambda do
|
171
|
+
@stub.foo("other")
|
172
|
+
end.should raise_error
|
173
|
+
end
|
174
|
+
|
175
|
+
it "should support options" do
|
176
|
+
@stub.stub!(:foo, :expected_from => "bar")
|
177
|
+
end
|
157
178
|
end
|
179
|
+
|
158
180
|
end
|
159
181
|
end
|
@@ -1,12 +1,14 @@
|
|
1
|
-
require
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
+
require File.dirname(__FILE__) + '/../../ruby_forker'
|
2
3
|
|
3
4
|
describe "The bin/spec script" do
|
5
|
+
include RubyForker
|
6
|
+
|
4
7
|
it "should have no warnings" do
|
8
|
+
pending "Hangs on JRuby" if PLATFORM =~ /java/
|
5
9
|
spec_path = "#{File.dirname(__FILE__)}/../../../bin/spec"
|
6
|
-
|
7
|
-
|
8
|
-
output = io.read
|
9
|
-
end
|
10
|
+
|
11
|
+
output = ruby "-w #{spec_path} --help 2>&1"
|
10
12
|
output.should_not =~ /warning/n
|
11
13
|
end
|
12
14
|
end
|