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,405 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
|
|
3
|
-
module Spec
|
|
4
|
-
module Runner
|
|
5
|
-
context "Context" do
|
|
6
|
-
|
|
7
|
-
setup do
|
|
8
|
-
@formatter = Spec::Mocks::Mock.new "formatter", :register_as_spec_listener => false
|
|
9
|
-
@context = Context.new("context") {}
|
|
10
|
-
@context_eval = @context.instance_eval { @context_eval_module }
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
teardown do
|
|
14
|
-
@formatter.__verify
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
specify "should add itself to formatter on run" do
|
|
18
|
-
@formatter.should_receive(:add_context).with "context"
|
|
19
|
-
@context.run(@formatter)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
specify "should run spec on run" do
|
|
23
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
24
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
25
|
-
@formatter.should_receive(:spec_finished).with "test", :anything, :anything
|
|
26
|
-
$spec_ran = false
|
|
27
|
-
@context_eval.specify("test") {$spec_ran = true}
|
|
28
|
-
@context.run(@formatter)
|
|
29
|
-
$spec_ran.should be_true
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
specify "should not run spec on dry run" do
|
|
33
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
34
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
35
|
-
@formatter.should_receive(:spec_finished).with "test"
|
|
36
|
-
$spec_ran = false
|
|
37
|
-
@context_eval.specify("test") {$spec_ran = true}
|
|
38
|
-
@context.run(@formatter, true)
|
|
39
|
-
$spec_ran.should be_false
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
specify "should not run context_setup or context_teardown on dry run" do
|
|
43
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
44
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
45
|
-
@formatter.should_receive(:spec_finished).with "test"
|
|
46
|
-
|
|
47
|
-
context_setup_ran = false
|
|
48
|
-
context_teardown_ran = false
|
|
49
|
-
@context_eval.context_setup { context_setup_ran = true }
|
|
50
|
-
@context_eval.context_teardown { context_teardown_ran = true }
|
|
51
|
-
@context_eval.specify("test") {true}
|
|
52
|
-
@context.run(@formatter, true)
|
|
53
|
-
context_setup_ran.should be_false
|
|
54
|
-
context_teardown_ran.should be_false
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
specify "should not run context if context_setup fails" do
|
|
58
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
59
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
60
|
-
|
|
61
|
-
spec_ran = false
|
|
62
|
-
@context_eval.context_setup { raise "help" }
|
|
63
|
-
@context_eval.specify("test") {spec_ran = true}
|
|
64
|
-
@context.run(@formatter)
|
|
65
|
-
spec_ran.should be_false
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
specify "should run context_teardown if any spec fails" do
|
|
69
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
70
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
71
|
-
|
|
72
|
-
context_teardown_ran = false
|
|
73
|
-
@context_eval.context_setup { raise "context_setup error" }
|
|
74
|
-
@context_eval.context_teardown { context_teardown_ran = true }
|
|
75
|
-
@context.run(@formatter)
|
|
76
|
-
context_teardown_ran.should be_true
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
specify "should run context_teardown if any context_setup fails" do
|
|
80
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
81
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
82
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
83
|
-
|
|
84
|
-
context_teardown_ran = false
|
|
85
|
-
@context_eval.context_teardown { context_teardown_ran = true }
|
|
86
|
-
@context_eval.specify("test") {raise "spec error" }
|
|
87
|
-
@context.run(@formatter)
|
|
88
|
-
context_teardown_ran.should be_true
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
specify "should supply context_setup as spec name if failure in context_setup" do
|
|
93
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
94
|
-
|
|
95
|
-
@formatter.should_receive(:spec_finished) do |name, error, location|
|
|
96
|
-
name.should_eql("context_setup")
|
|
97
|
-
error.message.should_eql("in context_setup")
|
|
98
|
-
location.should_eql("context_setup")
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
@context_eval.context_setup { raise "in context_setup" }
|
|
102
|
-
@context_eval.specify("test") {true}
|
|
103
|
-
@context.run(@formatter)
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
specify "should provide context_teardown as spec name if failure in context_teardown" do
|
|
107
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
108
|
-
|
|
109
|
-
@formatter.should_receive(:spec_finished) do |name, error, location|
|
|
110
|
-
name.should_eql("context_teardown")
|
|
111
|
-
error.message.should_eql("in context_teardown")
|
|
112
|
-
location.should_eql("context_teardown")
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
@context_eval.context_teardown { raise "in context_teardown" }
|
|
116
|
-
@context.run(@formatter)
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
specify "should run superclass context_setup and context_setup block only once per context" do
|
|
120
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
121
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
122
|
-
@formatter.should_receive(:spec_started).with "test2"
|
|
123
|
-
@formatter.should_receive(:spec_finished).twice.with :any_args
|
|
124
|
-
|
|
125
|
-
super_class_context_setup_run_count = 0
|
|
126
|
-
super_class = Class.new do
|
|
127
|
-
define_method :context_setup do
|
|
128
|
-
super_class_context_setup_run_count += 1
|
|
129
|
-
end
|
|
130
|
-
end
|
|
131
|
-
# using @context.inherit_context_eval_module_from here, but other examples use @context.inherit
|
|
132
|
-
# - inherit_context_eval_module_from is used by Spec::Rails to avoid confusion with Ruby's #include method
|
|
133
|
-
@context.inherit_context_eval_module_from super_class
|
|
134
|
-
|
|
135
|
-
context_setup_run_count = 0
|
|
136
|
-
@context_eval.context_setup {context_setup_run_count += 1}
|
|
137
|
-
@context_eval.specify("test") {true}
|
|
138
|
-
@context_eval.specify("test2") {true}
|
|
139
|
-
@context.run(@formatter)
|
|
140
|
-
super_class_context_setup_run_count.should_be 1
|
|
141
|
-
context_setup_run_count.should_be 1
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
specify "should run superclass setup method and setup block" do
|
|
145
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
146
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
147
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
148
|
-
|
|
149
|
-
super_class_setup_ran = false
|
|
150
|
-
super_class = Class.new do
|
|
151
|
-
define_method :setup do
|
|
152
|
-
super_class_setup_ran = true
|
|
153
|
-
end
|
|
154
|
-
end
|
|
155
|
-
@context.inherit super_class
|
|
156
|
-
|
|
157
|
-
setup_ran = false
|
|
158
|
-
@context_eval.setup {setup_ran = true}
|
|
159
|
-
@context_eval.specify("test") {true}
|
|
160
|
-
@context.run(@formatter)
|
|
161
|
-
super_class_setup_ran.should be_true
|
|
162
|
-
setup_ran.should be_true
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
specify "should run superclass context_teardown method and context_teardown block only once" do
|
|
166
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
167
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
168
|
-
@formatter.should_receive(:spec_started).with "test2"
|
|
169
|
-
@formatter.should_receive(:spec_finished).twice.with :any_args
|
|
170
|
-
|
|
171
|
-
super_class_context_teardown_run_count = 0
|
|
172
|
-
super_class = Class.new do
|
|
173
|
-
define_method :context_teardown do
|
|
174
|
-
super_class_context_teardown_run_count += 1
|
|
175
|
-
end
|
|
176
|
-
end
|
|
177
|
-
@context.inherit super_class
|
|
178
|
-
|
|
179
|
-
context_teardown_run_count = 0
|
|
180
|
-
@context_eval.context_teardown {context_teardown_run_count += 1}
|
|
181
|
-
@context_eval.specify("test") {true}
|
|
182
|
-
@context_eval.specify("test2") {true}
|
|
183
|
-
@context.run(@formatter)
|
|
184
|
-
super_class_context_teardown_run_count.should_be 1
|
|
185
|
-
context_teardown_run_count.should_be 1
|
|
186
|
-
@formatter.__verify
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
specify "context_teardown should have access to all instance variables defined in context_setup" do
|
|
190
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
191
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
192
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
193
|
-
|
|
194
|
-
context_instance_value_in = "Hello there"
|
|
195
|
-
context_instance_value_out = ""
|
|
196
|
-
@context_eval.context_setup { @instance_var = context_instance_value_in }
|
|
197
|
-
@context_eval.context_teardown { context_instance_value_out = @instance_var }
|
|
198
|
-
@context_eval.specify("test") {true}
|
|
199
|
-
@context.run(@formatter)
|
|
200
|
-
context_instance_value_in.should == context_instance_value_out
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
specify "should copy instance variables from context_setup's execution context into spec's execution context" do
|
|
204
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
205
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
206
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
207
|
-
|
|
208
|
-
context_instance_value_in = "Hello there"
|
|
209
|
-
context_instance_value_out = ""
|
|
210
|
-
@context_eval.context_setup { @instance_var = context_instance_value_in }
|
|
211
|
-
@context_eval.specify("test") {context_instance_value_out = @instance_var}
|
|
212
|
-
@context.run(@formatter)
|
|
213
|
-
context_instance_value_in.should == context_instance_value_out
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
specify "should call context_setup before any setup" do
|
|
217
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
218
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
219
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
220
|
-
|
|
221
|
-
fiddle = []
|
|
222
|
-
super_class = Class.new do
|
|
223
|
-
define_method :setup do
|
|
224
|
-
fiddle << "superclass setup"
|
|
225
|
-
end
|
|
226
|
-
end
|
|
227
|
-
@context.inherit super_class
|
|
228
|
-
|
|
229
|
-
@context_eval.context_setup { fiddle << "context_setup" }
|
|
230
|
-
@context_eval.setup { fiddle << "setup" }
|
|
231
|
-
@context_eval.specify("test") {true}
|
|
232
|
-
@context.run(@formatter)
|
|
233
|
-
fiddle.first.should == "context_setup"
|
|
234
|
-
fiddle.last.should == "setup"
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
specify "should call context_teardown after any teardown" do
|
|
238
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
239
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
240
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
241
|
-
|
|
242
|
-
fiddle = []
|
|
243
|
-
super_class = Class.new do
|
|
244
|
-
define_method :teardown do
|
|
245
|
-
fiddle << "superclass teardown"
|
|
246
|
-
end
|
|
247
|
-
end
|
|
248
|
-
@context.inherit super_class
|
|
249
|
-
|
|
250
|
-
@context_eval.context_teardown { fiddle << "context_teardown" }
|
|
251
|
-
@context_eval.teardown { fiddle << "teardown" }
|
|
252
|
-
@context_eval.specify("test") {true}
|
|
253
|
-
@context.run(@formatter)
|
|
254
|
-
fiddle.first.should == "superclass teardown"
|
|
255
|
-
fiddle.last.should == "context_teardown"
|
|
256
|
-
end
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
specify "should run superclass teardown method and teardown block" do
|
|
260
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
261
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
262
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
263
|
-
|
|
264
|
-
super_class_teardown_ran = false
|
|
265
|
-
super_class = Class.new do
|
|
266
|
-
define_method :teardown do
|
|
267
|
-
super_class_teardown_ran = true
|
|
268
|
-
end
|
|
269
|
-
end
|
|
270
|
-
@context.inherit super_class
|
|
271
|
-
|
|
272
|
-
teardown_ran = false
|
|
273
|
-
@context_eval.teardown {teardown_ran = true}
|
|
274
|
-
@context_eval.specify("test") {true}
|
|
275
|
-
@context.run(@formatter)
|
|
276
|
-
super_class_teardown_ran.should be_true
|
|
277
|
-
teardown_ran.should be_true
|
|
278
|
-
@formatter.__verify
|
|
279
|
-
end
|
|
280
|
-
|
|
281
|
-
specify "should have accessible methods from inherited superclass" do
|
|
282
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
283
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
284
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
285
|
-
|
|
286
|
-
helper_method_ran = false
|
|
287
|
-
super_class = Class.new do
|
|
288
|
-
define_method :helper_method do
|
|
289
|
-
helper_method_ran = true
|
|
290
|
-
end
|
|
291
|
-
end
|
|
292
|
-
@context.inherit super_class
|
|
293
|
-
|
|
294
|
-
@context_eval.specify("test") {helper_method}
|
|
295
|
-
@context.run(@formatter)
|
|
296
|
-
helper_method_ran.should be_true
|
|
297
|
-
end
|
|
298
|
-
|
|
299
|
-
specify "should have accessible class methods from inherited superclass" do
|
|
300
|
-
class_method_ran = false
|
|
301
|
-
super_class = Class.new
|
|
302
|
-
(class << super_class; self; end).class_eval do
|
|
303
|
-
define_method :class_method do
|
|
304
|
-
class_method_ran = true
|
|
305
|
-
end
|
|
306
|
-
end
|
|
307
|
-
@context.inherit super_class
|
|
308
|
-
@context.class_method
|
|
309
|
-
class_method_ran.should be_true
|
|
310
|
-
|
|
311
|
-
lambda {@context.foobar}.should_raise(NoMethodError)
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
specify "should include inherited class methods" do
|
|
315
|
-
class_method_ran = false
|
|
316
|
-
super_class = Class.new
|
|
317
|
-
class << super_class
|
|
318
|
-
def super_class_class_method; end
|
|
319
|
-
end
|
|
320
|
-
@context.inherit super_class
|
|
321
|
-
|
|
322
|
-
@context.methods.should_include("super_class_class_method")
|
|
323
|
-
end
|
|
324
|
-
|
|
325
|
-
specify "should have accessible instance methods from included module" do
|
|
326
|
-
@formatter.should_receive(:add_context).with :any_args
|
|
327
|
-
@formatter.should_receive(:spec_started).with "test"
|
|
328
|
-
@formatter.should_receive(:spec_finished).with :any_args
|
|
329
|
-
|
|
330
|
-
mod1_method_called = false
|
|
331
|
-
mod1 = Module.new do
|
|
332
|
-
define_method :mod1_method do
|
|
333
|
-
mod1_method_called = true
|
|
334
|
-
end
|
|
335
|
-
end
|
|
336
|
-
|
|
337
|
-
mod2_method_called = false
|
|
338
|
-
mod2 = Module.new do
|
|
339
|
-
define_method :mod2_method do
|
|
340
|
-
mod2_method_called = true
|
|
341
|
-
end
|
|
342
|
-
end
|
|
343
|
-
|
|
344
|
-
@context.include mod1
|
|
345
|
-
@context.include mod2
|
|
346
|
-
|
|
347
|
-
@context_eval.specify("test") do
|
|
348
|
-
mod1_method
|
|
349
|
-
mod2_method
|
|
350
|
-
end
|
|
351
|
-
@context.run(@formatter)
|
|
352
|
-
mod1_method_called.should be_true
|
|
353
|
-
mod2_method_called.should be_true
|
|
354
|
-
end
|
|
355
|
-
|
|
356
|
-
specify "should have accessible class methods from included module" do
|
|
357
|
-
mod1_method_called = false
|
|
358
|
-
mod1 = Module.new do
|
|
359
|
-
class_methods = Module.new do
|
|
360
|
-
define_method :mod1_method do
|
|
361
|
-
mod1_method_called = true
|
|
362
|
-
end
|
|
363
|
-
end
|
|
364
|
-
|
|
365
|
-
(class << self; self; end).class_eval do
|
|
366
|
-
define_method(:included) do |receiver|
|
|
367
|
-
receiver.extend class_methods
|
|
368
|
-
end
|
|
369
|
-
end
|
|
370
|
-
end
|
|
371
|
-
|
|
372
|
-
mod2_method_called = false
|
|
373
|
-
mod2 = Module.new do
|
|
374
|
-
class_methods = Module.new do
|
|
375
|
-
define_method :mod2_method do
|
|
376
|
-
mod2_method_called = true
|
|
377
|
-
end
|
|
378
|
-
end
|
|
379
|
-
|
|
380
|
-
(class << self; self; end).class_eval do
|
|
381
|
-
define_method(:included) do |receiver|
|
|
382
|
-
receiver.extend class_methods
|
|
383
|
-
end
|
|
384
|
-
end
|
|
385
|
-
end
|
|
386
|
-
|
|
387
|
-
@context.include mod1
|
|
388
|
-
@context.include mod2
|
|
389
|
-
|
|
390
|
-
@context_eval.mod1_method
|
|
391
|
-
@context_eval.mod2_method
|
|
392
|
-
mod1_method_called.should_be true
|
|
393
|
-
mod2_method_called.should_be true
|
|
394
|
-
end
|
|
395
|
-
|
|
396
|
-
specify "should count number of specs" do
|
|
397
|
-
@context_eval.specify("one") {}
|
|
398
|
-
@context_eval.specify("two") {}
|
|
399
|
-
@context_eval.specify("three") {}
|
|
400
|
-
@context_eval.specify("four") {}
|
|
401
|
-
@context.number_of_specs.should_be 4
|
|
402
|
-
end
|
|
403
|
-
end
|
|
404
|
-
end
|
|
405
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
-
|
|
3
|
-
module Spec
|
|
4
|
-
module Runner
|
|
5
|
-
context "KernelExt" do
|
|
6
|
-
specify "should add context method to kernel" do
|
|
7
|
-
lambda do
|
|
8
|
-
context "" do
|
|
9
|
-
|
|
10
|
-
end
|
|
11
|
-
end.should_not_raise
|
|
12
|
-
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper.rb'
|
|
2
|
-
|
|
3
|
-
module Spec
|
|
4
|
-
module Runner
|
|
5
|
-
module SpecNameSpecHelper
|
|
6
|
-
def run_spec
|
|
7
|
-
@spec.run(reporter, nil, nil, nil, ::Spec::Runner::ExecutionContext.new(nil))
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def reporter
|
|
11
|
-
@reporter ||= mock("reporter")
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def spec_class
|
|
15
|
-
@spec_class ||= generate_spec_class
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def generate_spec_class
|
|
19
|
-
callback_container = Callback::CallbackContainer.new
|
|
20
|
-
spec_class = Specification.dup
|
|
21
|
-
spec_class.stub!(:callbacks).and_return {callback_container}
|
|
22
|
-
spec_class
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# context "Specification with given name" do
|
|
27
|
-
# include SpecNameSpecHelper
|
|
28
|
-
# setup do
|
|
29
|
-
# @spec = spec_class.new("given name")
|
|
30
|
-
# end
|
|
31
|
-
#
|
|
32
|
-
# specify "should start spec with given name" do
|
|
33
|
-
# reporter.stub!(:spec_finished)
|
|
34
|
-
# reporter.should_receive(:spec_started).with("given name")
|
|
35
|
-
# run_spec
|
|
36
|
-
# end
|
|
37
|
-
#
|
|
38
|
-
# specify "should finish spec with given name" do
|
|
39
|
-
# reporter.stub!(:spec_started)
|
|
40
|
-
# reporter.should_receive(:spec_finished).with("given name", :anything, :anything)
|
|
41
|
-
# run_spec
|
|
42
|
-
# end
|
|
43
|
-
# end
|
|
44
|
-
#
|
|
45
|
-
# context "Specification with given name and error" do
|
|
46
|
-
# include SpecNameSpecHelper
|
|
47
|
-
# setup do
|
|
48
|
-
# @spec = spec_class.new("given name") { raise }
|
|
49
|
-
# end
|
|
50
|
-
#
|
|
51
|
-
# specify "should start spec with given name" do
|
|
52
|
-
# reporter.stub!(:spec_finished)
|
|
53
|
-
# reporter.should_receive(:spec_started).with("given name")
|
|
54
|
-
# run_spec
|
|
55
|
-
# end
|
|
56
|
-
#
|
|
57
|
-
# specify "should finish spec with given name" do
|
|
58
|
-
# reporter.stub!(:spec_started)
|
|
59
|
-
# reporter.should_receive(:spec_finished).with("given name", :anything, :anything)
|
|
60
|
-
# run_spec
|
|
61
|
-
# end
|
|
62
|
-
# end
|
|
63
|
-
|
|
64
|
-
context "Specification with generated name" do
|
|
65
|
-
include SpecNameSpecHelper
|
|
66
|
-
setup do
|
|
67
|
-
@spec = spec_class.new(:__generate_description) { 5.should == 5 }
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# specify "should start spec with given name" do
|
|
71
|
-
# reporter.stub!(:spec_finished)
|
|
72
|
-
# reporter.should_receive(:spec_started).with("NAME NOT GENERATED")
|
|
73
|
-
# run_spec
|
|
74
|
-
# end
|
|
75
|
-
|
|
76
|
-
specify "should finish spec with given name" do
|
|
77
|
-
reporter.stub!(:spec_started)
|
|
78
|
-
reporter.should_receive(:spec_finished).with("should == 5", :anything, :anything)
|
|
79
|
-
run_spec
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
# context "Specification with generated name and error" do
|
|
84
|
-
# include SpecNameSpecHelper
|
|
85
|
-
# setup do
|
|
86
|
-
# @spec = spec_class.new(:__generate_description) { raise }
|
|
87
|
-
# end
|
|
88
|
-
#
|
|
89
|
-
# specify "should start spec with given name" do
|
|
90
|
-
# reporter.stub!(:spec_finished)
|
|
91
|
-
# reporter.should_receive(:spec_started).with("NAME NOT GENERATED")
|
|
92
|
-
# run_spec
|
|
93
|
-
# end
|
|
94
|
-
#
|
|
95
|
-
# specify "should finish spec with given name" do
|
|
96
|
-
# reporter.stub!(:spec_started)
|
|
97
|
-
# reporter.should_receive(:spec_finished).with("NAME NOT GENERATED", :anything, :anything)
|
|
98
|
-
# run_spec
|
|
99
|
-
# end
|
|
100
|
-
# end
|
|
101
|
-
end
|
|
102
|
-
end
|