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.
Files changed (245) hide show
  1. data/CHANGES +125 -9
  2. data/EXAMPLES.rd +50 -27
  3. data/README +14 -1
  4. data/Rakefile +95 -42
  5. data/UPGRADE +31 -0
  6. data/bin/spec +0 -1
  7. data/bin/spec_translator +6 -0
  8. data/examples/auto_spec_description_example.rb +19 -0
  9. data/examples/{setup_teardown_example.rb → before_and_after_example.rb} +6 -6
  10. data/examples/behave_as_example.rb +45 -0
  11. data/examples/custom_expectation_matchers.rb +13 -12
  12. data/examples/dynamic_spec.rb +2 -2
  13. data/examples/file_accessor_spec.rb +2 -2
  14. data/examples/greeter_spec.rb +3 -3
  15. data/examples/helper_method_example.rb +2 -2
  16. data/examples/io_processor_spec.rb +4 -4
  17. data/examples/legacy_spec.rb +10 -0
  18. data/examples/mocking_example.rb +5 -5
  19. data/examples/multi_threaded_behaviour_runner.rb +25 -0
  20. data/examples/partial_mock_example.rb +4 -4
  21. data/examples/predicate_example.rb +4 -4
  22. data/examples/priority.txt +1 -0
  23. data/examples/shared_behaviours_example.rb +31 -0
  24. data/examples/stack_spec.rb +52 -69
  25. data/examples/stubbing_example.rb +10 -10
  26. data/examples/test_case_adapter_example.rb +26 -0
  27. data/examples/test_case_spec.rb +6 -6
  28. data/lib/spec.rb +9 -4
  29. data/lib/spec/dsl.rb +10 -0
  30. data/lib/spec/dsl/behaviour.rb +189 -0
  31. data/lib/spec/dsl/behaviour_callbacks.rb +43 -0
  32. data/lib/spec/dsl/behaviour_eval.rb +170 -0
  33. data/lib/spec/dsl/behaviour_factory.rb +32 -0
  34. data/lib/spec/dsl/composite_proc_builder.rb +28 -0
  35. data/lib/spec/dsl/configuration.rb +38 -0
  36. data/lib/spec/dsl/description.rb +34 -0
  37. data/lib/spec/dsl/example.rb +114 -0
  38. data/lib/spec/dsl/example_matcher.rb +28 -0
  39. data/lib/spec/{runner/spec_should_raise_handler.rb → dsl/example_should_raise_handler.rb} +4 -4
  40. data/lib/spec/expectations.rb +0 -3
  41. data/lib/spec/expectations/differs/default.rb +0 -1
  42. data/lib/spec/expectations/extensions.rb +0 -1
  43. data/lib/spec/expectations/extensions/object.rb +10 -53
  44. data/lib/spec/expectations/handler.rb +14 -18
  45. data/lib/spec/extensions.rb +1 -0
  46. data/lib/spec/extensions/object.rb +6 -0
  47. data/lib/spec/matchers.rb +19 -21
  48. data/lib/spec/matchers/be.rb +40 -11
  49. data/lib/spec/matchers/be_close.rb +2 -2
  50. data/lib/spec/matchers/operator_matcher.rb +52 -0
  51. data/lib/spec/matchers/respond_to.rb +21 -11
  52. data/lib/spec/mocks.rb +5 -28
  53. data/lib/spec/mocks/argument_constraint_matchers.rb +12 -0
  54. data/lib/spec/mocks/argument_expectation.rb +7 -4
  55. data/lib/spec/mocks/methods.rb +11 -16
  56. data/lib/spec/mocks/mock.rb +6 -3
  57. data/lib/spec/mocks/{mock_handler.rb → proxy.rb} +4 -7
  58. data/lib/spec/mocks/space.rb +28 -0
  59. data/lib/spec/mocks/spec_methods.rb +30 -0
  60. data/lib/spec/rake/spectask.rb +23 -21
  61. data/lib/spec/rake/verify_rcov.rb +1 -0
  62. data/lib/spec/runner.rb +88 -35
  63. data/lib/spec/runner/backtrace_tweaker.rb +2 -1
  64. data/lib/spec/runner/behaviour_runner.rb +102 -0
  65. data/lib/spec/runner/command_line.rb +5 -17
  66. data/lib/spec/runner/drb_command_line.rb +2 -2
  67. data/lib/spec/runner/extensions/kernel.rb +22 -9
  68. data/lib/spec/runner/formatter.rb +4 -0
  69. data/lib/spec/runner/formatter/base_formatter.rb +63 -0
  70. data/lib/spec/runner/formatter/base_text_formatter.rb +22 -52
  71. data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +25 -0
  72. data/lib/spec/runner/formatter/failing_examples_formatter.rb +22 -0
  73. data/lib/spec/runner/formatter/html_formatter.rb +74 -29
  74. data/lib/spec/runner/formatter/progress_bar_formatter.rb +6 -8
  75. data/lib/spec/runner/formatter/rdoc_formatter.rb +6 -6
  76. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  77. data/lib/spec/runner/formatter/specdoc_formatter.rb +6 -6
  78. data/lib/spec/runner/heckle_runner.rb +8 -7
  79. data/lib/spec/runner/option_parser.rb +136 -55
  80. data/lib/spec/runner/options.rb +26 -0
  81. data/lib/spec/runner/reporter.rb +38 -31
  82. data/lib/spec/runner/spec_parser.rb +22 -13
  83. data/lib/spec/test_case_adapter.rb +10 -0
  84. data/lib/spec/translator.rb +103 -86
  85. data/lib/spec/version.rb +7 -15
  86. data/plugins/mock_frameworks/flexmock.rb +27 -0
  87. data/plugins/mock_frameworks/mocha.rb +21 -0
  88. data/plugins/mock_frameworks/rspec.rb +18 -0
  89. data/spec/spec/dsl/behaviour_eval_spec.rb +49 -0
  90. data/spec/spec/dsl/behaviour_factory_spec.rb +30 -0
  91. data/spec/spec/dsl/behaviour_spec.rb +508 -0
  92. data/spec/spec/dsl/composite_proc_builder_spec.rb +57 -0
  93. data/spec/spec/dsl/configuration_spec.rb +43 -0
  94. data/spec/spec/dsl/description_spec.rb +51 -0
  95. data/spec/spec/dsl/example_class_spec.rb +24 -0
  96. data/spec/spec/dsl/example_instance_spec.rb +140 -0
  97. data/spec/spec/dsl/example_should_raise_spec.rb +137 -0
  98. data/spec/spec/dsl/predicate_matcher_spec.rb +21 -0
  99. data/spec/spec/dsl/shared_behaviour_spec.rb +186 -0
  100. data/spec/spec/expectations/differs/default_spec.rb +12 -12
  101. data/spec/spec/expectations/extensions/object_spec.rb +10 -10
  102. data/spec/spec/expectations/fail_with_spec.rb +20 -20
  103. data/spec/spec/matchers/be_close_spec.rb +37 -31
  104. data/spec/spec/matchers/be_spec.rb +50 -41
  105. data/spec/spec/matchers/change_spec.rb +54 -54
  106. data/spec/spec/matchers/description_generation_spec.rb +43 -31
  107. data/spec/spec/matchers/eql_spec.rb +24 -37
  108. data/spec/spec/matchers/equal_spec.rb +24 -37
  109. data/spec/spec/matchers/exist_spec.rb +48 -0
  110. data/spec/spec/matchers/handler_spec.rb +36 -23
  111. data/spec/spec/matchers/has_spec.rb +8 -8
  112. data/spec/spec/matchers/have_spec.rb +38 -38
  113. data/spec/spec/matchers/include_spec.rb +6 -6
  114. data/spec/spec/matchers/match_spec.rb +8 -8
  115. data/spec/spec/matchers/matcher_methods_spec.rb +24 -31
  116. data/spec/spec/matchers/raise_error_spec.rb +34 -34
  117. data/spec/spec/matchers/respond_to_spec.rb +32 -8
  118. data/spec/spec/matchers/satisfy_spec.rb +6 -6
  119. data/spec/spec/matchers/should_===_spec.rb +38 -0
  120. data/spec/spec/matchers/should_==_spec.rb +37 -0
  121. data/spec/spec/matchers/should_=~_spec.rb +36 -0
  122. data/spec/spec/matchers/throw_symbol_spec.rb +47 -55
  123. data/spec/spec/mocks/any_number_of_times_spec.rb +16 -21
  124. data/spec/spec/mocks/argument_expectation_spec.rb +3 -3
  125. data/spec/spec/mocks/at_least_spec.rb +30 -30
  126. data/spec/spec/mocks/at_most_spec.rb +53 -57
  127. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  128. data/spec/spec/mocks/bug_report_7611_spec.rb +3 -3
  129. data/spec/spec/mocks/bug_report_7805_spec.rb +3 -3
  130. data/spec/spec/mocks/bug_report_8165_spec.rb +5 -5
  131. data/spec/spec/mocks/bug_report_8302_spec.rb +5 -5
  132. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +26 -27
  133. data/spec/spec/mocks/mock_ordering_spec.rb +19 -15
  134. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  135. data/spec/spec/mocks/mock_spec.rb +111 -141
  136. data/spec/spec/mocks/multiple_return_value_spec.rb +48 -48
  137. data/spec/spec/mocks/null_object_mock_spec.rb +10 -10
  138. data/spec/spec/mocks/once_counts_spec.rb +32 -35
  139. data/spec/spec/mocks/options_hash_spec.rb +12 -10
  140. data/spec/spec/mocks/partial_mock_spec.rb +15 -15
  141. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +24 -22
  142. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +19 -19
  143. data/spec/spec/mocks/precise_counts_spec.rb +28 -32
  144. data/spec/spec/mocks/record_messages_spec.rb +10 -10
  145. data/spec/spec/mocks/stub_spec.rb +45 -45
  146. data/spec/spec/mocks/twice_counts_spec.rb +21 -21
  147. data/spec/spec/package/bin_spec_spec.rb +12 -0
  148. data/spec/spec/runner/behaviour_runner_spec.rb +114 -0
  149. data/spec/spec/runner/command_line_spec.rb +8 -8
  150. data/spec/spec/runner/context_matching_spec.rb +14 -15
  151. data/spec/spec/runner/drb_command_line_spec.rb +12 -12
  152. data/spec/spec/runner/execution_context_spec.rb +8 -29
  153. data/spec/spec/runner/extensions/kernel_spec.rb +36 -0
  154. data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +27 -0
  155. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +28 -0
  156. data/spec/spec/runner/formatter/html_formatter_spec.rb +9 -8
  157. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +6 -6
  158. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +10 -10
  159. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +22 -27
  160. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +6 -5
  161. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +17 -17
  162. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +11 -0
  163. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +6 -6
  164. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +17 -17
  165. data/spec/spec/runner/heckle_runner_spec.rb +21 -21
  166. data/spec/spec/runner/heckler_spec.rb +5 -5
  167. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +12 -12
  168. data/spec/spec/runner/object_ext_spec.rb +3 -3
  169. data/spec/spec/runner/option_parser_spec.rb +171 -102
  170. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +21 -12
  171. data/spec/spec/runner/reporter_spec.rb +106 -97
  172. data/spec/spec/runner/spec_matcher_spec.rb +46 -51
  173. data/spec/spec/runner/spec_parser_spec.rb +72 -16
  174. data/spec/spec/spec_classes.rb +12 -3
  175. data/spec/spec/translator_spec.rb +165 -36
  176. metadata +66 -76
  177. data/RELEASE-PLAN +0 -117
  178. data/examples/auto_spec_name_generation_example.rb +0 -18
  179. data/lib/spec/callback.rb +0 -11
  180. data/lib/spec/callback/callback_container.rb +0 -60
  181. data/lib/spec/callback/extensions/module.rb +0 -24
  182. data/lib/spec/callback/extensions/object.rb +0 -37
  183. data/lib/spec/deprecated.rb +0 -3
  184. data/lib/spec/expectations/extensions/proc.rb +0 -57
  185. data/lib/spec/expectations/should.rb +0 -5
  186. data/lib/spec/expectations/should/base.rb +0 -64
  187. data/lib/spec/expectations/should/change.rb +0 -69
  188. data/lib/spec/expectations/should/have.rb +0 -128
  189. data/lib/spec/expectations/should/not.rb +0 -74
  190. data/lib/spec/expectations/should/should.rb +0 -81
  191. data/lib/spec/expectations/sugar.rb +0 -47
  192. data/lib/spec/runner/context.rb +0 -154
  193. data/lib/spec/runner/context_eval.rb +0 -142
  194. data/lib/spec/runner/context_runner.rb +0 -55
  195. data/lib/spec/runner/execution_context.rb +0 -17
  196. data/lib/spec/runner/spec_matcher.rb +0 -25
  197. data/lib/spec/runner/specification.rb +0 -114
  198. data/spec/spec/callback/callback_container_spec.rb +0 -27
  199. data/spec/spec/callback/module_spec.rb +0 -37
  200. data/spec/spec/callback/object_spec.rb +0 -90
  201. data/spec/spec/callback/object_with_class_callback_spec.rb +0 -19
  202. data/spec/spec/expectations/should/should_==_spec.rb +0 -19
  203. data/spec/spec/expectations/should/should_=~_spec.rb +0 -13
  204. data/spec/spec/expectations/should/should_be_a_kind_of_spec.rb +0 -21
  205. data/spec/spec/expectations/should/should_be_an_instance_of_spec.rb +0 -30
  206. data/spec/spec/expectations/should/should_be_arbitrary_predicate_spec.rb +0 -81
  207. data/spec/spec/expectations/should/should_be_close_spec.rb +0 -18
  208. data/spec/spec/expectations/should/should_be_comparison_operator_spec.rb +0 -44
  209. data/spec/spec/expectations/should/should_be_false_spec.rb +0 -39
  210. data/spec/spec/expectations/should/should_be_spec.rb +0 -11
  211. data/spec/spec/expectations/should/should_be_true_spec.rb +0 -27
  212. data/spec/spec/expectations/should/should_change_spec.rb +0 -184
  213. data/spec/spec/expectations/should/should_eql_spec.rb +0 -11
  214. data/spec/spec/expectations/should/should_equal_spec.rb +0 -11
  215. data/spec/spec/expectations/should/should_have_at_least_spec.rb +0 -53
  216. data/spec/spec/expectations/should/should_have_at_most_spec.rb +0 -45
  217. data/spec/spec/expectations/should/should_have_key_spec.rb +0 -21
  218. data/spec/spec/expectations/should/should_have_spec.rb +0 -64
  219. data/spec/spec/expectations/should/should_include_spec.rb +0 -59
  220. data/spec/spec/expectations/should/should_match_spec.rb +0 -25
  221. data/spec/spec/expectations/should/should_not_==_spec.rb +0 -15
  222. data/spec/spec/expectations/should/should_not_be_a_kind_of_spec.rb +0 -21
  223. data/spec/spec/expectations/should/should_not_be_an_instance_of_spec.rb +0 -11
  224. data/spec/spec/expectations/should/should_not_be_arbitrary_predicate_spec.rb +0 -68
  225. data/spec/spec/expectations/should/should_not_be_spec.rb +0 -11
  226. data/spec/spec/expectations/should/should_not_change_spec.rb +0 -24
  227. data/spec/spec/expectations/should/should_not_eql_spec.rb +0 -11
  228. data/spec/spec/expectations/should/should_not_equal_spec.rb +0 -11
  229. data/spec/spec/expectations/should/should_not_have_key_spec.rb +0 -15
  230. data/spec/spec/expectations/should/should_not_include_spec.rb +0 -58
  231. data/spec/spec/expectations/should/should_not_match_spec.rb +0 -11
  232. data/spec/spec/expectations/should/should_not_raise_spec.rb +0 -75
  233. data/spec/spec/expectations/should/should_not_respond_to_spec.rb +0 -15
  234. data/spec/spec/expectations/should/should_not_throw_spec.rb +0 -35
  235. data/spec/spec/expectations/should/should_raise_spec.rb +0 -66
  236. data/spec/spec/expectations/should/should_respond_to_spec.rb +0 -15
  237. data/spec/spec/expectations/should/should_satisfy_spec.rb +0 -35
  238. data/spec/spec/expectations/should/should_throw_spec.rb +0 -27
  239. data/spec/spec/runner/context_runner_spec.rb +0 -100
  240. data/spec/spec/runner/context_spec.rb +0 -405
  241. data/spec/spec/runner/kernel_ext_spec.rb +0 -16
  242. data/spec/spec/runner/spec_name_generation_spec.rb +0 -102
  243. data/spec/spec/runner/specification_class_spec.rb +0 -72
  244. data/spec/spec/runner/specification_instance_spec.rb +0 -160
  245. data/spec/spec/runner/specification_should_raise_spec.rb +0 -136
