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
@@ -0,0 +1,126 @@
1
+ require 'autotest/autotest_helper'
2
+
3
+ describe Autotest::Rspec do
4
+ describe "adding spec.opts --options" do
5
+ before(:each) do
6
+ @rspec_autotest = Autotest::Rspec.new
7
+ end
8
+
9
+ it "should return the command line option to add spec.opts if the options file exists" do
10
+ File.stub!(:exist?).and_return true
11
+ @rspec_autotest.add_options_if_present.should == "-O spec/spec.opts "
12
+ end
13
+
14
+ it "should return an empty string if no spec.opts exists" do
15
+ File.stub!(:exist?).and_return false
16
+ Autotest::Rspec.new.add_options_if_present.should == ""
17
+ end
18
+ end
19
+
20
+ describe "commands" do
21
+ before(:each) do
22
+ @rspec_autotest = Autotest::Rspec.new
23
+ @rspec_autotest.stub!(:ruby).and_return "ruby"
24
+ @rspec_autotest.stub!(:add_options_if_present).and_return "-O spec/spec.opts"
25
+
26
+ @ruby = @rspec_autotest.ruby
27
+ @spec_cmd = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'bin', 'spec'))
28
+ @options = @rspec_autotest.add_options_if_present
29
+ files = %w[file_one file_two]
30
+ @files_to_test = {
31
+ files[0] => [],
32
+ files[1] => []
33
+ }
34
+ # this is not the inner representation of Autotest!
35
+ @rspec_autotest.files_to_test = @files_to_test
36
+ @to_test = files.map { |f| File.expand_path(f) }.join ' '
37
+ end
38
+
39
+ it "should make the appropriate test command" do
40
+ cmd = @rspec_autotest.make_test_cmd(@files_to_test)
41
+ (cmd =~ /#{@ruby} #{@spec_cmd} --autospec (.*) #{@options}/).should be_true
42
+ $1.should =~ /#{File.expand_path('file_one')}/
43
+ $1.should =~ /#{File.expand_path('file_two')}/
44
+ end
45
+
46
+ it "should return a blank command for no files" do
47
+ @rspec_autotest.make_test_cmd({}).should == ''
48
+ end
49
+ end
50
+
51
+ describe "mappings" do
52
+
53
+ before(:each) do
54
+ @lib_file = "lib/something.rb"
55
+ @spec_file = "spec/something_spec.rb"
56
+ @rspec_autotest = Autotest::Rspec.new
57
+ @rspec_autotest.hook :initialize
58
+ end
59
+
60
+ it "should find the spec file for a given lib file" do
61
+ @rspec_autotest.should map_specs([@spec_file]).to(@lib_file)
62
+ end
63
+
64
+ it "should find the spec file if given a spec file" do
65
+ @rspec_autotest.should map_specs([@spec_file]).to(@spec_file)
66
+ end
67
+
68
+ it "should ignore files in spec dir that aren't specs" do
69
+ @rspec_autotest.should map_specs([]).to("spec/spec_helper.rb")
70
+ end
71
+
72
+ it "should ignore untracked files (in @file)" do
73
+ @rspec_autotest.should map_specs([]).to("lib/untracked_file")
74
+ end
75
+ end
76
+
77
+ describe "consolidating failures" do
78
+ before(:each) do
79
+ @rspec_autotest = Autotest::Rspec.new
80
+
81
+ @spec_file = "spec/autotest/some_spec.rb"
82
+ @rspec_autotest.instance_variable_set("@files", {@spec_file => Time.now})
83
+ @rspec_autotest.stub!(:find_files_to_test).and_return true
84
+ end
85
+
86
+ it "should return no failures if no failures were given in the output" do
87
+ @rspec_autotest.consolidate_failures([[]]).should == {}
88
+ end
89
+
90
+ it "should return a hash with the spec filename => spec name for each failure or error" do
91
+ @rspec_autotest.stub!(:test_files_for).and_return "spec/autotest/some_spec.rb"
92
+ failures = [
93
+ [
94
+ "false should be false",
95
+ "expected: true,\n got: false (using ==)\n#{@spec_file}:203:"
96
+ ]
97
+ ]
98
+ @rspec_autotest.consolidate_failures(failures).should == {
99
+ @spec_file => ["false should be false"]
100
+ }
101
+ end
102
+
103
+ it "should not include the subject file" do
104
+ subject_file = "lib/autotest/some.rb"
105
+ @rspec_autotest.stub!(:test_files_for).and_return "spec/autotest/some_spec.rb"
106
+ failures = [
107
+ [
108
+ "false should be false",
109
+ "expected: true,\n got: false (using ==)\n#{subject_file}:143:\n#{@spec_file}:203:"
110
+ ]
111
+ ]
112
+ @rspec_autotest.consolidate_failures(failures).keys.should_not include(subject_file)
113
+ end
114
+ end
115
+
116
+ describe "normalizing file names" do
117
+ it "should ensure that a single file appears in files_to_test only once" do
118
+ @rspec_autotest = Autotest::Rspec.new
119
+ @files_to_test = {}
120
+ ['filename.rb', './filename.rb', File.expand_path('filename.rb')].each do |file|
121
+ @files_to_test[file] = []
122
+ end
123
+ @rspec_autotest.normalize(@files_to_test).should have(1).file
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,13 @@
1
+ require 'rbconfig'
2
+
3
+ module RubyForker
4
+ # Forks a ruby interpreter with same type as ourself.
5
+ # juby will fork jruby, ruby will fork ruby etc.
6
+ def ruby(args, stderr=nil)
7
+ config = ::Config::CONFIG
8
+ interpreter = File::join(config['bindir'], config['ruby_install_name']) + config['EXEEXT']
9
+ cmd = "#{interpreter} #{args}"
10
+ cmd << " 2> #{stderr}" unless stderr.nil?
11
+ `#{cmd}`
12
+ end
13
+ end
@@ -0,0 +1,103 @@
1
+ require 'spec_helper'
2
+
3
+ module Spec
4
+ module DSL
5
+ describe Main do
6
+ before(:each) do
7
+ @main = Class.new do; include Spec::DSL::Main; end
8
+ end
9
+
10
+ [:describe, :context].each do |method|
11
+ describe "##{method}" do
12
+ it "should delegate to Spec::Example::ExampleGroupFactory.create_example_group" do
13
+ block = lambda {|a,b|}
14
+ Spec::Example::ExampleGroupFactory.should_receive(:create_example_group).with(
15
+ "The ExampleGroup", hash_including(:location), &block
16
+ )
17
+ @main.__send__ method, "The ExampleGroup", &block
18
+ end
19
+
20
+ it "raises with no description" do
21
+ block = lambda {|a,b|}
22
+ lambda do
23
+ @main.__send__ method, &block
24
+ end.should raise_error(ArgumentError, /No description supplied for example group declared on #{__FILE__}:#{__LINE__ - 1}/)
25
+ end
26
+ end
27
+ end
28
+
29
+ [:share_examples_for, :shared_examples_for].each do |method|
30
+ describe "##{method}" do
31
+ it "should create a shared ExampleGroup" do
32
+ block = lambda {|a,b|}
33
+ Spec::Example::ExampleGroupFactory.should_receive(:create_shared_example_group).with(
34
+ "shared group", hash_including(:location), &block
35
+ )
36
+ @main.__send__ method, "shared group", &block
37
+ end
38
+ end
39
+ end
40
+
41
+ describe "#describe; with RUBY_VERSION = 1.9" do
42
+ it "includes an enclosing module into the block's scope" do
43
+ Spec::Ruby.stub!(:version).and_return("1.9")
44
+
45
+ module Foo; module Bar; end; end
46
+
47
+ Foo::Bar.should_receive(:included).with do |*args|
48
+ included_by = args.last
49
+ included_by.description.should == "this example group"
50
+ end
51
+
52
+ module Foo
53
+ module Bar
54
+ describe("this example group") do; end
55
+ end
56
+ end
57
+ end
58
+ end
59
+
60
+ describe "#share_as" do
61
+ def self.next_group_name
62
+ @group_number ||= 0
63
+ @group_number += 1
64
+ "Group#{@group_number}"
65
+ end
66
+
67
+ def group_name
68
+ @group_name ||= self.class.next_group_name
69
+ end
70
+
71
+ before(:each) do
72
+ Spec.stub(:deprecate)
73
+ end
74
+
75
+ it "is deprecated" do
76
+ Spec.should_receive(:deprecate)
77
+ share_as group_name do; end
78
+ end
79
+
80
+ it "registers a shared ExampleGroup" do
81
+ block = lambda {|a,b|}
82
+ Spec::Example::ExampleGroupFactory.should_receive(:create_shared_example_group).with(
83
+ group_name, hash_including(:location), &block
84
+ )
85
+ @main.share_as group_name, &block
86
+ end
87
+
88
+ it "creates a constant that points to a Module" do
89
+ group = @main.share_as group_name do end
90
+ Object.const_get(group_name).should equal(group)
91
+ end
92
+
93
+ it "complains if you pass it a not-constantizable name" do
94
+ lambda do
95
+ @group = @main.share_as "Non Constant" do end
96
+ end.should raise_error(NameError, /The first argument to share_as must be a legal name for a constant/)
97
+ end
98
+
99
+ end
100
+ end
101
+ end
102
+ end
103
+
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+
3
+ module Spec
4
+ module Example
5
+ class ExampleGroupSubclass < ExampleGroup
6
+ class << self
7
+ attr_accessor :examples_ran
8
+ end
9
+
10
+ @@class_variable = :class_variable
11
+ CONSTANT = :constant
12
+
13
+ before(:each) do
14
+ @instance_variable = :instance_variable
15
+ end
16
+
17
+ after(:all) do
18
+ self.class.examples_ran = true
19
+ end
20
+
21
+ def a_method
22
+ 22
23
+ end
24
+
25
+ it "can access instance variables defined before(:each)" do
26
+ @instance_variable.should == :instance_variable
27
+ end
28
+
29
+ it "can access class variables (Ruby 1.8 only)" do
30
+ with_ruby 1.8 do
31
+ @@class_variable.should == :class_variable
32
+ end
33
+ end
34
+
35
+ it "can access constants" do
36
+ CONSTANT.should == :constant
37
+ end
38
+
39
+ it "can access methods defined in the Example Group" do
40
+ a_method.should == 22
41
+ end
42
+
43
+ end
44
+
45
+ describe ExampleGroupSubclass do
46
+ it "should run" do
47
+ ExampleGroupSubclass.examples_ran.should be_true
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,180 @@
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