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,604 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Spec
4
- module DSL
5
- class FakeReporter < Spec::Runner::Reporter
6
- attr_reader :added_behaviour
7
- def add_behaviour(description)
8
- @added_behaviour = description
9
- end
10
- end
11
-
12
- describe Behaviour, "class methods" do
13
- before :each do
14
- @reporter = FakeReporter.new(mock("formatter", :null_object => true), mock("backtrace_tweaker", :null_object => true))
15
- @behaviour = Behaviour.new("example") {}
16
- end
17
-
18
- after :each do
19
- Behaviour.clear_before_and_after!
20
- end
21
-
22
- it "should not run before(:all) or after(:all) on dry run" do
23
- before_all_ran = false
24
- after_all_ran = false
25
- Behaviour.before(:all) { before_all_ran = true }
26
- Behaviour.after(:all) { after_all_ran = true }
27
- @behaviour.it("should") {}
28
- @behaviour.run(@reporter, true)
29
- before_all_ran.should be_false
30
- after_all_ran.should be_false
31
- end
32
-
33
- it "should not run any example if before(:all) fails" do
34
- spec_ran = false
35
- Behaviour.before(:all) { raise "help" }
36
- @behaviour.it("test") {spec_ran = true}
37
- @behaviour.run(@reporter)
38
- spec_ran.should be_false
39
- end
40
-
41
- it "should run after(:all) if before(:all) fails" do
42
- after_all_ran = false
43
- Behaviour.before(:all) { raise }
44
- Behaviour.after(:all) { after_all_ran = true }
45
- @behaviour.run(@reporter)
46
- after_all_ran.should be_true
47
- end
48
-
49
- it "should run after(:all) if before(:each) fails" do
50
- after_all_ran = false
51
- Behaviour.before(:each) { raise }
52
- Behaviour.after(:all) { after_all_ran = true }
53
- @behaviour.run(@reporter)
54
- after_all_ran.should be_true
55
- end
56
-
57
- it "should run after(:all) if any example fails" do
58
- after_all_ran = false
59
- @behaviour.it("should") { raise "before all error" }
60
- Behaviour.after(:all) { after_all_ran = true }
61
- @behaviour.run(@reporter)
62
- after_all_ran.should be_true
63
- end
64
-
65
- it "should supply before(:all) as description if failure in before(:all)" do
66
- @reporter.should_receive(:example_finished) do |name, error, location|
67
- name.should eql("before(:all)")
68
- error.message.should eql("in before(:all)")
69
- location.should eql("before(:all)")
70
- end
71
-
72
- Behaviour.before(:all) { raise "in before(:all)" }
73
- @behaviour.it("test") {true}
74
- @behaviour.run(@reporter)
75
- end
76
-
77
- it "should provide after(:all) as description if failure in after(:all)" do
78
- @reporter.should_receive(:example_finished) do |name, error, location|
79
- name.should eql("after(:all)")
80
- error.message.should eql("in after(:all)")
81
- location.should eql("after(:all)")
82
- end
83
-
84
- Behaviour.after(:all) { raise "in after(:all)" }
85
- @behaviour.run(@reporter)
86
- end
87
- end
88
-
89
- describe Behaviour do
90
- before :each do
91
- @reporter = FakeReporter.new(mock("formatter", :null_object => true), mock("backtrace_tweaker", :null_object => true))
92
- @behaviour = Behaviour.new("example") {}
93
- end
94
-
95
- after :each do
96
- Behaviour.clear_before_and_after!
97
- end
98
-
99
- it "should send reporter add_behaviour" do
100
- @behaviour.run(@reporter)
101
- @reporter.added_behaviour.should == "example"
102
- end
103
-
104
- it "should run example on run" do
105
- example_ran = false
106
- @behaviour.it("should") {example_ran = true}
107
- @behaviour.run(@reporter)
108
- example_ran.should be_true
109
- end
110
-
111
- it "should not run example on dry run" do
112
- example_ran = false
113
- @behaviour.it("should") {example_ran = true}
114
- @behaviour.run(@reporter, true)
115
- example_ran.should be_false
116
- end
117
-
118
- it "should not run before(:all) or after(:all) on dry run" do
119
- before_all_ran = false
120
- after_all_ran = false
121
- @behaviour.before(:all) { before_all_ran = true }
122
- @behaviour.after(:all) { after_all_ran = true }
123
- @behaviour.it("should") {}
124
- @behaviour.run(@reporter, true)
125
- before_all_ran.should be_false
126
- after_all_ran.should be_false
127
- end
128
-
129
- it "should not run any example if before(:all) fails" do
130
- spec_ran = false
131
- @behaviour.before(:all) { raise "help" }
132
- @behaviour.it("test") {spec_ran = true}
133
- @behaviour.run(@reporter)
134
- spec_ran.should be_false
135
- end
136
-
137
- it "should run after(:all) if before(:all) fails" do
138
- after_all_ran = false
139
- @behaviour.before(:all) { raise }
140
- @behaviour.after(:all) { after_all_ran = true }
141
- @behaviour.run(@reporter)
142
- after_all_ran.should be_true
143
- end
144
-
145
- it "should run after(:all) if before(:each) fails" do
146
- after_all_ran = false
147
- @behaviour.before(:each) { raise }
148
- @behaviour.after(:all) { after_all_ran = true }
149
- @behaviour.run(@reporter)
150
- after_all_ran.should be_true
151
- end
152
-
153
- it "should run after(:all) if any example fails" do
154
- after_all_ran = false
155
- @behaviour.it("should") { raise "before all error" }
156
- @behaviour.after(:all) { after_all_ran = true }
157
- @behaviour.run(@reporter)
158
- after_all_ran.should be_true
159
- end
160
-
161
- it "should supply before(:all) as description if failure in before(:all)" do
162
- @reporter.should_receive(:example_finished) do |name, error, location|
163
- name.should eql("before(:all)")
164
- error.message.should eql("in before(:all)")
165
- location.should eql("before(:all)")
166
- end
167
-
168
- @behaviour.before(:all) { raise "in before(:all)" }
169
- @behaviour.it("test") {true}
170
- @behaviour.run(@reporter)
171
- end
172
-
173
- it "should provide after(:all) as description if failure in after(:all)" do
174
- @reporter.should_receive(:example_finished) do |name, error, location|
175
- name.should eql("after(:all)")
176
- error.message.should eql("in after(:all)")
177
- location.should eql("after(:all)")
178
- end
179
-
180
- @behaviour.after(:all) { raise "in after(:all)" }
181
- @behaviour.run(@reporter)
182
- end
183
-
184
- it "should run before(:all) block only once" do
185
- before_all_run_count_run_count = 0
186
- @behaviour.before(:all) {before_all_run_count_run_count += 1}
187
- @behaviour.it("test") {true}
188
- @behaviour.it("test2") {true}
189
- @behaviour.run(@reporter)
190
- before_all_run_count_run_count.should == 1
191
- end
192
-
193
- it "calls spec_inherited class method" do
194
- super_class_before_ran = false
195
- super_class = Class.new do
196
- def self.spec_inherited(mod)
197
- mod.before {setup}
198
- end
199
-
200
- define_method :setup do
201
- super_class_before_ran = true
202
- end
203
- end
204
- @behaviour.inherit super_class
205
-
206
- before_ran = false
207
- @behaviour.before {before_ran = true}
208
- @behaviour.it("test") {true}
209
- @behaviour.run(@reporter)
210
- super_class_before_ran.should be_true
211
- before_ran.should be_true
212
- end
213
-
214
- it "should run after(:all) block only once" do
215
- after_all_run_count = 0
216
- @behaviour.after(:all) {after_all_run_count += 1}
217
- @behaviour.it("test") {true}
218
- @behaviour.it("test2") {true}
219
- @behaviour.run(@reporter)
220
- after_all_run_count.should == 1
221
- @reporter.rspec_verify
222
- end
223
-
224
- it "after(:all) should have access to all instance variables defined in before(:all)" do
225
- context_instance_value_in = "Hello there"
226
- context_instance_value_out = ""
227
- @behaviour.before(:all) { @instance_var = context_instance_value_in }
228
- @behaviour.after(:all) { context_instance_value_out = @instance_var }
229
- @behaviour.it("test") {true}
230
- @behaviour.run(@reporter)
231
- context_instance_value_in.should == context_instance_value_out
232
- end
233
-
234
- it "should copy instance variables from before(:all)'s execution context into spec's execution context" do
235
- context_instance_value_in = "Hello there"
236
- context_instance_value_out = ""
237
- @behaviour.before(:all) { @instance_var = context_instance_value_in }
238
- @behaviour.it("test") {context_instance_value_out = @instance_var}
239
- @behaviour.run(@reporter)
240
- context_instance_value_in.should == context_instance_value_out
241
- end
242
-
243
- it "should not add global before callbacks for untargetted behaviours" do
244
- fiddle = []
245
-
246
- Behaviour.before(:all) { fiddle << "Behaviour.before(:all)" }
247
- Behaviour.prepend_before(:all) { fiddle << "Behaviour.prepend_before(:all)" }
248
- Behaviour.before(:each, :behaviour_type => :special) { fiddle << "Behaviour.before(:each, :behaviour_type => :special)" }
249
- Behaviour.prepend_before(:each, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:each, :behaviour_type => :special)" }
250
- Behaviour.before(:all, :behaviour_type => :special) { fiddle << "Behaviour.before(:all, :behaviour_type => :special)" }
251
- Behaviour.prepend_before(:all, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:all, :behaviour_type => :special)" }
252
-
253
- behaviour = Behaviour.new("I'm not special", :behaviour_type => :not_special) {}
254
- behaviour.run(@reporter)
255
- fiddle.should == [
256
- 'Behaviour.prepend_before(:all)',
257
- 'Behaviour.before(:all)',
258
- ]
259
- end
260
-
261
- it "should add global before callbacks for targetted behaviours" do
262
- fiddle = []
263
-
264
- Behaviour.before(:all) { fiddle << "Behaviour.before(:all)" }
265
- Behaviour.prepend_before(:all) { fiddle << "Behaviour.prepend_before(:all)" }
266
- Behaviour.before(:each, :behaviour_type => :special) { fiddle << "Behaviour.before(:each, :behaviour_type => :special)" }
267
- Behaviour.prepend_before(:each, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:each, :behaviour_type => :special)" }
268
- Behaviour.before(:all, :behaviour_type => :special) { fiddle << "Behaviour.before(:all, :behaviour_type => :special)" }
269
- Behaviour.prepend_before(:all, :behaviour_type => :special) { fiddle << "Behaviour.prepend_before(:all, :behaviour_type => :special)" }
270
-
271
- Behaviour.append_before(:behaviour_type => :special) { fiddle << "Behaviour.append_before(:each, :behaviour_type => :special)" }
272
-
273
- behaviour = Behaviour.new("I'm not special", :behaviour_type => :special) {}
274
- behaviour.it("test") {true}
275
- behaviour.run(@reporter)
276
- fiddle.should == [
277
- 'Behaviour.prepend_before(:all)',
278
- 'Behaviour.before(:all)',
279
- 'Behaviour.prepend_before(:all, :behaviour_type => :special)',
280
- 'Behaviour.before(:all, :behaviour_type => :special)',
281
- 'Behaviour.prepend_before(:each, :behaviour_type => :special)',
282
- 'Behaviour.before(:each, :behaviour_type => :special)',
283
- 'Behaviour.append_before(:each, :behaviour_type => :special)',
284
- ]
285
- end
286
-
287
- it "before callbacks are ordered from global to local" do
288
- fiddle = []
289
- super_class = Class.new do
290
- define_method :setup do
291
- fiddle << "superclass setup"
292
- end
293
- end
294
- @behaviour.inherit super_class
295
-
296
- Behaviour.prepend_before(:all) { fiddle << "Behaviour.prepend_before(:all)" }
297
- Behaviour.before(:all) { fiddle << "Behaviour.before(:all)" }
298
- @behaviour.prepend_before(:all) { fiddle << "prepend_before(:all)" }
299
- @behaviour.before(:all) { fiddle << "before(:all)" }
300
- @behaviour.prepend_before(:each) { fiddle << "prepend_before(:each)" }
301
- @behaviour.before(:each) { fiddle << "before(:each)" }
302
- @behaviour.it("test") {true}
303
- @behaviour.run(@reporter)
304
- fiddle.should == [
305
- 'Behaviour.prepend_before(:all)',
306
- 'Behaviour.before(:all)',
307
- 'prepend_before(:all)',
308
- 'before(:all)',
309
- 'prepend_before(:each)',
310
- 'before(:each)'
311
- ]
312
- end
313
-
314
- it "after callbacks are ordered from local to global" do
315
- @reporter.should_receive(:add_behaviour).with :any_args
316
- @reporter.should_receive(:example_finished).with :any_args
317
-
318
- fiddle = []
319
- super_class = Class.new do
320
- define_method :teardown do
321
- fiddle << "superclass teardown"
322
- end
323
- end
324
- @behaviour.inherit super_class
325
-
326
- @behaviour.after(:each) { fiddle << "after(:each)" }
327
- @behaviour.append_after(:each) { fiddle << "append_after(:each)" }
328
- @behaviour.after(:all) { fiddle << "after(:all)" }
329
- @behaviour.append_after(:all) { fiddle << "append_after(:all)" }
330
- Behaviour.after(:all) { fiddle << "Behaviour.after(:all)" }
331
- Behaviour.append_after(:all) { fiddle << "Behaviour.append_after(:all)" }
332
- @behaviour.it("test") {true}
333
- @behaviour.run(@reporter)
334
- fiddle.should == [
335
- 'after(:each)',
336
- 'append_after(:each)',
337
- 'after(:all)',
338
- 'append_after(:all)',
339
- 'Behaviour.after(:all)',
340
- 'Behaviour.append_after(:all)'
341
- ]
342
- end
343
-
344
- it "should run superclass teardown method and after block" do
345
- super_class_teardown_ran = false
346
- super_class = Class.new do
347
- define_method :teardown do
348
- super_class_teardown_ran = true
349
- end
350
- end
351
- @behaviour.inherit super_class
352
-
353
- teardown_ran = false
354
- @behaviour.after {teardown_ran = true}
355
- @behaviour.it("test") {true}
356
- @behaviour.run(@reporter)
357
- super_class_teardown_ran.should be_false
358
- teardown_ran.should be_true
359
- @reporter.rspec_verify
360
- end
361
-
362
- it "should have accessible methods from inherited superclass" do
363
- helper_method_ran = false
364
- super_class = Class.new do
365
- define_method :helper_method do
366
- helper_method_ran = true
367
- end
368
- end
369
- @behaviour.inherit super_class
370
-
371
- @behaviour.it("test") {helper_method}
372
- @behaviour.run(@reporter)
373
- helper_method_ran.should be_true
374
- end
375
-
376
- it "should have accessible class methods from inherited superclass" do
377
- class_method_ran = false
378
- super_class = Class.new
379
- (class << super_class; self; end).class_eval do
380
- define_method :class_method do
381
- class_method_ran = true
382
- end
383
- end
384
- @behaviour.inherit super_class
385
- @behaviour.class_method
386
- class_method_ran.should be_true
387
-
388
- lambda {@behaviour.foobar}.should raise_error(NoMethodError)
389
- end
390
-
391
- it "should include inherited class methods" do
392
- class_method_ran = false
393
- super_class = Class.new
394
- class << super_class
395
- def super_class_class_method; end
396
- end
397
- @behaviour.inherit super_class
398
-
399
- @behaviour.methods.should include("super_class_class_method")
400
- end
401
-
402
- it "should have accessible instance methods from included module" do
403
- @reporter.should_receive(:add_behaviour).with :any_args
404
- @reporter.should_receive(:example_finished).with :any_args
405
-
406
- mod1_method_called = false
407
- mod1 = Module.new do
408
- define_method :mod1_method do
409
- mod1_method_called = true
410
- end
411
- end
412
-
413
- mod2_method_called = false
414
- mod2 = Module.new do
415
- define_method :mod2_method do
416
- mod2_method_called = true
417
- end
418
- end
419
-
420
- @behaviour.include mod1, mod2
421
-
422
- @behaviour.it("test") do
423
- mod1_method
424
- mod2_method
425
- end
426
- @behaviour.run(@reporter)
427
- mod1_method_called.should be_true
428
- mod2_method_called.should be_true
429
- end
430
-
431
- it "should not include untargeted modules" do
432
- special_method_called = false
433
- special_mod = Module.new do
434
- define_method :special_method do
435
- special_method_called = true
436
- end
437
- end
438
-
439
- behaviour = Behaviour.new("I'm not special", :behaviour_type => :not_special) {}
440
- behaviour.include special_mod, :behaviour_type => :special
441
- behaviour.it "test" do
442
- special_method
443
- end
444
- behaviour.run(@reporter)
445
-
446
- special_method_called.should be_false
447
- end
448
-
449
- it "should include targeted modules" do
450
- special_method_called = false
451
- special_mod = Module.new do
452
- define_method :special_method do
453
- special_method_called = true
454
- end
455
- end
456
-
457
- behaviour = Behaviour.new("I'm not special", :behaviour_type => :special) {}
458
- behaviour.include special_mod, :behaviour_type => :special
459
- behaviour.it "test" do
460
- special_method
461
- end
462
- behaviour.run(@reporter)
463
-
464
- special_method_called.should be_true
465
- end
466
-
467
- it "should have accessible class methods from included module" do
468
- mod1_method_called = false
469
- mod1 = Module.new do
470
- class_methods = Module.new do
471
- define_method :mod1_method do
472
- mod1_method_called = true
473
- end
474
- end
475
-
476
- metaclass.class_eval do
477
- define_method(:included) do |receiver|
478
- receiver.extend class_methods
479
- end
480
- end
481
- end
482
-
483
- mod2_method_called = false
484
- mod2 = Module.new do
485
- class_methods = Module.new do
486
- define_method :mod2_method do
487
- mod2_method_called = true
488
- end
489
- end
490
-
491
- metaclass.class_eval do
492
- define_method(:included) do |receiver|
493
- receiver.extend class_methods
494
- end
495
- end
496
- end
497
-
498
- @behaviour.include mod1, mod2
499
-
500
- @behaviour.mod1_method
501
- @behaviour.mod2_method
502
- mod1_method_called.should be_true
503
- mod2_method_called.should be_true
504
- end
505
-
506
- it "should count number of specs" do
507
- @behaviour.it("one") {}
508
- @behaviour.it("two") {}
509
- @behaviour.it("three") {}
510
- @behaviour.it("four") {}
511
- @behaviour.number_of_examples.should == 4
512
- end
513
-
514
- it "should not match anything when there are no examples" do
515
- @behaviour.should_not be_matches(['context'])
516
- end
517
-
518
- it "should match when one of the examples match" do
519
- example = mock('my example')
520
- example.should_receive(:matches?).and_return(true)
521
- @behaviour.stub!(:examples).and_return([example])
522
- @behaviour.should be_matches(['jalla'])
523
- end
524
-
525
- it "should include any modules included using configuration" do
526
- mod1 = Module.new do
527
- class << self
528
- def included(mod)
529
- $included_modules << self
530
- end
531
- end
532
- end
533
-
534
- mod2 = Module.new do
535
- class << self
536
- def included(mod)
537
- $included_modules << self
538
- end
539
- end
540
- end
541
-
542
- begin
543
- $included_modules = []
544
- Spec::Runner.configuration.include(mod1, mod2)
545
-
546
- behaviour = Behaviour.new('example') do
547
- end.run(@reporter)
548
-
549
- $included_modules.should include(mod1)
550
- $included_modules.should include(mod2)
551
- ensure
552
- Spec::Runner.configuration.included_modules.delete(mod1)
553
- Spec::Runner.configuration.included_modules.delete(mod2)
554
- end
555
- end
556
-
557
- it "should include any predicate_matchers included using configuration" do
558
- $included_predicate_matcher_found = false
559
- Spec::Runner.configuration.predicate_matchers[:do_something] = :does_something?
560
- Behaviour.new('example') do
561
- it "should respond to do_something" do
562
- $included_predicate_matcher_found = respond_to?(:do_something)
563
- end
564
- end.run(@reporter)
565
- $included_predicate_matcher_found.should be(true)
566
- end
567
-
568
- it "should use a mock framework set up in config" do
569
- mod = Module.new do
570
- class << self
571
- def included(mod)
572
- $included_module = mod
573
- end
574
- end
575
- end
576
-
577
- begin
578
- $included_module = nil
579
- Spec::Runner.configuration.mock_with mod
580
-
581
- behaviour = Behaviour.new('example') do
582
- end.run(@reporter)
583
-
584
- $included_module.should_not be_nil
585
- ensure
586
- Spec::Runner.configuration.mock_with :rspec
587
- end
588
- end
589
-
590
- end
591
-
592
- class BehaviourSubclass < Behaviour
593
- public :described_type
594
- end
595
-
596
- describe Behaviour, " subclass" do
597
- it "should have access to the described_type" do
598
- BehaviourSubclass.new(Example){}.described_type.should == Example
599
- end
600
-
601
- # TODO - add an example about shared behaviours
602
- end
603
- end
604
- end
@@ -1,57 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Spec
4
- module DSL
5
- describe CompositeProcBuilder do
6
- before(:each) do
7
- @klass = Class.new do
8
- attr_reader :an_attribute
9
-
10
- def an_attribute_setter
11
- @an_attribute = :the_value
12
- end
13
- end
14
-
15
- @parent = @klass.new
16
- @builder = CompositeProcBuilder.new {}
17
- end
18
-
19
- it "calls all of its child procs" do
20
- @builder << proc {:proc1}
21
- @builder << proc {:proc2}
22
- @builder.proc.call.should == [:proc1, :proc2]
23
- end
24
-
25
- it "calls block on exceptions" do
26
- exception1 = Exception.new("Proc1 Error")
27
- exception2 = Exception.new("Proc2 Error")
28
- @builder << proc {raise exception1}
29
- @builder << proc {raise exception2}
30
- @builder << proc {:successful}
31
-
32
- errors = []
33
- @builder.proc {|e| errors << e }.call.should == [exception1, exception2, :successful]
34
-
35
- errors.should == [exception1, exception2]
36
- end
37
-
38
- it "evals procs in the caller's instance" do
39
- the_proc = proc do
40
- @an_attribute = :the_value
41
- end
42
- the_proc.class.should == Proc
43
- @builder << the_proc
44
- @parent.instance_eval &@builder.proc
45
- @parent.an_attribute.should == :the_value
46
- end
47
-
48
- it "binds unbound methods to the parent" do
49
- unbound_method = @klass.instance_method(:an_attribute_setter)
50
- unbound_method.class.should == UnboundMethod
51
- @builder << unbound_method
52
- @parent.instance_eval &@builder.proc
53
- @parent.an_attribute.should == :the_value
54
- end
55
- end
56
- end
57
- end