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
@@ -0,0 +1,89 @@
|
|
1
|
+
module Spec
|
2
|
+
module Story
|
3
|
+
|
4
|
+
class StepGroupHash < Hash
|
5
|
+
def initialize
|
6
|
+
super do |h,k|
|
7
|
+
h[k] = Spec::Story::StepGroup.new
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
class StepGroup
|
13
|
+
def self.steps(&block)
|
14
|
+
@step_group ||= StepGroup.new(false)
|
15
|
+
@step_group.instance_eval(&block) if block
|
16
|
+
@step_group
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(init_defaults=true, &block)
|
20
|
+
@hash_of_lists_of_steps = Hash.new {|h, k| h[k] = []}
|
21
|
+
if init_defaults
|
22
|
+
self.class.steps.add_to(self)
|
23
|
+
end
|
24
|
+
instance_eval(&block) if block
|
25
|
+
end
|
26
|
+
|
27
|
+
def find(type, name)
|
28
|
+
@hash_of_lists_of_steps[type].each do |step|
|
29
|
+
return step if step.matches?(name)
|
30
|
+
end
|
31
|
+
return nil
|
32
|
+
end
|
33
|
+
|
34
|
+
def GivenScenario(name, &block)
|
35
|
+
create_matcher(:given_scenario, name, &block)
|
36
|
+
end
|
37
|
+
|
38
|
+
def Given(name, &block)
|
39
|
+
create_matcher(:given, name, &block)
|
40
|
+
end
|
41
|
+
|
42
|
+
def When(name, &block)
|
43
|
+
create_matcher(:when, name, &block)
|
44
|
+
end
|
45
|
+
|
46
|
+
def Then(name, &block)
|
47
|
+
create_matcher(:then, name, &block)
|
48
|
+
end
|
49
|
+
|
50
|
+
alias :given_scenario :GivenScenario
|
51
|
+
alias :given :Given
|
52
|
+
alias :when :When
|
53
|
+
alias :then :Then
|
54
|
+
|
55
|
+
def add(type, steps)
|
56
|
+
(@hash_of_lists_of_steps[type] << steps).flatten!
|
57
|
+
end
|
58
|
+
|
59
|
+
def clear
|
60
|
+
@hash_of_lists_of_steps.clear
|
61
|
+
end
|
62
|
+
|
63
|
+
def empty?
|
64
|
+
[:given_scenario, :given, :when, :then].each do |type|
|
65
|
+
return false unless @hash_of_lists_of_steps[type].empty?
|
66
|
+
end
|
67
|
+
return true
|
68
|
+
end
|
69
|
+
|
70
|
+
def add_to(other_step_matchers)
|
71
|
+
[:given_scenario, :given, :when, :then].each do |type|
|
72
|
+
other_step_matchers.add(type, @hash_of_lists_of_steps[type])
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def <<(other_step_matchers)
|
77
|
+
other_step_matchers.add_to(self) if other_step_matchers.respond_to?(:add_to)
|
78
|
+
end
|
79
|
+
|
80
|
+
# TODO - make me private
|
81
|
+
def create_matcher(type, name, &block)
|
82
|
+
matcher = Step.new(name, &block)
|
83
|
+
@hash_of_lists_of_steps[type] << matcher
|
84
|
+
matcher
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Spec
|
2
|
+
module Story
|
3
|
+
class StepMother
|
4
|
+
def initialize
|
5
|
+
@steps = StepGroup.new
|
6
|
+
end
|
7
|
+
|
8
|
+
def use(new_step_group)
|
9
|
+
@steps << new_step_group
|
10
|
+
end
|
11
|
+
|
12
|
+
def store(type, step)
|
13
|
+
@steps.add(type, step)
|
14
|
+
end
|
15
|
+
|
16
|
+
def find(type, name)
|
17
|
+
if @steps.find(type, name).nil?
|
18
|
+
@steps.add(type,
|
19
|
+
Step.new(name) do
|
20
|
+
raise Spec::Example::ExamplePendingError.new("Unimplemented step: #{name}")
|
21
|
+
end
|
22
|
+
)
|
23
|
+
end
|
24
|
+
@steps.find(type, name)
|
25
|
+
end
|
26
|
+
|
27
|
+
def clear
|
28
|
+
@steps.clear
|
29
|
+
end
|
30
|
+
|
31
|
+
def empty?
|
32
|
+
@steps.empty?
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Spec
|
2
|
+
module Story
|
3
|
+
class Story
|
4
|
+
attr_reader :title, :narrative
|
5
|
+
|
6
|
+
def initialize(title, narrative, params = {}, &body)
|
7
|
+
@body = body
|
8
|
+
@title = title
|
9
|
+
@narrative = narrative
|
10
|
+
@params = params
|
11
|
+
end
|
12
|
+
|
13
|
+
def [](key)
|
14
|
+
@params[key]
|
15
|
+
end
|
16
|
+
|
17
|
+
def run_in(obj)
|
18
|
+
obj.instance_eval(&@body)
|
19
|
+
end
|
20
|
+
|
21
|
+
def assign_steps_to(assignee)
|
22
|
+
if @params[:steps]
|
23
|
+
assignee.use(@params[:steps])
|
24
|
+
else
|
25
|
+
case keys = @params[:steps_for]
|
26
|
+
when Symbol
|
27
|
+
keys = [keys]
|
28
|
+
when nil
|
29
|
+
keys = []
|
30
|
+
end
|
31
|
+
keys.each do |key|
|
32
|
+
assignee.use(steps_for(key))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def steps_for(key)
|
38
|
+
$rspec_story_steps[key]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'spec/expectations'
|
3
|
+
require 'spec/matchers'
|
4
|
+
require 'spec/example/pending'
|
5
|
+
|
6
|
+
module Spec
|
7
|
+
module Story
|
8
|
+
=begin
|
9
|
+
A World represents the actual instance a scenario will run in.
|
10
|
+
|
11
|
+
The runner ensures any instance variables and methods defined anywhere
|
12
|
+
in a story block are available to all the scenarios. This includes
|
13
|
+
variables that are created or referenced inside Given, When and Then
|
14
|
+
blocks.
|
15
|
+
=end
|
16
|
+
module World
|
17
|
+
include ::Spec::Example::Pending
|
18
|
+
include ::Spec::Matchers
|
19
|
+
# store steps and listeners in the singleton metaclass.
|
20
|
+
# This serves both to keep them out of the way of runtime Worlds
|
21
|
+
# and to make them available to all instances.
|
22
|
+
class << self
|
23
|
+
def create(cls = Object, *args)
|
24
|
+
cls.new(*args).extend(World)
|
25
|
+
end
|
26
|
+
|
27
|
+
def listeners
|
28
|
+
@listeners ||= []
|
29
|
+
end
|
30
|
+
|
31
|
+
def add_listener(listener)
|
32
|
+
listeners() << listener
|
33
|
+
end
|
34
|
+
|
35
|
+
def step_mother
|
36
|
+
@step_mother ||= StepMother.new
|
37
|
+
end
|
38
|
+
|
39
|
+
def use(steps)
|
40
|
+
step_mother.use(steps)
|
41
|
+
end
|
42
|
+
|
43
|
+
def step_names
|
44
|
+
@step_names ||= []
|
45
|
+
end
|
46
|
+
|
47
|
+
def run_given_scenario_with_suspended_listeners(world, type, name, scenario)
|
48
|
+
current_listeners = Array.new(listeners)
|
49
|
+
begin
|
50
|
+
listeners.each { |l| l.found_scenario(type, name) }
|
51
|
+
@listeners.clear
|
52
|
+
scenario.perform(world, name) unless ::Spec::Story::Runner.dry_run
|
53
|
+
ensure
|
54
|
+
@listeners.replace(current_listeners)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def store_and_call(world, type, name, *args, &block)
|
59
|
+
if block_given?
|
60
|
+
step_mother.store(type, Step.new(name, &block))
|
61
|
+
end
|
62
|
+
step = step_mother.find(type, name)
|
63
|
+
|
64
|
+
step_name = step.name
|
65
|
+
step_names << step_name
|
66
|
+
|
67
|
+
# It's important to have access to the parsed args here, so
|
68
|
+
# we can give them to the listeners. The HTML reporter needs
|
69
|
+
# the args so it can style them. See the generated output in
|
70
|
+
# story_server/prototype/rspec_stories.html (generated by rake stories)
|
71
|
+
args = step.parse_args(name) if args.empty?
|
72
|
+
begin
|
73
|
+
step.perform(world, *args) unless ::Spec::Story::Runner.dry_run
|
74
|
+
listeners.each { |l| l.step_succeeded(type, step_name, *args) }
|
75
|
+
rescue Exception => e
|
76
|
+
case e
|
77
|
+
when Spec::Example::ExamplePendingError
|
78
|
+
@listeners.each { |l| l.step_pending(type, step_name, *args) }
|
79
|
+
else
|
80
|
+
@listeners.each { |l| l.step_failed(type, step_name, *args) }
|
81
|
+
end
|
82
|
+
errors << e
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def errors
|
87
|
+
@errors ||= []
|
88
|
+
end
|
89
|
+
end # end of class << self
|
90
|
+
|
91
|
+
def start_collecting_errors
|
92
|
+
errors.clear
|
93
|
+
end
|
94
|
+
|
95
|
+
def errors
|
96
|
+
World.errors
|
97
|
+
end
|
98
|
+
|
99
|
+
def GivenScenario(name)
|
100
|
+
World.run_given_scenario_with_suspended_listeners(self, :'given scenario', name, GivenScenario.new(name))
|
101
|
+
@__previous_step = :given
|
102
|
+
end
|
103
|
+
|
104
|
+
def Given(name, *args, &block)
|
105
|
+
World.store_and_call self, :given, name, *args, &block
|
106
|
+
@__previous_step = :given
|
107
|
+
end
|
108
|
+
|
109
|
+
def When(name, *args, &block)
|
110
|
+
World.store_and_call self, :when, name, *args, &block
|
111
|
+
@__previous_step = :when
|
112
|
+
end
|
113
|
+
|
114
|
+
def Then(name, *args, &block)
|
115
|
+
World.store_and_call self, :then, name, *args, &block
|
116
|
+
@__previous_step = :then
|
117
|
+
end
|
118
|
+
|
119
|
+
def And(name, *args, &block)
|
120
|
+
World.store_and_call self, @__previous_step, name, *args, &block
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
data/lib/spec/version.rb
CHANGED
@@ -2,16 +2,15 @@ module Spec
|
|
2
2
|
module VERSION
|
3
3
|
unless defined? MAJOR
|
4
4
|
MAJOR = 1
|
5
|
-
MINOR =
|
6
|
-
TINY =
|
5
|
+
MINOR = 1
|
6
|
+
TINY = 0
|
7
7
|
RELEASE_CANDIDATE = nil
|
8
8
|
|
9
|
-
|
10
|
-
REV = "$LastChangedRevision: 2338 $".match(/LastChangedRevision: (\d+)/)[1]
|
9
|
+
BUILD_TIME_UTC = 20071214045307
|
11
10
|
|
12
11
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
13
12
|
TAG = "REL_#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('_')}".upcase.gsub(/\.|-/, '_')
|
14
|
-
FULL_VERSION = "#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('.')} (
|
13
|
+
FULL_VERSION = "#{[MAJOR, MINOR, TINY, RELEASE_CANDIDATE].compact.join('.')} (build #{BUILD_TIME_UTC})"
|
15
14
|
|
16
15
|
NAME = "RSpec"
|
17
16
|
URL = "http://rspec.rubyforge.org/"
|
@@ -3,7 +3,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "lib", "s
|
|
3
3
|
module Spec
|
4
4
|
module Plugins
|
5
5
|
module MockFramework
|
6
|
-
include Spec::Mocks::
|
6
|
+
include Spec::Mocks::ExampleMethods
|
7
7
|
def setup_mocks_for_rspec
|
8
8
|
$rspec_mocks ||= Spec::Mocks::Space.new
|
9
9
|
end
|
data/spec/autotest/rspec_spec.rb
CHANGED
@@ -39,7 +39,10 @@ HERE
|
|
39
39
|
|
40
40
|
describe Rspec, "rspec_commands" do
|
41
41
|
it "should contain the various commands, ordered by preference" do
|
42
|
-
Rspec.new.spec_commands.should == [
|
42
|
+
Rspec.new.spec_commands.should == [
|
43
|
+
File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec"),
|
44
|
+
"#{Config::CONFIG['bindir']}/spec"
|
45
|
+
]
|
43
46
|
end
|
44
47
|
end
|
45
48
|
|
@@ -54,8 +57,9 @@ HERE
|
|
54
57
|
it "should try to find the spec command if it exists in ./bin and use it above everything else" do
|
55
58
|
File.stub!(:exists?).and_return true
|
56
59
|
|
57
|
-
File.
|
58
|
-
|
60
|
+
spec_path = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
|
61
|
+
File.should_receive(:exists?).with(spec_path).and_return true
|
62
|
+
@rspec_autotest.spec_command.should == spec_path
|
59
63
|
end
|
60
64
|
|
61
65
|
it "should otherwise select the default spec command in gem_dir/bin/spec" do
|
@@ -85,15 +89,17 @@ HERE
|
|
85
89
|
|
86
90
|
it "should use the ALT_SEPARATOR if it is non-nil" do
|
87
91
|
@rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
|
88
|
-
|
89
|
-
@rspec_autotest.
|
92
|
+
spec_command = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
|
93
|
+
@rspec_autotest.stub!(:spec_commands).and_return [spec_command]
|
94
|
+
@rspec_autotest.spec_command.should == spec_command.gsub('/', '\\')
|
90
95
|
end
|
91
96
|
|
92
97
|
it "should not use the ALT_SEPATOR if it is nil" do
|
93
98
|
@windows_alt_separator = nil
|
94
99
|
@rspec_autotest = Rspec.new(@kernel, @posix_separator, @windows_alt_separator)
|
95
|
-
|
96
|
-
@rspec_autotest.
|
100
|
+
spec_command = File.expand_path("#{File.dirname(__FILE__)}/../../bin/spec")
|
101
|
+
@rspec_autotest.stub!(:spec_commands).and_return [spec_command]
|
102
|
+
@rspec_autotest.spec_command.should == spec_command
|
97
103
|
end
|
98
104
|
end
|
99
105
|
|
data/spec/autotest_helper.rb
CHANGED
data/spec/rspec_suite.rb
ADDED
data/spec/ruby_forker.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rbconfig'
|
2
|
+
|
3
|
+
module RubyForker
|
4
|
+
# Forks a ruby interpreter with same type as ourself.
|
5
|
+
# juby will fork jruby, ruby will fork ruby etc.
|
6
|
+
def ruby(args, stderr=nil)
|
7
|
+
config = ::Config::CONFIG
|
8
|
+
interpreter = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT']
|
9
|
+
cmd = "#{interpreter} #{args}"
|
10
|
+
cmd << " 2> #{stderr}" unless stderr.nil?
|
11
|
+
`#{cmd}`
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,290 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
2
|
+
|
3
|
+
module Spec
|
4
|
+
module Example
|
5
|
+
ConfigurationSpec =
|
6
|
+
describe Configuration, :shared => true do
|
7
|
+
before(:each) do
|
8
|
+
@config = Configuration.new
|
9
|
+
@example_group = mock("example_group")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
describe Configuration, "#mock_with" do
|
14
|
+
include ConfigurationSpec
|
15
|
+
it "should default mock framework to rspec" do
|
16
|
+
@config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should let you set rspec mocking explicitly" do
|
20
|
+
@config.mock_with(:rspec)
|
21
|
+
@config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rspec$/
|
22
|
+
end
|
23
|
+
|
24
|
+
it "should let you set mocha" do
|
25
|
+
@config.mock_with(:mocha)
|
26
|
+
@config.mock_framework.should =~ /\/plugins\/mock_frameworks\/mocha$/
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should let you set flexmock" do
|
30
|
+
@config.mock_with(:flexmock)
|
31
|
+
@config.mock_framework.should =~ /\/plugins\/mock_frameworks\/flexmock$/
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should let you set rr" do
|
35
|
+
@config.mock_with(:rr)
|
36
|
+
@config.mock_framework.should =~ /\/plugins\/mock_frameworks\/rr$/
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should let you set an arbitrary adapter module" do
|
40
|
+
adapter = Module.new
|
41
|
+
@config.mock_with(adapter)
|
42
|
+
@config.mock_framework.should == adapter
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe Configuration, "#include" do
|
47
|
+
include ConfigurationSpec
|
48
|
+
|
49
|
+
before do
|
50
|
+
@original_configuration = Spec::Runner.configuration
|
51
|
+
spec_configuration = @config
|
52
|
+
Spec::Runner.instance_eval {@configuration = spec_configuration}
|
53
|
+
@example_group_class = Class.new(ExampleGroup) do
|
54
|
+
class << self
|
55
|
+
def this_class_has_special_methods
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
ExampleGroupFactory.register(:foobar, @example_group_class)
|
60
|
+
end
|
61
|
+
|
62
|
+
after do
|
63
|
+
original_configuration = @original_configuration
|
64
|
+
Spec::Runner.instance_eval {@configuration = original_configuration}
|
65
|
+
ExampleGroupFactory.reset
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should include the submitted module in ExampleGroup subclasses" do
|
69
|
+
mod = Module.new
|
70
|
+
@config.include mod
|
71
|
+
Class.new(@example_group_class).included_modules.should include(mod)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should let you define modules to be included for a specific type" do
|
75
|
+
mod = Module.new
|
76
|
+
@config.include mod, :type => :foobar
|
77
|
+
Class.new(@example_group_class).included_modules.should include(mod)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "should not include modules in a type they are not intended for" do
|
81
|
+
mod = Module.new
|
82
|
+
@other_example_group_class = Class.new(ExampleGroup)
|
83
|
+
ExampleGroupFactory.register(:baz, @other_example_group_class)
|
84
|
+
|
85
|
+
@config.include mod, :type => :foobar
|
86
|
+
|
87
|
+
Class.new(@other_example_group_class).included_modules.should_not include(mod)
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should not extend the ExampleGroup baseclass (to enable the included hook to work properly)" do
|
91
|
+
pending("need to figure out how to best express this one")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
ConfigurationCallbacksSpec =
|
96
|
+
describe Configuration, "callbacks", :shared => true do
|
97
|
+
before do
|
98
|
+
@config = Configuration.new
|
99
|
+
@special_example_group = Class.new(ExampleGroup)
|
100
|
+
@special_child_example_group = Class.new(@special_example_group)
|
101
|
+
@nonspecial_example_group = Class.new(ExampleGroup)
|
102
|
+
ExampleGroupFactory.register(:special, @special_example_group)
|
103
|
+
ExampleGroupFactory.register(:special_child, @special_child_example_group)
|
104
|
+
ExampleGroupFactory.register(:non_special, @nonspecial_example_group)
|
105
|
+
@example_group = @special_child_example_group.describe "Special Example Group"
|
106
|
+
@unselected_example_group = Class.new(@nonspecial_example_group).describe "Non Special Example Group"
|
107
|
+
end
|
108
|
+
|
109
|
+
after do
|
110
|
+
ExampleGroupFactory.reset
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe Configuration, "#prepend_before" do
|
115
|
+
include ConfigurationCallbacksSpec
|
116
|
+
|
117
|
+
it "prepends the before block on all instances of the passed in type" do
|
118
|
+
order = []
|
119
|
+
@config.prepend_before(:all) do
|
120
|
+
order << :prepend__before_all
|
121
|
+
end
|
122
|
+
@config.prepend_before(:all, :type => :special) do
|
123
|
+
order << :special_prepend__before_all
|
124
|
+
end
|
125
|
+
@config.prepend_before(:all, :type => :special_child) do
|
126
|
+
order << :special_child_prepend__before_all
|
127
|
+
end
|
128
|
+
@config.prepend_before(:each) do
|
129
|
+
order << :prepend__before_each
|
130
|
+
end
|
131
|
+
@config.prepend_before(:each, :type => :special) do
|
132
|
+
order << :special_prepend__before_each
|
133
|
+
end
|
134
|
+
@config.prepend_before(:each, :type => :special_child) do
|
135
|
+
order << :special_child_prepend__before_each
|
136
|
+
end
|
137
|
+
@config.prepend_before(:all, :type => :non_special) do
|
138
|
+
order << :special_prepend__before_all
|
139
|
+
end
|
140
|
+
@config.prepend_before(:each, :type => :non_special) do
|
141
|
+
order << :special_prepend__before_each
|
142
|
+
end
|
143
|
+
@example_group.it "calls prepend_before" do
|
144
|
+
end
|
145
|
+
|
146
|
+
@example_group.run
|
147
|
+
order.should == [
|
148
|
+
:prepend__before_all,
|
149
|
+
:special_prepend__before_all,
|
150
|
+
:special_child_prepend__before_all,
|
151
|
+
:prepend__before_each,
|
152
|
+
:special_prepend__before_each,
|
153
|
+
:special_child_prepend__before_each
|
154
|
+
]
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe Configuration, "#append_before" do
|
159
|
+
include ConfigurationCallbacksSpec
|
160
|
+
|
161
|
+
it "calls append_before on the type" do
|
162
|
+
order = []
|
163
|
+
@config.append_before(:all) do
|
164
|
+
order << :append_before_all
|
165
|
+
end
|
166
|
+
@config.append_before(:all, :type => :special) do
|
167
|
+
order << :special_append_before_all
|
168
|
+
end
|
169
|
+
@config.append_before(:all, :type => :special_child) do
|
170
|
+
order << :special_child_append_before_all
|
171
|
+
end
|
172
|
+
@config.append_before(:each) do
|
173
|
+
order << :append_before_each
|
174
|
+
end
|
175
|
+
@config.append_before(:each, :type => :special) do
|
176
|
+
order << :special_append_before_each
|
177
|
+
end
|
178
|
+
@config.append_before(:each, :type => :special_child) do
|
179
|
+
order << :special_child_append_before_each
|
180
|
+
end
|
181
|
+
@config.append_before(:all, :type => :non_special) do
|
182
|
+
order << :special_append_before_all
|
183
|
+
end
|
184
|
+
@config.append_before(:each, :type => :non_special) do
|
185
|
+
order << :special_append_before_each
|
186
|
+
end
|
187
|
+
@example_group.it "calls append_before" do
|
188
|
+
end
|
189
|
+
|
190
|
+
@example_group.run
|
191
|
+
order.should == [
|
192
|
+
:append_before_all,
|
193
|
+
:special_append_before_all,
|
194
|
+
:special_child_append_before_all,
|
195
|
+
:append_before_each,
|
196
|
+
:special_append_before_each,
|
197
|
+
:special_child_append_before_each
|
198
|
+
]
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
describe Configuration, "#prepend_after" do
|
203
|
+
include ConfigurationCallbacksSpec
|
204
|
+
|
205
|
+
it "prepends the after block on all instances of the passed in type" do
|
206
|
+
order = []
|
207
|
+
@config.prepend_after(:all) do
|
208
|
+
order << :prepend__after_all
|
209
|
+
end
|
210
|
+
@config.prepend_after(:all, :type => :special) do
|
211
|
+
order << :special_prepend__after_all
|
212
|
+
end
|
213
|
+
@config.prepend_after(:all, :type => :special) do
|
214
|
+
order << :special_child_prepend__after_all
|
215
|
+
end
|
216
|
+
@config.prepend_after(:each) do
|
217
|
+
order << :prepend__after_each
|
218
|
+
end
|
219
|
+
@config.prepend_after(:each, :type => :special) do
|
220
|
+
order << :special_prepend__after_each
|
221
|
+
end
|
222
|
+
@config.prepend_after(:each, :type => :special) do
|
223
|
+
order << :special_child_prepend__after_each
|
224
|
+
end
|
225
|
+
@config.prepend_after(:all, :type => :non_special) do
|
226
|
+
order << :special_prepend__after_all
|
227
|
+
end
|
228
|
+
@config.prepend_after(:each, :type => :non_special) do
|
229
|
+
order << :special_prepend__after_each
|
230
|
+
end
|
231
|
+
@example_group.it "calls prepend_after" do
|
232
|
+
end
|
233
|
+
|
234
|
+
@example_group.run
|
235
|
+
order.should == [
|
236
|
+
:special_child_prepend__after_each,
|
237
|
+
:special_prepend__after_each,
|
238
|
+
:prepend__after_each,
|
239
|
+
:special_child_prepend__after_all,
|
240
|
+
:special_prepend__after_all,
|
241
|
+
:prepend__after_all
|
242
|
+
]
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
describe Configuration, "#append_after" do
|
247
|
+
include ConfigurationCallbacksSpec
|
248
|
+
|
249
|
+
it "calls append_after on the type" do
|
250
|
+
order = []
|
251
|
+
@config.append_after(:all) do
|
252
|
+
order << :append__after_all
|
253
|
+
end
|
254
|
+
@config.append_after(:all, :type => :special) do
|
255
|
+
order << :special_append__after_all
|
256
|
+
end
|
257
|
+
@config.append_after(:all, :type => :special_child) do
|
258
|
+
order << :special_child_append__after_all
|
259
|
+
end
|
260
|
+
@config.append_after(:each) do
|
261
|
+
order << :append__after_each
|
262
|
+
end
|
263
|
+
@config.append_after(:each, :type => :special) do
|
264
|
+
order << :special_append__after_each
|
265
|
+
end
|
266
|
+
@config.append_after(:each, :type => :special_child) do
|
267
|
+
order << :special_child_append__after_each
|
268
|
+
end
|
269
|
+
@config.append_after(:all, :type => :non_special) do
|
270
|
+
order << :non_special_append_after_all
|
271
|
+
end
|
272
|
+
@config.append_after(:each, :type => :non_special) do
|
273
|
+
order << :non_special_append_after_each
|
274
|
+
end
|
275
|
+
@example_group.it "calls append_after" do
|
276
|
+
end
|
277
|
+
|
278
|
+
@example_group.run
|
279
|
+
order.should == [
|
280
|
+
:special_child_append__after_each,
|
281
|
+
:special_append__after_each,
|
282
|
+
:append__after_each,
|
283
|
+
:special_child_append__after_all,
|
284
|
+
:special_append__after_all,
|
285
|
+
:append__after_all
|
286
|
+
]
|
287
|
+
end
|
288
|
+
end
|
289
|
+
end
|
290
|
+
end
|