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
@@ -1,77 +0,0 @@
1
- module Spec
2
- module DSL
3
- module BehaviourCallbacks
4
- def prepend_before(*args, &block)
5
- scope, options = scope_and_options(*args)
6
- add(scope, options, :before, :unshift, &block)
7
- end
8
- def append_before(*args, &block)
9
- scope, options = scope_and_options(*args)
10
- add(scope, options, :before, :<<, &block)
11
- end
12
- alias_method :before, :append_before
13
-
14
- def prepend_after(*args, &block)
15
- scope, options = scope_and_options(*args)
16
- add(scope, options, :after, :unshift, &block)
17
- end
18
- alias_method :after, :prepend_after
19
- def append_after(*args, &block)
20
- scope, options = scope_and_options(*args)
21
- add(scope, options, :after, :<<, &block)
22
- end
23
-
24
- def scope_and_options(*args)
25
- args, options = args_and_options(*args)
26
- scope = (args[0] || :each), options
27
- end
28
-
29
- def add(scope, options, where, how, &block)
30
- scope ||= :each
31
- options ||= {}
32
- behaviour_type = options[:behaviour_type]
33
- case scope
34
- when :each; self.__send__("#{where}_each_parts", behaviour_type).__send__(how, block)
35
- when :all; self.__send__("#{where}_all_parts", behaviour_type).__send__(how, block)
36
- end
37
- end
38
-
39
- # Deprecated. Use before(:each)
40
- def setup(&block)
41
- before(:each, &block)
42
- end
43
-
44
- # Deprecated. Use after(:each)
45
- def teardown(&block)
46
- after(:each, &block)
47
- end
48
-
49
- def before_all_parts(behaviour_type=nil) # :nodoc:
50
- @before_all_parts ||= {}
51
- @before_all_parts[behaviour_type] ||= []
52
- end
53
-
54
- def after_all_parts(behaviour_type=nil) # :nodoc:
55
- @after_all_parts ||= {}
56
- @after_all_parts[behaviour_type] ||= []
57
- end
58
-
59
- def before_each_parts(behaviour_type=nil) # :nodoc:
60
- @before_each_parts ||= {}
61
- @before_each_parts[behaviour_type] ||= []
62
- end
63
-
64
- def after_each_parts(behaviour_type=nil) # :nodoc:
65
- @after_each_parts ||= {}
66
- @after_each_parts[behaviour_type] ||= []
67
- end
68
-
69
- def clear_before_and_after! # :nodoc:
70
- @before_all_parts = nil
71
- @after_all_parts = nil
72
- @before_each_parts = nil
73
- @after_each_parts = nil
74
- end
75
- end
76
- end
77
- end
@@ -1,177 +0,0 @@
1
- module Spec
2
- module DSL
3
- module BehaviourEval
4
- module ModuleMethods
5
- include BehaviourCallbacks
6
-
7
- attr_writer :behaviour
8
- attr_accessor :description
9
-
10
- def inherit(klass)
11
- raise ArgumentError.new("Shared behaviours cannot inherit from classes") if @behaviour.shared?
12
- @behaviour_superclass = klass
13
- derive_execution_context_class_from_behaviour_superclass
14
- end
15
-
16
- def include(*mods)
17
- mods.each do |mod|
18
- included_modules << mod
19
- mod.send :included, self
20
- end
21
- end
22
-
23
- def it_should_behave_like(behaviour_description)
24
- behaviour = @behaviour.class.find_shared_behaviour(behaviour_description)
25
- if behaviour.nil?
26
- raise RuntimeError.new("Shared Behaviour '#{behaviour_description}' can not be found")
27
- end
28
- behaviour.copy_to(self)
29
- end
30
-
31
- def copy_to(eval_module)
32
- examples.each { |e| eval_module.examples << e; }
33
- before_each_parts.each { |p| eval_module.before_each_parts << p }
34
- after_each_parts.each { |p| eval_module.after_each_parts << p }
35
- before_all_parts.each { |p| eval_module.before_all_parts << p }
36
- after_all_parts.each { |p| eval_module.after_all_parts << p }
37
- included_modules.each { |m| eval_module.included_modules << m }
38
- eval_module.included_modules << self
39
- end
40
-
41
- # :call-seq:
42
- # predicate_matchers[method_on_object] = matcher_name
43
- #
44
- # Dynamically generates a custom matcher that will match
45
- # a predicate on your class.
46
- #
47
- # == Example
48
- #
49
- # class Fish
50
- # def can_swim?
51
- # true
52
- # end
53
- # end
54
- #
55
- # describe Fish do
56
- # predicate_matchers[:swim] = :can_swim?
57
- # it "should swim" do
58
- # Fish.new.should swim
59
- # end
60
- # end
61
- def predicate_matchers
62
- @predicate_matchers ||= {:exist => :exist?}
63
- end
64
-
65
- def define_predicate_matchers(hash=nil) # :nodoc:
66
- if hash.nil?
67
- define_predicate_matchers(predicate_matchers)
68
- define_predicate_matchers(Spec::Runner.configuration.predicate_matchers)
69
- else
70
- hash.each_pair do |matcher_method, method_on_object|
71
- define_method matcher_method do |*args|
72
- eval("be_#{method_on_object.to_s.gsub('?','')}(*args)")
73
- end
74
- end
75
- end
76
- end
77
-
78
- def it(description=:__generate_description, opts={}, &block)
79
- examples << Example.new(description, opts, &block)
80
- end
81
-
82
- def specify(description, opts={}, &block)
83
- it(description, opts, &block)
84
- end
85
-
86
- def methods
87
- my_methods = super
88
- my_methods |= behaviour_superclass.methods
89
- my_methods
90
- end
91
-
92
- protected
93
-
94
- def method_missing(method_name, *args)
95
- if behaviour_superclass.respond_to?(method_name)
96
- return execution_context_class.send(method_name, *args)
97
- end
98
- super
99
- end
100
-
101
- def before_all_proc(behaviour_type, &error_handler)
102
- parts = []
103
- parts.push(*Behaviour.before_all_parts(nil))
104
- parts.push(*Behaviour.before_all_parts(behaviour_type)) unless behaviour_type.nil?
105
- parts.push(*before_all_parts(nil))
106
- parts.push(*before_all_parts(behaviour_type)) unless behaviour_type.nil?
107
- CompositeProcBuilder.new(parts).proc(&error_handler)
108
- end
109
-
110
- def after_all_proc(behaviour_type, &error_handler)
111
- parts = []
112
- parts.push(*after_all_parts(behaviour_type)) unless behaviour_type.nil?
113
- parts.push(*after_all_parts(nil))
114
- parts.push(*Behaviour.after_all_parts(behaviour_type)) unless behaviour_type.nil?
115
- parts.push(*Behaviour.after_all_parts(nil))
116
- CompositeProcBuilder.new(parts).proc(&error_handler)
117
- end
118
-
119
- def before_each_proc(behaviour_type, &error_handler)
120
- parts = []
121
- parts.push(*Behaviour.before_each_parts(nil))
122
- parts.push(*Behaviour.before_each_parts(behaviour_type)) unless behaviour_type.nil?
123
- parts.push(*before_each_parts(nil))
124
- parts.push(*before_each_parts(behaviour_type)) unless behaviour_type.nil?
125
- CompositeProcBuilder.new(parts).proc(&error_handler)
126
- end
127
-
128
- def after_each_proc(behaviour_type, &error_handler)
129
- parts = []
130
- parts.push(*after_each_parts(behaviour_type)) unless behaviour_type.nil?
131
- parts.push(*after_each_parts(nil))
132
- parts.push(*Behaviour.after_each_parts(behaviour_type)) unless behaviour_type.nil?
133
- parts.push(*Behaviour.after_each_parts(nil))
134
- CompositeProcBuilder.new(parts).proc(&error_handler)
135
- end
136
-
137
- private
138
-
139
- def execution_context_class
140
- @execution_context_class ||= derive_execution_context_class_from_behaviour_superclass
141
- end
142
-
143
- def derive_execution_context_class_from_behaviour_superclass
144
- @execution_context_class = Class.new(behaviour_superclass)
145
- behaviour_superclass.spec_inherited(self) if behaviour_superclass.respond_to?(:spec_inherited)
146
- @execution_context_class
147
- end
148
-
149
- def behaviour_superclass
150
- @behaviour_superclass ||= Object
151
- end
152
-
153
- protected
154
- def included_modules
155
- @included_modules ||= [::Spec::Matchers]
156
- end
157
-
158
- def examples
159
- @examples ||= []
160
- end
161
- end
162
-
163
- module InstanceMethods
164
- def initialize(*args, &block) #:nodoc:
165
- # TODO - inheriting from TestUnit::TestCase fails without this
166
- # - let's figure out why and move this somewhere else
167
- end
168
-
169
- def violated(message="")
170
- raise Spec::Expectations::ExpectationNotMetError.new(message)
171
- end
172
-
173
- end
174
-
175
- end
176
- end
177
- end
@@ -1,42 +0,0 @@
1
- module Spec
2
- module DSL
3
- class BehaviourFactory
4
-
5
- class << self
6
-
7
- BEHAVIOUR_CLASSES = {:default => Spec::DSL::Behaviour}
8
-
9
- # Registers a behaviour class +klass+ with the symbol
10
- # +behaviour_type+. For example:
11
- #
12
- # Spec::DSL::BehaviourFactory.add_behaviour_class(:farm, Spec::Farm::DSL::FarmBehaviour)
13
- #
14
- # This will cause Kernel#describe from a file living in
15
- # <tt>spec/farm</tt> to create behaviour instances of type
16
- # Spec::Farm::DSL::FarmBehaviour.
17
- def add_behaviour_class(behaviour_type, klass)
18
- BEHAVIOUR_CLASSES[behaviour_type] = klass
19
- end
20
-
21
- def remove_behaviour_class(behaviour_type)
22
- BEHAVIOUR_CLASSES.delete(behaviour_type)
23
- end
24
-
25
- def create(*args, &block)
26
- opts = Hash === args.last ? args.last : {}
27
- if opts[:shared]
28
- behaviour_type = :default
29
- elsif opts[:behaviour_type]
30
- behaviour_type = opts[:behaviour_type]
31
- elsif opts[:spec_path] =~ /spec\/(#{BEHAVIOUR_CLASSES.keys.join('|')})/
32
- behaviour_type = $1.to_sym
33
- else
34
- behaviour_type = :default
35
- end
36
- return BEHAVIOUR_CLASSES[behaviour_type].new(*args, &block)
37
- end
38
-
39
- end
40
- end
41
- end
42
- end
@@ -1,28 +0,0 @@
1
- module Spec
2
- module DSL
3
- class CompositeProcBuilder < Array
4
- def initialize(callbacks=[])
5
- push(*callbacks)
6
- end
7
-
8
- def proc(&error_handler)
9
- parts = self
10
- Proc.new do
11
- parts.collect do |part|
12
- begin
13
- if part.is_a?(UnboundMethod)
14
- part.bind(self).call
15
- else
16
- instance_eval(&part)
17
- end
18
- rescue Exception => e
19
- raise e unless error_handler
20
- error_handler.call(e)
21
- e
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,119 +0,0 @@
1
- module Spec
2
- module DSL
3
- class Configuration
4
-
5
- # Chooses what mock framework to use. Example:
6
- #
7
- # Spec::Runner.configure do |config|
8
- # config.mock_with :rspec # or :mocha, or :flexmock
9
- # end
10
- #
11
- # To use any other mock framework, you'll have to provide
12
- # your own adapter. This is simply a module that responds to
13
- # setup_mocks_for_rspec, verify_mocks_for_rspec and teardown_mocks_for_rspec.
14
- # These are your hooks into the lifecycle of a given example. RSpec will
15
- # call setup_mocks_for_rspec before running anything else in each Example.
16
- # After executing the #after methods, RSpec will then call verify_mocks_for_rspec
17
- # and teardown_mocks_for_rspec (this is guaranteed to run even if there are
18
- # failures in verify_mocks_for_rspec).
19
- #
20
- # Once you've defined this module, you can pass that to mock_with:
21
- #
22
- # Spec::Runner.configure do |config|
23
- # config.mock_with MyMockFrameworkAdapter
24
- # end
25
- #
26
- def mock_with(mock_framework)
27
- @mock_framework = case mock_framework
28
- when Symbol
29
- mock_framework_path(mock_framework.to_s)
30
- else
31
- mock_framework
32
- end
33
- end
34
-
35
- def mock_framework # :nodoc:
36
- @mock_framework ||= mock_framework_path("rspec")
37
- end
38
-
39
- # Declares modules to be included in all behaviours (<tt>describe</tt> blocks).
40
- #
41
- # config.include(My::Bottle, My::Cup)
42
- #
43
- # If you want to restrict the inclusion to a subset of all the behaviours then
44
- # specify this in a Hash as the last argument:
45
- #
46
- # config.include(My::Pony, My::Horse, :behaviour_type => :farm)
47
- #
48
- # Only behaviours that have that type will get the modules included:
49
- #
50
- # describe "Downtown", :behaviour_type => :city do
51
- # # Will *not* get My::Pony and My::Horse included
52
- # end
53
- #
54
- # describe "Old Mac Donald", :behaviour_type => :farm do
55
- # # *Will* get My::Pony and My::Horse included
56
- # end
57
- #
58
- def include(*args)
59
- included_modules.push(*args)
60
- end
61
-
62
- def included_modules # :nodoc:
63
- @included_modules ||= []
64
- end
65
-
66
- # Defines global predicate matchers. Example:
67
- #
68
- # config.predicate_matchers[:swim] = :can_swim?
69
- #
70
- # This makes it possible to say:
71
- #
72
- # person.should swim # passes if person.should_swim? returns true
73
- #
74
- def predicate_matchers
75
- @predicate_matchers ||= {}
76
- end
77
-
78
- # Prepends a global <tt>before</tt> block to all behaviours.
79
- # See #append_before for filtering semantics.
80
- def prepend_before(*args, &proc)
81
- Behaviour.prepend_before(*args, &proc)
82
- end
83
- # Appends a global <tt>before</tt> block to all behaviours.
84
- #
85
- # If you want to restrict the block to a subset of all the behaviours then
86
- # specify this in a Hash as the last argument:
87
- #
88
- # config.prepend_before(:all, :behaviour_type => :farm)
89
- #
90
- # or
91
- #
92
- # config.prepend_before(:behaviour_type => :farm)
93
- #
94
- def append_before(*args, &proc)
95
- Behaviour.append_before(*args, &proc)
96
- end
97
- alias_method :before, :append_before
98
-
99
- # Prepends a global <tt>after</tt> block to all behaviours.
100
- # See #append_before for filtering semantics.
101
- def prepend_after(*args, &proc)
102
- Behaviour.prepend_after(*args, &proc)
103
- end
104
- alias_method :after, :prepend_after
105
- # Appends a global <tt>after</tt> block to all behaviours.
106
- # See #append_before for filtering semantics.
107
- def append_after(*args, &proc)
108
- Behaviour.append_after(*args, &proc)
109
- end
110
-
111
- private
112
-
113
- def mock_framework_path(framework_name)
114
- File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "plugins", "mock_frameworks", framework_name))
115
- end
116
-
117
- end
118
- end
119
- end
@@ -1,46 +0,0 @@
1
- module Spec
2
- module DSL
3
- class Description
4
- module ClassMethods
5
- def generate_description(*args)
6
- description = args.shift.to_s
7
- unless args.empty?
8
- suffix = args.shift.to_s
9
- description << " " unless suffix =~ /^\s|\.|#/
10
- description << suffix
11
- end
12
- description
13
- end
14
- end
15
- extend ClassMethods
16
-
17
- attr_reader :description, :described_type
18
-
19
- def initialize(*args)
20
- args, @options = args_and_options(*args)
21
- @described_type = args.first unless args.first.is_a?(String)
22
- @description = self.class.generate_description(*args)
23
- end
24
-
25
- def [](key)
26
- @options[key]
27
- end
28
-
29
- def []=(key, value)
30
- @options[key] = value
31
- end
32
-
33
- def to_s; @description; end
34
-
35
- def ==(value)
36
- case value
37
- when Description
38
- @description == value.description
39
- else
40
- @description == value
41
- end
42
- end
43
-
44
- end
45
- end
46
- end
@@ -1,127 +0,0 @@
1
- require 'timeout'
2
-
3
- module Spec
4
- module DSL
5
- class Example
6
- def initialize(description, options={}, &example_block)
7
- @from = caller(0)[3]
8
- @options = options
9
- @example_block = example_block
10
- @description = description
11
- @description_generated_proc = lambda { |desc| @generated_description = desc }
12
- end
13
-
14
- def run(reporter, before_each_block, after_each_block, dry_run, execution_context, timeout=nil)
15
- @dry_run = dry_run
16
- reporter.example_started(description)
17
- return reporter.example_finished(description) if dry_run
18
-
19
- errors = []
20
- location = nil
21
- Timeout.timeout(timeout) do
22
- before_each_ok = setup_example(execution_context, errors, &before_each_block)
23
- example_ok = run_example(execution_context, errors) if before_each_ok
24
- after_each_ok = teardown_example(execution_context, errors, &after_each_block)
25
- location = failure_location(before_each_ok, example_ok, after_each_ok)
26
- end
27
-
28
- ExampleShouldRaiseHandler.new(@from, @options).handle(errors)
29
- reporter.example_finished(description, errors.first, location, @example_block.nil?) if reporter
30
- end
31
-
32
- def matches?(matcher, specified_examples)
33
- matcher.example_desc = description
34
- matcher.matches?(specified_examples)
35
- end
36
-
37
- private
38
- def description
39
- @description == :__generate_description ? generated_description : @description
40
- end
41
-
42
- def generated_description
43
- return @generated_description if @generated_description
44
- if @dry_run
45
- "NO NAME (Because of --dry-run)"
46
- else
47
- if @failed
48
- "NO NAME (Because of Error raised in matcher)"
49
- else
50
- "NO NAME (Because there were no expectations)"
51
- end
52
- end
53
- end
54
-
55
- def setup_example(execution_context, errors, &behaviour_before_block)
56
- setup_mocks(execution_context)
57
- Spec::Matchers.description_generated(@description_generated_proc)
58
-
59
- builder = CompositeProcBuilder.new
60
- before_proc = builder.proc(&append_errors(errors))
61
- execution_context.instance_eval(&before_proc)
62
-
63
- execution_context.instance_eval(&behaviour_before_block) if behaviour_before_block
64
- return errors.empty?
65
- rescue => e
66
- @failed = true
67
- errors << e
68
- return false
69
- end
70
-
71
- def run_example(execution_context, errors)
72
- begin
73
- execution_context.instance_eval(&@example_block) if @example_block
74
- return true
75
- rescue Exception => e
76
- @failed = true
77
- errors << e
78
- return false
79
- end
80
- end
81
-
82
- def teardown_example(execution_context, errors, &behaviour_after_each)
83
- execution_context.instance_eval(&behaviour_after_each) if behaviour_after_each
84
-
85
- begin
86
- verify_mocks(execution_context)
87
- ensure
88
- teardown_mocks(execution_context)
89
- end
90
-
91
- Spec::Matchers.unregister_description_generated(@description_generated_proc)
92
-
93
- builder = CompositeProcBuilder.new
94
- after_proc = builder.proc(&append_errors(errors))
95
- execution_context.instance_eval(&after_proc)
96
-
97
- return errors.empty?
98
- rescue => e
99
- @failed = true
100
- errors << e
101
- return false
102
- end
103
-
104
- def setup_mocks(execution_context)
105
- execution_context.setup_mocks_for_rspec if execution_context.respond_to?(:setup_mocks_for_rspec)
106
- end
107
-
108
- def verify_mocks(execution_context)
109
- execution_context.verify_mocks_for_rspec if execution_context.respond_to?(:verify_mocks_for_rspec)
110
- end
111
-
112
- def teardown_mocks(execution_context)
113
- execution_context.teardown_mocks_for_rspec if execution_context.respond_to?(:teardown_mocks_for_rspec)
114
- end
115
-
116
- def append_errors(errors)
117
- proc {|error| errors << error}
118
- end
119
-
120
- def failure_location(before_each_ok, example_ok, after_each_ok)
121
- return 'before(:each)' unless before_each_ok
122
- return description unless example_ok
123
- return 'after(:each)' unless after_each_ok
124
- end
125
- end
126
- end
127
- end
@@ -1,28 +0,0 @@
1
- module Spec
2
- module DSL
3
- class ExampleMatcher
4
-
5
- attr_writer :example_desc
6
- def initialize(context_desc, example_desc=nil)
7
- @context_desc = context_desc
8
- @example_desc = example_desc
9
- end
10
-
11
- def matches?(specified_examples)
12
- specified_examples.each do |specified_example|
13
- return true if specified_example =~ /(^#{context_regexp} #{example_regexp}$|^#{context_regexp}$|^#{example_regexp}$)/
14
- end
15
- false
16
- end
17
-
18
- private
19
- def context_regexp
20
- Regexp.escape(@context_desc.split('::').last)
21
- end
22
-
23
- def example_regexp
24
- Regexp.escape(@example_desc)
25
- end
26
- end
27
- end
28
- end