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,65 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
require 'spec/runner/formatter/profile_formatter'
|
3
|
+
|
4
|
+
module Spec
|
5
|
+
module Runner
|
6
|
+
module Formatter
|
7
|
+
describe ProfileFormatter do
|
8
|
+
attr_reader :io, :formatter
|
9
|
+
before(:each) do
|
10
|
+
@io = StringIO.new
|
11
|
+
options = mock('options')
|
12
|
+
options.stub!(:colour).and_return(true)
|
13
|
+
@formatter = ProfileFormatter.new(options, io)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should print a heading" do
|
17
|
+
formatter.start(0)
|
18
|
+
io.string.should eql("Profiling enabled.\n")
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should record the current time when starting a new example" do
|
22
|
+
now = Time.now
|
23
|
+
Time.stub!(:now).and_return(now)
|
24
|
+
formatter.example_started('should foo')
|
25
|
+
formatter.instance_variable_get("@time").should == now
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should correctly record a passed example" do
|
29
|
+
now = Time.now
|
30
|
+
Time.stub!(:now).and_return(now)
|
31
|
+
parent_example_group = Class.new(ExampleGroup).describe('Parent')
|
32
|
+
child_example_group = Class.new(parent_example_group).describe('Child')
|
33
|
+
|
34
|
+
formatter.add_example_group(child_example_group)
|
35
|
+
|
36
|
+
formatter.example_started('when foo')
|
37
|
+
Time.stub!(:now).and_return(now+1)
|
38
|
+
formatter.example_passed(stub('foo', :description => 'i like ice cream'))
|
39
|
+
|
40
|
+
formatter.start_dump
|
41
|
+
io.string.should include('Parent Child')
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should sort the results in descending order" do
|
45
|
+
formatter.instance_variable_set("@example_times", [['a', 'a', 0.1], ['b', 'b', 0.3], ['c', 'c', 0.2]])
|
46
|
+
formatter.start_dump
|
47
|
+
formatter.instance_variable_get("@example_times").should == [ ['b', 'b', 0.3], ['c', 'c', 0.2], ['a', 'a', 0.1]]
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should print the top 10 results" do
|
51
|
+
example_group = Class.new(::Spec::Example::ExampleGroup).describe("ExampleGroup")
|
52
|
+
formatter.add_example_group(example_group)
|
53
|
+
formatter.instance_variable_set("@time", Time.now)
|
54
|
+
|
55
|
+
15.times do
|
56
|
+
formatter.example_passed(stub('foo', :description => 'i like ice cream'))
|
57
|
+
end
|
58
|
+
|
59
|
+
io.should_receive(:print).exactly(10)
|
60
|
+
formatter.start_dump
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
require 'spec/runner/formatter/progress_bar_formatter'
|
2
3
|
|
3
4
|
module Spec
|
4
5
|
module Runner
|
@@ -6,7 +7,10 @@ module Spec
|
|
6
7
|
describe ProgressBarFormatter do
|
7
8
|
before(:each) do
|
8
9
|
@io = StringIO.new
|
9
|
-
@
|
10
|
+
@options = mock('options')
|
11
|
+
@options.stub!(:dry_run).and_return(false)
|
12
|
+
@options.stub!(:colour).and_return(false)
|
13
|
+
@formatter = ProgressBarFormatter.new(@options, @io)
|
10
14
|
end
|
11
15
|
|
12
16
|
it "should produce line break on start dump" do
|
@@ -20,44 +24,41 @@ module Spec
|
|
20
24
|
end
|
21
25
|
|
22
26
|
it "should produce standard summary" do
|
23
|
-
@formatter.example_pending("
|
27
|
+
@formatter.example_pending("example_group", ExampleGroup.new("example"), "message")
|
24
28
|
@io.rewind
|
25
29
|
@formatter.dump_summary(3, 2, 1, 1)
|
26
30
|
@io.string.should eql(%Q|
|
27
31
|
Finished in 3 seconds
|
28
32
|
|
29
33
|
2 examples, 1 failure, 1 pending
|
30
|
-
|
31
|
-
Pending:
|
32
|
-
behaviour example (message)
|
33
34
|
|)
|
34
35
|
end
|
35
36
|
|
36
37
|
it "should push green dot for passing spec" do
|
37
38
|
@io.should_receive(:tty?).and_return(true)
|
38
|
-
@
|
39
|
+
@options.should_receive(:colour).and_return(true)
|
39
40
|
@formatter.example_passed("spec")
|
40
41
|
@io.string.should == "\e[32m.\e[0m"
|
41
42
|
end
|
42
43
|
|
43
44
|
it "should push red F for failure spec" do
|
44
45
|
@io.should_receive(:tty?).and_return(true)
|
45
|
-
@
|
46
|
+
@options.should_receive(:colour).and_return(true)
|
46
47
|
@formatter.example_failed("spec", 98, Reporter::Failure.new("c s", Spec::Expectations::ExpectationNotMetError.new))
|
47
48
|
@io.string.should eql("\e[31mF\e[0m")
|
48
49
|
end
|
49
50
|
|
50
51
|
it "should push magenta F for error spec" do
|
51
52
|
@io.should_receive(:tty?).and_return(true)
|
52
|
-
@
|
53
|
+
@options.should_receive(:colour).and_return(true)
|
53
54
|
@formatter.example_failed("spec", 98, Reporter::Failure.new("c s", RuntimeError.new))
|
54
55
|
@io.string.should eql("\e[35mF\e[0m")
|
55
56
|
end
|
56
57
|
|
57
58
|
it "should push blue F for fixed pending spec" do
|
58
59
|
@io.should_receive(:tty?).and_return(true)
|
59
|
-
@
|
60
|
-
@formatter.example_failed("spec", 98, Reporter::Failure.new("c s", Spec::
|
60
|
+
@options.should_receive(:colour).and_return(true)
|
61
|
+
@formatter.example_failed("spec", 98, Reporter::Failure.new("c s", Spec::Example::PendingExampleFixedError.new))
|
61
62
|
@io.string.should eql("\e[34mF\e[0m")
|
62
63
|
end
|
63
64
|
|
@@ -83,17 +84,18 @@ EOE
|
|
83
84
|
end
|
84
85
|
|
85
86
|
it "should dump pending" do
|
86
|
-
@formatter.example_pending("
|
87
|
+
@formatter.example_pending("example_group", ExampleGroup.new("example"), "message")
|
87
88
|
@formatter.dump_pending
|
88
|
-
@io.string.should =~ /Pending\:\
|
89
|
+
@io.string.should =~ /Pending\:\nexample_group example \(message\)\n/
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
92
93
|
describe "ProgressBarFormatter outputting to custom out" do
|
93
94
|
before(:each) do
|
94
95
|
@out = mock("out")
|
96
|
+
@options = mock('options')
|
95
97
|
@out.stub!(:puts)
|
96
|
-
@formatter = ProgressBarFormatter.new(@out)
|
98
|
+
@formatter = ProgressBarFormatter.new(@options, @out)
|
97
99
|
@formatter.class.send :public, :output_to_tty?
|
98
100
|
end
|
99
101
|
|
@@ -106,6 +108,20 @@ EOE
|
|
106
108
|
@formatter.output_to_tty?.should be_false
|
107
109
|
end
|
108
110
|
end
|
111
|
+
|
112
|
+
describe ProgressBarFormatter, "dry run" do
|
113
|
+
before(:each) do
|
114
|
+
@io = StringIO.new
|
115
|
+
options = mock('options')
|
116
|
+
options.stub!(:dry_run).and_return(true)
|
117
|
+
@formatter = ProgressBarFormatter.new(options, @io)
|
118
|
+
end
|
119
|
+
|
120
|
+
it "should not produce summary on dry run" do
|
121
|
+
@formatter.dump_summary(3, 2, 1, 0)
|
122
|
+
@io.string.should eql("")
|
123
|
+
end
|
124
|
+
end
|
109
125
|
end
|
110
126
|
end
|
111
127
|
end
|
@@ -1,11 +1,18 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
require 'spec/runner/formatter/snippet_extractor'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
module Spec
|
5
|
+
module Runner
|
6
|
+
module Formatter
|
7
|
+
describe SnippetExtractor do
|
8
|
+
it "should fall back on a default message when it doesn't understand a line" do
|
9
|
+
SnippetExtractor.new.snippet_for("blech").should == ["# Couldn't get snippet for blech", 1]
|
10
|
+
end
|
7
11
|
|
8
|
-
|
9
|
-
|
12
|
+
it "should fall back on a default message when it doesn't find the file" do
|
13
|
+
SnippetExtractor.new.lines_around("blech", 8).should == "# Couldn't get snippet for blech"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
10
17
|
end
|
11
|
-
end
|
18
|
+
end
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../spec_helper'
|
2
|
+
require 'hpricot' # Needed to compare generated with wanted HTML
|
3
|
+
require 'spec/runner/formatter/text_mate_formatter'
|
4
|
+
|
5
|
+
module Spec
|
6
|
+
module Runner
|
7
|
+
module Formatter
|
8
|
+
describe TextMateFormatter do
|
9
|
+
attr_reader :root, :suffix, :expected_file
|
10
|
+
before do
|
11
|
+
@root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
|
12
|
+
@suffix = jruby? ? '-jruby' : ''
|
13
|
+
@expected_file = File.dirname(__FILE__) + "/text_mate_formatted-#{::VERSION}#{suffix}.html"
|
14
|
+
end
|
15
|
+
|
16
|
+
def jruby?
|
17
|
+
PLATFORM == 'java'
|
18
|
+
end
|
19
|
+
|
20
|
+
def produces_html_identical_to_manually_designed_document(opt)
|
21
|
+
root = File.expand_path(File.dirname(__FILE__) + '/../../../..')
|
22
|
+
|
23
|
+
Dir.chdir(root) do
|
24
|
+
args = [
|
25
|
+
'failing_examples/mocking_example.rb',
|
26
|
+
'failing_examples/diffing_spec.rb',
|
27
|
+
'examples/pure/stubbing_example.rb',
|
28
|
+
'examples/pure/pending_example.rb',
|
29
|
+
'--format',
|
30
|
+
'textmate',
|
31
|
+
opt
|
32
|
+
]
|
33
|
+
err = StringIO.new
|
34
|
+
out = StringIO.new
|
35
|
+
options = ::Spec::Runner::OptionParser.parse(args, err, out)
|
36
|
+
Spec::Runner::CommandLine.run(options)
|
37
|
+
|
38
|
+
yield(out.string)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
# # Uncomment this spec temporarily in order to overwrite the expected with actual.
|
43
|
+
# # Use with care!!!
|
44
|
+
# describe TextMateFormatter, "functional spec file generator" do
|
45
|
+
# it "generates a new comparison file" do
|
46
|
+
# Dir.chdir(root) do
|
47
|
+
# args = ['failing_examples/mocking_example.rb', 'failing_examples/diffing_spec.rb', 'examples/pure/stubbing_example.rb', 'examples/pure/pending_example.rb', '--format', 'textmate', '--diff']
|
48
|
+
# err = StringIO.new
|
49
|
+
# out = StringIO.new
|
50
|
+
# Spec::Runner::CommandLine.run(
|
51
|
+
# ::Spec::Runner::OptionParser.parse(args, err, out)
|
52
|
+
# )
|
53
|
+
#
|
54
|
+
# seconds = /\d+\.\d+ seconds/
|
55
|
+
# html = out.string.gsub seconds, 'x seconds'
|
56
|
+
#
|
57
|
+
# File.open(expected_file, 'w') {|io| io.write(html)}
|
58
|
+
# end
|
59
|
+
# end
|
60
|
+
# end
|
61
|
+
|
62
|
+
describe "functional spec using --diff" do
|
63
|
+
it "should produce HTML identical to the one we designed manually with --diff" do
|
64
|
+
produces_html_identical_to_manually_designed_document("--diff") do |html|
|
65
|
+
suffix = jruby? ? '-jruby' : ''
|
66
|
+
expected_file = File.dirname(__FILE__) + "/text_mate_formatted-#{::VERSION}#{suffix}.html"
|
67
|
+
unless File.file?(expected_file)
|
68
|
+
raise "There is no HTML file with expected content for this platform: #{expected_file}"
|
69
|
+
end
|
70
|
+
expected_html = File.read(expected_file)
|
71
|
+
|
72
|
+
seconds = /\d+\.\d+ seconds/
|
73
|
+
html.gsub! seconds, 'x seconds'
|
74
|
+
expected_html.gsub! seconds, 'x seconds'
|
75
|
+
|
76
|
+
doc = Hpricot(html)
|
77
|
+
backtraces = doc.search("div.backtrace/a")
|
78
|
+
doc.search("div.backtrace").remove
|
79
|
+
|
80
|
+
expected_doc = Hpricot(expected_html)
|
81
|
+
expected_doc.search("div.backtrace").remove
|
82
|
+
|
83
|
+
doc.inner_html.should == expected_doc.inner_html
|
84
|
+
|
85
|
+
backtraces.each do |backtrace_link|
|
86
|
+
backtrace_link[:href].should include("txmt://open?url=")
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "functional spec using --dry-run" do
|
94
|
+
it "should produce HTML identical to the one we designed manually with --dry-run" do
|
95
|
+
produces_html_identical_to_manually_designed_document("--dry-run") do |html, expected_html|
|
96
|
+
html.should =~ /This was a dry-run/m
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
@@ -1,61 +1,125 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../../spec_helper.rb'
|
2
|
+
require 'spec/runner/formatter/specdoc_formatter'
|
2
3
|
|
3
4
|
module Spec
|
4
5
|
module Runner
|
5
6
|
module Formatter
|
6
|
-
describe
|
7
|
+
describe SpecdocFormatter do
|
8
|
+
it_should_behave_like "sandboxed rspec_options"
|
9
|
+
attr_reader :io, :options, :formatter, :example_group
|
7
10
|
before(:each) do
|
8
11
|
@io = StringIO.new
|
9
|
-
|
12
|
+
options.stub!(:dry_run).and_return(false)
|
13
|
+
options.stub!(:colour).and_return(false)
|
14
|
+
@formatter = SpecdocFormatter.new(options, io)
|
15
|
+
@example_group = Class.new(::Spec::Example::ExampleGroup).describe("ExampleGroup")
|
10
16
|
end
|
11
17
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
18
|
+
describe "where ExampleGroup has no superclasss with a description" do
|
19
|
+
before do
|
20
|
+
formatter.add_example_group(example_group)
|
21
|
+
end
|
16
22
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
23
|
+
it "should produce standard summary without pending when pending has a 0 count" do
|
24
|
+
formatter.dump_summary(3, 2, 1, 0)
|
25
|
+
io.string.should have_example_group_output("\nFinished in 3 seconds\n\n2 examples, 1 failure\n")
|
26
|
+
end
|
21
27
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
28
|
+
it "should produce standard summary" do
|
29
|
+
formatter.dump_summary(3, 2, 1, 4)
|
30
|
+
io.string.should have_example_group_output("\nFinished in 3 seconds\n\n2 examples, 1 failure, 4 pending\n")
|
31
|
+
end
|
26
32
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
33
|
+
it "should push ExampleGroup name" do
|
34
|
+
io.string.should eql("\nExampleGroup\n")
|
35
|
+
end
|
31
36
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
37
|
+
it "when having an error, should push failing spec name and failure number" do
|
38
|
+
formatter.example_failed(
|
39
|
+
example_group.it("spec"),
|
40
|
+
98,
|
41
|
+
Reporter::Failure.new("c s", RuntimeError.new)
|
42
|
+
)
|
43
|
+
io.string.should have_example_group_output("- spec (ERROR - 98)\n")
|
44
|
+
end
|
36
45
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
46
|
+
it "when having an expectation failure, should push failing spec name and failure number" do
|
47
|
+
formatter.example_failed(
|
48
|
+
example_group.it("spec"),
|
49
|
+
98,
|
50
|
+
Reporter::Failure.new("c s", Spec::Expectations::ExpectationNotMetError.new)
|
51
|
+
)
|
52
|
+
io.string.should have_example_group_output("- spec (FAILED - 98)\n")
|
53
|
+
end
|
41
54
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
55
|
+
it "should push nothing on start" do
|
56
|
+
formatter.start(5)
|
57
|
+
io.string.should have_example_group_output("")
|
58
|
+
end
|
46
59
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
60
|
+
it "should push nothing on start dump" do
|
61
|
+
formatter.start_dump
|
62
|
+
io.string.should have_example_group_output("")
|
63
|
+
end
|
51
64
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
65
|
+
it "should push passing spec name" do
|
66
|
+
formatter.example_passed(example_group.it("spec"))
|
67
|
+
io.string.should have_example_group_output("- spec\n")
|
68
|
+
end
|
69
|
+
|
70
|
+
it "should push pending example name and message" do
|
71
|
+
formatter.example_pending('example_group', ExampleGroup.new("example"), 'reason')
|
72
|
+
io.string.should have_example_group_output("- example (PENDING: reason)\n")
|
73
|
+
end
|
74
|
+
|
75
|
+
it "should dump pending" do
|
76
|
+
formatter.example_pending('example_group', ExampleGroup.new("example"), 'reason')
|
77
|
+
io.rewind
|
78
|
+
formatter.dump_pending
|
79
|
+
io.string.should =~ /Pending\:\nexample_group example \(reason\)\n/
|
80
|
+
end
|
81
|
+
|
82
|
+
def have_example_group_output(expected_output)
|
83
|
+
expected = "\nExampleGroup\n#{expected_output}"
|
84
|
+
::Spec::Matchers::SimpleMatcher.new(expected) do |actual|
|
85
|
+
actual == expected
|
86
|
+
end
|
87
|
+
end
|
57
88
|
end
|
58
89
|
|
90
|
+
describe "where ExampleGroup has two superclasses with a description" do
|
91
|
+
attr_reader :child_example_group, :grand_child_example_group
|
92
|
+
before do
|
93
|
+
@child_example_group = Class.new(example_group).describe("Child ExampleGroup")
|
94
|
+
@grand_child_example_group = Class.new(child_example_group).describe("GrandChild ExampleGroup")
|
95
|
+
formatter.add_example_group(grand_child_example_group)
|
96
|
+
end
|
97
|
+
|
98
|
+
specify "when having an error, should push failing spec name and failure number" do
|
99
|
+
formatter.example_failed(
|
100
|
+
example_group.it("spec"),
|
101
|
+
98,
|
102
|
+
Reporter::Failure.new("c s", RuntimeError.new)
|
103
|
+
)
|
104
|
+
io.string.should have_nested_example_group_output("- spec (ERROR - 98)\n")
|
105
|
+
end
|
106
|
+
|
107
|
+
specify "when having an expectation failure, should push failing spec name and failure number" do
|
108
|
+
formatter.example_failed(
|
109
|
+
example_group.it("spec"),
|
110
|
+
98,
|
111
|
+
Reporter::Failure.new("c s", Spec::Expectations::ExpectationNotMetError.new)
|
112
|
+
)
|
113
|
+
io.string.should have_nested_example_group_output("- spec (FAILED - 98)\n")
|
114
|
+
end
|
115
|
+
|
116
|
+
def have_nested_example_group_output(expected_output)
|
117
|
+
expected_full_output = "\nExampleGroup Child ExampleGroup GrandChild ExampleGroup\n#{expected_output}"
|
118
|
+
::Spec::Matchers::SimpleMatcher.new(expected_full_output) do |actual|
|
119
|
+
actual == expected_full_output
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
59
123
|
end
|
60
124
|
end
|
61
125
|
end
|