rspec 0.8.2 → 0.9.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 +125 -9
- data/EXAMPLES.rd +50 -27
- data/README +14 -1
- data/Rakefile +95 -42
- data/UPGRADE +31 -0
- data/bin/spec +0 -1
- data/bin/spec_translator +6 -0
- data/examples/auto_spec_description_example.rb +19 -0
- data/examples/{setup_teardown_example.rb → before_and_after_example.rb} +6 -6
- data/examples/behave_as_example.rb +45 -0
- data/examples/custom_expectation_matchers.rb +13 -12
- data/examples/dynamic_spec.rb +2 -2
- data/examples/file_accessor_spec.rb +2 -2
- data/examples/greeter_spec.rb +3 -3
- data/examples/helper_method_example.rb +2 -2
- data/examples/io_processor_spec.rb +4 -4
- data/examples/legacy_spec.rb +10 -0
- data/examples/mocking_example.rb +5 -5
- data/examples/multi_threaded_behaviour_runner.rb +25 -0
- data/examples/partial_mock_example.rb +4 -4
- data/examples/predicate_example.rb +4 -4
- data/examples/priority.txt +1 -0
- data/examples/shared_behaviours_example.rb +31 -0
- data/examples/stack_spec.rb +52 -69
- data/examples/stubbing_example.rb +10 -10
- data/examples/test_case_adapter_example.rb +26 -0
- data/examples/test_case_spec.rb +6 -6
- data/lib/spec.rb +9 -4
- data/lib/spec/dsl.rb +10 -0
- data/lib/spec/dsl/behaviour.rb +189 -0
- data/lib/spec/dsl/behaviour_callbacks.rb +43 -0
- data/lib/spec/dsl/behaviour_eval.rb +170 -0
- data/lib/spec/dsl/behaviour_factory.rb +32 -0
- data/lib/spec/dsl/composite_proc_builder.rb +28 -0
- data/lib/spec/dsl/configuration.rb +38 -0
- data/lib/spec/dsl/description.rb +34 -0
- data/lib/spec/dsl/example.rb +114 -0
- data/lib/spec/dsl/example_matcher.rb +28 -0
- data/lib/spec/{runner/spec_should_raise_handler.rb → dsl/example_should_raise_handler.rb} +4 -4
- data/lib/spec/expectations.rb +0 -3
- data/lib/spec/expectations/differs/default.rb +0 -1
- data/lib/spec/expectations/extensions.rb +0 -1
- data/lib/spec/expectations/extensions/object.rb +10 -53
- data/lib/spec/expectations/handler.rb +14 -18
- data/lib/spec/extensions.rb +1 -0
- data/lib/spec/extensions/object.rb +6 -0
- data/lib/spec/matchers.rb +19 -21
- data/lib/spec/matchers/be.rb +40 -11
- data/lib/spec/matchers/be_close.rb +2 -2
- data/lib/spec/matchers/operator_matcher.rb +52 -0
- data/lib/spec/matchers/respond_to.rb +21 -11
- data/lib/spec/mocks.rb +5 -28
- data/lib/spec/mocks/argument_constraint_matchers.rb +12 -0
- data/lib/spec/mocks/argument_expectation.rb +7 -4
- data/lib/spec/mocks/methods.rb +11 -16
- data/lib/spec/mocks/mock.rb +6 -3
- data/lib/spec/mocks/{mock_handler.rb → proxy.rb} +4 -7
- data/lib/spec/mocks/space.rb +28 -0
- data/lib/spec/mocks/spec_methods.rb +30 -0
- data/lib/spec/rake/spectask.rb +23 -21
- data/lib/spec/rake/verify_rcov.rb +1 -0
- data/lib/spec/runner.rb +88 -35
- data/lib/spec/runner/backtrace_tweaker.rb +2 -1
- data/lib/spec/runner/behaviour_runner.rb +102 -0
- data/lib/spec/runner/command_line.rb +5 -17
- data/lib/spec/runner/drb_command_line.rb +2 -2
- data/lib/spec/runner/extensions/kernel.rb +22 -9
- data/lib/spec/runner/formatter.rb +4 -0
- data/lib/spec/runner/formatter/base_formatter.rb +63 -0
- data/lib/spec/runner/formatter/base_text_formatter.rb +22 -52
- data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +25 -0
- data/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
- data/lib/spec/runner/formatter/html_formatter.rb +74 -29
- data/lib/spec/runner/formatter/progress_bar_formatter.rb +6 -8
- data/lib/spec/runner/formatter/rdoc_formatter.rb +6 -6
- data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
- data/lib/spec/runner/formatter/specdoc_formatter.rb +6 -6
- data/lib/spec/runner/heckle_runner.rb +8 -7
- data/lib/spec/runner/option_parser.rb +136 -55
- data/lib/spec/runner/options.rb +26 -0
- data/lib/spec/runner/reporter.rb +38 -31
- data/lib/spec/runner/spec_parser.rb +22 -13
- data/lib/spec/test_case_adapter.rb +10 -0
- data/lib/spec/translator.rb +103 -86
- data/lib/spec/version.rb +7 -15
- data/plugins/mock_frameworks/flexmock.rb +27 -0
- data/plugins/mock_frameworks/mocha.rb +21 -0
- data/plugins/mock_frameworks/rspec.rb +18 -0
- data/spec/spec/dsl/behaviour_eval_spec.rb +49 -0
- data/spec/spec/dsl/behaviour_factory_spec.rb +30 -0
- data/spec/spec/dsl/behaviour_spec.rb +508 -0
- data/spec/spec/dsl/composite_proc_builder_spec.rb +57 -0
- data/spec/spec/dsl/configuration_spec.rb +43 -0
- data/spec/spec/dsl/description_spec.rb +51 -0
- data/spec/spec/dsl/example_class_spec.rb +24 -0
- data/spec/spec/dsl/example_instance_spec.rb +140 -0
- data/spec/spec/dsl/example_should_raise_spec.rb +137 -0
- data/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
- data/spec/spec/dsl/shared_behaviour_spec.rb +186 -0
- data/spec/spec/expectations/differs/default_spec.rb +12 -12
- data/spec/spec/expectations/extensions/object_spec.rb +10 -10
- data/spec/spec/expectations/fail_with_spec.rb +20 -20
- data/spec/spec/matchers/be_close_spec.rb +37 -31
- data/spec/spec/matchers/be_spec.rb +50 -41
- data/spec/spec/matchers/change_spec.rb +54 -54
- data/spec/spec/matchers/description_generation_spec.rb +43 -31
- data/spec/spec/matchers/eql_spec.rb +24 -37
- data/spec/spec/matchers/equal_spec.rb +24 -37
- data/spec/spec/matchers/exist_spec.rb +48 -0
- data/spec/spec/matchers/handler_spec.rb +36 -23
- data/spec/spec/matchers/has_spec.rb +8 -8
- data/spec/spec/matchers/have_spec.rb +38 -38
- data/spec/spec/matchers/include_spec.rb +6 -6
- data/spec/spec/matchers/match_spec.rb +8 -8
- data/spec/spec/matchers/matcher_methods_spec.rb +24 -31
- data/spec/spec/matchers/raise_error_spec.rb +34 -34
- data/spec/spec/matchers/respond_to_spec.rb +32 -8
- data/spec/spec/matchers/satisfy_spec.rb +6 -6
- data/spec/spec/matchers/should_===_spec.rb +38 -0
- data/spec/spec/matchers/should_==_spec.rb +37 -0
- data/spec/spec/matchers/should_=~_spec.rb +36 -0
- data/spec/spec/matchers/throw_symbol_spec.rb +47 -55
- data/spec/spec/mocks/any_number_of_times_spec.rb +16 -21
- data/spec/spec/mocks/argument_expectation_spec.rb +3 -3
- data/spec/spec/mocks/at_least_spec.rb +30 -30
- data/spec/spec/mocks/at_most_spec.rb +53 -57
- data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
- data/spec/spec/mocks/bug_report_7611_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_7805_spec.rb +3 -3
- data/spec/spec/mocks/bug_report_8165_spec.rb +5 -5
- data/spec/spec/mocks/bug_report_8302_spec.rb +5 -5
- data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +26 -27
- data/spec/spec/mocks/mock_ordering_spec.rb +19 -15
- data/spec/spec/mocks/mock_space_spec.rb +54 -0
- data/spec/spec/mocks/mock_spec.rb +111 -141
- data/spec/spec/mocks/multiple_return_value_spec.rb +48 -48
- data/spec/spec/mocks/null_object_mock_spec.rb +10 -10
- data/spec/spec/mocks/once_counts_spec.rb +32 -35
- data/spec/spec/mocks/options_hash_spec.rb +12 -10
- data/spec/spec/mocks/partial_mock_spec.rb +15 -15
- data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +24 -22
- data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +19 -19
- data/spec/spec/mocks/precise_counts_spec.rb +28 -32
- data/spec/spec/mocks/record_messages_spec.rb +10 -10
- data/spec/spec/mocks/stub_spec.rb +45 -45
- data/spec/spec/mocks/twice_counts_spec.rb +21 -21
- data/spec/spec/package/bin_spec_spec.rb +12 -0
- data/spec/spec/runner/behaviour_runner_spec.rb +114 -0
- data/spec/spec/runner/command_line_spec.rb +8 -8
- data/spec/spec/runner/context_matching_spec.rb +14 -15
- data/spec/spec/runner/drb_command_line_spec.rb +12 -12
- data/spec/spec/runner/execution_context_spec.rb +8 -29
- data/spec/spec/runner/extensions/kernel_spec.rb +36 -0
- data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +27 -0
- data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +28 -0
- data/spec/spec/runner/formatter/html_formatter_spec.rb +9 -8
- data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +6 -6
- data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +10 -10
- data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +22 -27
- data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +6 -5
- data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +17 -17
- data/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
- data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +6 -6
- data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +17 -17
- data/spec/spec/runner/heckle_runner_spec.rb +21 -21
- data/spec/spec/runner/heckler_spec.rb +5 -5
- data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +12 -12
- data/spec/spec/runner/object_ext_spec.rb +3 -3
- data/spec/spec/runner/option_parser_spec.rb +171 -102
- data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +21 -12
- data/spec/spec/runner/reporter_spec.rb +106 -97
- data/spec/spec/runner/spec_matcher_spec.rb +46 -51
- data/spec/spec/runner/spec_parser_spec.rb +72 -16
- data/spec/spec/spec_classes.rb +12 -3
- data/spec/spec/translator_spec.rb +165 -36
- metadata +66 -76
- data/RELEASE-PLAN +0 -117
- data/examples/auto_spec_name_generation_example.rb +0 -18
- data/lib/spec/callback.rb +0 -11
- data/lib/spec/callback/callback_container.rb +0 -60
- data/lib/spec/callback/extensions/module.rb +0 -24
- data/lib/spec/callback/extensions/object.rb +0 -37
- data/lib/spec/deprecated.rb +0 -3
- data/lib/spec/expectations/extensions/proc.rb +0 -57
- data/lib/spec/expectations/should.rb +0 -5
- data/lib/spec/expectations/should/base.rb +0 -64
- data/lib/spec/expectations/should/change.rb +0 -69
- data/lib/spec/expectations/should/have.rb +0 -128
- data/lib/spec/expectations/should/not.rb +0 -74
- data/lib/spec/expectations/should/should.rb +0 -81
- data/lib/spec/expectations/sugar.rb +0 -47
- data/lib/spec/runner/context.rb +0 -154
- data/lib/spec/runner/context_eval.rb +0 -142
- data/lib/spec/runner/context_runner.rb +0 -55
- data/lib/spec/runner/execution_context.rb +0 -17
- data/lib/spec/runner/spec_matcher.rb +0 -25
- data/lib/spec/runner/specification.rb +0 -114
- data/spec/spec/callback/callback_container_spec.rb +0 -27
- data/spec/spec/callback/module_spec.rb +0 -37
- data/spec/spec/callback/object_spec.rb +0 -90
- data/spec/spec/callback/object_with_class_callback_spec.rb +0 -19
- data/spec/spec/expectations/should/should_==_spec.rb +0 -19
- data/spec/spec/expectations/should/should_=~_spec.rb +0 -13
- data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +0 -21
- data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +0 -30
- data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +0 -81
- data/spec/spec/expectations/should/should_be_close_spec.rb +0 -18
- data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +0 -44
- data/spec/spec/expectations/should/should_be_false_spec.rb +0 -39
- data/spec/spec/expectations/should/should_be_spec.rb +0 -11
- data/spec/spec/expectations/should/should_be_true_spec.rb +0 -27
- data/spec/spec/expectations/should/should_change_spec.rb +0 -184
- data/spec/spec/expectations/should/should_eql_spec.rb +0 -11
- data/spec/spec/expectations/should/should_equal_spec.rb +0 -11
- data/spec/spec/expectations/should/should_have_at_least_spec.rb +0 -53
- data/spec/spec/expectations/should/should_have_at_most_spec.rb +0 -45
- data/spec/spec/expectations/should/should_have_key_spec.rb +0 -21
- data/spec/spec/expectations/should/should_have_spec.rb +0 -64
- data/spec/spec/expectations/should/should_include_spec.rb +0 -59
- data/spec/spec/expectations/should/should_match_spec.rb +0 -25
- data/spec/spec/expectations/should/should_not_==_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +0 -21
- data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +0 -68
- data/spec/spec/expectations/should/should_not_be_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_change_spec.rb +0 -24
- data/spec/spec/expectations/should/should_not_eql_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_equal_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_have_key_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_include_spec.rb +0 -58
- data/spec/spec/expectations/should/should_not_match_spec.rb +0 -11
- data/spec/spec/expectations/should/should_not_raise_spec.rb +0 -75
- data/spec/spec/expectations/should/should_not_respond_to_spec.rb +0 -15
- data/spec/spec/expectations/should/should_not_throw_spec.rb +0 -35
- data/spec/spec/expectations/should/should_raise_spec.rb +0 -66
- data/spec/spec/expectations/should/should_respond_to_spec.rb +0 -15
- data/spec/spec/expectations/should/should_satisfy_spec.rb +0 -35
- data/spec/spec/expectations/should/should_throw_spec.rb +0 -27
- data/spec/spec/runner/context_runner_spec.rb +0 -100
- data/spec/spec/runner/context_spec.rb +0 -405
- data/spec/spec/runner/kernel_ext_spec.rb +0 -16
- data/spec/spec/runner/spec_name_generation_spec.rb +0 -102
- data/spec/spec/runner/specification_class_spec.rb +0 -72
- data/spec/spec/runner/specification_instance_spec.rb +0 -160
- data/spec/spec/runner/specification_should_raise_spec.rb +0 -136
|
@@ -1,126 +1,135 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
|
-
module Runner
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
module Runner
|
|
5
|
+
|
|
6
|
+
module ReporterSpecHelper
|
|
7
|
+
def setup
|
|
7
8
|
@io = StringIO.new
|
|
8
|
-
@backtrace_tweaker =
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
end
|
|
17
|
-
specify "should account for context in stats" do
|
|
18
|
-
@formatter.should_receive(:add_context).with("context", true)
|
|
19
|
-
@reporter.add_context("context")
|
|
20
|
-
|
|
21
|
-
end
|
|
22
|
-
specify "should account for spec and error in stats for pass" do
|
|
23
|
-
@formatter.should_receive(:add_context)
|
|
24
|
-
@formatter.should_receive(:spec_started).with("spec")
|
|
25
|
-
@formatter.should_receive(:spec_failed).with("spec", 1, failure)
|
|
26
|
-
@formatter.should_receive(:start_dump)
|
|
27
|
-
@formatter.should_receive(:dump_failure).with(1, :anything)
|
|
28
|
-
@formatter.should_receive(:dump_summary).with(:anything, 1, 1)
|
|
29
|
-
@backtrace_tweaker.should_receive(:tweak_backtrace)
|
|
30
|
-
@reporter.add_context("context")
|
|
31
|
-
@reporter.spec_started("spec")
|
|
32
|
-
@reporter.spec_finished("spec", RuntimeError.new)
|
|
33
|
-
@reporter.dump
|
|
34
|
-
|
|
35
|
-
end
|
|
36
|
-
specify "should account for spec in stats for pass" do
|
|
37
|
-
@formatter.should_receive(:spec_started)
|
|
38
|
-
@formatter.should_receive(:spec_passed)
|
|
39
|
-
@formatter.should_receive(:start_dump)
|
|
40
|
-
@formatter.should_receive(:dump_summary).with(:anything, 1, 0)
|
|
41
|
-
@reporter.spec_started("spec")
|
|
42
|
-
@reporter.spec_finished("spec")
|
|
43
|
-
@reporter.dump
|
|
44
|
-
|
|
9
|
+
@backtrace_tweaker = stub("backtrace tweaker", :tweak_backtrace => nil)
|
|
10
|
+
@formatter = mock("formatter")
|
|
11
|
+
@reporter = Reporter.new([@formatter], @backtrace_tweaker)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def failure
|
|
15
|
+
Mocks::DuckTypeArgConstraint.new(:header, :exception)
|
|
16
|
+
end
|
|
45
17
|
end
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
@reporter.add_context("context")
|
|
51
|
-
@reporter.spec_finished("spec", RuntimeError.new)
|
|
52
|
-
@backtrace_tweaker.__verify
|
|
18
|
+
|
|
19
|
+
describe Reporter do
|
|
20
|
+
include ReporterSpecHelper
|
|
21
|
+
before(:each) {setup}
|
|
53
22
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
@
|
|
57
|
-
|
|
58
|
-
|
|
23
|
+
it "should tell formatter when behaviour is added" do
|
|
24
|
+
@formatter.should_receive(:add_behaviour).with("behaviour")
|
|
25
|
+
@reporter.add_behaviour("behaviour")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should handle multiple behaviours with same name" do
|
|
29
|
+
@formatter.should_receive(:add_behaviour).exactly(3).times
|
|
30
|
+
@formatter.should_receive(:example_started).exactly(3).times
|
|
31
|
+
@formatter.should_receive(:example_passed).exactly(3).times
|
|
59
32
|
@formatter.should_receive(:start_dump)
|
|
60
33
|
@formatter.should_receive(:dump_summary).with(:anything, 3, 0)
|
|
61
|
-
@reporter.
|
|
62
|
-
@reporter.
|
|
63
|
-
@reporter.
|
|
64
|
-
@reporter.
|
|
65
|
-
@reporter.
|
|
66
|
-
@reporter.
|
|
67
|
-
@reporter.
|
|
68
|
-
@reporter.
|
|
69
|
-
@reporter.
|
|
34
|
+
@reporter.add_behaviour("behaviour")
|
|
35
|
+
@reporter.example_started("spec 1")
|
|
36
|
+
@reporter.example_finished("spec 1")
|
|
37
|
+
@reporter.add_behaviour("behaviour")
|
|
38
|
+
@reporter.example_started("spec 2")
|
|
39
|
+
@reporter.example_finished("spec 2")
|
|
40
|
+
@reporter.add_behaviour("behaviour")
|
|
41
|
+
@reporter.example_started("spec 3")
|
|
42
|
+
@reporter.example_finished("spec 3")
|
|
70
43
|
@reporter.dump
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "should handle multiple examples with the same name" do
|
|
75
47
|
error=RuntimeError.new
|
|
76
|
-
@formatter.should_receive(:
|
|
77
|
-
@formatter.should_receive(:
|
|
78
|
-
@formatter.should_receive(:
|
|
79
|
-
@formatter.should_receive(:
|
|
80
|
-
@formatter.should_receive(:spec_failed).with("spec", 2, failure)
|
|
48
|
+
@formatter.should_receive(:add_behaviour).exactly(2).times
|
|
49
|
+
@formatter.should_receive(:example_passed).with("example").exactly(2).times
|
|
50
|
+
@formatter.should_receive(:example_failed).with("example", 1, failure)
|
|
51
|
+
@formatter.should_receive(:example_failed).with("example", 2, failure)
|
|
81
52
|
@formatter.should_receive(:dump_failure).exactly(2).times
|
|
82
53
|
@formatter.should_receive(:start_dump)
|
|
83
54
|
@formatter.should_receive(:dump_summary).with(:anything, 4, 2)
|
|
84
|
-
@backtrace_tweaker.should_receive(:tweak_backtrace)
|
|
85
|
-
@reporter.
|
|
86
|
-
@reporter.
|
|
87
|
-
@reporter.
|
|
88
|
-
@reporter.
|
|
89
|
-
@reporter.
|
|
90
|
-
@reporter.
|
|
91
|
-
@reporter.spec_started("spec")
|
|
92
|
-
@reporter.spec_finished("spec")
|
|
93
|
-
@reporter.spec_started("spec")
|
|
94
|
-
@reporter.spec_finished("spec", error)
|
|
55
|
+
@backtrace_tweaker.should_receive(:tweak_backtrace).twice
|
|
56
|
+
@reporter.add_behaviour("behaviour")
|
|
57
|
+
@reporter.example_finished("example")
|
|
58
|
+
@reporter.example_finished("example", error)
|
|
59
|
+
@reporter.add_behaviour("behaviour")
|
|
60
|
+
@reporter.example_finished("example")
|
|
61
|
+
@reporter.example_finished("example", error)
|
|
95
62
|
@reporter.dump
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
@formatter.should_receive(:add_context).never
|
|
100
|
-
@reporter.add_context("context")
|
|
101
|
-
|
|
102
|
-
end
|
|
103
|
-
specify "should push stats to reporter even with no data" do
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "should push stats to formatter even with no data" do
|
|
104
66
|
@formatter.should_receive(:start_dump)
|
|
105
67
|
@formatter.should_receive(:dump_summary).with(:anything, 0, 0)
|
|
106
68
|
@reporter.dump
|
|
69
|
+
end
|
|
107
70
|
|
|
108
|
-
|
|
109
|
-
specify "should push time to reporter" do
|
|
71
|
+
it "should push time to formatter" do
|
|
110
72
|
@formatter.should_receive(:start).with(5)
|
|
111
73
|
@formatter.should_receive(:start_dump)
|
|
112
74
|
@formatter.should_receive(:dump_summary) do |time, a, b|
|
|
113
|
-
time.to_s.
|
|
75
|
+
time.to_s.should match(/[0-9].[0-9|e|-]+/)
|
|
114
76
|
end
|
|
115
77
|
@reporter.start(5)
|
|
116
78
|
@reporter.end
|
|
117
79
|
@reporter.dump
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe Reporter, " reporting one passing example" do
|
|
84
|
+
include ReporterSpecHelper
|
|
85
|
+
before(:each) {setup}
|
|
86
|
+
|
|
87
|
+
it "should tell formatter example passed" do
|
|
88
|
+
@formatter.should_receive(:example_passed)
|
|
89
|
+
@reporter.example_finished("example")
|
|
90
|
+
end
|
|
118
91
|
|
|
92
|
+
it "should not delegate to backtrace tweaker" do
|
|
93
|
+
@formatter.should_receive(:example_passed)
|
|
94
|
+
@backtrace_tweaker.should_not_receive(:tweak_backtrace)
|
|
95
|
+
@reporter.example_finished("example")
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it "should account for passing example in stats" do
|
|
99
|
+
@formatter.should_receive(:example_passed)
|
|
100
|
+
@formatter.should_receive(:start_dump)
|
|
101
|
+
@formatter.should_receive(:dump_summary).with(:anything, 1, 0)
|
|
102
|
+
@reporter.example_finished("example")
|
|
103
|
+
@reporter.dump
|
|
104
|
+
end
|
|
119
105
|
end
|
|
120
|
-
|
|
121
|
-
|
|
106
|
+
|
|
107
|
+
describe Reporter, " reporting one failing example" do
|
|
108
|
+
include ReporterSpecHelper
|
|
109
|
+
before(:each) {setup}
|
|
110
|
+
|
|
111
|
+
it "should tell formatter that example failed" do
|
|
112
|
+
@formatter.should_receive(:example_failed)
|
|
113
|
+
@reporter.example_finished("example", RuntimeError.new)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "should delegate to backtrace tweaker" do
|
|
117
|
+
@formatter.should_receive(:example_failed)
|
|
118
|
+
@backtrace_tweaker.should_receive(:tweak_backtrace)
|
|
119
|
+
@reporter.example_finished("spec", RuntimeError.new)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "should account for failing example in stats" do
|
|
123
|
+
@formatter.should_receive(:add_behaviour)
|
|
124
|
+
@formatter.should_receive(:example_failed).with("example", 1, failure)
|
|
125
|
+
@formatter.should_receive(:start_dump)
|
|
126
|
+
@formatter.should_receive(:dump_failure).with(1, :anything)
|
|
127
|
+
@formatter.should_receive(:dump_summary).with(:anything, 1, 1)
|
|
128
|
+
@reporter.add_behaviour("behaviour")
|
|
129
|
+
@reporter.example_finished("example", RuntimeError.new)
|
|
130
|
+
@reporter.dump
|
|
131
|
+
end
|
|
132
|
+
|
|
122
133
|
end
|
|
123
|
-
|
|
124
|
-
end
|
|
125
|
-
end
|
|
134
|
+
end
|
|
126
135
|
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
3
|
module Spec
|
|
4
|
-
module
|
|
5
|
-
module
|
|
4
|
+
module DSL
|
|
5
|
+
module ExampleMatcherSpecHelper
|
|
6
6
|
class MatchDescription
|
|
7
7
|
def initialize(description)
|
|
8
8
|
@description = description
|
|
@@ -25,81 +25,76 @@ module Spec
|
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
include
|
|
28
|
+
describe ExampleMatcher do
|
|
29
|
+
include ExampleMatcherSpecHelper
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
matcher=
|
|
33
|
-
matcher.should match_description("
|
|
31
|
+
it "should match correct behaviour and example" do
|
|
32
|
+
matcher=ExampleMatcher.new("behaviour", "example")
|
|
33
|
+
matcher.should match_description("behaviour example")
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
matcher=
|
|
38
|
-
matcher.should_not match_description("
|
|
36
|
+
it "should not match wrong example" do
|
|
37
|
+
matcher=ExampleMatcher.new("behaviour", "other example")
|
|
38
|
+
matcher.should_not match_description("behaviour example")
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
matcher=
|
|
43
|
-
matcher.should_not match_description("
|
|
41
|
+
it "should not match wrong behaviour" do
|
|
42
|
+
matcher=ExampleMatcher.new("other behaviour", "example")
|
|
43
|
+
matcher.should_not match_description("behaviour example")
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
matcher=
|
|
48
|
-
matcher.should match_description("
|
|
46
|
+
it "should match example only" do
|
|
47
|
+
matcher=ExampleMatcher.new("behaviour", "example")
|
|
48
|
+
matcher.should match_description("example")
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
matcher=
|
|
53
|
-
matcher.should match_description("
|
|
51
|
+
it "should match behaviour only" do
|
|
52
|
+
matcher=ExampleMatcher.new("behaviour", "example")
|
|
53
|
+
matcher.should match_description("behaviour")
|
|
54
54
|
end
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
matcher=
|
|
56
|
+
it "should escape regexp chars" do
|
|
57
|
+
matcher=ExampleMatcher.new("(con|text)", "[example]")
|
|
58
58
|
matcher.should_not match_description("con p")
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
#
|
|
66
|
-
# specify "should match spec only" do
|
|
67
|
-
# matcher=SpecMatcher.new("with a spec", "a context")
|
|
68
|
-
# matcher.should match_description("with a spec")
|
|
69
|
-
# end
|
|
61
|
+
it "should match when behaviour is modularized" do
|
|
62
|
+
matcher=ExampleMatcher.new("MyModule::MyClass", "example")
|
|
63
|
+
matcher.should match_description("MyClass example")
|
|
64
|
+
end
|
|
70
65
|
|
|
71
|
-
#
|
|
72
|
-
# matcher=
|
|
66
|
+
# it "should match with regexp reserved (characters) in the example" do
|
|
67
|
+
# matcher=ExampleMatcher.new("with ([#]) an example", "a context")
|
|
73
68
|
# matcher.should match_description("a context")
|
|
74
|
-
# matcher.should match_description("with ([#])
|
|
75
|
-
# matcher.should match_description("a context with ([#])
|
|
69
|
+
# matcher.should match_description("with ([#]) an example")
|
|
70
|
+
# matcher.should match_description("a context with ([#]) an example")
|
|
76
71
|
# end
|
|
77
72
|
#
|
|
78
|
-
#
|
|
79
|
-
# matcher=
|
|
80
|
-
# matcher.should match_description("a ([#]) context with
|
|
81
|
-
# matcher.should match_description("a ([#]) context with
|
|
82
|
-
# matcher.should match_description("a ([#]) context with
|
|
73
|
+
# it "should match with regexp reserved (characters) in the context" do
|
|
74
|
+
# matcher=ExampleMatcher.new("with an example", "a ([#]) context")
|
|
75
|
+
# matcher.should match_description("a ([#]) context with an example")
|
|
76
|
+
# matcher.should match_description("a ([#]) context with an example")
|
|
77
|
+
# matcher.should match_description("a ([#]) context with an example")
|
|
83
78
|
# end
|
|
84
79
|
|
|
85
|
-
#
|
|
86
|
-
# matcher=
|
|
87
|
-
# matcher.should_not match_description("with
|
|
80
|
+
# it "should not match wrong example only" do
|
|
81
|
+
# matcher=ExampleMatcher.new("with another example", "a context")
|
|
82
|
+
# matcher.should_not match_description("with an example")
|
|
88
83
|
# end
|
|
89
84
|
#
|
|
90
|
-
#
|
|
91
|
-
# matcher=
|
|
92
|
-
# matcher.should_not match_description("with
|
|
85
|
+
# it "should not match wrong context" do
|
|
86
|
+
# matcher=ExampleMatcher.new("another context with an example", "a context")
|
|
87
|
+
# matcher.should_not match_description("with an example")
|
|
93
88
|
# end
|
|
94
89
|
#
|
|
95
|
-
#
|
|
96
|
-
# matcher=
|
|
97
|
-
# matcher.should_not match_description("with
|
|
90
|
+
# it "should not match wrong context only" do
|
|
91
|
+
# matcher=ExampleMatcher.new("another context", "a context")
|
|
92
|
+
# matcher.should_not match_description("with an example")
|
|
98
93
|
# end
|
|
99
94
|
#
|
|
100
|
-
#
|
|
101
|
-
# matcher=
|
|
102
|
-
# matcher.should_not match_description("with
|
|
95
|
+
# it "should not match wrong example" do
|
|
96
|
+
# matcher=ExampleMatcher.new("a context with another example", "a context")
|
|
97
|
+
# matcher.should_not match_description("with an example")
|
|
103
98
|
# end
|
|
104
99
|
|
|
105
100
|
end
|
|
@@ -1,37 +1,93 @@
|
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
describe "c" do
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
it "1" do
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
it "2" do
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
describe "d" do
|
|
14
|
+
|
|
15
|
+
it "3" do
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "4" do
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class SpecParserSubject
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
describe SpecParserSubject do
|
|
27
|
+
|
|
28
|
+
it "5" do
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe SpecParserSubject, " described" do
|
|
34
|
+
|
|
35
|
+
it "6" do
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
describe "SpecParser" do
|
|
41
|
+
before(:each) do
|
|
15
42
|
@p = Spec::Runner::SpecParser.new
|
|
16
43
|
end
|
|
17
44
|
|
|
18
|
-
|
|
19
|
-
@p.spec_name_for(File.open(__FILE__), 5).
|
|
45
|
+
it "should find spec name for 'specify' at same line" do
|
|
46
|
+
@p.spec_name_for(File.open(__FILE__), 5).should == "c 1"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should find spec name for 'specify' at end of spec line" do
|
|
50
|
+
@p.spec_name_for(File.open(__FILE__), 6).should == "c 1"
|
|
20
51
|
end
|
|
21
52
|
|
|
22
|
-
|
|
23
|
-
@p.spec_name_for(File.open(__FILE__),
|
|
53
|
+
it "should find context for 'context' above all specs" do
|
|
54
|
+
@p.spec_name_for(File.open(__FILE__), 4).should == "c"
|
|
24
55
|
end
|
|
25
56
|
|
|
26
|
-
|
|
27
|
-
@p.spec_name_for(File.open(__FILE__),
|
|
57
|
+
it "should find spec name for 'it' at same line" do
|
|
58
|
+
@p.spec_name_for(File.open(__FILE__), 15).should == "d 3"
|
|
28
59
|
end
|
|
29
60
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
61
|
+
it "should find spec name for 'it' at end of spec line" do
|
|
62
|
+
@p.spec_name_for(File.open(__FILE__), 16).should == "d 3"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it "should find context for 'describe' above all specs" do
|
|
66
|
+
@p.spec_name_for(File.open(__FILE__), 14).should == "d"
|
|
67
|
+
end
|
|
33
68
|
|
|
34
|
-
|
|
35
|
-
|
|
69
|
+
it "should find nearest example name between examples" do
|
|
70
|
+
@p.spec_name_for(File.open(__FILE__), 7).should == "c 1"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "should find nothing outside a context" do
|
|
74
|
+
@p.spec_name_for(File.open(__FILE__), 2).should be_nil
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should find context name for type" do
|
|
78
|
+
@p.spec_name_for(File.open(__FILE__), 26).should == "SpecParserSubject"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "should find context and spec name for type" do
|
|
82
|
+
@p.spec_name_for(File.open(__FILE__), 28).should == "SpecParserSubject 5"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it "should find context and description for type" do
|
|
86
|
+
@p.spec_name_for(File.open(__FILE__), 33).should == "SpecParserSubject described"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
it "should find context and description and example for type" do
|
|
90
|
+
@p.spec_name_for(File.open(__FILE__), 36).should == "SpecParserSubject described 6"
|
|
36
91
|
end
|
|
92
|
+
|
|
37
93
|
end
|