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
@@ -1,252 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module DSL
|
5
|
-
describe Behaviour, ", with :shared => true" do
|
6
|
-
|
7
|
-
before(:each) do
|
8
|
-
@formatter = Spec::Mocks::Mock.new("formatter", :null_object => true)
|
9
|
-
@behaviour = behaviour_class.new("behaviour") {}
|
10
|
-
end
|
11
|
-
|
12
|
-
after(:each) do
|
13
|
-
@formatter.rspec_verify
|
14
|
-
@behaviour_class = nil
|
15
|
-
$shared_behaviours.clear unless $shared_behaviours.nil?
|
16
|
-
end
|
17
|
-
|
18
|
-
def behaviour_class
|
19
|
-
unless @behaviour_class
|
20
|
-
@behaviour_class = Behaviour.dup
|
21
|
-
# dup copies the class instance vars
|
22
|
-
@behaviour_class.instance_variable_set(:@shared_behaviours, nil)
|
23
|
-
end
|
24
|
-
@behaviour_class
|
25
|
-
end
|
26
|
-
|
27
|
-
def make_shared_behaviour(name, opts=nil, &block)
|
28
|
-
behaviour = behaviour_class.new(name, :shared => true, &block)
|
29
|
-
behaviour_class.add_shared_behaviour(behaviour)
|
30
|
-
behaviour
|
31
|
-
end
|
32
|
-
|
33
|
-
def non_shared_behaviour()
|
34
|
-
@non_shared_behaviour ||= behaviour_class.new("behaviour") {}
|
35
|
-
end
|
36
|
-
|
37
|
-
it "should accept an optional options hash" do
|
38
|
-
lambda { behaviour_class.new("context") {} }.should_not raise_error(Exception)
|
39
|
-
lambda { behaviour_class.new("context", :shared => true) {} }.should_not raise_error(Exception)
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should return all shared behaviours" do
|
43
|
-
b1 = make_shared_behaviour("b1", :shared => true) {}
|
44
|
-
b2 = make_shared_behaviour("b2", :shared => true) {}
|
45
|
-
|
46
|
-
b1.should_not be(nil)
|
47
|
-
b2.should_not be(nil)
|
48
|
-
|
49
|
-
behaviour_class.find_shared_behaviour("b1").should equal(b1)
|
50
|
-
behaviour_class.find_shared_behaviour("b2").should equal(b2)
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should be shared when configured as shared" do
|
54
|
-
behaviour = make_shared_behaviour("behaviour") {}
|
55
|
-
behaviour.should be_shared
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should not be shared when not configured as shared" do
|
59
|
-
non_shared_behaviour.should_not be_shared
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should raise if run when shared" do
|
63
|
-
behaviour = make_shared_behaviour("context") {}
|
64
|
-
$example_ran = false
|
65
|
-
behaviour.it("test") {$example_ran = true}
|
66
|
-
lambda { behaviour.run(@formatter) }.should raise_error
|
67
|
-
$example_ran.should be_false
|
68
|
-
end
|
69
|
-
|
70
|
-
it "should contain examples when shared" do
|
71
|
-
shared_behaviour = make_shared_behaviour("shared behaviour") {}
|
72
|
-
shared_behaviour.it("shared example") {}
|
73
|
-
shared_behaviour.number_of_examples.should == 1
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should complain when adding a second shared behaviour with the same description" do
|
77
|
-
describe "shared behaviour", :shared => true do
|
78
|
-
end
|
79
|
-
lambda do
|
80
|
-
describe "shared behaviour", :shared => true do
|
81
|
-
end
|
82
|
-
end.should raise_error(ArgumentError)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should NOT complain when adding the same shared behaviour instance again" do
|
86
|
-
shared_behaviour = behaviour_class.new("shared behaviour", :shared => true) {}
|
87
|
-
behaviour_class.add_shared_behaviour(shared_behaviour)
|
88
|
-
behaviour_class.add_shared_behaviour(shared_behaviour)
|
89
|
-
end
|
90
|
-
|
91
|
-
it "should NOT complain when adding the same shared behaviour again (i.e. file gets reloaded)" do
|
92
|
-
lambda do
|
93
|
-
2.times do
|
94
|
-
describe "shared behaviour which gets loaded twice", :shared => true do
|
95
|
-
end
|
96
|
-
end
|
97
|
-
end.should_not raise_error(ArgumentError)
|
98
|
-
end
|
99
|
-
|
100
|
-
it "should NOT complain when adding the same shared behaviour in same file with different absolute path" do
|
101
|
-
shared_behaviour_1 = behaviour_class.new("shared behaviour", :shared => true) {}
|
102
|
-
shared_behaviour_2 = behaviour_class.new("shared behaviour", :shared => true) {}
|
103
|
-
|
104
|
-
shared_behaviour_1.description[:spec_path] = "/my/spec/a/../shared.rb"
|
105
|
-
shared_behaviour_2.description[:spec_path] = "/my/spec/b/../shared.rb"
|
106
|
-
|
107
|
-
behaviour_class.add_shared_behaviour(shared_behaviour_1)
|
108
|
-
behaviour_class.add_shared_behaviour(shared_behaviour_2)
|
109
|
-
end
|
110
|
-
|
111
|
-
it "should complain when adding a different shared behaviour with the same name in a different file with the same basename" do
|
112
|
-
shared_behaviour_1 = behaviour_class.new("shared behaviour", :shared => true) {}
|
113
|
-
shared_behaviour_2 = behaviour_class.new("shared behaviour", :shared => true) {}
|
114
|
-
|
115
|
-
shared_behaviour_1.description[:spec_path] = "/my/spec/a/shared.rb"
|
116
|
-
shared_behaviour_2.description[:spec_path] = "/my/spec/b/shared.rb"
|
117
|
-
|
118
|
-
behaviour_class.add_shared_behaviour(shared_behaviour_1)
|
119
|
-
lambda do
|
120
|
-
behaviour_class.add_shared_behaviour(shared_behaviour_2)
|
121
|
-
end.should raise_error(ArgumentError, /already exists/)
|
122
|
-
end
|
123
|
-
|
124
|
-
it "should add examples to current behaviour when calling it_should_behave_like" do
|
125
|
-
shared_behaviour = make_shared_behaviour("shared behaviour") {}
|
126
|
-
shared_behaviour.it("shared example") {}
|
127
|
-
shared_behaviour.it("shared example 2") {}
|
128
|
-
|
129
|
-
@behaviour.it("example") {}
|
130
|
-
@behaviour.number_of_examples.should == 1
|
131
|
-
@behaviour.it_should_behave_like("shared behaviour")
|
132
|
-
@behaviour.number_of_examples.should == 3
|
133
|
-
end
|
134
|
-
|
135
|
-
it "should run shared examples" do
|
136
|
-
shared_example_ran = false
|
137
|
-
shared_behaviour = make_shared_behaviour("shared behaviour") {}
|
138
|
-
shared_behaviour.it("shared example") { shared_example_ran = true }
|
139
|
-
|
140
|
-
example_ran = false
|
141
|
-
|
142
|
-
@behaviour.it_should_behave_like("shared behaviour")
|
143
|
-
@behaviour.it("example") {example_ran = true}
|
144
|
-
@behaviour.run(@formatter)
|
145
|
-
example_ran.should be_true
|
146
|
-
shared_example_ran.should be_true
|
147
|
-
end
|
148
|
-
|
149
|
-
it "should run setup and teardown from shared behaviour" do
|
150
|
-
shared_setup_ran = false
|
151
|
-
shared_teardown_ran = false
|
152
|
-
shared_behaviour = make_shared_behaviour("shared behaviour") {}
|
153
|
-
shared_behaviour.before { shared_setup_ran = true }
|
154
|
-
shared_behaviour.after { shared_teardown_ran = true }
|
155
|
-
shared_behaviour.it("shared example") { shared_example_ran = true }
|
156
|
-
|
157
|
-
example_ran = false
|
158
|
-
|
159
|
-
@behaviour.it_should_behave_like("shared behaviour")
|
160
|
-
@behaviour.it("example") {example_ran = true}
|
161
|
-
@behaviour.run(@formatter)
|
162
|
-
example_ran.should be_true
|
163
|
-
shared_setup_ran.should be_true
|
164
|
-
shared_teardown_ran.should be_true
|
165
|
-
end
|
166
|
-
|
167
|
-
it "should run before(:all) and after(:all) only once from shared behaviour" do
|
168
|
-
shared_before_all_run_count = 0
|
169
|
-
shared_after_all_run_count = 0
|
170
|
-
shared_behaviour = make_shared_behaviour("shared behaviour") {}
|
171
|
-
shared_behaviour.before(:all) { shared_before_all_run_count += 1}
|
172
|
-
shared_behaviour.after(:all) { shared_after_all_run_count += 1}
|
173
|
-
shared_behaviour.it("shared example") { shared_example_ran = true }
|
174
|
-
|
175
|
-
example_ran = false
|
176
|
-
|
177
|
-
@behaviour.it_should_behave_like("shared behaviour")
|
178
|
-
@behaviour.it("example") {example_ran = true}
|
179
|
-
@behaviour.run(@formatter)
|
180
|
-
example_ran.should be_true
|
181
|
-
shared_before_all_run_count.should == 1
|
182
|
-
shared_after_all_run_count.should == 1
|
183
|
-
end
|
184
|
-
|
185
|
-
it "should include modules, included into shared behaviour, into current behaviour" do
|
186
|
-
@formatter.should_receive(:add_behaviour).with(any_args)
|
187
|
-
@formatter.should_receive(:example_finished).twice.with(any_args)
|
188
|
-
|
189
|
-
shared_behaviour = make_shared_behaviour("shared behaviour") {}
|
190
|
-
shared_behaviour.it("shared example") { shared_example_ran = true }
|
191
|
-
|
192
|
-
mod1_method_called = false
|
193
|
-
mod1 = Module.new do
|
194
|
-
define_method :mod1_method do
|
195
|
-
mod1_method_called = true
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
|
-
mod2_method_called = false
|
200
|
-
mod2 = Module.new do
|
201
|
-
define_method :mod2_method do
|
202
|
-
mod2_method_called = true
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
shared_behaviour.include mod2
|
207
|
-
|
208
|
-
@behaviour.it_should_behave_like("shared behaviour")
|
209
|
-
@behaviour.include mod1
|
210
|
-
|
211
|
-
@behaviour.it("test") do
|
212
|
-
mod1_method
|
213
|
-
mod2_method
|
214
|
-
end
|
215
|
-
@behaviour.run(@formatter)
|
216
|
-
mod1_method_called.should be_true
|
217
|
-
mod2_method_called.should be_true
|
218
|
-
end
|
219
|
-
|
220
|
-
it "should make methods defined in the shared behaviour available in consuming behaviour" do
|
221
|
-
shared_behaviour = make_shared_behaviour("shared behaviour xyz") do
|
222
|
-
def a_shared_helper_method
|
223
|
-
"this got defined in a shared behaviour"
|
224
|
-
end
|
225
|
-
end
|
226
|
-
@behaviour.it_should_behave_like("shared behaviour xyz")
|
227
|
-
success = false
|
228
|
-
@behaviour.it("should access a_shared_helper_method") do
|
229
|
-
a_shared_helper_method
|
230
|
-
success = true
|
231
|
-
end
|
232
|
-
@behaviour.run(@formatter)
|
233
|
-
success.should be_true
|
234
|
-
end
|
235
|
-
|
236
|
-
it "should error if told to inherit from a class" do
|
237
|
-
shared_behaviour = make_shared_behaviour("shared behaviour") {}
|
238
|
-
shared_behaviour.it("shared example") { shared_example_ran = true }
|
239
|
-
lambda { shared_behaviour.inherit Object }.should raise_error(ArgumentError)
|
240
|
-
end
|
241
|
-
|
242
|
-
it "should raise when named shared behaviour can not be found" do
|
243
|
-
begin
|
244
|
-
@behaviour.it_should_behave_like("non-existent shared behaviour")
|
245
|
-
violated
|
246
|
-
rescue => e
|
247
|
-
e.message.should == "Shared Behaviour 'non-existent shared behaviour' can not be found"
|
248
|
-
end
|
249
|
-
end
|
250
|
-
end
|
251
|
-
end
|
252
|
-
end
|
@@ -1,229 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
|
-
|
3
|
-
module Spec
|
4
|
-
module Runner
|
5
|
-
describe BehaviourRunner, "#add_behaviour affecting passed in behaviour" do
|
6
|
-
before do
|
7
|
-
@err = StringIO.new('')
|
8
|
-
@out = StringIO.new('')
|
9
|
-
@options = Options.new(@err,@out)
|
10
|
-
@runner = BehaviourRunner.new(@options)
|
11
|
-
class << @runner
|
12
|
-
attr_reader :behaviours
|
13
|
-
end
|
14
|
-
|
15
|
-
@behaviour = ::Spec::DSL::Behaviour.new("A Behaviour") do
|
16
|
-
it "runs 1" do
|
17
|
-
end
|
18
|
-
it "runs 2" do
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
it "removes examples not selected from Behaviour when options.examples is set" do
|
24
|
-
@options.examples << "A Behaviour runs 1"
|
25
|
-
|
26
|
-
@behaviour.number_of_examples.should == 2
|
27
|
-
|
28
|
-
@runner.add_behaviour @behaviour
|
29
|
-
@behaviour.number_of_examples.should == 1
|
30
|
-
@behaviour.examples.first.send(:description).should == "runs 1"
|
31
|
-
end
|
32
|
-
|
33
|
-
it "keeps all examples when options.examples is nil" do
|
34
|
-
@options.examples = nil
|
35
|
-
@behaviour.number_of_examples.should == 2
|
36
|
-
|
37
|
-
@runner.add_behaviour @behaviour
|
38
|
-
@behaviour.number_of_examples.should == 2
|
39
|
-
@behaviour.examples.collect {|example| example.send(:description) }.should == ['runs 1', 'runs 2']
|
40
|
-
end
|
41
|
-
|
42
|
-
it "keeps all examples when options.examples is empty" do
|
43
|
-
@options.examples = []
|
44
|
-
@behaviour.number_of_examples.should == 2
|
45
|
-
|
46
|
-
@runner.add_behaviour @behaviour
|
47
|
-
@behaviour.number_of_examples.should == 2
|
48
|
-
@behaviour.examples.collect {|example| example.send(:description) }.should == ['runs 1', 'runs 2']
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe BehaviourRunner, "#add_behaviour affecting behaviours" do
|
53
|
-
before do
|
54
|
-
@err = StringIO.new('')
|
55
|
-
@out = StringIO.new('')
|
56
|
-
@options = Options.new(@err,@out)
|
57
|
-
@runner = BehaviourRunner.new(@options)
|
58
|
-
class << @runner
|
59
|
-
attr_reader :behaviours
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
it "adds behaviour when behaviour has examples and is not shared" do
|
64
|
-
@behaviour = ::Spec::DSL::Behaviour.new("A Behaviour") do
|
65
|
-
it "uses this behaviour" do
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
@behaviour.should_not be_shared
|
70
|
-
@behaviour.number_of_examples.should be > 0
|
71
|
-
@runner.add_behaviour @behaviour
|
72
|
-
|
73
|
-
@runner.behaviours.length.should == 1
|
74
|
-
end
|
75
|
-
|
76
|
-
it "does not add the behaviour when number_of_examples is 0" do
|
77
|
-
@behaviour = ::Spec::DSL::Behaviour.new("A Behaviour") do
|
78
|
-
end
|
79
|
-
@behaviour.number_of_examples.should == 0
|
80
|
-
@runner.add_behaviour @behaviour
|
81
|
-
|
82
|
-
@runner.behaviours.should be_empty
|
83
|
-
end
|
84
|
-
|
85
|
-
it "does not add the behaviour when behaviour is shared" do
|
86
|
-
@behaviour = ::Spec::DSL::Behaviour.new("A Behaviour", :shared => true) do
|
87
|
-
it "does not use this behaviour" do
|
88
|
-
end
|
89
|
-
end
|
90
|
-
@behaviour.should be_shared
|
91
|
-
@runner.add_behaviour @behaviour
|
92
|
-
|
93
|
-
@runner.behaviours.should be_empty
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
describe BehaviourRunner do
|
98
|
-
before do
|
99
|
-
@err = StringIO.new('')
|
100
|
-
@out = StringIO.new('')
|
101
|
-
@options = Options.new(@err,@out)
|
102
|
-
end
|
103
|
-
|
104
|
-
it "should only run behaviours with at least one example" do
|
105
|
-
desired_behaviour = mock("desired behaviour")
|
106
|
-
desired_behaviour.should_receive(:run)
|
107
|
-
desired_behaviour.should_receive(:retain_examples_matching!)
|
108
|
-
desired_behaviour.should_receive(:number_of_examples).twice.and_return(1)
|
109
|
-
desired_behaviour.should_receive(:shared?).and_return(false)
|
110
|
-
desired_behaviour.should_receive(:set_sequence_numbers).with(0, anything)
|
111
|
-
|
112
|
-
other_behaviour = mock("other behaviour")
|
113
|
-
other_behaviour.should_receive(:run).never
|
114
|
-
other_behaviour.should_receive(:retain_examples_matching!)
|
115
|
-
other_behaviour.should_receive(:number_of_examples).and_return(0)
|
116
|
-
|
117
|
-
reporter = mock("reporter")
|
118
|
-
@options.reporter = reporter
|
119
|
-
@options.examples = ["desired behaviour legal spec"]
|
120
|
-
|
121
|
-
runner = Spec::Runner::BehaviourRunner.new(@options)
|
122
|
-
runner.add_behaviour(desired_behaviour)
|
123
|
-
runner.add_behaviour(other_behaviour)
|
124
|
-
reporter.should_receive(:start)
|
125
|
-
reporter.should_receive(:end)
|
126
|
-
reporter.should_receive(:dump)
|
127
|
-
runner.run([], false)
|
128
|
-
end
|
129
|
-
|
130
|
-
it "should dump even if Interrupt exception is occurred" do
|
131
|
-
behaviour = Spec::DSL::Behaviour.new("behaviour") do
|
132
|
-
it "no error" do
|
133
|
-
end
|
134
|
-
|
135
|
-
it "should interrupt" do
|
136
|
-
raise Interrupt
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
reporter = mock("reporter")
|
141
|
-
reporter.should_receive(:start)
|
142
|
-
reporter.should_receive(:add_behaviour)
|
143
|
-
reporter.should_receive(:example_started).twice
|
144
|
-
reporter.should_receive(:example_finished).twice
|
145
|
-
reporter.should_receive(:rspec_verify)
|
146
|
-
reporter.should_receive(:rspec_reset)
|
147
|
-
reporter.should_receive(:end)
|
148
|
-
reporter.should_receive(:dump)
|
149
|
-
|
150
|
-
@options.reporter = reporter
|
151
|
-
runner = Spec::Runner::BehaviourRunner.new(@options)
|
152
|
-
runner.add_behaviour(behaviour)
|
153
|
-
runner.run([], false)
|
154
|
-
end
|
155
|
-
|
156
|
-
it "should heckle when options have heckle_runner" do
|
157
|
-
behaviour = mock("behaviour", :null_object => true)
|
158
|
-
behaviour.should_receive(:number_of_examples).twice.and_return(1)
|
159
|
-
behaviour.should_receive(:run).and_return(0)
|
160
|
-
behaviour.should_receive(:shared?).and_return(false)
|
161
|
-
|
162
|
-
reporter = mock("reporter")
|
163
|
-
reporter.should_receive(:start).with(1)
|
164
|
-
reporter.should_receive(:end)
|
165
|
-
reporter.should_receive(:dump).and_return(0)
|
166
|
-
|
167
|
-
heckle_runner = mock("heckle_runner")
|
168
|
-
heckle_runner.should_receive(:heckle_with)
|
169
|
-
|
170
|
-
@options.reporter = reporter
|
171
|
-
@options.heckle_runner = heckle_runner
|
172
|
-
|
173
|
-
runner = Spec::Runner::BehaviourRunner.new(@options)
|
174
|
-
runner.add_behaviour(behaviour)
|
175
|
-
runner.run([], false)
|
176
|
-
end
|
177
|
-
|
178
|
-
it "should run examples backwards if options.reverse is true" do
|
179
|
-
@options.reverse = true
|
180
|
-
|
181
|
-
reporter = mock("reporter")
|
182
|
-
reporter.should_receive(:start).with(3)
|
183
|
-
reporter.should_receive(:end)
|
184
|
-
reporter.should_receive(:dump).and_return(0)
|
185
|
-
@options.reporter = reporter
|
186
|
-
|
187
|
-
runner = Spec::Runner::BehaviourRunner.new(@options)
|
188
|
-
b1 = mock("b1")
|
189
|
-
b1.should_receive(:number_of_examples).twice.and_return(1)
|
190
|
-
b1.should_receive(:shared?).and_return(false)
|
191
|
-
b1.should_receive(:set_sequence_numbers).with(12, true).and_return(18)
|
192
|
-
|
193
|
-
b2 = mock("b2")
|
194
|
-
b2.should_receive(:number_of_examples).twice.and_return(2)
|
195
|
-
b2.should_receive(:shared?).and_return(false)
|
196
|
-
b2.should_receive(:set_sequence_numbers).with(0, true).and_return(12)
|
197
|
-
b2.should_receive(:run) do
|
198
|
-
b1.should_receive(:run)
|
199
|
-
end
|
200
|
-
|
201
|
-
runner.add_behaviour(b1)
|
202
|
-
runner.add_behaviour(b2)
|
203
|
-
|
204
|
-
runner.run([], false)
|
205
|
-
end
|
206
|
-
|
207
|
-
it "should yield global configuration" do
|
208
|
-
Spec::Runner.configure do |config|
|
209
|
-
config.should equal(Spec::Runner.configuration)
|
210
|
-
end
|
211
|
-
end
|
212
|
-
|
213
|
-
it "should pass its Description to the reporter" do
|
214
|
-
behaviour = Spec::DSL::Behaviour.new("behaviour") do
|
215
|
-
it "should" do
|
216
|
-
end
|
217
|
-
end
|
218
|
-
|
219
|
-
reporter = mock("reporter", :null_object => true)
|
220
|
-
reporter.should_receive(:add_behaviour).with(an_instance_of(Spec::DSL::Description))
|
221
|
-
|
222
|
-
@options.reporter = reporter
|
223
|
-
runner = Spec::Runner::BehaviourRunner.new(@options)
|
224
|
-
runner.add_behaviour(behaviour)
|
225
|
-
runner.run([], false)
|
226
|
-
end
|
227
|
-
end
|
228
|
-
end
|
229
|
-
end
|