rspec 1.3.2 → 2.0.0.a2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (398) hide show
  1. data/.document +4 -6
  2. data/.gitignore +4 -14
  3. data/License.txt +1 -1
  4. data/README.markdown +46 -0
  5. data/Rakefile +26 -100
  6. data/lib/rspec.rb +4 -0
  7. data/lib/rspec/version.rb +14 -0
  8. data/rspec.gemspec +46 -19
  9. metadata +72 -673
  10. data/.autotest +0 -5
  11. data/Gemfile +0 -20
  12. data/History.rdoc +0 -1560
  13. data/README.rdoc +0 -44
  14. data/Ruby1.9.rdoc +0 -31
  15. data/TODO.txt +0 -17
  16. data/Upgrade.rdoc +0 -260
  17. data/bin/autospec +0 -4
  18. data/bin/spec +0 -5
  19. data/cucumber.yml +0 -5
  20. data/example_spec.rb +0 -4
  21. data/examples/failing/README.txt +0 -11
  22. data/examples/failing/diffing_spec.rb +0 -36
  23. data/examples/failing/failing_implicit_docstrings_example.rb +0 -17
  24. data/examples/failing/failure_in_after.rb +0 -10
  25. data/examples/failing/failure_in_before.rb +0 -10
  26. data/examples/failing/mocking_example.rb +0 -38
  27. data/examples/failing/mocking_with_flexmock.rb +0 -26
  28. data/examples/failing/mocking_with_mocha.rb +0 -25
  29. data/examples/failing/mocking_with_rr.rb +0 -27
  30. data/examples/failing/partial_mock_example.rb +0 -18
  31. data/examples/failing/pending_example.rb +0 -7
  32. data/examples/failing/predicate_example.rb +0 -32
  33. data/examples/failing/raising_example.rb +0 -47
  34. data/examples/failing/syntax_error_example.rb +0 -7
  35. data/examples/failing/team_spec.rb +0 -41
  36. data/examples/failing/timeout_behaviour.rb +0 -5
  37. data/examples/passing/custom_formatter.rb +0 -11
  38. data/examples/passing/custom_matchers.rb +0 -54
  39. data/examples/passing/dynamic_spec.rb +0 -7
  40. data/examples/passing/file_accessor.rb +0 -18
  41. data/examples/passing/file_accessor_spec.rb +0 -37
  42. data/examples/passing/filtered_formatter.rb +0 -17
  43. data/examples/passing/filtered_formatter_example.rb +0 -31
  44. data/examples/passing/greeter_spec.rb +0 -30
  45. data/examples/passing/helper_method_example.rb +0 -12
  46. data/examples/passing/implicit_docstrings_example.rb +0 -16
  47. data/examples/passing/io_processor.rb +0 -8
  48. data/examples/passing/io_processor_spec.rb +0 -20
  49. data/examples/passing/mocking_example.rb +0 -25
  50. data/examples/passing/multi_threaded_example_group_runner.rb +0 -26
  51. data/examples/passing/nested_classes_example.rb +0 -35
  52. data/examples/passing/options_example.rb +0 -29
  53. data/examples/passing/options_formatter.rb +0 -20
  54. data/examples/passing/partial_mock_example.rb +0 -27
  55. data/examples/passing/pending_example.rb +0 -18
  56. data/examples/passing/predicate_example.rb +0 -25
  57. data/examples/passing/shared_example_group_example.rb +0 -43
  58. data/examples/passing/shared_stack_examples.rb +0 -36
  59. data/examples/passing/simple_matcher_example.rb +0 -29
  60. data/examples/passing/stack.rb +0 -36
  61. data/examples/passing/stack_spec.rb +0 -63
  62. data/examples/passing/stack_spec_with_nested_example_groups.rb +0 -66
  63. data/examples/passing/stubbing_example.rb +0 -67
  64. data/examples/passing/yielding_example.rb +0 -31
  65. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +0 -85
  66. data/features-pending/cli/conditional_exclusion.feature +0 -39
  67. data/features-pending/heckle/heckle.feature +0 -56
  68. data/features/before_and_after_blocks/before_and_after_blocks.feature +0 -167
  69. data/features/command_line/line_number_option.feature +0 -56
  70. data/features/command_line/line_number_option_with_example_with_no_name.feature +0 -22
  71. data/features/example_groups/define_example_attribute.feature +0 -41
  72. data/features/example_groups/example_group_with_should_methods.feature +0 -29
  73. data/features/example_groups/implicit_docstrings.feature +0 -59
  74. data/features/example_groups/nested_groups.feature +0 -32
  75. data/features/expectations/customized_message.feature +0 -54
  76. data/features/expectations/expect_change.feature +0 -65
  77. data/features/expectations/expect_error.feature +0 -44
  78. data/features/extensions/custom_example_group.feature +0 -19
  79. data/features/formatters/custom_formatter.feature +0 -30
  80. data/features/formatters/nested_formatter.feature +0 -32
  81. data/features/interop/cucumber_stubs_dont_leak.feature +0 -11
  82. data/features/interop/examples_and_tests_together.feature +0 -84
  83. data/features/interop/rspec_output.feature +0 -25
  84. data/features/interop/test_but_not_test_unit.feature +0 -26
  85. data/features/interop/test_case_with_should_methods.feature +0 -46
  86. data/features/load_paths/add_lib_to_load_path.feature +0 -20
  87. data/features/load_paths/add_spec_to_load_path.feature +0 -20
  88. data/features/matchers/define_diffable_matcher.feature +0 -26
  89. data/features/matchers/define_matcher.feature +0 -179
  90. data/features/matchers/define_matcher_outside_rspec.feature +0 -37
  91. data/features/matchers/define_matcher_with_fluent_interface.feature +0 -48
  92. data/features/matchers/define_wrapped_matcher.feature +0 -56
  93. data/features/matchers/match_unless_raises.feature +0 -60
  94. data/features/matchers/match_unless_raises_unexpected_error.feature +0 -39
  95. data/features/mock_framework_integration/use_flexmock.feature +0 -27
  96. data/features/mock_framework_integration/use_mocha.feature +0 -27
  97. data/features/mock_framework_integration/use_rr.feature +0 -27
  98. data/features/mocks/block_local_expectations.feature +0 -62
  99. data/features/mocks/mix_stubs_and_mocks.feature +0 -22
  100. data/features/mocks/stub_implementation.feature +0 -26
  101. data/features/pending/pending_examples.feature +0 -81
  102. data/features/runner/specify_line_number.feature +0 -32
  103. data/features/spec_helper/spec_helper.feature +0 -25
  104. data/features/step_definitions/running_rspec_steps.rb +0 -52
  105. data/features/step_definitions/stubbing_steps.rb +0 -16
  106. data/features/subject/explicit_subject.feature +0 -31
  107. data/features/subject/implicit_subject.feature +0 -43
  108. data/features/support/env.rb +0 -83
  109. data/features/support/matchers/smart_match.rb +0 -31
  110. data/init.rb +0 -9
  111. data/lib/autotest/discover.rb +0 -3
  112. data/lib/autotest/rspec.rb +0 -54
  113. data/lib/spec.rb +0 -8
  114. data/lib/spec/adapters/mock_frameworks/flexmock.rb +0 -24
  115. data/lib/spec/adapters/mock_frameworks/mocha.rb +0 -25
  116. data/lib/spec/adapters/mock_frameworks/rr.rb +0 -22
  117. data/lib/spec/adapters/mock_frameworks/rspec.rb +0 -21
  118. data/lib/spec/autorun.rb +0 -3
  119. data/lib/spec/deprecation.rb +0 -41
  120. data/lib/spec/dsl.rb +0 -1
  121. data/lib/spec/dsl/main.rb +0 -93
  122. data/lib/spec/example.rb +0 -164
  123. data/lib/spec/example/args_and_options.rb +0 -27
  124. data/lib/spec/example/before_and_after_hooks.rb +0 -93
  125. data/lib/spec/example/errors.rb +0 -25
  126. data/lib/spec/example/example_group.rb +0 -10
  127. data/lib/spec/example/example_group_factory.rb +0 -82
  128. data/lib/spec/example/example_group_hierarchy.rb +0 -53
  129. data/lib/spec/example/example_group_methods.rb +0 -287
  130. data/lib/spec/example/example_group_proxy.rb +0 -61
  131. data/lib/spec/example/example_matcher.rb +0 -43
  132. data/lib/spec/example/example_methods.rb +0 -152
  133. data/lib/spec/example/example_proxy.rb +0 -41
  134. data/lib/spec/example/module_reopening_fix.rb +0 -43
  135. data/lib/spec/example/pending.rb +0 -18
  136. data/lib/spec/example/predicate_matchers.rb +0 -46
  137. data/lib/spec/example/shared_example_group.rb +0 -59
  138. data/lib/spec/example/subject.rb +0 -114
  139. data/lib/spec/expectations.rb +0 -35
  140. data/lib/spec/expectations/errors.rb +0 -12
  141. data/lib/spec/expectations/extensions.rb +0 -1
  142. data/lib/spec/expectations/extensions/kernel.rb +0 -52
  143. data/lib/spec/expectations/fail_with.rb +0 -45
  144. data/lib/spec/expectations/handler.rb +0 -50
  145. data/lib/spec/extensions/instance_exec.rb +0 -31
  146. data/lib/spec/interop/test.rb +0 -44
  147. data/lib/spec/interop/test/unit/autorunner.rb +0 -6
  148. data/lib/spec/interop/test/unit/testcase.rb +0 -56
  149. data/lib/spec/interop/test/unit/testresult.rb +0 -6
  150. data/lib/spec/interop/test/unit/testsuite_adapter.rb +0 -36
  151. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +0 -61
  152. data/lib/spec/matchers.rb +0 -214
  153. data/lib/spec/matchers/be.rb +0 -249
  154. data/lib/spec/matchers/be_close.rb +0 -32
  155. data/lib/spec/matchers/be_instance_of.rb +0 -26
  156. data/lib/spec/matchers/be_kind_of.rb +0 -26
  157. data/lib/spec/matchers/change.rb +0 -151
  158. data/lib/spec/matchers/compatibility.rb +0 -14
  159. data/lib/spec/matchers/dsl.rb +0 -20
  160. data/lib/spec/matchers/eql.rb +0 -42
  161. data/lib/spec/matchers/equal.rb +0 -53
  162. data/lib/spec/matchers/errors.rb +0 -5
  163. data/lib/spec/matchers/exist.rb +0 -16
  164. data/lib/spec/matchers/generated_descriptions.rb +0 -36
  165. data/lib/spec/matchers/has.rb +0 -35
  166. data/lib/spec/matchers/have.rb +0 -152
  167. data/lib/spec/matchers/include.rb +0 -44
  168. data/lib/spec/matchers/match.rb +0 -21
  169. data/lib/spec/matchers/match_array.rb +0 -71
  170. data/lib/spec/matchers/matcher.rb +0 -132
  171. data/lib/spec/matchers/method_missing.rb +0 -9
  172. data/lib/spec/matchers/operator_matcher.rb +0 -83
  173. data/lib/spec/matchers/pretty.rb +0 -37
  174. data/lib/spec/matchers/raise_exception.rb +0 -131
  175. data/lib/spec/matchers/respond_to.rb +0 -71
  176. data/lib/spec/matchers/satisfy.rb +0 -47
  177. data/lib/spec/matchers/simple_matcher.rb +0 -134
  178. data/lib/spec/matchers/throw_symbol.rb +0 -100
  179. data/lib/spec/matchers/wrap_expectation.rb +0 -55
  180. data/lib/spec/mocks.rb +0 -200
  181. data/lib/spec/mocks/argument_expectation.rb +0 -51
  182. data/lib/spec/mocks/argument_matchers.rb +0 -237
  183. data/lib/spec/mocks/error_generator.rb +0 -92
  184. data/lib/spec/mocks/errors.rb +0 -10
  185. data/lib/spec/mocks/example_methods.rb +0 -69
  186. data/lib/spec/mocks/extensions.rb +0 -1
  187. data/lib/spec/mocks/extensions/object.rb +0 -3
  188. data/lib/spec/mocks/framework.rb +0 -15
  189. data/lib/spec/mocks/message_expectation.rb +0 -344
  190. data/lib/spec/mocks/methods.rb +0 -94
  191. data/lib/spec/mocks/mock.rb +0 -71
  192. data/lib/spec/mocks/order_group.rb +0 -29
  193. data/lib/spec/mocks/proxy.rb +0 -254
  194. data/lib/spec/mocks/space.rb +0 -28
  195. data/lib/spec/rake/spectask.rb +0 -230
  196. data/lib/spec/rake/verify_rcov.rb +0 -52
  197. data/lib/spec/ruby.rb +0 -9
  198. data/lib/spec/runner.rb +0 -66
  199. data/lib/spec/runner/backtrace_tweaker.rb +0 -78
  200. data/lib/spec/runner/class_and_arguments_parser.rb +0 -14
  201. data/lib/spec/runner/command_line.rb +0 -15
  202. data/lib/spec/runner/configuration.rb +0 -202
  203. data/lib/spec/runner/differs/default.rb +0 -93
  204. data/lib/spec/runner/differs/load-diff-lcs.rb +0 -12
  205. data/lib/spec/runner/drb_command_line.rb +0 -32
  206. data/lib/spec/runner/example_group_runner.rb +0 -58
  207. data/lib/spec/runner/extensions/kernel.rb +0 -9
  208. data/lib/spec/runner/formatter/base_formatter.rb +0 -139
  209. data/lib/spec/runner/formatter/base_text_formatter.rb +0 -142
  210. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +0 -25
  211. data/lib/spec/runner/formatter/failing_examples_formatter.rb +0 -20
  212. data/lib/spec/runner/formatter/html_formatter.rb +0 -338
  213. data/lib/spec/runner/formatter/nested_text_formatter.rb +0 -50
  214. data/lib/spec/runner/formatter/no_op_method_missing.rb +0 -21
  215. data/lib/spec/runner/formatter/profile_formatter.rb +0 -47
  216. data/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -33
  217. data/lib/spec/runner/formatter/silent_formatter.rb +0 -10
  218. data/lib/spec/runner/formatter/snippet_extractor.rb +0 -52
  219. data/lib/spec/runner/formatter/specdoc_formatter.rb +0 -33
  220. data/lib/spec/runner/formatter/text_mate_formatter.rb +0 -16
  221. data/lib/spec/runner/heckle_runner.rb +0 -77
  222. data/lib/spec/runner/heckle_runner_unsupported.rb +0 -10
  223. data/lib/spec/runner/line_number_query.rb +0 -78
  224. data/lib/spec/runner/option_parser.rb +0 -225
  225. data/lib/spec/runner/options.rb +0 -406
  226. data/lib/spec/runner/reporter.rb +0 -171
  227. data/lib/spec/stubs/cucumber.rb +0 -5
  228. data/lib/spec/test/unit.rb +0 -10
  229. data/lib/spec/version.rb +0 -14
  230. data/resources/helpers/cmdline.rb +0 -8
  231. data/resources/rake/examples.rake +0 -7
  232. data/resources/rake/examples_with_rcov.rake +0 -9
  233. data/resources/rake/failing_examples_with_html.rake +0 -9
  234. data/resources/rake/verify_rcov.rake +0 -7
  235. data/spec/README.jruby +0 -15
  236. data/spec/autotest/autotest_helper.rb +0 -8
  237. data/spec/autotest/autotest_matchers.rb +0 -38
  238. data/spec/autotest/discover_spec.rb +0 -8
  239. data/spec/autotest/failed_results_re_spec.rb +0 -31
  240. data/spec/autotest/rspec_spec.rb +0 -126
  241. data/spec/ruby_forker.rb +0 -13
  242. data/spec/spec.opts +0 -6
  243. data/spec/spec/dsl/main_spec.rb +0 -103
  244. data/spec/spec/example/example_group_class_definition_spec.rb +0 -51
  245. data/spec/spec/example/example_group_factory_spec.rb +0 -180
  246. data/spec/spec/example/example_group_methods_spec.rb +0 -778
  247. data/spec/spec/example/example_group_proxy_spec.rb +0 -107
  248. data/spec/spec/example/example_group_spec.rb +0 -632
  249. data/spec/spec/example/example_matcher_spec.rb +0 -85
  250. data/spec/spec/example/example_methods_spec.rb +0 -162
  251. data/spec/spec/example/example_proxy_spec.rb +0 -57
  252. data/spec/spec/example/helper_method_spec.rb +0 -24
  253. data/spec/spec/example/nested_example_group_spec.rb +0 -71
  254. data/spec/spec/example/pending_module_spec.rb +0 -58
  255. data/spec/spec/example/predicate_matcher_spec.rb +0 -41
  256. data/spec/spec/example/shared_example_group_spec.rb +0 -257
  257. data/spec/spec/example/subclassing_example_group_spec.rb +0 -25
  258. data/spec/spec/example/subject_spec.rb +0 -110
  259. data/spec/spec/expectations/differs/default_spec.rb +0 -194
  260. data/spec/spec/expectations/extensions/kernel_spec.rb +0 -45
  261. data/spec/spec/expectations/fail_with_spec.rb +0 -96
  262. data/spec/spec/expectations/handler_spec.rb +0 -206
  263. data/spec/spec/expectations/wrap_expectation_spec.rb +0 -31
  264. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +0 -10
  265. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +0 -10
  266. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +0 -10
  267. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +0 -13
  268. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +0 -10
  269. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +0 -10
  270. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +0 -10
  271. data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +0 -22
  272. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +0 -38
  273. data/spec/spec/interop/test/unit/spec_spec.rb +0 -48
  274. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +0 -18
  275. data/spec/spec/interop/test/unit/testcase_spec.rb +0 -50
  276. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +0 -9
  277. data/spec/spec/matchers/be_close_spec.rb +0 -50
  278. data/spec/spec/matchers/be_instance_of_spec.rb +0 -36
  279. data/spec/spec/matchers/be_kind_of_spec.rb +0 -33
  280. data/spec/spec/matchers/be_spec.rb +0 -460
  281. data/spec/spec/matchers/change_spec.rb +0 -349
  282. data/spec/spec/matchers/compatibility_spec.rb +0 -28
  283. data/spec/spec/matchers/description_generation_spec.rb +0 -160
  284. data/spec/spec/matchers/dsl_spec.rb +0 -34
  285. data/spec/spec/matchers/eql_spec.rb +0 -33
  286. data/spec/spec/matchers/equal_spec.rb +0 -57
  287. data/spec/spec/matchers/exist_spec.rb +0 -65
  288. data/spec/spec/matchers/has_spec.rb +0 -190
  289. data/spec/spec/matchers/have_spec.rb +0 -381
  290. data/spec/spec/matchers/include_spec.rb +0 -88
  291. data/spec/spec/matchers/match_array_spec.rb +0 -115
  292. data/spec/spec/matchers/match_spec.rb +0 -57
  293. data/spec/spec/matchers/matcher_spec.rb +0 -289
  294. data/spec/spec/matchers/matchers_spec.rb +0 -2
  295. data/spec/spec/matchers/operator_matcher_spec.rb +0 -191
  296. data/spec/spec/matchers/pretty_spec.rb +0 -22
  297. data/spec/spec/matchers/raise_exception_spec.rb +0 -345
  298. data/spec/spec/matchers/respond_to_spec.rb +0 -116
  299. data/spec/spec/matchers/satisfy_spec.rb +0 -36
  300. data/spec/spec/matchers/simple_matcher_spec.rb +0 -100
  301. data/spec/spec/matchers/throw_symbol_spec.rb +0 -121
  302. data/spec/spec/mocks/and_yield_spec.rb +0 -117
  303. data/spec/spec/mocks/any_number_of_times_spec.rb +0 -36
  304. data/spec/spec/mocks/argument_expectation_spec.rb +0 -23
  305. data/spec/spec/mocks/argument_matchers_spec.rb +0 -19
  306. data/spec/spec/mocks/at_least_spec.rb +0 -97
  307. data/spec/spec/mocks/at_most_spec.rb +0 -93
  308. data/spec/spec/mocks/bug_report_10260_spec.rb +0 -8
  309. data/spec/spec/mocks/bug_report_10263_spec.rb +0 -27
  310. data/spec/spec/mocks/bug_report_1049_spec.rb +0 -30
  311. data/spec/spec/mocks/bug_report_11545_spec.rb +0 -32
  312. data/spec/spec/mocks/bug_report_15719_spec.rb +0 -30
  313. data/spec/spec/mocks/bug_report_496_spec.rb +0 -17
  314. data/spec/spec/mocks/bug_report_600_spec.rb +0 -22
  315. data/spec/spec/mocks/bug_report_7611_spec.rb +0 -19
  316. data/spec/spec/mocks/bug_report_7805_spec.rb +0 -22
  317. data/spec/spec/mocks/bug_report_8165_spec.rb +0 -31
  318. data/spec/spec/mocks/bug_report_8302_spec.rb +0 -26
  319. data/spec/spec/mocks/bug_report_830_spec.rb +0 -21
  320. data/spec/spec/mocks/bug_report_957_spec.rb +0 -22
  321. data/spec/spec/mocks/double_spec.rb +0 -12
  322. data/spec/spec/mocks/failing_argument_matchers_spec.rb +0 -95
  323. data/spec/spec/mocks/hash_including_matcher_spec.rb +0 -90
  324. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +0 -67
  325. data/spec/spec/mocks/mock_ordering_spec.rb +0 -94
  326. data/spec/spec/mocks/mock_space_spec.rb +0 -54
  327. data/spec/spec/mocks/mock_spec.rb +0 -601
  328. data/spec/spec/mocks/multiple_return_value_spec.rb +0 -113
  329. data/spec/spec/mocks/nil_expectation_warning_spec.rb +0 -53
  330. data/spec/spec/mocks/null_object_mock_spec.rb +0 -54
  331. data/spec/spec/mocks/once_counts_spec.rb +0 -53
  332. data/spec/spec/mocks/options_hash_spec.rb +0 -35
  333. data/spec/spec/mocks/partial_mock_spec.rb +0 -164
  334. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +0 -66
  335. data/spec/spec/mocks/passing_argument_matchers_spec.rb +0 -145
  336. data/spec/spec/mocks/precise_counts_spec.rb +0 -52
  337. data/spec/spec/mocks/record_messages_spec.rb +0 -26
  338. data/spec/spec/mocks/stub_chain_spec.rb +0 -42
  339. data/spec/spec/mocks/stub_implementation_spec.rb +0 -31
  340. data/spec/spec/mocks/stub_spec.rb +0 -203
  341. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +0 -26
  342. data/spec/spec/mocks/twice_counts_spec.rb +0 -67
  343. data/spec/spec/mocks/unstub_spec.rb +0 -127
  344. data/spec/spec/package/bin_spec_spec.rb +0 -16
  345. data/spec/spec/rake/spectask_spec.rb +0 -150
  346. data/spec/spec/runner/class_and_argument_parser_spec.rb +0 -23
  347. data/spec/spec/runner/command_line_spec.rb +0 -162
  348. data/spec/spec/runner/configuration_spec.rb +0 -320
  349. data/spec/spec/runner/drb_command_line_spec.rb +0 -146
  350. data/spec/spec/runner/empty_file.txt +0 -0
  351. data/spec/spec/runner/example_group_runner_spec.rb +0 -26
  352. data/spec/spec/runner/examples.txt +0 -2
  353. data/spec/spec/runner/failed.txt +0 -3
  354. data/spec/spec/runner/formatter/base_formatter_spec.rb +0 -30
  355. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +0 -113
  356. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +0 -45
  357. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +0 -33
  358. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +0 -377
  359. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +0 -377
  360. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +0 -377
  361. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +0 -377
  362. data/spec/spec/runner/formatter/html_formatted-1.9.2.html +0 -377
  363. data/spec/spec/runner/formatter/html_formatter_spec.rb +0 -118
  364. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +0 -329
  365. data/spec/spec/runner/formatter/profile_formatter_spec.rb +0 -70
  366. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +0 -149
  367. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +0 -18
  368. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +0 -159
  369. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +0 -371
  370. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +0 -371
  371. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +0 -371
  372. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +0 -371
  373. data/spec/spec/runner/formatter/text_mate_formatted-1.9.2.html +0 -371
  374. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +0 -106
  375. data/spec/spec/runner/heckle_runner_spec.rb +0 -78
  376. data/spec/spec/runner/heckler_spec.rb +0 -20
  377. data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +0 -70
  378. data/spec/spec/runner/line_number_query_spec.rb +0 -129
  379. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +0 -51
  380. data/spec/spec/runner/option_parser_spec.rb +0 -551
  381. data/spec/spec/runner/options_spec.rb +0 -554
  382. data/spec/spec/runner/output_one_time_fixture.rb +0 -7
  383. data/spec/spec/runner/output_one_time_fixture_runner.rb +0 -7
  384. data/spec/spec/runner/output_one_time_spec.rb +0 -15
  385. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +0 -123
  386. data/spec/spec/runner/reporter_spec.rb +0 -244
  387. data/spec/spec/runner/resources/a_bar.rb +0 -0
  388. data/spec/spec/runner/resources/a_foo.rb +0 -0
  389. data/spec/spec/runner/resources/a_spec.rb +0 -1
  390. data/spec/spec/runner/resources/custom_example_group_runner.rb +0 -14
  391. data/spec/spec/runner/resources/utf8_encoded.rb +0 -8
  392. data/spec/spec/runner/spec.opts +0 -2
  393. data/spec/spec/runner/spec_drb.opts +0 -2
  394. data/spec/spec/runner/spec_spaced.opts +0 -2
  395. data/spec/spec/runner_spec.rb +0 -13
  396. data/spec/spec_helper.rb +0 -113
  397. data/spec/support/macros.rb +0 -29
  398. data/spec/support/spec_classes.rb +0 -133
