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,56 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../spec_helper.rb'
|
2
|
+
require 'spec/runner/formatter/story/html_formatter'
|
3
|
+
|
4
|
+
module Spec
|
5
|
+
module Runner
|
6
|
+
module Formatter
|
7
|
+
module Story
|
8
|
+
describe HtmlFormatter do
|
9
|
+
before :each do
|
10
|
+
@out = StringIO.new
|
11
|
+
@options = mock('options')
|
12
|
+
@reporter = HtmlFormatter.new(@options, @out)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should just be poked at" do
|
16
|
+
@reporter.run_started(1)
|
17
|
+
@reporter.story_started('story_title', 'narrative')
|
18
|
+
|
19
|
+
@reporter.scenario_started('story_title', 'succeeded_scenario_name')
|
20
|
+
@reporter.step_succeeded('given', 'succeded_step', 'one', 'two')
|
21
|
+
@reporter.scenario_succeeded('story_title', 'succeeded_scenario_name')
|
22
|
+
|
23
|
+
@reporter.scenario_started('story_title', 'pending_scenario_name')
|
24
|
+
@reporter.step_pending('when', 'pending_step', 'un', 'deux')
|
25
|
+
@reporter.scenario_pending('story_title', 'pending_scenario_name', 'not done')
|
26
|
+
|
27
|
+
@reporter.scenario_started('story_title', 'failed_scenario_name')
|
28
|
+
@reporter.step_failed('then', 'failed_step', 'en', 'to')
|
29
|
+
@reporter.scenario_failed('story_title', 'failed_scenario_name', NameError.new('sup'))
|
30
|
+
|
31
|
+
@reporter.scenario_started('story_title', 'scenario_with_given_scenario_name')
|
32
|
+
@reporter.found_scenario('given scenario', 'succeeded_scenario_name')
|
33
|
+
|
34
|
+
@reporter.story_ended('story_title', 'narrative')
|
35
|
+
@reporter.run_ended
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should create spans for params" do
|
39
|
+
@reporter.step_succeeded('given', 'a $coloured $animal', 'brown', 'dog')
|
40
|
+
@out.string.should == " <li class=\"passed\">Given a <span class=\"param\">brown</span> <span class=\"param\">dog</span></li>\n"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should create a ul for collected_steps" do
|
44
|
+
@reporter.collected_steps(['Given a $coloured $animal', 'Given a $n legged eel'])
|
45
|
+
@out.string.should == (<<-EOF)
|
46
|
+
<ul id="stock_steps" style="display: none;">
|
47
|
+
<li>Given a $coloured $animal</li>
|
48
|
+
<li>Given a $n legged eel</li>
|
49
|
+
</ul>
|
50
|
+
EOF
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,289 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../spec_helper.rb'
|
2
|
+
require 'spec/runner/formatter/story/plain_text_formatter'
|
3
|
+
|
4
|
+
module Spec
|
5
|
+
module Runner
|
6
|
+
module Formatter
|
7
|
+
module Story
|
8
|
+
describe PlainTextFormatter do
|
9
|
+
before :each do
|
10
|
+
# given
|
11
|
+
@out = StringIO.new
|
12
|
+
@options = mock('options')
|
13
|
+
@options.stub!(:colour).and_return(false)
|
14
|
+
@formatter = PlainTextFormatter.new(@options, @out)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should summarize the number of scenarios when the run ends' do
|
18
|
+
# when
|
19
|
+
@formatter.run_started(3)
|
20
|
+
@formatter.scenario_started(nil, nil)
|
21
|
+
@formatter.scenario_succeeded('story', 'scenario1')
|
22
|
+
@formatter.scenario_started(nil, nil)
|
23
|
+
@formatter.scenario_succeeded('story', 'scenario2')
|
24
|
+
@formatter.scenario_started(nil, nil)
|
25
|
+
@formatter.scenario_succeeded('story', 'scenario3')
|
26
|
+
@formatter.run_ended
|
27
|
+
|
28
|
+
# then
|
29
|
+
@out.string.should include('3 scenarios')
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'should summarize the number of successful scenarios when the run ends' do
|
33
|
+
# when
|
34
|
+
@formatter.run_started(3)
|
35
|
+
@formatter.scenario_started(nil, nil)
|
36
|
+
@formatter.scenario_succeeded('story', 'scenario1')
|
37
|
+
@formatter.scenario_started(nil, nil)
|
38
|
+
@formatter.scenario_succeeded('story', 'scenario2')
|
39
|
+
@formatter.scenario_started(nil, nil)
|
40
|
+
@formatter.scenario_succeeded('story', 'scenario3')
|
41
|
+
@formatter.run_ended
|
42
|
+
|
43
|
+
# then
|
44
|
+
@out.string.should include('3 scenarios: 3 succeeded')
|
45
|
+
end
|
46
|
+
|
47
|
+
it 'should summarize the number of failed scenarios when the run ends' do
|
48
|
+
# when
|
49
|
+
@formatter.run_started(3)
|
50
|
+
@formatter.scenario_started(nil, nil)
|
51
|
+
@formatter.scenario_succeeded('story', 'scenario1')
|
52
|
+
@formatter.scenario_started(nil, nil)
|
53
|
+
@formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops' })
|
54
|
+
@formatter.scenario_started(nil, nil)
|
55
|
+
@formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops' })
|
56
|
+
@formatter.run_ended
|
57
|
+
|
58
|
+
# then
|
59
|
+
@out.string.should include("3 scenarios: 1 succeeded, 2 failed")
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'should summarize the number of pending scenarios when the run ends' do
|
63
|
+
# when
|
64
|
+
@formatter.run_started(3)
|
65
|
+
@formatter.scenario_started(nil, nil)
|
66
|
+
@formatter.scenario_succeeded('story', 'scenario1')
|
67
|
+
@formatter.scenario_started(nil, nil)
|
68
|
+
@formatter.scenario_pending('story', 'scenario2', 'message')
|
69
|
+
@formatter.scenario_started(nil, nil)
|
70
|
+
@formatter.scenario_pending('story', 'scenario3', 'message')
|
71
|
+
@formatter.run_ended
|
72
|
+
|
73
|
+
# then
|
74
|
+
@out.string.should include("3 scenarios: 1 succeeded, 0 failed, 2 pending")
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should only count the first failure in one scenario" do
|
78
|
+
# when
|
79
|
+
@formatter.run_started(3)
|
80
|
+
@formatter.scenario_started(nil, nil)
|
81
|
+
@formatter.scenario_succeeded('story', 'scenario1')
|
82
|
+
@formatter.scenario_started(nil, nil)
|
83
|
+
@formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops' })
|
84
|
+
@formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops again' })
|
85
|
+
@formatter.scenario_started(nil, nil)
|
86
|
+
@formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops' })
|
87
|
+
@formatter.run_ended
|
88
|
+
|
89
|
+
# then
|
90
|
+
@out.string.should include("3 scenarios: 1 succeeded, 2 failed")
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should only count the first pending in one scenario" do
|
94
|
+
# when
|
95
|
+
@formatter.run_started(3)
|
96
|
+
@formatter.scenario_started(nil, nil)
|
97
|
+
@formatter.scenario_succeeded('story', 'scenario1')
|
98
|
+
@formatter.scenario_started(nil, nil)
|
99
|
+
@formatter.scenario_pending('story', 'scenario2', 'because ...')
|
100
|
+
@formatter.scenario_pending('story', 'scenario2', 'because ...')
|
101
|
+
@formatter.scenario_started(nil, nil)
|
102
|
+
@formatter.scenario_pending('story', 'scenario3', 'because ...')
|
103
|
+
@formatter.run_ended
|
104
|
+
|
105
|
+
# then
|
106
|
+
@out.string.should include("3 scenarios: 1 succeeded, 0 failed, 2 pending")
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should only count a failure before the first pending in one scenario" do
|
110
|
+
# when
|
111
|
+
@formatter.run_started(3)
|
112
|
+
@formatter.scenario_started(nil, nil)
|
113
|
+
@formatter.scenario_succeeded('story', 'scenario1')
|
114
|
+
@formatter.scenario_started(nil, nil)
|
115
|
+
@formatter.scenario_pending('story', 'scenario2', exception_from { raise RuntimeError, 'oops' })
|
116
|
+
@formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops again' })
|
117
|
+
@formatter.scenario_started(nil, nil)
|
118
|
+
@formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops' })
|
119
|
+
@formatter.run_ended
|
120
|
+
|
121
|
+
# then
|
122
|
+
@out.string.should include("3 scenarios: 1 succeeded, 1 failed, 1 pending")
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'should produce details of the first failure each failed scenario when the run ends' do
|
126
|
+
# when
|
127
|
+
@formatter.run_started(3)
|
128
|
+
@formatter.scenario_started(nil, nil)
|
129
|
+
@formatter.scenario_succeeded('story', 'scenario1')
|
130
|
+
@formatter.scenario_started(nil, nil)
|
131
|
+
@formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops2' })
|
132
|
+
@formatter.scenario_failed('story', 'scenario2', exception_from { raise RuntimeError, 'oops2 - this one should not appear' })
|
133
|
+
@formatter.scenario_started(nil, nil)
|
134
|
+
@formatter.scenario_failed('story', 'scenario3', exception_from { raise RuntimeError, 'oops3' })
|
135
|
+
@formatter.run_ended
|
136
|
+
|
137
|
+
# then
|
138
|
+
@out.string.should include("FAILURES:\n")
|
139
|
+
@out.string.should include("1) story (scenario2) FAILED")
|
140
|
+
@out.string.should include("RuntimeError: oops2")
|
141
|
+
@out.string.should_not include("RuntimeError: oops2 - this one should not appear")
|
142
|
+
@out.string.should include("2) story (scenario3) FAILED")
|
143
|
+
@out.string.should include("RuntimeError: oops3")
|
144
|
+
end
|
145
|
+
|
146
|
+
it 'should produce details of each pending step when the run ends' do
|
147
|
+
# when
|
148
|
+
@formatter.run_started(2)
|
149
|
+
@formatter.scenario_pending('story', 'scenario2', 'todo2')
|
150
|
+
@formatter.scenario_pending('story', 'scenario3', 'todo3')
|
151
|
+
@formatter.run_ended
|
152
|
+
|
153
|
+
# then
|
154
|
+
@out.string.should include("Pending Steps:\n")
|
155
|
+
@out.string.should include("1) story (scenario2): todo2")
|
156
|
+
@out.string.should include("2) story (scenario3): todo3")
|
157
|
+
end
|
158
|
+
|
159
|
+
it 'should document a story title and narrative' do
|
160
|
+
# when
|
161
|
+
@formatter.story_started 'story', 'narrative'
|
162
|
+
|
163
|
+
# then
|
164
|
+
@out.string.should include("Story: story\n\n narrative")
|
165
|
+
end
|
166
|
+
|
167
|
+
it 'should document a scenario name' do
|
168
|
+
# when
|
169
|
+
@formatter.scenario_started 'story', 'scenario'
|
170
|
+
|
171
|
+
# then
|
172
|
+
@out.string.should include("\n\n Scenario: scenario")
|
173
|
+
end
|
174
|
+
|
175
|
+
it 'should document a step by sentence-casing its name' do
|
176
|
+
# when
|
177
|
+
@formatter.step_succeeded :given, 'a context'
|
178
|
+
@formatter.step_succeeded :when, 'an event'
|
179
|
+
@formatter.step_succeeded :then, 'an outcome'
|
180
|
+
|
181
|
+
# then
|
182
|
+
@out.string.should include("\n\n Given a context\n\n When an event\n\n Then an outcome")
|
183
|
+
end
|
184
|
+
|
185
|
+
it 'should document additional givens using And' do
|
186
|
+
# when
|
187
|
+
@formatter.step_succeeded :given, 'step 1'
|
188
|
+
@formatter.step_succeeded :given, 'step 2'
|
189
|
+
@formatter.step_succeeded :given, 'step 3'
|
190
|
+
|
191
|
+
# then
|
192
|
+
@out.string.should include(" Given step 1\n And step 2\n And step 3")
|
193
|
+
end
|
194
|
+
|
195
|
+
it 'should document additional events using And' do
|
196
|
+
# when
|
197
|
+
@formatter.step_succeeded :when, 'step 1'
|
198
|
+
@formatter.step_succeeded :when, 'step 2'
|
199
|
+
@formatter.step_succeeded :when, 'step 3'
|
200
|
+
|
201
|
+
# then
|
202
|
+
@out.string.should include(" When step 1\n And step 2\n And step 3")
|
203
|
+
end
|
204
|
+
|
205
|
+
it 'should document additional outcomes using And' do
|
206
|
+
# when
|
207
|
+
@formatter.step_succeeded :then, 'step 1'
|
208
|
+
@formatter.step_succeeded :then, 'step 2'
|
209
|
+
@formatter.step_succeeded :then, 'step 3'
|
210
|
+
|
211
|
+
# then
|
212
|
+
@out.string.should include(" Then step 1\n And step 2\n And step 3")
|
213
|
+
end
|
214
|
+
|
215
|
+
it 'should document a GivenScenario followed by a Given using And' do
|
216
|
+
# when
|
217
|
+
@formatter.step_succeeded :'given scenario', 'a scenario'
|
218
|
+
@formatter.step_succeeded :given, 'a context'
|
219
|
+
|
220
|
+
# then
|
221
|
+
@out.string.should include(" Given scenario a scenario\n And a context")
|
222
|
+
end
|
223
|
+
|
224
|
+
it 'should document steps with replaced params' do
|
225
|
+
@formatter.step_succeeded :given, 'a $coloured dog with $n legs', 'pink', 21
|
226
|
+
@out.string.should include(" Given a pink dog with 21 legs")
|
227
|
+
end
|
228
|
+
|
229
|
+
it "should append PENDING for the first pending step" do
|
230
|
+
@formatter.scenario_started('','')
|
231
|
+
@formatter.step_pending(:given, 'a context')
|
232
|
+
|
233
|
+
@out.string.should include('Given a context (PENDING)')
|
234
|
+
end
|
235
|
+
|
236
|
+
it "should append PENDING for pending after already pending" do
|
237
|
+
@formatter.scenario_started('','')
|
238
|
+
@formatter.step_pending(:given, 'a context')
|
239
|
+
@formatter.step_pending(:when, 'I say hey')
|
240
|
+
|
241
|
+
@out.string.should include('When I say hey (PENDING)')
|
242
|
+
end
|
243
|
+
|
244
|
+
it "should append FAILED for the first failiure" do
|
245
|
+
@formatter.scenario_started('','')
|
246
|
+
@formatter.step_failed(:given, 'a context')
|
247
|
+
|
248
|
+
@out.string.should include('Given a context (FAILED)')
|
249
|
+
end
|
250
|
+
|
251
|
+
it "should append SKIPPED for the second failiure" do
|
252
|
+
@formatter.scenario_started('','')
|
253
|
+
@formatter.step_failed(:given, 'a context')
|
254
|
+
@formatter.step_failed(:when, 'I say hey')
|
255
|
+
|
256
|
+
@out.string.should include('When I say hey (SKIPPED)')
|
257
|
+
end
|
258
|
+
|
259
|
+
it "should append SKIPPED for the a failiure after PENDING" do
|
260
|
+
@formatter.scenario_started('','')
|
261
|
+
@formatter.step_pending(:given, 'a context')
|
262
|
+
@formatter.step_failed(:when, 'I say hey')
|
263
|
+
|
264
|
+
@out.string.should include('When I say hey (SKIPPED)')
|
265
|
+
end
|
266
|
+
|
267
|
+
it 'should print some white space after each story' do
|
268
|
+
# when
|
269
|
+
@formatter.story_ended 'title', 'narrative'
|
270
|
+
|
271
|
+
# then
|
272
|
+
@out.string.should include("\n\n")
|
273
|
+
end
|
274
|
+
|
275
|
+
it "should print nothing for collected_steps" do
|
276
|
+
@formatter.collected_steps(['Given a $coloured $animal', 'Given a $n legged eel'])
|
277
|
+
@out.string.should == ("")
|
278
|
+
end
|
279
|
+
|
280
|
+
it "should ignore messages it doesn't care about" do
|
281
|
+
lambda {
|
282
|
+
@formatter.this_method_does_not_exist
|
283
|
+
}.should_not raise_error
|
284
|
+
end
|
285
|
+
end
|
286
|
+
end
|
287
|
+
end
|
288
|
+
end
|
289
|
+
end
|
@@ -17,47 +17,62 @@ unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
|
|
17
17
|
describe "HeckleRunner" do
|
18
18
|
before(:each) do
|
19
19
|
@heckle = mock("heckle", :null_object => true)
|
20
|
-
@behaviour_runner = mock("behaviour_runner")
|
21
20
|
@heckle_class = mock("heckle_class")
|
22
21
|
end
|
23
22
|
|
24
23
|
it "should heckle all methods in all classes in a module" do
|
25
|
-
@heckle_class.should_receive(:new).with("Foo::Bar", "one",
|
26
|
-
@heckle_class.should_receive(:new).with("Foo::Bar", "two",
|
27
|
-
@heckle_class.should_receive(:new).with("Foo::Zap", "three",
|
28
|
-
@heckle_class.should_receive(:new).with("Foo::Zap", "four",
|
24
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "one", rspec_options).and_return(@heckle)
|
25
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "two", rspec_options).and_return(@heckle)
|
26
|
+
@heckle_class.should_receive(:new).with("Foo::Zap", "three", rspec_options).and_return(@heckle)
|
27
|
+
@heckle_class.should_receive(:new).with("Foo::Zap", "four", rspec_options).and_return(@heckle)
|
29
28
|
|
30
29
|
heckle_runner = Spec::Runner::HeckleRunner.new("Foo", @heckle_class)
|
31
|
-
heckle_runner.heckle_with
|
30
|
+
heckle_runner.heckle_with
|
32
31
|
end
|
33
32
|
|
34
33
|
it "should heckle all methods in a class" do
|
35
|
-
@heckle_class.should_receive(:new).with("Foo::Bar", "one",
|
36
|
-
@heckle_class.should_receive(:new).with("Foo::Bar", "two",
|
34
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "one", rspec_options).and_return(@heckle)
|
35
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "two", rspec_options).and_return(@heckle)
|
37
36
|
|
38
37
|
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar", @heckle_class)
|
39
|
-
heckle_runner.heckle_with
|
38
|
+
heckle_runner.heckle_with
|
40
39
|
end
|
41
40
|
|
42
41
|
it "should fail heckling when the class is not found" do
|
43
42
|
lambda do
|
44
43
|
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bob", @heckle_class)
|
45
|
-
heckle_runner.heckle_with
|
44
|
+
heckle_runner.heckle_with
|
46
45
|
end.should raise_error(StandardError, "Heckling failed - \"Foo::Bob\" is not a known class or module")
|
47
46
|
end
|
48
47
|
|
49
48
|
it "should heckle specific method in a class (with #)" do
|
50
|
-
@heckle_class.should_receive(:new).with("Foo::Bar", "two",
|
49
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "two", rspec_options).and_return(@heckle)
|
51
50
|
|
52
51
|
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar#two", @heckle_class)
|
53
|
-
heckle_runner.heckle_with
|
52
|
+
heckle_runner.heckle_with
|
54
53
|
end
|
55
54
|
|
56
55
|
it "should heckle specific method in a class (with .)" do
|
57
|
-
@heckle_class.should_receive(:new).with("Foo::Bar", "two",
|
56
|
+
@heckle_class.should_receive(:new).with("Foo::Bar", "two", rspec_options).and_return(@heckle)
|
58
57
|
|
59
58
|
heckle_runner = Spec::Runner::HeckleRunner.new("Foo::Bar.two", @heckle_class)
|
60
|
-
heckle_runner.heckle_with
|
59
|
+
heckle_runner.heckle_with
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "Heckler" do
|
64
|
+
it "should say yes to tests_pass? if specs pass" do
|
65
|
+
options = mock("options", :null_object => true)
|
66
|
+
options.should_receive(:run_examples).and_return(true)
|
67
|
+
heckler = Spec::Runner::Heckler.new("Foo", nil, options)
|
68
|
+
heckler.tests_pass?.should be_true
|
69
|
+
end
|
70
|
+
|
71
|
+
it "should say no to tests_pass? if specs fail" do
|
72
|
+
options = mock("options", :null_object => true)
|
73
|
+
options.should_receive(:run_examples).and_return(false)
|
74
|
+
heckler = Spec::Runner::Heckler.new("Foo", nil, options)
|
75
|
+
heckler.tests_pass?.should be_false
|
61
76
|
end
|
62
77
|
end
|
63
78
|
end
|
@@ -3,11 +3,10 @@ unless [/mswin/, /java/].detect{|p| p =~ RUBY_PLATFORM}
|
|
3
3
|
require 'spec/runner/heckle_runner'
|
4
4
|
|
5
5
|
describe "Heckler" do
|
6
|
-
it "should run
|
7
|
-
|
8
|
-
|
9
|
-
heckler = Spec::Runner::Heckler.new('Array', 'push',
|
10
|
-
|
6
|
+
it "should run examples on tests_pass?" do
|
7
|
+
options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
|
8
|
+
options.should_receive(:run_examples).with().and_return(&options.method(:run_examples))
|
9
|
+
heckler = Spec::Runner::Heckler.new('Array', 'push', options)
|
11
10
|
heckler.tests_pass?
|
12
11
|
end
|
13
12
|
end
|
@@ -11,32 +11,32 @@ module Spec
|
|
11
11
|
it "should leave anything in lib spec dir" do
|
12
12
|
["expectations", "mocks", "runner", "stubs"].each do |child|
|
13
13
|
@error.set_backtrace(["/lib/spec/#{child}/anything.rb"])
|
14
|
-
@tweaker.tweak_backtrace(@error
|
14
|
+
@tweaker.tweak_backtrace(@error)
|
15
15
|
@error.backtrace.should_not be_empty
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should leave anything in spec dir" do
|
20
20
|
@error.set_backtrace(["/lib/spec/expectations/anything.rb"])
|
21
|
-
@tweaker.tweak_backtrace(@error
|
21
|
+
@tweaker.tweak_backtrace(@error)
|
22
22
|
@error.backtrace.should_not be_empty
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should leave bin spec" do
|
26
26
|
@error.set_backtrace(["bin/spec:"])
|
27
|
-
@tweaker.tweak_backtrace(@error
|
27
|
+
@tweaker.tweak_backtrace(@error)
|
28
28
|
@error.backtrace.should_not be_empty
|
29
29
|
end
|
30
30
|
|
31
31
|
it "should not barf on nil backtrace" do
|
32
32
|
lambda do
|
33
|
-
@tweaker.tweak_backtrace(@error
|
33
|
+
@tweaker.tweak_backtrace(@error)
|
34
34
|
end.should_not raise_error
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should clean up double slashes" do
|
38
38
|
@error.set_backtrace(["/a//b/c//d.rb"])
|
39
|
-
@tweaker.tweak_backtrace(@error
|
39
|
+
@tweaker.tweak_backtrace(@error)
|
40
40
|
@error.backtrace.should include("/a/b/c/d.rb")
|
41
41
|
end
|
42
42
|
|