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,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