@@ -1,72 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
-
3
- module Spec
4
- module Runner
5
- context "A Specification class" do
6
- setup do
7
- @reporter = mock("reporter")
8
- callback_container = Callback::CallbackContainer.new
9
- @specification = Specification.dup
10
- @specification.stub!(:callbacks).and_return {callback_container}
11
- end
12
-
13
- specify "should have a before_setup callback for all specs" do
14
- @reporter.stub!(:spec_started)
15
- @reporter.stub!(:spec_finished)
16
-
17
- before_setup_called = false
18
- @specification.before_setup {before_setup_called = true}
19
-
20
- spec = @specification.new("spec") {}
21
- spec.run(@reporter, nil, nil, nil, ::Spec::Runner::ExecutionContext.new(nil))
22
-
23
- before_setup_called.should == true
24
- end
25
-
26
- specify "should have before_setup callback add errors to spec run" do
27
- error=Exception.new
28
- @specification.before_setup do
29
- raise(error)
30
- end
31
- spec=@specification.new("spec") {}
32
- @reporter.should_receive(:spec_started).with("spec")
33
- @reporter.should_receive(:spec_finished).with("spec", error, "setup")
34
- spec.run(@reporter, nil, nil, nil, ::Spec::Runner::ExecutionContext.new(nil))
35
- end
36
-
37
- specify "should report exceptions in spec" do
38
- error = Exception.new
39
- spec=@specification.new("spec") do
40
- raise(error)
41
- end
42
- @reporter.should_receive(:spec_started).with("spec")
43
- @reporter.should_receive(:spec_finished).with("spec", error, "spec")
44
- spec.run(@reporter, nil, nil, nil, ::Spec::Runner::ExecutionContext.new(nil))
45
- end
46
-
47
- specify "should have an after_teardown callback for all specs" do
48
- @reporter.stub!(:spec_started)
49
- @reporter.stub!(:spec_finished)
50
-
51
- after_teardown_called = false
52
- @specification.after_teardown {after_teardown_called = true}
53
-
54
- spec = @specification.new("spec") {}
55
- spec.run(@reporter, nil, nil, nil, ::Spec::Runner::ExecutionContext.new(nil))
56
-
57
- after_teardown_called.should == true
58
- end
59
-
60
- specify "should have after_teardown callback add errors to spec run" do
61
- error=Exception.new
62
- @specification.after_teardown do
63
- raise(error)
64
- end
65
- spec=@specification.new("spec") {}
66
- @reporter.should_receive(:spec_started).with("spec")
67
- @reporter.should_receive(:spec_finished).with("spec", error, "teardown")
68
- spec.run(@reporter, nil, nil, nil, ::Spec::Runner::ExecutionContext.new(nil))
69
- end
70
- end
71
- end
72
- end
@@ -1,160 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
-
3
- module Spec
4
- module Runner
5
- context "A Specification instance" do
6
- setup do
7
- @reporter = mock("reporter")
8
- Specification.send(:current=, nil)
9
- end
10
-
11
- specify "should add itself to reporter when calling run dry" do
12
- spec=Specification.new("spec") {}
13
- @reporter.should_receive(:spec_started).with("spec")
14
- @reporter.should_receive(:spec_finished).with("spec")
15
- spec.run(@reporter, nil, nil, true, nil)
16
- end
17
-
18
- specify "should add itself to reporter when fails" do
19
- error=RuntimeError.new
20
- spec=Specification.new("spec") do
21
- raise(error)
22
- end
23
- @reporter.should_receive(:spec_started).with("spec")
24
- @reporter.should_receive(:spec_finished).with("spec", error, "spec")
25
- spec.run(@reporter, nil, nil, nil, nil)
26
- end
27
-
28
- specify "should add itself to reporter when passes" do
29
- spec=Specification.new("spec") {}
30
- @reporter.should_receive(:spec_started).with("spec")
31
- @reporter.should_receive(:spec_finished).with("spec", nil, nil)
32
- spec.run(@reporter, nil, nil, nil, nil)
33
- end
34
-
35
- specify "should not run spec if setup fails" do
36
- spec_ran = false
37
- spec=Specification.new("should pass") do
38
- spec_ran = true
39
- end
40
- @reporter.stub!(:spec_started)
41
- @reporter.stub!(:spec_finished)
42
- setup = proc {raise "Setup error"}
43
- spec.run(@reporter, setup, nil, nil, ::Spec::Runner::ExecutionContext.new(nil))
44
- spec_ran.should == false
45
- @reporter.__verify
46
- end
47
-
48
- specify "should run spec in scope of execution context" do
49
- spec=Specification.new("should pass") do
50
- self.instance_of?(Specification).should == false
51
- self.instance_of?(ExecutionContext).should == true
52
- end
53
- @reporter.should_receive(:spec_started).with("should pass")
54
- @reporter.should_receive(:spec_finished).with("should pass", nil, nil)
55
- spec.run(@reporter, nil, nil, nil, ::Spec::Runner::ExecutionContext.new(nil))
56
- @reporter.__verify
57
- end
58
-
59
- specify "should run teardown even when main block fails" do
60
- spec=Specification.new("spec") do
61
- raise("in body")
62
- end
63
- teardown=lambda do
64
- raise("in teardown")
65
- end
66
- @reporter.should_receive(:spec_started).with("spec")
67
- @reporter.should_receive(:spec_finished) do |spec, error, location|
68
- spec.should_eql("spec")
69
- location.should_eql("spec")
70
- error.message.should_eql("in body")
71
- end
72
- spec.run(@reporter, nil, teardown, nil, nil)
73
- end
74
-
75
- specify "should supply setup as spec name if failure in setup" do
76
- spec=Specification.new("spec") {}
77
- setup=lambda { raise("in setup") }
78
- @reporter.should_receive(:spec_started).with("spec")
79
- @reporter.should_receive(:spec_finished) do |name, error, location|
80
- name.should_eql("spec")
81
- error.message.should_eql("in setup")
82
- location.should_eql("setup")
83
- end
84
- spec.run(@reporter, setup, nil, nil, nil)
85
- end
86
-
87
- specify "should supply teardown as failure location if failure in teardown" do
88
- spec = Specification.new("spec") {}
89
- teardown = lambda { raise("in teardown") }
90
- @reporter.should_receive(:spec_started).with("spec")
91
- @reporter.should_receive(:spec_finished) do |name, error, location|
92
- name.should_eql("spec")
93
- error.message.should_eql("in teardown")
94
- location.should_eql("teardown")
95
- end
96
- spec.run(@reporter, nil, teardown, nil, nil)
97
- end
98
-
99
- specify "should verify mocks after teardown" do
100
- spec=Specification.new("spec") do
101
- mock=Spec::Mocks::Mock.new("a mock")
102
- mock.should_receive(:poke)
103
- end
104
- @reporter.should_receive(:spec_started).with("spec")
105
- @reporter.should_receive(:spec_finished) do |spec_name, error|
106
- spec_name.should_eql("spec")
107
- error.message.should_match(/expected :poke with \(any args\) once, but received it 0 times/)
108
- end
109
- spec.run(@reporter, nil, nil, nil, ::Spec::Runner::ExecutionContext.new(nil))
110
- end
111
-
112
- specify "should accept an options hash following the spec name" do
113
- spec = Specification.new("name", :key => 'value')
114
- end
115
-
116
- specify "should update the current spec only when running the spec" do
117
- @reporter.stub!(:spec_started)
118
- @reporter.stub!(:spec_finished)
119
-
120
- spec = Specification.new("spec") do
121
- Specification.current.should == spec
122
- end
123
-
124
- Specification.current.should_be_nil
125
- setup = proc {Specification.current.should == spec}
126
- teardown = proc {Specification.current.should == spec}
127
- spec.run(@reporter, setup, teardown, nil, ::Spec::Runner::ExecutionContext.new(nil))
128
- Specification.current.should_be_nil
129
- end
130
-
131
- specify "should notify before_setup callbacks before setup" do
132
- spec = Specification.new("spec")
133
- @reporter.stub!(:spec_started)
134
- @reporter.stub!(:spec_finished)
135
-
136
- mock = mock("setup mock")
137
- mock.should_receive(:before_setup).ordered
138
- mock.should_receive(:setup).ordered
139
-
140
- spec.before_setup {mock.before_setup}
141
- setup = proc {mock.setup}
142
- spec.run(@reporter, setup, nil, nil, ::Spec::Runner::ExecutionContext.new(nil))
143
- end
144
-
145
- specify "should notify after_teardown callbacks after teardown" do
146
- spec = Specification.new("spec")
147
- @reporter.stub!(:spec_started)
148
- @reporter.stub!(:spec_finished)
149
-
150
- mock = mock("teardown mock")
151
- mock.should_receive(:teardown).ordered
152
- mock.should_receive(:after_teardown).ordered
153
-
154
- spec.after_teardown {mock.after_teardown}
155
- teardown = proc {mock.teardown}
156
- spec.run(@reporter, nil, teardown, nil, ::Spec::Runner::ExecutionContext.new(nil))
157
- end
158
- end
159
- end
160
- end
@@ -1,136 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper.rb'
2
-
3
- context "a Specification declared with {:should_raise => " do
4
- setup do
5
- @reporter = mock("reporter")
6
- @reporter.stub!(:spec_started)
7
- end
8
-
9
- def verify_error(error, message=nil)
10
- error.should_be_an_instance_of Spec::Expectations::ExpectationNotMetError
11
- unless message.nil?
12
- if message.is_a?(Regexp)
13
- error.message.should =~ message
14
- else
15
- error.message.should == message
16
- end
17
- end
18
- end
19
-
20
- specify "true} should pass when there is an ExpectationNotMetError" do
21
- spec = Spec::Runner::Specification.new("spec", :should_raise => true) do
22
- raise Spec::Expectations::ExpectationNotMetError
23
- end
24
- @reporter.should_receive(:spec_finished) do |spec_name, error|
25
- error.should be(nil)
26
- end
27
- spec.run(@reporter, nil, nil, nil, nil)
28
- end
29
-
30
- specify "true} should fail if nothing is raised" do
31
- spec = Spec::Runner::Specification.new("spec", :should_raise => true) {}
32
- @reporter.should_receive(:spec_finished) do |spec_name, error|
33
- verify_error(error, /specify block expected Exception but nothing was raised/)
34
- end
35
- spec.run(@reporter, nil, nil, nil, nil)
36
- end
37
-
38
- specify "NameError} should pass when there is a NameError" do
39
- spec = Spec::Runner::Specification.new("spec", :should_raise => NameError) do
40
- raise NameError
41
- end
42
- @reporter.should_receive(:spec_finished) do |spec_name, error|
43
- error.should be(nil)
44
- end
45
- spec.run(@reporter, nil, nil, nil, nil)
46
- end
47
-
48
- specify "NameError} should fail when there is no error" do
49
- spec = Spec::Runner::Specification.new("spec", :should_raise => NameError) do
50
- #do nothing
51
- end
52
- @reporter.should_receive(:spec_finished) do |spec_name, error|
53
- verify_error(error,/specify block expected NameError but nothing was raised/)
54
- end
55
- spec.run(@reporter, nil, nil, nil, nil)
56
- end
57
-
58
- specify "NameError} should fail when there is the wrong error" do
59
- spec = Spec::Runner::Specification.new("spec", :should_raise => NameError) do
60
- raise RuntimeError
61
- end
62
- @reporter.should_receive(:spec_finished) do |spec_name, error|
63
- verify_error(error, /specify block expected NameError but raised.+RuntimeError/)
64
- end
65
- spec.run(@reporter, nil, nil, nil, nil)
66
- end
67
-
68
- specify "[NameError]} should pass when there is a NameError" do
69
- spec = Spec::Runner::Specification.new("spec", :should_raise => [NameError]) do
70
- raise NameError
71
- end
72
- @reporter.should_receive(:spec_finished) do |spec_name, error|
73
- error.should be(nil)
74
- end
75
- spec.run(@reporter, nil, nil, nil, nil)
76
- end
77
-
78
- specify "[NameError]} should fail when there is no error" do
79
- spec = Spec::Runner::Specification.new("spec", :should_raise => [NameError]) do
80
- end
81
- @reporter.should_receive(:spec_finished) do |spec_name, error|
82
- verify_error(error, /specify block expected NameError but nothing was raised/)
83
- end
84
- spec.run(@reporter, nil, nil, nil, nil)
85
- end
86
-
87
- specify "[NameError]} should fail when there is the wrong error" do
88
- spec = Spec::Runner::Specification.new("spec", :should_raise => [NameError]) do
89
- raise RuntimeError
90
- end
91
- @reporter.should_receive(:spec_finished) do |spec_name, error|
92
- verify_error(error, /specify block expected NameError but raised.+RuntimeError/)
93
- end
94
- spec.run(@reporter, nil, nil, nil, nil)
95
- end
96
-
97
- specify "[NameError, 'message'} should pass when there is a NameError with the right message" do
98
- spec = Spec::Runner::Specification.new("spec", :should_raise => [NameError, 'expected']) do
99
- raise NameError, 'expected'
100
- end
101
- @reporter.should_receive(:spec_finished) do |spec_name, error|
102
- error.should be(nil)
103
- end
104
- spec.run(@reporter, nil, nil, nil, nil)
105
- end
106
-
107
- specify "[NameError, 'message'} should pass when there is a NameError with a message matching a regex" do
108
- spec = Spec::Runner::Specification.new("spec", :should_raise => [NameError, /xpec/]) do
109
- raise NameError, 'expected'
110
- end
111
- @reporter.should_receive(:spec_finished) do |spec_name, error|
112
- error.should be(nil)
113
- end
114
- spec.run(@reporter, nil, nil, nil, nil)
115
- end
116
-
117
- specify "[NameError, 'message'} should fail when there is a NameError with the wrong message" do
118
- spec = Spec::Runner::Specification.new("spec", :should_raise => [NameError, 'expected']) do
119
- raise NameError, 'wrong message'
120
- end
121
- @reporter.should_receive(:spec_finished) do |spec_name, error|
122
- verify_error(error, /specify block expected #<NameError: expected> but raised #<NameError: wrong message>/)
123
- end
124
- spec.run(@reporter, nil, nil, nil, nil)
125
- end
126
-
127
- specify "[NameError, 'message'} should fail when there is a NameError with a message not matching regexp" do
128
- spec = Spec::Runner::Specification.new("spec", :should_raise => [NameError, /exp/]) do
129
- raise NameError, 'wrong message'
130
- end
131
- @reporter.should_receive(:spec_finished) do |spec_name, error|
132
- verify_error(error, /specify block expected #<NameError: \(\?-mix:exp\)> but raised #<NameError: wrong message>/)
133
- end
134
- spec.run(@reporter, nil, nil, nil, nil)
135
- end
136
- end