rspec 1.0.0 → 1.3.1

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 (456) hide show
  1. data/.document +7 -0
  2. data/History.rdoc +1546 -0
  3. data/{MIT-LICENSE → License.txt} +3 -1
  4. data/Manifest.txt +384 -0
  5. data/README.rdoc +41 -0
  6. data/Rakefile +94 -229
  7. data/Ruby1.9.rdoc +31 -0
  8. data/TODO.txt +17 -0
  9. data/Upgrade.rdoc +260 -0
  10. data/bin/autospec +4 -0
  11. data/bin/spec +5 -3
  12. data/cucumber.yml +5 -0
  13. data/examples/failing/README.txt +11 -0
  14. data/examples/failing/diffing_spec.rb +36 -0
  15. data/examples/failing/failing_implicit_docstrings_example.rb +17 -0
  16. data/examples/failing/failure_in_after.rb +10 -0
  17. data/examples/failing/failure_in_before.rb +10 -0
  18. data/examples/failing/mocking_example.rb +38 -0
  19. data/examples/failing/mocking_with_flexmock.rb +26 -0
  20. data/examples/failing/mocking_with_mocha.rb +25 -0
  21. data/examples/failing/mocking_with_rr.rb +27 -0
  22. data/examples/failing/partial_mock_example.rb +18 -0
  23. data/examples/failing/pending_example.rb +7 -0
  24. data/examples/failing/predicate_example.rb +32 -0
  25. data/examples/failing/raising_example.rb +47 -0
  26. data/examples/failing/syntax_error_example.rb +7 -0
  27. data/examples/failing/team_spec.rb +41 -0
  28. data/examples/failing/timeout_behaviour.rb +5 -0
  29. data/examples/{custom_formatter.rb → passing/custom_formatter.rb} +1 -1
  30. data/examples/passing/dynamic_spec.rb +7 -0
  31. data/examples/{file_accessor.rb → passing/file_accessor.rb} +18 -18
  32. data/examples/{file_accessor_spec.rb → passing/file_accessor_spec.rb} +37 -38
  33. data/examples/passing/filtered_formatter.rb +17 -0
  34. data/examples/passing/filtered_formatter_example.rb +31 -0
  35. data/examples/{greeter_spec.rb → passing/greeter_spec.rb} +1 -1
  36. data/examples/passing/helper_method_example.rb +12 -0
  37. data/examples/passing/implicit_docstrings_example.rb +16 -0
  38. data/examples/{io_processor.rb → passing/io_processor.rb} +8 -8
  39. data/examples/{io_processor_spec.rb → passing/io_processor_spec.rb} +2 -3
  40. data/examples/{mocking_example.rb → passing/mocking_example.rb} +0 -2
  41. data/examples/{multi_threaded_behaviour_runner.rb → passing/multi_threaded_example_group_runner.rb} +10 -9
  42. data/examples/passing/nested_classes_example.rb +35 -0
  43. data/examples/passing/options_example.rb +29 -0
  44. data/examples/passing/options_formatter.rb +20 -0
  45. data/examples/{partial_mock_example.rb → passing/partial_mock_example.rb} +2 -3
  46. data/examples/passing/pending_example.rb +18 -0
  47. data/examples/{predicate_example.rb → passing/predicate_example.rb} +1 -3
  48. data/examples/{shared_behaviours_example.rb → passing/shared_example_group_example.rb} +15 -11
  49. data/examples/passing/shared_stack_examples.rb +36 -0
  50. data/examples/passing/simple_matcher_example.rb +29 -0
  51. data/examples/{stack.rb → passing/stack.rb} +1 -1
  52. data/examples/{stack_spec.rb → passing/stack_spec.rb} +6 -40
  53. data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  54. data/examples/{stubbing_example.rb → passing/stubbing_example.rb} +1 -3
  55. data/examples/passing/yielding_example.rb +31 -0
  56. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  57. data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  58. data/features/command_line/line_number_option.feature +56 -0
  59. data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  60. data/features/example_groups/define_example_attribute.feature +41 -0
  61. data/features/example_groups/example_group_with_should_methods.feature +29 -0
  62. data/features/example_groups/implicit_docstrings.feature +59 -0
  63. data/features/example_groups/nested_groups.feature +32 -0
  64. data/features/expectations/customized_message.feature +54 -0
  65. data/features/expectations/expect_change.feature +65 -0
  66. data/features/expectations/expect_error.feature +44 -0
  67. data/features/extensions/custom_example_group.feature +19 -0
  68. data/features/formatters/custom_formatter.feature +30 -0
  69. data/features/formatters/nested_formatter.feature +32 -0
  70. data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
  71. data/features/interop/examples_and_tests_together.feature +84 -0
  72. data/features/interop/rspec_output.feature +25 -0
  73. data/features/interop/test_but_not_test_unit.feature +26 -0
  74. data/features/interop/test_case_with_should_methods.feature +46 -0
  75. data/features/load_paths/add_lib_to_load_path.feature +20 -0
  76. data/features/load_paths/add_spec_to_load_path.feature +20 -0
  77. data/features/matchers/define_diffable_matcher.feature +26 -0
  78. data/features/matchers/define_matcher.feature +179 -0
  79. data/features/matchers/define_matcher_outside_rspec.feature +38 -0
  80. data/features/matchers/define_matcher_with_fluent_interface.feature +48 -0
  81. data/features/matchers/define_wrapped_matcher.feature +56 -0
  82. data/features/matchers/match_unless_raises.feature +60 -0
  83. data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
  84. data/features/mock_framework_integration/use_flexmock.feature +27 -0
  85. data/features/mock_framework_integration/use_mocha.feature +27 -0
  86. data/features/mock_framework_integration/use_rr.feature +27 -0
  87. data/features/mocks/block_local_expectations.feature +62 -0
  88. data/features/mocks/mix_stubs_and_mocks.feature +22 -0
  89. data/features/mocks/stub_implementation.feature +26 -0
  90. data/features/pending/pending_examples.feature +81 -0
  91. data/features/runner/specify_line_number.feature +32 -0
  92. data/features/spec_helper/spec_helper.feature +25 -0
  93. data/features/step_definitions/running_rspec_steps.rb +52 -0
  94. data/features/step_definitions/stubbing_steps.rb +16 -0
  95. data/features/subject/explicit_subject.feature +31 -0
  96. data/features/subject/implicit_subject.feature +43 -0
  97. data/features/support/env.rb +83 -0
  98. data/features/support/matchers/smart_match.rb +31 -0
  99. data/geminstaller.yml +29 -0
  100. data/init.rb +9 -0
  101. data/lib/autotest/discover.rb +3 -0
  102. data/lib/autotest/rspec.rb +54 -0
  103. data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  104. data/{plugins → lib/spec/adapters}/mock_frameworks/mocha.rb +8 -4
  105. data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  106. data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  107. data/lib/spec/autorun.rb +3 -0
  108. data/lib/spec/deprecation.rb +41 -0
  109. data/lib/spec/dsl/main.rb +93 -0
  110. data/lib/spec/dsl.rb +1 -10
  111. data/lib/spec/example/args_and_options.rb +27 -0
  112. data/lib/spec/example/before_and_after_hooks.rb +93 -0
  113. data/lib/spec/example/errors.rb +25 -0
  114. data/lib/spec/example/example_group.rb +10 -0
  115. data/lib/spec/example/example_group_factory.rb +82 -0
  116. data/lib/spec/example/example_group_hierarchy.rb +53 -0
  117. data/lib/spec/example/example_group_methods.rb +287 -0
  118. data/lib/spec/example/example_group_proxy.rb +61 -0
  119. data/lib/spec/example/example_matcher.rb +43 -0
  120. data/lib/spec/example/example_methods.rb +152 -0
  121. data/lib/spec/example/example_proxy.rb +41 -0
  122. data/lib/spec/example/module_reopening_fix.rb +43 -0
  123. data/lib/spec/example/pending.rb +18 -0
  124. data/lib/spec/example/predicate_matchers.rb +46 -0
  125. data/lib/spec/example/shared_example_group.rb +59 -0
  126. data/lib/spec/example/subject.rb +114 -0
  127. data/lib/spec/example.rb +164 -0
  128. data/lib/spec/expectations/errors.rb +7 -1
  129. data/lib/spec/expectations/extensions/kernel.rb +52 -0
  130. data/lib/spec/expectations/extensions.rb +1 -2
  131. data/lib/spec/expectations/fail_with.rb +45 -0
  132. data/lib/spec/expectations/handler.rb +37 -30
  133. data/lib/spec/expectations.rb +2 -23
  134. data/lib/spec/extensions/instance_exec.rb +31 -0
  135. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  136. data/lib/spec/interop/test/unit/testcase.rb +56 -0
  137. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  138. data/lib/spec/interop/test/unit/testsuite_adapter.rb +36 -0
  139. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  140. data/lib/spec/interop/test.rb +44 -0
  141. data/lib/spec/matchers/be.rb +183 -140
  142. data/lib/spec/matchers/be_close.rb +18 -23
  143. data/lib/spec/matchers/be_instance_of.rb +26 -0
  144. data/lib/spec/matchers/be_kind_of.rb +26 -0
  145. data/lib/spec/matchers/change.rb +72 -41
  146. data/lib/spec/matchers/compatibility.rb +14 -0
  147. data/lib/spec/matchers/dsl.rb +20 -0
  148. data/lib/spec/matchers/eql.rb +25 -26
  149. data/lib/spec/matchers/equal.rb +35 -25
  150. data/lib/spec/matchers/errors.rb +5 -0
  151. data/lib/spec/matchers/exist.rb +16 -0
  152. data/lib/spec/matchers/generated_descriptions.rb +36 -0
  153. data/lib/spec/matchers/has.rb +17 -26
  154. data/lib/spec/matchers/have.rb +36 -24
  155. data/lib/spec/matchers/include.rb +22 -48
  156. data/lib/spec/matchers/match.rb +11 -31
  157. data/lib/spec/matchers/match_array.rb +71 -0
  158. data/lib/spec/matchers/matcher.rb +132 -0
  159. data/lib/spec/matchers/method_missing.rb +9 -0
  160. data/lib/spec/matchers/operator_matcher.rb +55 -44
  161. data/lib/spec/matchers/pretty.rb +37 -0
  162. data/lib/spec/matchers/raise_exception.rb +131 -0
  163. data/lib/spec/matchers/respond_to.rb +35 -9
  164. data/lib/spec/matchers/satisfy.rb +2 -2
  165. data/lib/spec/matchers/simple_matcher.rb +134 -0
  166. data/lib/spec/matchers/throw_symbol.rb +56 -31
  167. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  168. data/lib/spec/matchers.rb +104 -48
  169. data/lib/spec/mocks/argument_expectation.rb +28 -112
  170. data/lib/spec/mocks/argument_matchers.rb +237 -0
  171. data/lib/spec/mocks/error_generator.rb +20 -13
  172. data/lib/spec/mocks/errors.rb +1 -1
  173. data/lib/spec/mocks/example_methods.rb +69 -0
  174. data/lib/spec/mocks/extensions.rb +1 -0
  175. data/lib/spec/mocks/framework.rb +15 -0
  176. data/lib/spec/mocks/message_expectation.rb +206 -93
  177. data/lib/spec/mocks/methods.rb +66 -7
  178. data/lib/spec/mocks/mock.rb +53 -11
  179. data/lib/spec/mocks/proxy.rb +160 -55
  180. data/lib/spec/mocks/space.rb +2 -2
  181. data/lib/spec/mocks.rb +14 -23
  182. data/lib/spec/rake/spectask.rb +108 -53
  183. data/lib/spec/rake/verify_rcov.rb +4 -4
  184. data/lib/spec/ruby.rb +9 -0
  185. data/lib/spec/runner/backtrace_tweaker.rb +45 -23
  186. data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  187. data/lib/spec/runner/command_line.rb +7 -14
  188. data/lib/spec/runner/configuration.rb +202 -0
  189. data/lib/spec/runner/differs/default.rb +93 -0
  190. data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  191. data/lib/spec/runner/drb_command_line.rb +18 -7
  192. data/lib/spec/runner/example_group_runner.rb +58 -0
  193. data/lib/spec/runner/extensions/kernel.rb +5 -46
  194. data/lib/spec/runner/formatter/base_formatter.rb +97 -26
  195. data/lib/spec/runner/formatter/base_text_formatter.rb +79 -39
  196. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  197. data/lib/spec/runner/formatter/failing_examples_formatter.rb +6 -8
  198. data/lib/spec/runner/formatter/html_formatter.rb +101 -75
  199. data/lib/spec/runner/formatter/nested_text_formatter.rb +50 -0
  200. data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  201. data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  202. data/lib/spec/runner/formatter/progress_bar_formatter.rb +11 -8
  203. data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  204. data/lib/spec/runner/formatter/snippet_extractor.rb +2 -2
  205. data/lib/spec/runner/formatter/specdoc_formatter.rb +20 -15
  206. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  207. data/lib/spec/runner/heckle_runner.rb +56 -56
  208. data/lib/spec/runner/{heckle_runner_win.rb → heckle_runner_unsupported.rb} +10 -10
  209. data/lib/spec/runner/line_number_query.rb +78 -0
  210. data/lib/spec/runner/option_parser.rb +147 -148
  211. data/lib/spec/runner/options.rb +343 -95
  212. data/lib/spec/runner/reporter.rb +117 -60
  213. data/lib/spec/runner.rb +39 -138
  214. data/lib/spec/stubs/cucumber.rb +5 -0
  215. data/lib/spec/test/unit.rb +10 -0
  216. data/lib/spec/version.rb +14 -22
  217. data/lib/spec.rb +5 -10
  218. data/resources/helpers/cmdline.rb +8 -0
  219. data/resources/rake/examples.rake +7 -0
  220. data/resources/rake/examples_with_rcov.rake +9 -0
  221. data/resources/rake/failing_examples_with_html.rake +9 -0
  222. data/resources/rake/verify_rcov.rake +7 -0
  223. data/spec/README.jruby +15 -0
  224. data/spec/autotest/autotest_helper.rb +8 -0
  225. data/spec/autotest/autotest_matchers.rb +38 -0
  226. data/spec/autotest/discover_spec.rb +8 -0
  227. data/spec/autotest/failed_results_re_spec.rb +31 -0
  228. data/spec/autotest/rspec_spec.rb +126 -0
  229. data/spec/ruby_forker.rb +13 -0
  230. data/spec/spec/dsl/main_spec.rb +103 -0
  231. data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  232. data/spec/spec/example/example_group_factory_spec.rb +180 -0
  233. data/spec/spec/example/example_group_methods_spec.rb +778 -0
  234. data/spec/spec/example/example_group_proxy_spec.rb +107 -0
  235. data/spec/spec/example/example_group_spec.rb +632 -0
  236. data/spec/spec/example/example_matcher_spec.rb +85 -0
  237. data/spec/spec/example/example_methods_spec.rb +162 -0
  238. data/spec/spec/example/example_proxy_spec.rb +57 -0
  239. data/spec/spec/example/helper_method_spec.rb +24 -0
  240. data/spec/spec/{dsl/behaviour_eval_spec.rb → example/nested_example_group_spec.rb} +25 -3
  241. data/spec/spec/example/pending_module_spec.rb +58 -0
  242. data/spec/spec/example/predicate_matcher_spec.rb +41 -0
  243. data/spec/spec/example/shared_example_group_spec.rb +257 -0
  244. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  245. data/spec/spec/example/subject_spec.rb +110 -0
  246. data/spec/spec/expectations/differs/default_spec.rb +100 -13
  247. data/spec/spec/expectations/extensions/{object_spec.rb → kernel_spec.rb} +13 -14
  248. data/spec/spec/expectations/fail_with_spec.rb +42 -17
  249. data/spec/spec/expectations/handler_spec.rb +206 -0
  250. data/spec/spec/expectations/wrap_expectation_spec.rb +31 -0
  251. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  252. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  253. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  254. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  255. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  256. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  257. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  258. data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  259. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  260. data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  261. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  262. data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  263. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  264. data/spec/spec/matchers/be_close_spec.rb +32 -21
  265. data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  266. data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  267. data/spec/spec/matchers/be_spec.rb +261 -10
  268. data/spec/spec/matchers/change_spec.rb +178 -61
  269. data/spec/spec/matchers/compatibility_spec.rb +28 -0
  270. data/spec/spec/matchers/description_generation_spec.rb +47 -46
  271. data/spec/spec/matchers/dsl_spec.rb +34 -0
  272. data/spec/spec/matchers/eql_spec.rb +14 -9
  273. data/spec/spec/matchers/equal_spec.rb +43 -14
  274. data/spec/spec/matchers/exist_spec.rb +41 -24
  275. data/spec/spec/matchers/has_spec.rb +154 -1
  276. data/spec/spec/matchers/have_spec.rb +311 -189
  277. data/spec/spec/matchers/include_spec.rb +45 -2
  278. data/spec/spec/matchers/match_array_spec.rb +115 -0
  279. data/spec/spec/matchers/match_spec.rb +25 -5
  280. data/spec/spec/matchers/matcher_spec.rb +289 -0
  281. data/spec/spec/matchers/matchers_spec.rb +2 -0
  282. data/spec/spec/matchers/operator_matcher_spec.rb +48 -15
  283. data/spec/spec/matchers/raise_exception_spec.rb +345 -0
  284. data/spec/spec/matchers/respond_to_spec.rb +78 -16
  285. data/spec/spec/matchers/satisfy_spec.rb +1 -1
  286. data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
  287. data/spec/spec/matchers/throw_symbol_spec.rb +111 -41
  288. data/spec/spec/mocks/and_yield_spec.rb +117 -0
  289. data/spec/spec/mocks/any_number_of_times_spec.rb +9 -2
  290. data/spec/spec/mocks/argument_expectation_spec.rb +19 -15
  291. data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  292. data/spec/spec/mocks/at_least_spec.rb +2 -2
  293. data/spec/spec/mocks/at_most_spec.rb +3 -3
  294. data/spec/spec/mocks/bug_report_10260_spec.rb +1 -1
  295. data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  296. data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  297. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  298. data/spec/spec/mocks/bug_report_496_spec.rb +17 -0
  299. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  300. data/spec/spec/mocks/bug_report_7611_spec.rb +2 -2
  301. data/spec/spec/mocks/bug_report_7805_spec.rb +2 -2
  302. data/spec/spec/mocks/bug_report_8165_spec.rb +4 -4
  303. data/spec/spec/mocks/bug_report_8302_spec.rb +2 -2
  304. data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  305. data/spec/spec/mocks/double_spec.rb +12 -0
  306. data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  307. data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  308. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  309. data/spec/spec/mocks/mock_ordering_spec.rb +15 -5
  310. data/spec/spec/mocks/mock_space_spec.rb +1 -1
  311. data/spec/spec/mocks/mock_spec.rb +346 -129
  312. data/spec/spec/mocks/multiple_return_value_spec.rb +9 -9
  313. data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  314. data/spec/spec/mocks/null_object_mock_spec.rb +15 -1
  315. data/spec/spec/mocks/once_counts_spec.rb +2 -2
  316. data/spec/spec/mocks/options_hash_spec.rb +19 -17
  317. data/spec/spec/mocks/partial_mock_spec.rb +124 -12
  318. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +2 -2
  319. data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  320. data/spec/spec/mocks/precise_counts_spec.rb +2 -2
  321. data/spec/spec/mocks/record_messages_spec.rb +2 -2
  322. data/spec/spec/mocks/stub_chain_spec.rb +42 -0
  323. data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  324. data/spec/spec/mocks/stub_spec.rb +147 -103
  325. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  326. data/spec/spec/mocks/twice_counts_spec.rb +2 -2
  327. data/spec/spec/mocks/unstub_spec.rb +127 -0
  328. data/spec/spec/package/bin_spec_spec.rb +11 -7
  329. data/spec/spec/rake/spectask_spec.rb +150 -0
  330. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  331. data/spec/spec/runner/command_line_spec.rb +158 -29
  332. data/spec/spec/runner/configuration_spec.rb +320 -0
  333. data/spec/spec/runner/drb_command_line_spec.rb +137 -72
  334. data/spec/spec/runner/empty_file.txt +0 -0
  335. data/spec/spec/runner/example_group_runner_spec.rb +26 -0
  336. data/spec/spec/runner/examples.txt +2 -0
  337. data/spec/spec/runner/failed.txt +3 -0
  338. data/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  339. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  340. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  341. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +17 -12
  342. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  343. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  344. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  345. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  346. data/spec/spec/runner/formatter/html_formatter_spec.rb +112 -52
  347. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +329 -0
  348. data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  349. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +87 -16
  350. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +14 -7
  351. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +153 -50
  352. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  353. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  354. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  355. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  356. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  357. data/spec/spec/runner/heckle_runner_spec.rb +32 -17
  358. data/spec/spec/runner/heckler_spec.rb +17 -11
  359. data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  360. data/spec/spec/runner/line_number_query_spec.rb +129 -0
  361. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +27 -21
  362. data/spec/spec/runner/option_parser_spec.rb +367 -164
  363. data/spec/spec/runner/options_spec.rb +506 -94
  364. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  365. data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  366. data/spec/spec/runner/output_one_time_spec.rb +15 -0
  367. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +94 -27
  368. data/spec/spec/runner/reporter_spec.rb +212 -121
  369. data/spec/spec/runner/resources/a_bar.rb +0 -0
  370. data/spec/spec/runner/resources/a_foo.rb +0 -0
  371. data/spec/spec/runner/resources/a_spec.rb +1 -0
  372. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  373. data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  374. data/spec/spec/runner/spec.opts +2 -0
  375. data/spec/spec/runner/spec_drb.opts +2 -0
  376. data/spec/spec/runner/spec_spaced.opts +2 -0
  377. data/spec/spec/runner_spec.rb +13 -0
  378. data/spec/spec.opts +6 -0
  379. data/spec/spec_helper.rb +87 -45
  380. data/spec/support/macros.rb +29 -0
  381. data/spec/{spec → support}/spec_classes.rb +26 -4
  382. metadata +461 -141
  383. data/CHANGES +0 -748
  384. data/EXAMPLES.rd +0 -108
  385. data/README +0 -70
  386. data/UPGRADE +0 -31
  387. data/bin/spec_translator +0 -8
  388. data/examples/auto_spec_description_example.rb +0 -19
  389. data/examples/before_and_after_example.rb +0 -39
  390. data/examples/behave_as_example.rb +0 -45
  391. data/examples/dynamic_spec.rb +0 -9
  392. data/examples/helper_method_example.rb +0 -11
  393. data/examples/legacy_spec.rb +0 -10
  394. data/examples/not_yet_implemented_spec.rb +0 -12
  395. data/examples/priority.txt +0 -1
  396. data/examples/spec_helper.rb +0 -1
  397. data/examples/test_case_adapter_example.rb +0 -26
  398. data/examples/test_case_spec.rb +0 -65
  399. data/lib/spec/dsl/behaviour.rb +0 -204
  400. data/lib/spec/dsl/behaviour_callbacks.rb +0 -77
  401. data/lib/spec/dsl/behaviour_eval.rb +0 -177
  402. data/lib/spec/dsl/behaviour_factory.rb +0 -42
  403. data/lib/spec/dsl/composite_proc_builder.rb +0 -28
  404. data/lib/spec/dsl/configuration.rb +0 -119
  405. data/lib/spec/dsl/description.rb +0 -46
  406. data/lib/spec/dsl/example.rb +0 -127
  407. data/lib/spec/dsl/example_matcher.rb +0 -28
  408. data/lib/spec/dsl/example_should_raise_handler.rb +0 -74
  409. data/lib/spec/expectations/differs/default.rb +0 -61
  410. data/lib/spec/expectations/extensions/object.rb +0 -66
  411. data/lib/spec/expectations/extensions/string_and_symbol.rb +0 -17
  412. data/lib/spec/extensions/object.rb +0 -6
  413. data/lib/spec/extensions.rb +0 -1
  414. data/lib/spec/matchers/raise_error.rb +0 -100
  415. data/lib/spec/mocks/argument_constraint_matchers.rb +0 -12
  416. data/lib/spec/mocks/spec_methods.rb +0 -30
  417. data/lib/spec/runner/behaviour_runner.rb +0 -102
  418. data/lib/spec/runner/extensions/object.rb +0 -32
  419. data/lib/spec/runner/formatter/failing_behaviours_formatter.rb +0 -25
  420. data/lib/spec/runner/formatter/rdoc_formatter.rb +0 -24
  421. data/lib/spec/runner/formatter.rb +0 -9
  422. data/lib/spec/runner/spec_parser.rb +0 -50
  423. data/lib/spec/test_case_adapter.rb +0 -10
  424. data/lib/spec/translator.rb +0 -106
  425. data/plugins/mock_frameworks/flexmock.rb +0 -27
  426. data/plugins/mock_frameworks/rspec.rb +0 -18
  427. data/spec/spec/dsl/behaviour_factory_spec.rb +0 -30
  428. data/spec/spec/dsl/behaviour_spec.rb +0 -604
  429. data/spec/spec/dsl/composite_proc_builder_spec.rb +0 -57
  430. data/spec/spec/dsl/configuration_spec.rb +0 -50
  431. data/spec/spec/dsl/description_spec.rb +0 -81
  432. data/spec/spec/dsl/example_class_spec.rb +0 -24
  433. data/spec/spec/dsl/example_instance_spec.rb +0 -162
  434. data/spec/spec/dsl/example_should_raise_spec.rb +0 -137
  435. data/spec/spec/dsl/predicate_matcher_spec.rb +0 -21
  436. data/spec/spec/dsl/shared_behaviour_spec.rb +0 -208
  437. data/spec/spec/matchers/handler_spec.rb +0 -88
  438. data/spec/spec/matchers/matcher_methods_spec.rb +0 -78
  439. data/spec/spec/matchers/raise_error_spec.rb +0 -147
  440. data/spec/spec/mocks/failing_mock_argument_constraints_spec.rb +0 -73
  441. data/spec/spec/mocks/passing_mock_argument_constraints_spec.rb +0 -92
  442. data/spec/spec/runner/behaviour_runner_spec.rb +0 -118
  443. data/spec/spec/runner/context_matching_spec.rb +0 -27
  444. data/spec/spec/runner/execution_context_spec.rb +0 -31
  445. data/spec/spec/runner/extensions/kernel_spec.rb +0 -36
  446. data/spec/spec/runner/formatter/failing_behaviours_formatter_spec.rb +0 -27
  447. data/spec/spec/runner/formatter/progress_bar_formatter_dry_run_spec.rb +0 -21
  448. data/spec/spec/runner/formatter/progress_bar_formatter_failure_dump_spec.rb +0 -36
  449. data/spec/spec/runner/formatter/rdoc_formatter_dry_run_spec.rb +0 -19
  450. data/spec/spec/runner/formatter/rdoc_formatter_spec.rb +0 -46
  451. data/spec/spec/runner/formatter/specdoc_formatter_dry_run_spec.rb +0 -21
  452. data/spec/spec/runner/object_ext_spec.rb +0 -11
  453. data/spec/spec/runner/spec_matcher_spec.rb +0 -102
  454. data/spec/spec/runner/spec_parser_spec.rb +0 -93
  455. data/spec/spec/translator_spec.rb +0 -216
  456. /data/examples/{custom_expectation_matchers.rb → passing/custom_matchers.rb} +0 -0