@@ -1,180 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spec
4
- module Example
5
- describe ExampleGroupFactory do
6
- describe "#get" do
7
- attr_reader :example_group
8
- before(:each) do
9
- @example_group_class = Class.new(ExampleGroupDouble)
10
- ExampleGroupFactory.register(:registered_type, @example_group_class)
11
- end
12
-
13
- after(:each) do
14
- ExampleGroupFactory.reset
15
- end
16
-
17
- it "should return the default ExampleGroup type for nil" do
18
- ExampleGroupFactory[nil].should == ExampleGroup
19
- end
20
-
21
- it "should return the default ExampleGroup for an unregistered non-nil value" do
22
- ExampleGroupFactory[:does_not_exist].should == ExampleGroup
23
- end
24
-
25
- it "should return custom type if registered" do
26
- ExampleGroupFactory[:registered_type].should == @example_group_class
27
- end
28
-
29
- it "should get the custom type after setting the default" do
30
- @alternate_example_group_class = Class.new(ExampleGroupDouble)
31
- ExampleGroupFactory.default(@alternate_example_group_class)
32
- ExampleGroupFactory[:registered_type].should == @example_group_class
33
- end
34
- end
35
-
36
- describe "#create_example_group" do
37
- attr_reader :parent_example_group
38
- before do
39
- @parent_example_group = Class.new(ExampleGroupDouble) do
40
- def initialize(*args, &block)
41
- ;
42
- end
43
- end
44
- end
45
-
46
- it "should create a uniquely named class" do
47
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
48
- example_group.name.should =~ /Spec::Example::ExampleGroup::Subclass_\d+/
49
- end
50
-
51
- it "should create a Spec::Example::Example subclass by default" do
52
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("example_group") {}
53
- example_group.superclass.should == Spec::Example::ExampleGroup
54
- end
55
-
56
- it "should raise when no description is given" do
57
- lambda {
58
- Spec::Example::ExampleGroupFactory.create_example_group do; end
59
- }.should raise_error(ArgumentError)
60
- end
61
-
62
- it "should raise when no block is given" do
63
- lambda { Spec::Example::ExampleGroupFactory.create_example_group "foo" }.should raise_error(ArgumentError)
64
- end
65
-
66
- it "should run registered ExampleGroups" do
67
- example_group = Spec::Example::ExampleGroupFactory.create_example_group "The ExampleGroup" do end
68
- Spec::Runner.options.example_groups.should include(example_group)
69
- end
70
-
71
- it "should not run unregistered ExampleGroups" do
72
- example_group = Spec::Example::ExampleGroupFactory.create_example_group "The ExampleGroup" do Spec::Runner.options.remove_example_group self; end
73
- Spec::Runner.options.example_groups.should_not include(example_group)
74
- end
75
-
76
- describe "with :type => :default" do
77
- it "should create a Spec::Example::ExampleGroup" do
78
- example_group = Spec::Example::ExampleGroupFactory.create_example_group(
79
- "example_group", :type => :default
80
- ) {}
81
- example_group.superclass.should == Spec::Example::ExampleGroup
82
- end
83
- end
84
-
85
- describe "with :type => :something_other_than_default" do
86
- it "should create the specified type" do
87
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
88
- non_default_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
89
- "example_group", :type => :something_other_than_default
90
- ) {}
91
- non_default_example_group.superclass.should == parent_example_group
92
- end
93
- end
94
-
95
- it "should create a type indicated by :location" do
96
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
97
- custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
98
- "example_group", :location => "./spec/something_other_than_default/some_spec.rb"
99
- ) {}
100
- custom_example_group.superclass.should == parent_example_group
101
- end
102
-
103
- it "should create a type indicated by :location (with location generated by caller on windows)" do
104
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
105
- custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
106
- "example_group",
107
- :location => "./spec\\something_other_than_default\\some_spec.rb"
108
- ) {}
109
- custom_example_group.superclass.should == parent_example_group
110
- end
111
-
112
- it "should create a type indicated by location for a path-like key" do
113
- Spec::Example::ExampleGroupFactory.register('path/to/custom/', parent_example_group)
114
- custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
115
- "example_group", :location => "./spec/path/to/custom/some_spec.rb"
116
- ) {}
117
- custom_example_group.superclass.should == parent_example_group
118
- end
119
-
120
- it "should use the longest key that matches when creating a type indicated by location" do
121
- longer = Class.new parent_example_group
122
- Spec::Example::ExampleGroupFactory.register(:longer, longer)
123
- long = Class.new parent_example_group
124
- Spec::Example::ExampleGroupFactory.register(:long, long)
125
- custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
126
- "example_group", :location => "./spec/longer/some_spec.rb"
127
- ) {}
128
- custom_example_group.superclass.should == longer
129
- end
130
-
131
- describe "with :shared => true" do
132
- def shared_example_group
133
- @shared_example_group ||= Spec::Example::ExampleGroupFactory.create_example_group(
134
- "name", :location => '/blah/spec/models/blah.rb', :type => :controller, :shared => true
135
- ) {}
136
- end
137
-
138
- it "should create and register a Spec::Example::SharedExampleGroup" do
139
- shared_example_group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
140
- SharedExampleGroup.should include(shared_example_group)
141
- end
142
- end
143
-
144
- it "should favor the :type over the :location" do
145
- Spec::Example::ExampleGroupFactory.register(:something_other_than_default, parent_example_group)
146
- custom_example_group = Spec::Example::ExampleGroupFactory.create_example_group(
147
- "name", :location => '/blah/spec/models/blah.rb', :type => :something_other_than_default
148
- ) {}
149
- custom_example_group.superclass.should == parent_example_group
150
- end
151
-
152
- it "should register ExampleGroup by default" do
153
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
154
- end
155
- Spec::Runner.options.example_groups.should include(example_group)
156
- end
157
-
158
- it "should enable unregistering of ExampleGroups" do
159
- example_group = Spec::Example::ExampleGroupFactory.create_example_group("The ExampleGroup") do
160
- Spec::Runner.options.remove_example_group self
161
- end
162
- Spec::Runner.options.example_groups.should_not include(example_group)
163
- end
164
-
165
- after(:each) do
166
- Spec::Example::ExampleGroupFactory.reset
167
- end
168
- end
169
-
170
- describe "#create_shared_example_group" do
171
- it "registers a new shared example group" do
172
- shared_example_group = Spec::Example::ExampleGroupFactory.create_shared_example_group("something shared") {}
173
- shared_example_group.should be_an_instance_of(Spec::Example::SharedExampleGroup)
174
- SharedExampleGroup.should include(shared_example_group)
175
- end
176
- end
177
-
178
- end
179
- end
180
- end
@@ -1,778 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Spec
4
- module Example
5
- describe 'ExampleGroupMethods' do
6
- with_sandboxed_options do
7
- attr_reader :example_group, :result, :reporter
8
- before(:each) do
9
- # See http://rspec.lighthouseapp.com/projects/5645-rspec/tickets/525-arity-changed-on-partial-mocks#ticket-525-2
10
- method_with_three_args = lambda { |arg1, arg2, arg3| }
11
- options.formatters << mock("formatter", :null_object => true, :example_pending => method_with_three_args)
12
- options.backtrace_tweaker = mock("backtrace_tweaker", :null_object => true)
13
- @reporter = FakeReporter.new(@options)
14
- options.reporter = reporter
15
- @example_group = Class.new(ExampleGroupDouble) do
16
- describe("ExampleGroup")
17
- it "does nothing"
18
- end
19
- end
20
-
21
- after(:each) do
22
- ExampleGroupDouble.reset
23
- end
24
-
25
- ["describe","context"].each do |method|
26
- describe "##{method}" do
27
- describe "when creating an ExampleGroup" do
28
- before(:each) do
29
- @parent_example_group = Class.new(ExampleGroupDouble) do
30
- example "first example" do; end
31
- end
32
- @child_example_group = @parent_example_group.__send__ method, "Child" do
33
- example "second example" do; end
34
- end
35
- end
36
-
37
- it "should create a subclass of the ExampleGroup when passed a block" do
38
- @child_example_group.superclass.should == @parent_example_group
39
- options.example_groups.should include(@child_example_group)
40
- end
41
-
42
- it "should not inherit examples" do
43
- @child_example_group.should have(1).examples
44
- end
45
-
46
- it "records the spec path" do
47
- @child_example_group.location.should =~ /#{__FILE__}:#{__LINE__ - 15}/
48
- end
49
- end
50
-
51
- describe "when creating an example group with no description" do
52
- it "raises an ArgumentError" do
53
- lambda do
54
- Class.new(ExampleGroupDouble).describe
55
- end.should raise_error(Spec::Example::NoDescriptionError, /No description supplied for example group declared on #{__FILE__}:#{__LINE__ - 1}/)
56
- end
57
- end
58
-
59
- describe "when creating a SharedExampleGroup" do
60
- before(:each) do
61
- @shared_example_group = @example_group.__send__ method, "A Shared ExampleGroup", :shared => true do; end
62
- end
63
-
64
- after(:each) do
65
- SharedExampleGroup.instance_eval{@shared_example_groups}.delete @shared_example_group
66
- end
67
-
68
- it "should create a SharedExampleGroup" do
69
- @shared_example_group.should_not be_nil
70
- SharedExampleGroup.find("A Shared ExampleGroup").should == @shared_example_group
71
- end
72
- end
73
-
74
- end
75
- end
76
-
77
- [:example, :specify, :it].each do |method|
78
- describe "##{method.to_s}" do
79
- it "should add an example" do
80
- lambda {
81
- @example_group.__send__(method, "")
82
- }.should change { @example_group.examples.length }.by(1)
83
- end
84
-
85
- describe "with no location supplied" do
86
- describe "creates an ExampleProxy" do
87
- before(:all) do
88
- @example_group = Class.new(ExampleGroupDouble).describe("bar")
89
- @example_proxy = @example_group.__send__(method, "foo", {:this => :that}) {}
90
- @location = "#{__FILE__}:#{__LINE__ - 1}"
91
- end
92
-
93
- specify "with a description" do
94
- @example_proxy.description.should == "foo"
95
- end
96
-
97
- specify "with options" do
98
- @example_proxy.options.should == {:this => :that}
99
- end
100
-
101
- specify "with a default backtrace (DEPRECATED)" do
102
- Spec.stub!(:deprecate)
103
- @example_proxy.backtrace.should =~ /#{@location}/
104
- end
105
-
106
- specify "with a default location" do
107
- @example_proxy.location.should =~ /#{@location}/
108
- end
109
- end
110
- end
111
-
112
- describe "with a location supplied" do
113
- describe "creates an ExampleProxy" do
114
- before(:all) do
115
- @example_group = Class.new(ExampleGroupDouble).describe("bar")
116
- @example_proxy = @example_group.__send__(method, "foo", {:this => :that}, "the location") {}
117
- end
118
-
119
- specify "with the supplied location as #backtrace (DEPRECATED)" do
120
- Spec.stub!(:deprecate)
121
- @example_proxy.backtrace.should == "the location"
122
- end
123
-
124
- specify "with the supplied location as #location" do
125
- @example_proxy.location.should == "the location"
126
- end
127
- end
128
- end
129
-
130
-
131
- end
132
- end
133
-
134
- [:xexample, :xit, :xspecify].each do |method|
135
- describe "##{method.to_s}" do
136
- before(:each) do
137
- Kernel.stub!(:warn)
138
- end
139
-
140
- it "should NOT create an example" do
141
- lambda {
142
- @example_group.__send__(method,"")
143
- }.should_not change(@example_group.examples, :length)
144
- end
145
-
146
- it "should warn that the example is disabled" do
147
- Kernel.should_receive(:warn).with("Example disabled: foo")
148
- @example_group.__send__(method,"foo")
149
- end
150
- end
151
- end
152
-
153
- describe "#examples" do
154
- it "should have Examples" do
155
- example_group = Class.new(ExampleGroupDouble) do
156
- it "should exist" do; end
157
- end
158
- example_group.examples.length.should == 1
159
- example_group.examples.first.description.should == "should exist"
160
- end
161
-
162
- it "should not include methods that begin with test (only when TU interop is loaded)" do
163
- example_group = Class.new(ExampleGroupDouble) do
164
- def test_any_args(*args)
165
- true.should be_true
166
- end
167
- def test_something
168
- 1.should == 1
169
- end
170
- def test
171
- raise "This is not a real test"
172
- end
173
- def testify
174
- raise "This is not a real test"
175
- end
176
- def should_something
177
- # forces the run
178
- end
179
- end
180
-
181
- example_group.examples.length.should == 1
182
- example_group.run(options).should be_true
183
- end
184
-
185
- it "should include methods that begin with should and has an arity of 0 in suite" do
186
- example_group = Class.new(ExampleGroupDouble) do
187
- def shouldCamelCase
188
- true.should be_true
189
- end
190
- def should_any_args(*args)
191
- true.should be_true
192
- end
193
- def should_something
194
- 1.should == 1
195
- end
196
- def should_not_something
197
- 1.should_not == 2
198
- end
199
- def should
200
- raise "This is not a real example"
201
- end
202
- def should_not
203
- raise "This is not a real example"
204
- end
205
- end
206
- example_group.should have(4).examples
207
- descriptions = example_group.examples.collect {|e| e.description}
208
- descriptions.should include(
209
- "shouldCamelCase",
210
- "should_any_args",
211
- "should_something",
212
- "should_not_something")
213
- descriptions.should_not include(
214
- "should",
215
- "should_not"
216
- )
217
- end
218
-
219
- it "should not include methods that begin with test_ and has an arity > 0 in suite" do
220
- example_group = Class.new(ExampleGroupDouble) do
221
- def test_invalid(foo)
222
- 1.should == 1
223
- end
224
- def testInvalidCamelCase(foo)
225
- 1.should == 1
226
- end
227
- end
228
- example_group.should have(:no).examples
229
- end
230
-
231
- it "should not include methods that begin with should_ and has an arity > 0 in suite" do
232
- example_group = Class.new(ExampleGroupDouble) do
233
- def should_invalid(foo)
234
- 1.should == 2
235
- end
236
- def shouldInvalidCamelCase(foo)
237
- 1.should == 3
238
- end
239
- def should_not_invalid(foo)
240
- 1.should == 4
241
- end
242
- def should_valid
243
- 1.should == 1
244
- end
245
- end
246
- example_group.should have(1).examples
247
- example_group.run(options).should be_true
248
- end
249
-
250
- it "should run should_methods" do
251
- example_group = Class.new(ExampleGroupDouble) do
252
- def should_valid
253
- 1.should == 2
254
- end
255
- end
256
- example_group.should have(1).examples
257
- example_group.run(options).should be_false
258
- end
259
- end
260
-
261
- describe "#set_description" do
262
- attr_reader :example_group
263
- before do
264
- class << example_group
265
- public :set_description
266
- end
267
- end
268
-
269
- describe "given a String" do
270
- before(:each) do
271
- example_group.set_description("abc")
272
- end
273
-
274
- specify ".description should return the String passed into .set_description" do
275
- example_group.description.should == "abc"
276
- end
277
-
278
- specify ".described_type should provide nil as its type" do
279
- example_group.described_type.should be_nil
280
- end
281
- end
282
-
283
- describe "given a Class" do
284
- before(:each) do
285
- example_group.set_description(ExampleGroup)
286
- end
287
-
288
- specify ".description should return a String representation of that type (fully qualified) as its name" do
289
- example_group.description.should == "Spec::Example::ExampleGroup"
290
- end
291
-
292
- specify ".described_type should return the passed in type" do
293
- example_group.described_type.should == Spec::Example::ExampleGroup
294
- end
295
- end
296
-
297
- describe "given a String and a Class" do
298
- before(:each) do
299
- example_group.set_description("behaving", ExampleGroup)
300
- end
301
-
302
- specify ".description should return String then space then Type" do
303
- example_group.description.should == "behaving Spec::Example::ExampleGroup"
304
- end
305
-
306
- specify ".described_type should return the passed in type" do
307
- example_group.described_type.should == Spec::Example::ExampleGroup
308
- end
309
- end
310
-
311
- describe "given a Class and a String (starting with an alpha char)" do
312
- before(:each) do
313
- example_group.set_description(ExampleGroup, "behaving")
314
- end
315
-
316
- specify ".description should return the Type then space then String" do
317
- example_group.description.should == "Spec::Example::ExampleGroup behaving"
318
- end
319
- end
320
-
321
- describe "given a Class and a String (starting with a '.')" do
322
- before(:each) do
323
- example_group.set_description(ExampleGroup, ".behaving")
324
- end
325
-
326
- specify ".description should return the Type then String" do
327
- example_group.description.should == "Spec::Example::ExampleGroup.behaving"
328
- end
329
- end
330
-
331
- describe "#set_description(Class, String starting with #)" do
332
- before(:each) do
333
- example_group.set_description(ExampleGroup, "#behaving")
334
- end
335
-
336
- specify "should return the Class then String" do
337
- example_group.description.should == "Spec::Example::ExampleGroup#behaving"
338
- end
339
- end
340
-
341
- describe "#set_description(Class, String containing .)" do
342
- before(:each) do
343
- example_group.set_description(ExampleGroup, "calling a.b")
344
- end
345
-
346
- specify ".description should return the Type then space then String" do
347
- example_group.description.should == "Spec::Example::ExampleGroup calling a.b"
348
- end
349
- end
350
-
351
- describe "#set_description(Class, String containing #)" do
352
- before(:each) do
353
- example_group.set_description(ExampleGroup, "is #1")
354
- end
355
-
356
- specify ".description should return the Type then space then String" do
357
- example_group.description.should == "Spec::Example::ExampleGroup is #1"
358
- end
359
- end
360
-
361
- describe "#set_description(String, Type, String)" do
362
- before(:each) do
363
- example_group.set_description("A", Hash, "with one entry")
364
- end
365
-
366
- specify ".description should return the first String then space then Type then second String" do
367
- example_group.description.should == "A Hash with one entry"
368
- end
369
- end
370
-
371
- describe "#set_description(Hash representing options)" do
372
- before(:each) do
373
- example_group.set_description(:a => "b", :location => "blah")
374
- end
375
-
376
- it ".location should expand the passed in :location option passed into the constructor" do
377
- example_group.location.should == File.expand_path("blah")
378
- end
379
-
380
- it ".options should return all the options passed in" do
381
- example_group.options.should == {:a => "b", :location => "blah"}
382
- end
383
-
384
- end
385
- end
386
-
387
- describe "#description" do
388
- it "should return the same description instance for each call" do
389
- example_group.description.should eql(example_group.description)
390
- end
391
-
392
- it "should not add a space when description begins with #" do
393
- child_example_group = Class.new(example_group) do
394
- describe("#foobar", "Does something")
395
- end
396
- child_example_group.description.should == "ExampleGroup#foobar Does something"
397
- end
398
-
399
- it "should not add a space when description begins with ." do
400
- child_example_group = Class.new(example_group) do
401
- describe(".foobar", "Does something")
402
- end
403
- child_example_group.description.should == "ExampleGroup.foobar Does something"
404
- end
405
-
406
- it "should return the class name if nil" do
407
- example_group.set_description(nil)
408
- example_group.description.should =~ /Class:/
409
- end
410
-
411
- it "should return the class name if nil" do
412
- example_group.set_description("")
413
- example_group.description.should =~ /Class:/
414
- end
415
-
416
- it "is cached" do
417
- example_group.set_description("describe me")
418
- example_group.description.should be(example_group.description)
419
- end
420
- end
421
-
422
- describe "#description_parts" do
423
- it "should return an Array of the current class description args" do
424
- example_group.description_parts.should == [example_group.description]
425
- end
426
-
427
- it "should return an Array of the description args from each class in the hierarchy" do
428
- parent_example_group = Class.new(ExampleGroupDouble) do
429
- describe("Parent")
430
- end
431
-
432
- child_example_group = Class.new(parent_example_group)
433
- child_example_group.describe("Child", ExampleGroup)
434
- child_example_group.description.should_not be_empty
435
-
436
- grand_child_example_group = Class.new(child_example_group)
437
- grand_child_example_group.describe("GrandChild", ExampleGroup)
438
- grand_child_example_group.description.should_not be_empty
439
-
440
- grand_child_example_group.description_parts.should == [
441
- "Parent",
442
- "Child",
443
- Spec::Example::ExampleGroup,
444
- "GrandChild",
445
- Spec::Example::ExampleGroup
446
- ]
447
- end
448
-
449
- it "caches the description parts" do
450
- example_group.description_parts.should equal(example_group.description_parts)
451
- end
452
- end
453
-
454
- describe "#described_type" do
455
- it "should return passed in type" do
456
- child_example_group = Class.new(example_group) do
457
- describe Object
458
- end
459
- child_example_group.described_type.should == Object
460
- end
461
-
462
- it "should return #described_type of superclass when no passed in type" do
463
- parent_example_group = Class.new(ExampleGroupDouble) do
464
- describe Object, "#foobar"
465
- end
466
- child_example_group = Class.new(parent_example_group) do
467
- describe "not a type"
468
- end
469
- child_example_group.described_type.should == Object
470
- end
471
-
472
- it "is cached per example group" do
473
- klass = Class.new
474
- group = Class.new(ExampleGroupDouble) do
475
- describe(klass)
476
- end
477
- group.should_receive(:description_parts).once.and_return([klass])
478
- group.described_type
479
- group.described_type
480
- end
481
- end
482
-
483
- describe "#include" do
484
- it "should have accessible class methods from included module" do
485
- mod_method_called = false
486
- mod = Module.new do
487
- class_methods = Module.new do
488
- define_method :mod_method do
489
- mod_method_called = true
490
- end
491
- end
492
-
493
- self.class.class_eval do
494
- define_method(:included) do |receiver|
495
- receiver.extend class_methods
496
- end
497
- end
498
- end
499
-
500
- @example_group.__send__ :include, mod
501
-
502
- @example_group.mod_method
503
- mod_method_called.should be_true
504
- end
505
- end
506
-
507
- describe "#number_of_examples" do
508
- it "should count number of examples" do
509
- proc do
510
- @example_group.it("one") {}
511
- @example_group.it("two") {}
512
- @example_group.it("three") {}
513
- @example_group.it("four") {}
514
- end.should change {@example_group.number_of_examples}.by(4)
515
- end
516
- end
517
-
518
- describe "#class_eval" do
519
- it "should allow constants to be defined" do
520
- example_group = Class.new(ExampleGroupDouble) do
521
- FOO = 1
522
- it "should reference FOO" do
523
- FOO.should == 1
524
- end
525
- end
526
- success = example_group.run(options)
527
- success.should be_true
528
- Object.const_defined?(:FOO).should == false
529
- end
530
- end
531
-
532
- describe '#register' do
533
- after(:each) do
534
- Spec::Runner.options.remove_example_group example_group
535
- end
536
- it "should add ExampleGroup to set of ExampleGroups to be run" do
537
- Spec::Runner.options.add_example_group example_group
538
- options.example_groups.should include(example_group)
539
- end
540
- end
541
-
542
- describe '#remove_example_group' do
543
- before(:each) do
544
- Spec::Runner.options.add_example_group example_group
545
- end
546
- it "should remove ExampleGroup from set of ExampleGroups to be run" do
547
- Spec::Runner.options.remove_example_group example_group
548
- options.example_groups.should_not include(example_group)
549
- end
550
- end
551
-
552
- describe "#run" do
553
- describe "given an example group with at least one example" do
554
- it "should call add_example_group" do
555
- example_group = Class.new(ExampleGroupDouble) do
556
- example("anything") {}
557
- end
558
- reporter.should_receive(:add_example_group)
559
- example_group.run(options)
560
- end
561
- end
562
-
563
- describe "given an example group with no examples" do
564
- it "should NOT call add_example_group" do
565
- example_group = Class.new(ExampleGroupDouble) do end
566
- reporter.should_not_receive(:add_example_group)
567
- example_group.run(options)
568
- end
569
- end
570
- end
571
-
572
- describe "#matcher_class=" do
573
- it "should call new and matches? on the class used for matching examples" do
574
- example_group = Class.new(ExampleGroupDouble) do
575
- it "should do something" do end
576
- def self.specified_examples
577
- ["something"]
578
- end
579
- def self.to_s
580
- "TestMatcher"
581
- end
582
- end
583
-
584
- matcher = mock("matcher")
585
- matcher.should_receive(:matches?).with(["something"]).any_number_of_times
586
-
587
- matcher_class = Class.new
588
- matcher_class.should_receive(:new).with("TestMatcher", "should do something").and_return(matcher)
589
-
590
- begin
591
- ExampleGroupMethods.matcher_class = matcher_class
592
-
593
- example_group.run(options)
594
- ensure
595
- ExampleGroupMethods.matcher_class = ExampleMatcher
596
- end
597
- end
598
- end
599
-
600
- describe "#options" do
601
- it "should expose the options hash" do
602
- group = describe("group", :this => 'hash') {}
603
- group.options[:this].should == 'hash'
604
- end
605
- end
606
-
607
- describe "#before" do
608
- it "stores before(:each) blocks" do
609
- example_group = Class.new(ExampleGroupDouble) {}
610
- block = lambda {}
611
- example_group.before(:each, &block)
612
- example_group.before_each_parts.should include(block)
613
- end
614
-
615
- it "stores before(:all) blocks" do
616
- example_group = Class.new(ExampleGroupDouble) {}
617
- block = lambda {}
618
- example_group.before(:all, &block)
619
- example_group.before_all_parts.should include(block)
620
- end
621
-
622
- it "stores before(:suite) blocks" do
623
- example_group = Class.new(ExampleGroupDouble) {}
624
- parts = []
625
- ExampleGroupMethods.stub!(:before_suite_parts).and_return(parts)
626
- block = lambda {}
627
- example_group.before(:suite, &block)
628
- example_group.before_suite_parts.should include(block)
629
- end
630
- end
631
-
632
-
633
- describe "#after" do
634
- it "stores after(:each) blocks" do
635
- example_group = Class.new(ExampleGroupDouble) {}
636
- block = lambda {}
637
- example_group.after(:each, &block)
638
- example_group.after_each_parts.should include(block)
639
- end
640
-
641
- it "stores after(:all) blocks" do
642
- example_group = Class.new(ExampleGroupDouble) {}
643
- block = lambda {}
644
- example_group.after(:all, &block)
645
- example_group.after_all_parts.should include(block)
646
- end
647
-
648
- it "stores after(:suite) blocks" do
649
- example_group = Class.new(ExampleGroupDouble) {}
650
- parts = []
651
- ExampleGroupMethods.stub!(:after_suite_parts).and_return(parts)
652
- block = lambda {}
653
- example_group.after(:suite, &block)
654
- example_group.after_suite_parts.should include(block)
655
- end
656
- end
657
-
658
- describe "#run_before_all" do
659
- it "does not create an instance if before_all_parts are empty" do
660
- example_group = Class.new(ExampleGroupDouble) { example("one example") {} }
661
- example_group.should_not_receive(:new)
662
- example_group.__send__ :run_before_all, nil
663
- end
664
- end
665
-
666
- describe "#run_after_all" do
667
- it "does not create an instance if after_all_parts are empty" do
668
- example_group = Class.new(ExampleGroupDouble) { example("one example") {} }
669
- example_group.should_not_receive(:new)
670
- example_group.__send__ :run_after_all, true, {}, nil
671
- end
672
- end
673
-
674
- describe "#examples_to_run" do
675
- it "runs only the example identified by a line number" do
676
- example_group = Class.new(ExampleGroupDouble).describe("this") do
677
- it { 3.should == 3 }
678
- it "has another example which raises" do
679
- raise "this shouldn't have run"
680
- end
681
- end
682
- options.examples << :ignore
683
- options.line_number = __LINE__ - 6
684
- options.files << __FILE__
685
- example_group.run(options).should be_true
686
- end
687
-
688
- it "runs the example identified by a line number even if it's not the example line number" do
689
- example_group = Class.new(ExampleGroupDouble).describe("this") do
690
-
691
- it { raise "foo" }
692
-
693
- end
694
- options.examples << :ignore
695
- options.line_number = __LINE__ - 3
696
- options.files << __FILE__
697
- example_group.run(options).should be_false
698
- end
699
-
700
- it "runs all the examples in the group " do
701
- first_example_ran = false
702
- second_example_ran = false
703
- example_group = Class.new(ExampleGroupDouble).describe("this") do
704
-
705
- it { first_example_ran = true }
706
- it { second_example_ran = true }
707
-
708
- end
709
- options.line_number = __LINE__ - 6
710
- options.files << __FILE__
711
- options.examples << :ignore
712
- example_group.run(options)
713
- first_example_ran.should be_true
714
- second_example_ran.should be_true
715
- end
716
-
717
- it "doesn't run any examples in another group" do
718
- example_ran = false
719
- example_group_1 = Class.new(ExampleGroupDouble).describe("this") do
720
- it "ignore" do
721
- example_ran = true
722
- end
723
- end
724
- example_group_2 = Class.new(ExampleGroupDouble).describe("that") do
725
- end
726
- options.examples << :ignore
727
- options.line_number = __LINE__ - 3
728
- options.files << __FILE__
729
- example_group_1.run(options)
730
- example_group_2.run(options)
731
- example_ran.should be_false
732
- end
733
- end
734
-
735
- describe "#let" do
736
- let(:counter) do
737
- Class.new do
738
- def initialize
739
- @count = 0
740
- end
741
- def count
742
- @count += 1
743
- end
744
- end.new
745
- end
746
-
747
- it "generates an instance method" do
748
- counter.count.should == 1
749
- end
750
-
751
- it "caches the value" do
752
- counter.count.should == 1
753
- counter.count.should == 2
754
- end
755
- end
756
-
757
- describe "#let!" do
758
- let!(:creator) do
759
- class Creator
760
- @count = 0
761
- def self.count
762
- @count += 1
763
- end
764
- end
765
- end
766
-
767
- it "evaluates the value non-lazily" do
768
- lambda { Creator.count }.should_not raise_error
769
- end
770
-
771
- it "does not interfere between tests" do
772
- Creator.count.should == 1
773
- end
774
- end
775
- end
776
- end
777
- end
778
- end