data/EXAMPLES.rd DELETED
@@ -1,108 +0,0 @@
1
- # Examples with no descriptions
2
- # * should equal 5
3
- # * should be < 5
4
- # * should include "a"
5
- # * should respond to #size
6
- # State created in before(:all)
7
- # * should be accessible from example
8
- # * should not have sideffects
9
- # BehaveAsExample::BluesGuitarist
10
- # * should behave as guitarist
11
- # BehaveAsExample::RockGuitarist
12
- # * should behave as guitarist
13
- # BehaveAsExample::ClassicGuitarist
14
- # * should not behave as guitarist
15
- # Animals::Mouse
16
- # * should eat cheese
17
- # * should not eat cat
18
- # Some integers
19
- # * The root of 1 square should be 1
20
- # * The root of 2 square should be 2
21
- # * The root of 3 square should be 3
22
- # * The root of 4 square should be 4
23
- # * The root of 5 square should be 5
24
- # * The root of 6 square should be 6
25
- # * The root of 7 square should be 7
26
- # * The root of 8 square should be 8
27
- # * The root of 9 square should be 9
28
- # * The root of 10 square should be 10
29
- # A FileAccessor
30
- # * should open a file and pass it to the processor's process method
31
- # Greeter
32
- # * should say Hi to person
33
- # * should say Hi to nobody
34
- # a context with helper a method
35
- # * should make that method available to specs
36
- # An IoProcessor
37
- # * should raise nothing when the file is exactly 32 bytes
38
- # * should raise an exception when the file length is less than 32 bytes
39
- # A legacy spec
40
- # * should work fine
41
- # A consumer of a mock
42
- # * should be able to send messages to the mock
43
- # a mock
44
- # * should be able to mock the same message twice w/ different args
45
- # * should be able to mock the same message twice w/ different args in reverse order
46
- # Stack (not implemented features)
47
- # * should transform to xml using #to_xml [NOT IMPLEMENTED]
48
- # * should convert from xml using #from_xml [NOT IMPLEMENTED]
49
- # A partial mock
50
- # * should work at the class level
51
- # * should revert to the original after each spec
52
- # * can be mocked w/ ordering
53
- # BDD framework
54
- # * should be adopted quickly
55
- # * should be intuitive
56
- # SharedBehaviourExample::OneThing
57
- # * should do what things do
58
- # * should have access to helper methods defined in the shared behaviour
59
- # SharedBehaviourExample::AnotherThing
60
- # * should do what things do
61
- # Stack (empty)
62
- # * should be empty
63
- # * should not be full
64
- # * should add to the top when sent #push
65
- # * should complain when sent #peek
66
- # * should complain when sent #pop
67
- # Stack (with one item)
68
- # * should not be empty
69
- # * should return the top item when sent #peek
70
- # * should NOT remove the top item when sent #peek
71
- # * should return the top item when sent #pop
72
- # * should remove the top item when sent #pop
73
- # * should not be full
74
- # * should add to the top when sent #push
75
- # Stack (with one item less than capacity)
76
- # * should not be empty
77
- # * should return the top item when sent #peek
78
- # * should NOT remove the top item when sent #peek
79
- # * should return the top item when sent #pop
80
- # * should remove the top item when sent #pop
81
- # * should not be full
82
- # * should add to the top when sent #push
83
- # Stack (full)
84
- # * should be full
85
- # * should not be empty
86
- # * should return the top item when sent #peek
87
- # * should NOT remove the top item when sent #peek
88
- # * should return the top item when sent #pop
89
- # * should remove the top item when sent #pop
90
- # * should complain on #push
91
- # A consumer of a stub
92
- # * should be able to stub methods on any Object
93
- # A stubbed method on a class
94
- # * should return the stubbed value
95
- # * should revert to the original method after each spec
96
- # * can stub! and mock the same message
97
- # A mock
98
- # * can stub!
99
- # * can stub! and mock
100
- # * can stub! and mock the same message
101
- # RSpec should integrate with Test::Unit::TestCase
102
- # * TestCase#setup should be called.
103
- # * RSpec should be able to access TestCase methods
104
- # * RSpec should be able to accept included modules
105
-
106
- Finished in 0.025956 seconds
107
-
108
- 77 examples, 0 failures, 2 not implemented
data/README DELETED
@@ -1,70 +0,0 @@
1
- == RSpec
2
-
3
- RSpec is a Behaviour Definition Framework intended for use in Behaviour
4
- Driven Development. RSpec plays the same role that a unit testing framework
5
- would play in a Test Driven Development environment, but does so using
6
- words and structures that better support BDD.
7
-
8
- RSpec ships with four modules:
9
-
10
- Spec::Matchers provides Expression Matchers for use with Spec::Expectations
11
- and Spec::Mocks.
12
-
13
- Spec::Expectations supports setting expectations on your objects so you
14
- can do things like:
15
-
16
- result.should equal(expected_result)
17
-
18
- Spec::Mocks supports creating Mock Objects, Stubs, and adding Mock/Stub
19
- behaviour to your existing objects.
20
-
21
- Spec::Runner provides a very small but powerful DSL for writing executable
22
- examples of how your code should work.
23
-
24
- == Installation
25
-
26
- The simplest approach is to install the gem:
27
-
28
- gem install -r rspec #mac users must sudo
29
-
30
- == Building the RSpec gem
31
- If you prefer to build the gem locally, check out source from svn://rubyforge.org/var/svn/rspec/trunk. Then
32
- do the following:
33
-
34
- rake gem
35
- gem install pkg/rspec-0.x.x.gem (you may have to sudo)
36
-
37
- == Running RSpec's specs
38
- In order to run RSpec's full suite of specs (rake pre_commit) you must install the following gems:
39
-
40
- * rake # Runs the build script
41
- * rcov # Verifies that the code is 100% covered by specs
42
- * webgen # Generates the static HTML website
43
- * RedCloth # Required by webgen
44
- * syntax # Required by our own custom webgen extension to highlight ruby code
45
- * diff-lcs # Required if you use the --diff switch
46
- * win32console # Required by the --colour switch if you're on Windows
47
- * meta_project # Required in order to make releases at RubyForge
48
- * heckle # Required if you use the --heckle switch
49
-
50
- Once those are all installed, you should be able to run the suite with the following steps:
51
-
52
- * svn co svn://rubyforge.org/var/svn/rspec/trunk rspec
53
- * cd rspec
54
- * rake install_dependencies
55
- * cd example_rails_app
56
- * export RSPEC_RAILS_VERSION=1.2.3
57
- * rake rspec:generate_mysql_config
58
- * mysql -u root < db/mysql_setup.sql
59
- * cd ..
60
- * rake pre_commit
61
-
62
-
63
- Note that RSpec itself - once built - doesn't have any dependencies outside the Ruby core
64
- and stdlib - with a few exceptions:
65
-
66
- * The spec command line uses diff-lcs when --diff is specified.
67
- * The spec command line uses heckle when --heckle is specified.
68
- * The Spec::Rake::SpecTask needs RCov if RCov is enabled in the task.
69
-
70
- See http://rspec.rubyforge.org for further documentation.
data/UPGRADE DELETED
@@ -1,31 +0,0 @@
1
- = Upgrading existing code to RSpec-0.9
2
-
3
- == General (see below for Spec::Rails specifics)
4
-
5
- === New Syntax for should and should_not
6
-
7
- * Use translator (should get 90% of your code)
8
- * Manually fix "parenthesis" warnings
9
-
10
- === Change before_context_eval to before_eval
11
-
12
- before_context_eval is an un-published hook used by
13
- Spec::Rails to create specialized behaviour contexts.
14
- Most of you don't need to change this, but for those
15
- who have exploited it, you'll need to change it to
16
- before_eval.
17
-
18
- == Spec::Rails
19
-
20
- === spec_helper.rb
21
-
22
- We've added a new way to configure Spec::Runner to do
23
- things like use_transactional_fixtures and use_instantiated_fixtures.
24
- You'll need to update spec/spec_helper.rb accordingly. You can either
25
- just re-generate it:
26
-
27
- script/generate rspec
28
-
29
- Or modify spec_helper.rb based on the template, which can be found at:
30
-
31
- vendor/plugins/rspec_on_rails/generators/rspec/templates/spec_helper.rb
data/bin/spec_translator DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env ruby
2
- raise "\n\nUsage: spec_translator from_dir to_dir\n\n" if ARGV.size != 2
3
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
4
- require 'spec/translator'
5
- t = ::Spec::Translator.new
6
- from = ARGV[0]
7
- to = ARGV[1]
8
- t.translate(from, to)
@@ -1,19 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- # Run spec w/ -fs to see the output of this file
4
-
5
- describe "Examples with no descriptions" do
6
-
7
- # description is auto-generated as "should equal(5)" based on the last #should
8
- it do
9
- 3.should equal(3)
10
- 5.should equal(5)
11
- end
12
-
13
- it { 3.should be < 5 }
14
-
15
- it { ["a"].should include("a") }
16
-
17
- it { [1,2,3].should respond_to(:size) }
18
-
19
- end
@@ -1,39 +0,0 @@
1
- $global = 0
2
-
3
- describe "State created in before(:all)" do
4
- before :all do
5
- @sideeffect = 1
6
- $global +=1
7
- end
8
-
9
- before :each do
10
- @isolated = 1
11
- end
12
-
13
- it "should be accessible from example" do
14
- @sideeffect.should == 1
15
- $global.should == 1
16
- @isolated.should == 1
17
-
18
- @sideeffect += 1
19
- @isolated += 1
20
- end
21
-
22
- it "should not have sideffects" do
23
- @sideeffect.should == 1
24
- $global.should == 2
25
- @isolated.should == 1
26
-
27
- @sideeffect += 1
28
- @isolated += 1
29
- end
30
-
31
- after :each do
32
- $global += 1
33
- end
34
-
35
- after :all do
36
- $global.should == 3
37
- $global = 0
38
- end
39
- end
@@ -1,45 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- def behave_as_electric_musician
4
- respond_to(:read_notes, :turn_down_amp)
5
- end
6
-
7
- def behave_as_musician
8
- respond_to(:read_notes)
9
- end
10
-
11
- module BehaveAsExample
12
-
13
- class BluesGuitarist
14
- def read_notes; end
15
- def turn_down_amp; end
16
- end
17
-
18
- class RockGuitarist
19
- def read_notes; end
20
- def turn_down_amp; end
21
- end
22
-
23
- class ClassicGuitarist
24
- def read_notes; end
25
- end
26
-
27
- describe BluesGuitarist do
28
- it "should behave as guitarist" do
29
- BluesGuitarist.new.should behave_as_electric_musician
30
- end
31
- end
32
-
33
- describe RockGuitarist do
34
- it "should behave as guitarist" do
35
- RockGuitarist.new.should behave_as_electric_musician
36
- end
37
- end
38
-
39
- describe ClassicGuitarist do
40
- it "should not behave as guitarist" do
41
- ClassicGuitarist.new.should behave_as_musician
42
- end
43
- end
44
-
45
- end
@@ -1,9 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe "Some integers" do
4
- (1..10).each do |n|
5
- it "The root of #{n} square should be #{n}" do
6
- Math.sqrt(n*n).should == n
7
- end
8
- end
9
- end
@@ -1,11 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe "a context with helper a method" do
4
- def helper_method
5
- "received call"
6
- end
7
-
8
- it "should make that method available to specs" do
9
- helper_method.should == "received call"
10
- end
11
- end
@@ -1,10 +0,0 @@
1
- context "A legacy spec" do
2
- setup do
3
- end
4
-
5
- specify "should work fine" do
6
- end
7
-
8
- teardown do
9
- end
10
- end
@@ -1,12 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
- require File.dirname(__FILE__) + "/stack"
3
-
4
- describe Stack, ' (not implemented features)' do
5
- before(:each) do
6
- @stack = Stack.new
7
- end
8
-
9
- it "should transform to xml using #to_xml"
10
-
11
- it "should convert from xml using #from_xml"
12
- end
@@ -1 +0,0 @@
1
- examples/custom_expectation_matchers.rb
@@ -1 +0,0 @@
1
- require File.dirname(__FILE__) + '/../lib/spec'
@@ -1,26 +0,0 @@
1
- #This is an example of using RSpec's expectations in test/unit.
2
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
3
-
4
- require 'test/unit'
5
- require 'spec/test_case_adapter'
6
-
7
- class IntegratingRSpecExpectationsIntoTestCaseTest < Test::Unit::TestCase
8
-
9
- def test_should_support_rspecs_equality_expectations
10
- 5.should == 5
11
- end
12
-
13
- def test_should_support_rspecs_comparison_expectations
14
- 5.should be > 4
15
- end
16
-
17
- class Band
18
- def players
19
- ["John", "Paul", "George", "Ringo"]
20
- end
21
- end
22
-
23
- def test_should_support_rspecs_collection_expectations
24
- Band.new.should have(4).players
25
- end
26
- end
@@ -1,65 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
- require 'test/unit'
3
-
4
- class RSpecIntegrationTest < Test::Unit::TestCase
5
- def self.fixtures(*args)
6
- @@fixtures = true
7
- end
8
-
9
- def self.verify_class_method
10
- @@fixtures.should == true
11
- end
12
-
13
- def setup
14
- @test_case_setup_called = true
15
- end
16
-
17
- def teardown
18
- @test_case_teardown_called = true
19
- end
20
-
21
- def run(result)
22
- end
23
-
24
- def helper_method
25
- @helper_method_called = true
26
- end
27
- end
28
-
29
- module RandomHelperModule
30
- def random_task
31
- @random_task_called = true
32
- end
33
- end
34
-
35
- describe "RSpec should integrate with Test::Unit::TestCase" do
36
- inherit RSpecIntegrationTest
37
- include RandomHelperModule
38
-
39
- fixtures :some_table
40
-
41
- prepend_before(:each) {setup}
42
-
43
- before(:each) do
44
- @rspec_setup_called = true
45
- end
46
-
47
- it "TestCase#setup should be called." do
48
- @test_case_setup_called.should be_true
49
- @rspec_setup_called.should be_true
50
- end
51
-
52
- it "RSpec should be able to access TestCase methods" do
53
- helper_method
54
- @helper_method_called.should be_true
55
- end
56
-
57
- it "RSpec should be able to accept included modules" do
58
- random_task
59
- @random_task_called.should be_true
60
- end
61
-
62
- after(:each) do
63
- RSpecIntegrationTest.verify_class_method
64
- end
65
- end
@@ -1,204 +0,0 @@
1
- module Spec
2
- module DSL
3
- class EvalModule < Module; end
4
- class Behaviour
5
- extend BehaviourCallbacks
6
-
7
- class << self
8
- def add_shared_behaviour(behaviour)
9
- return if behaviour.equal?(found_behaviour = find_shared_behaviour(behaviour.description))
10
- raise ArgumentError.new("Shared Behaviour '#{behaviour.description}' already exists") if found_behaviour
11
- shared_behaviours << behaviour
12
- end
13
-
14
- def find_shared_behaviour(behaviour_description)
15
- shared_behaviours.find { |b| b.description == behaviour_description }
16
- end
17
-
18
- def shared_behaviours
19
- # TODO - this needs to be global, or at least accessible from
20
- # from subclasses of Behaviour in a centralized place. I'm not loving
21
- # this as a solution, but it works for now.
22
- $shared_behaviours ||= []
23
- end
24
- end
25
-
26
- def initialize(*args, &behaviour_block)
27
- init_description(*args)
28
- init_eval_module
29
- before_eval
30
- eval_behaviour(&behaviour_block)
31
- end
32
-
33
- private
34
-
35
- def init_description(*args)
36
- @description = Description.new(*args)
37
- end
38
-
39
- def init_eval_module
40
- @eval_module = EvalModule.new
41
- @eval_module.extend BehaviourEval::ModuleMethods
42
- @eval_module.include BehaviourEval::InstanceMethods
43
- @eval_module.behaviour = self
44
- @eval_module.description = @description
45
- end
46
-
47
- def eval_behaviour(&behaviour_block)
48
- @eval_module.class_eval(&behaviour_block)
49
- end
50
-
51
- protected
52
-
53
- def before_eval
54
- end
55
-
56
- public
57
-
58
- def run(reporter, dry_run=false, reverse=false, timeout=nil)
59
- raise "shared behaviours should never run" if shared?
60
- reporter.add_behaviour(description)
61
- prepare_execution_context_class
62
- errors = run_before_all(reporter, dry_run)
63
-
64
- specs = reverse ? examples.reverse : examples
65
- example_execution_context = nil
66
-
67
- if errors.empty?
68
- specs.each do |example|
69
- example_execution_context = execution_context(example)
70
- example_execution_context.copy_instance_variables_from(@before_and_after_all_context_instance) unless before_all_proc(behaviour_type).nil?
71
- example.run(reporter, before_each_proc(behaviour_type), after_each_proc(behaviour_type), dry_run, example_execution_context, timeout)
72
- end
73
- end
74
-
75
- @before_and_after_all_context_instance.copy_instance_variables_from(example_execution_context) unless after_all_proc(behaviour_type).nil?
76
- run_after_all(reporter, dry_run)
77
- end
78
-
79
- def number_of_examples
80
- examples.length
81
- end
82
-
83
- def matches?(specified_examples)
84
- matcher ||= ExampleMatcher.new(description)
85
-
86
- examples.each do |example|
87
- return true if example.matches?(matcher, specified_examples)
88
- end
89
- return false
90
- end
91
-
92
- def shared?
93
- @description[:shared]
94
- end
95
-
96
- def retain_examples_matching!(specified_examples)
97
- return if specified_examples.index(description)
98
- matcher = ExampleMatcher.new(description)
99
- examples.reject! do |example|
100
- !example.matches?(matcher, specified_examples)
101
- end
102
- end
103
-
104
- def methods
105
- my_methods = super
106
- my_methods |= @eval_module.methods
107
- my_methods
108
- end
109
-
110
- # Includes modules in the Behaviour (the <tt>describe</tt> block).
111
- def include(*args)
112
- args << {} unless Hash === args.last
113
- modules, options = args_and_options(*args)
114
- required_behaviour_type = options[:behaviour_type]
115
- if required_behaviour_type.nil? || required_behaviour_type.to_sym == behaviour_type.to_sym
116
- @eval_module.include(*modules)
117
- end
118
- end
119
-
120
- protected
121
-
122
- def behaviour_type #:nodoc:
123
- @description[:behaviour_type]
124
- end
125
-
126
- # Messages that this class does not understand
127
- # are passed directly to the @eval_module.
128
- def method_missing(sym, *args, &block)
129
- @eval_module.send(sym, *args, &block)
130
- end
131
-
132
- def prepare_execution_context_class
133
- plugin_mock_framework
134
- weave_in_included_modules
135
- define_predicate_matchers #this is in behaviour_eval
136
- execution_context_class
137
- end
138
-
139
- def weave_in_included_modules
140
- mods = included_modules
141
- eval_module = @eval_module
142
- execution_context_class.class_eval do
143
- include eval_module
144
- Spec::Runner.configuration.included_modules.each do |mod|
145
- include mod
146
- end
147
- mods.each do |mod|
148
- include mod
149
- end
150
- end
151
- end
152
-
153
- def execution_context(example)
154
- execution_context_class.new(example)
155
- end
156
-
157
- def run_before_all(reporter, dry_run)
158
- errors = []
159
- unless dry_run
160
- begin
161
- @before_and_after_all_context_instance = execution_context(nil)
162
- @before_and_after_all_context_instance.instance_eval(&before_all_proc(behaviour_type))
163
- rescue => e
164
- errors << e
165
- location = "before(:all)"
166
- reporter.example_finished(location, e, location) if reporter
167
- end
168
- end
169
- errors
170
- end
171
-
172
- def run_after_all(reporter, dry_run)
173
- unless dry_run
174
- begin
175
- @before_and_after_all_context_instance ||= execution_context(nil)
176
- @before_and_after_all_context_instance.instance_eval(&after_all_proc(behaviour_type))
177
- rescue => e
178
- location = "after(:all)"
179
- reporter.example_finished(location, e, location) if reporter
180
- end
181
- end
182
- end
183
-
184
- def plugin_mock_framework
185
- case mock_framework = Spec::Runner.configuration.mock_framework
186
- when Module
187
- include mock_framework
188
- else
189
- require Spec::Runner.configuration.mock_framework
190
- include Spec::Plugins::MockFramework
191
- end
192
- end
193
-
194
- def description
195
- @description.to_s
196
- end
197
-
198
- def described_type
199
- @description.described_type
200
- end
201
-
202
- end
203
- end
204
- end