rspec-instructure 1.3.3

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 (395) hide show
  1. data/.autotest +5 -0
  2. data/.document +7 -0
  3. data/.gitignore +15 -0
  4. data/Gemfile +20 -0
  5. data/History.rdoc +1565 -0
  6. data/License.txt +22 -0
  7. data/README.rdoc +44 -0
  8. data/Rakefile +110 -0
  9. data/Ruby1.9.rdoc +31 -0
  10. data/TODO.txt +17 -0
  11. data/Upgrade.rdoc +260 -0
  12. data/bin/autospec +4 -0
  13. data/bin/spec +5 -0
  14. data/cucumber.yml +5 -0
  15. data/example_spec.rb +4 -0
  16. data/examples/failing/README.txt +11 -0
  17. data/examples/failing/diffing_spec.rb +36 -0
  18. data/examples/failing/failing_implicit_docstrings_example.rb +17 -0
  19. data/examples/failing/failure_in_after.rb +10 -0
  20. data/examples/failing/failure_in_before.rb +10 -0
  21. data/examples/failing/mocking_example.rb +38 -0
  22. data/examples/failing/mocking_with_flexmock.rb +26 -0
  23. data/examples/failing/mocking_with_mocha.rb +25 -0
  24. data/examples/failing/mocking_with_rr.rb +27 -0
  25. data/examples/failing/partial_mock_example.rb +18 -0
  26. data/examples/failing/pending_example.rb +7 -0
  27. data/examples/failing/predicate_example.rb +32 -0
  28. data/examples/failing/raising_example.rb +47 -0
  29. data/examples/failing/syntax_error_example.rb +7 -0
  30. data/examples/failing/team_spec.rb +41 -0
  31. data/examples/failing/timeout_behaviour.rb +5 -0
  32. data/examples/passing/custom_formatter.rb +11 -0
  33. data/examples/passing/custom_matchers.rb +54 -0
  34. data/examples/passing/dynamic_spec.rb +7 -0
  35. data/examples/passing/file_accessor.rb +18 -0
  36. data/examples/passing/file_accessor_spec.rb +37 -0
  37. data/examples/passing/filtered_formatter.rb +17 -0
  38. data/examples/passing/filtered_formatter_example.rb +31 -0
  39. data/examples/passing/greeter_spec.rb +30 -0
  40. data/examples/passing/helper_method_example.rb +12 -0
  41. data/examples/passing/implicit_docstrings_example.rb +16 -0
  42. data/examples/passing/io_processor.rb +8 -0
  43. data/examples/passing/io_processor_spec.rb +20 -0
  44. data/examples/passing/mocking_example.rb +25 -0
  45. data/examples/passing/multi_threaded_example_group_runner.rb +26 -0
  46. data/examples/passing/nested_classes_example.rb +35 -0
  47. data/examples/passing/options_example.rb +29 -0
  48. data/examples/passing/options_formatter.rb +20 -0
  49. data/examples/passing/partial_mock_example.rb +27 -0
  50. data/examples/passing/pending_example.rb +18 -0
  51. data/examples/passing/predicate_example.rb +25 -0
  52. data/examples/passing/shared_example_group_example.rb +43 -0
  53. data/examples/passing/shared_stack_examples.rb +36 -0
  54. data/examples/passing/simple_matcher_example.rb +29 -0
  55. data/examples/passing/stack.rb +36 -0
  56. data/examples/passing/stack_spec.rb +63 -0
  57. data/examples/passing/stack_spec_with_nested_example_groups.rb +66 -0
  58. data/examples/passing/stubbing_example.rb +67 -0
  59. data/examples/passing/yielding_example.rb +31 -0
  60. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +85 -0
  61. data/features-pending/cli/conditional_exclusion.feature +39 -0
  62. data/features-pending/heckle/heckle.feature +56 -0
  63. data/features/before_and_after_blocks/before_and_after_blocks.feature +167 -0
  64. data/features/command_line/line_number_option.feature +56 -0
  65. data/features/command_line/line_number_option_with_example_with_no_name.feature +22 -0
  66. data/features/example_groups/define_example_attribute.feature +41 -0
  67. data/features/example_groups/example_group_with_should_methods.feature +29 -0
  68. data/features/example_groups/implicit_docstrings.feature +59 -0
  69. data/features/example_groups/nested_groups.feature +32 -0
  70. data/features/expectations/customized_message.feature +54 -0
  71. data/features/expectations/expect_change.feature +65 -0
  72. data/features/expectations/expect_error.feature +44 -0
  73. data/features/extensions/custom_example_group.feature +19 -0
  74. data/features/formatters/custom_formatter.feature +30 -0
  75. data/features/formatters/nested_formatter.feature +32 -0
  76. data/features/interop/cucumber_stubs_dont_leak.feature +11 -0
  77. data/features/interop/examples_and_tests_together.feature +84 -0
  78. data/features/interop/rspec_output.feature +25 -0
  79. data/features/interop/test_but_not_test_unit.feature +26 -0
  80. data/features/interop/test_case_with_should_methods.feature +46 -0
  81. data/features/load_paths/add_lib_to_load_path.feature +20 -0
  82. data/features/load_paths/add_spec_to_load_path.feature +20 -0
  83. data/features/matchers/define_diffable_matcher.feature +26 -0
  84. data/features/matchers/define_matcher.feature +179 -0
  85. data/features/matchers/define_matcher_outside_rspec.feature +37 -0
  86. data/features/matchers/define_matcher_with_fluent_interface.feature +48 -0
  87. data/features/matchers/define_wrapped_matcher.feature +56 -0
  88. data/features/matchers/match_unless_raises.feature +60 -0
  89. data/features/matchers/match_unless_raises_unexpected_error.feature +39 -0
  90. data/features/mock_framework_integration/use_flexmock.feature +27 -0
  91. data/features/mock_framework_integration/use_mocha.feature +27 -0
  92. data/features/mock_framework_integration/use_rr.feature +27 -0
  93. data/features/mocks/block_local_expectations.feature +62 -0
  94. data/features/mocks/mix_stubs_and_mocks.feature +22 -0
  95. data/features/mocks/stub_implementation.feature +26 -0
  96. data/features/pending/pending_examples.feature +81 -0
  97. data/features/runner/specify_line_number.feature +32 -0
  98. data/features/spec_helper/spec_helper.feature +25 -0
  99. data/features/step_definitions/running_rspec_steps.rb +52 -0
  100. data/features/step_definitions/stubbing_steps.rb +16 -0
  101. data/features/subject/explicit_subject.feature +31 -0
  102. data/features/subject/implicit_subject.feature +43 -0
  103. data/features/support/env.rb +83 -0
  104. data/features/support/matchers/smart_match.rb +31 -0
  105. data/init.rb +9 -0
  106. data/lib/autotest/discover.rb +3 -0
  107. data/lib/autotest/rspec.rb +54 -0
  108. data/lib/spec.rb +8 -0
  109. data/lib/spec/adapters/mock_frameworks/flexmock.rb +24 -0
  110. data/lib/spec/adapters/mock_frameworks/mocha.rb +25 -0
  111. data/lib/spec/adapters/mock_frameworks/rr.rb +22 -0
  112. data/lib/spec/adapters/mock_frameworks/rspec.rb +21 -0
  113. data/lib/spec/autorun.rb +3 -0
  114. data/lib/spec/deprecation.rb +41 -0
  115. data/lib/spec/dsl.rb +1 -0
  116. data/lib/spec/dsl/main.rb +93 -0
  117. data/lib/spec/example.rb +164 -0
  118. data/lib/spec/example/args_and_options.rb +27 -0
  119. data/lib/spec/example/before_and_after_hooks.rb +93 -0
  120. data/lib/spec/example/errors.rb +25 -0
  121. data/lib/spec/example/example_group.rb +10 -0
  122. data/lib/spec/example/example_group_factory.rb +82 -0
  123. data/lib/spec/example/example_group_hierarchy.rb +53 -0
  124. data/lib/spec/example/example_group_methods.rb +287 -0
  125. data/lib/spec/example/example_group_proxy.rb +61 -0
  126. data/lib/spec/example/example_matcher.rb +43 -0
  127. data/lib/spec/example/example_methods.rb +152 -0
  128. data/lib/spec/example/example_proxy.rb +41 -0
  129. data/lib/spec/example/module_reopening_fix.rb +43 -0
  130. data/lib/spec/example/pending.rb +18 -0
  131. data/lib/spec/example/predicate_matchers.rb +46 -0
  132. data/lib/spec/example/shared_example_group.rb +59 -0
  133. data/lib/spec/example/subject.rb +114 -0
  134. data/lib/spec/expectations.rb +35 -0
  135. data/lib/spec/expectations/errors.rb +12 -0
  136. data/lib/spec/expectations/extensions.rb +1 -0
  137. data/lib/spec/expectations/extensions/kernel.rb +52 -0
  138. data/lib/spec/expectations/fail_with.rb +45 -0
  139. data/lib/spec/expectations/handler.rb +50 -0
  140. data/lib/spec/extensions/instance_exec.rb +31 -0
  141. data/lib/spec/interop/test.rb +44 -0
  142. data/lib/spec/interop/test/unit/autorunner.rb +6 -0
  143. data/lib/spec/interop/test/unit/testcase.rb +56 -0
  144. data/lib/spec/interop/test/unit/testresult.rb +6 -0
  145. data/lib/spec/interop/test/unit/testsuite_adapter.rb +36 -0
  146. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +61 -0
  147. data/lib/spec/matchers.rb +214 -0
  148. data/lib/spec/matchers/be.rb +249 -0
  149. data/lib/spec/matchers/be_close.rb +32 -0
  150. data/lib/spec/matchers/be_instance_of.rb +26 -0
  151. data/lib/spec/matchers/be_kind_of.rb +26 -0
  152. data/lib/spec/matchers/change.rb +151 -0
  153. data/lib/spec/matchers/compatibility.rb +14 -0
  154. data/lib/spec/matchers/dsl.rb +20 -0
  155. data/lib/spec/matchers/eql.rb +42 -0
  156. data/lib/spec/matchers/equal.rb +53 -0
  157. data/lib/spec/matchers/errors.rb +5 -0
  158. data/lib/spec/matchers/exist.rb +16 -0
  159. data/lib/spec/matchers/generated_descriptions.rb +36 -0
  160. data/lib/spec/matchers/has.rb +35 -0
  161. data/lib/spec/matchers/have.rb +152 -0
  162. data/lib/spec/matchers/include.rb +44 -0
  163. data/lib/spec/matchers/match.rb +21 -0
  164. data/lib/spec/matchers/match_array.rb +71 -0
  165. data/lib/spec/matchers/matcher.rb +132 -0
  166. data/lib/spec/matchers/method_missing.rb +9 -0
  167. data/lib/spec/matchers/operator_matcher.rb +83 -0
  168. data/lib/spec/matchers/pretty.rb +37 -0
  169. data/lib/spec/matchers/raise_exception.rb +131 -0
  170. data/lib/spec/matchers/respond_to.rb +71 -0
  171. data/lib/spec/matchers/satisfy.rb +47 -0
  172. data/lib/spec/matchers/simple_matcher.rb +134 -0
  173. data/lib/spec/matchers/throw_symbol.rb +100 -0
  174. data/lib/spec/matchers/wrap_expectation.rb +55 -0
  175. data/lib/spec/mocks.rb +200 -0
  176. data/lib/spec/mocks/argument_expectation.rb +51 -0
  177. data/lib/spec/mocks/argument_matchers.rb +237 -0
  178. data/lib/spec/mocks/error_generator.rb +92 -0
  179. data/lib/spec/mocks/errors.rb +10 -0
  180. data/lib/spec/mocks/example_methods.rb +69 -0
  181. data/lib/spec/mocks/extensions.rb +1 -0
  182. data/lib/spec/mocks/extensions/object.rb +3 -0
  183. data/lib/spec/mocks/framework.rb +15 -0
  184. data/lib/spec/mocks/message_expectation.rb +344 -0
  185. data/lib/spec/mocks/methods.rb +94 -0
  186. data/lib/spec/mocks/mock.rb +71 -0
  187. data/lib/spec/mocks/order_group.rb +29 -0
  188. data/lib/spec/mocks/proxy.rb +254 -0
  189. data/lib/spec/mocks/space.rb +28 -0
  190. data/lib/spec/rake/spectask.rb +230 -0
  191. data/lib/spec/rake/verify_rcov.rb +52 -0
  192. data/lib/spec/ruby.rb +9 -0
  193. data/lib/spec/runner.rb +66 -0
  194. data/lib/spec/runner/backtrace_tweaker.rb +78 -0
  195. data/lib/spec/runner/class_and_arguments_parser.rb +14 -0
  196. data/lib/spec/runner/command_line.rb +15 -0
  197. data/lib/spec/runner/configuration.rb +202 -0
  198. data/lib/spec/runner/differs/default.rb +93 -0
  199. data/lib/spec/runner/differs/load-diff-lcs.rb +12 -0
  200. data/lib/spec/runner/drb_command_line.rb +32 -0
  201. data/lib/spec/runner/example_group_runner.rb +62 -0
  202. data/lib/spec/runner/extensions/kernel.rb +9 -0
  203. data/lib/spec/runner/formatter/base_formatter.rb +139 -0
  204. data/lib/spec/runner/formatter/base_text_formatter.rb +142 -0
  205. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +25 -0
  206. data/lib/spec/runner/formatter/failing_examples_formatter.rb +20 -0
  207. data/lib/spec/runner/formatter/html_formatter.rb +338 -0
  208. data/lib/spec/runner/formatter/nested_text_formatter.rb +50 -0
  209. data/lib/spec/runner/formatter/no_op_method_missing.rb +21 -0
  210. data/lib/spec/runner/formatter/profile_formatter.rb +47 -0
  211. data/lib/spec/runner/formatter/progress_bar_formatter.rb +33 -0
  212. data/lib/spec/runner/formatter/silent_formatter.rb +10 -0
  213. data/lib/spec/runner/formatter/snippet_extractor.rb +52 -0
  214. data/lib/spec/runner/formatter/specdoc_formatter.rb +33 -0
  215. data/lib/spec/runner/formatter/text_mate_formatter.rb +16 -0
  216. data/lib/spec/runner/heckle_runner.rb +77 -0
  217. data/lib/spec/runner/heckle_runner_unsupported.rb +10 -0
  218. data/lib/spec/runner/line_number_query.rb +78 -0
  219. data/lib/spec/runner/option_parser.rb +225 -0
  220. data/lib/spec/runner/options.rb +406 -0
  221. data/lib/spec/runner/reporter.rb +171 -0
  222. data/lib/spec/stubs/cucumber.rb +5 -0
  223. data/lib/spec/test/unit.rb +10 -0
  224. data/lib/spec/version.rb +14 -0
  225. data/resources/helpers/cmdline.rb +8 -0
  226. data/resources/rake/examples.rake +7 -0
  227. data/resources/rake/examples_with_rcov.rake +9 -0
  228. data/resources/rake/failing_examples_with_html.rake +9 -0
  229. data/resources/rake/verify_rcov.rake +7 -0
  230. data/rspec.gemspec +26 -0
  231. data/spec/README.jruby +15 -0
  232. data/spec/autotest/autotest_helper.rb +8 -0
  233. data/spec/autotest/autotest_matchers.rb +38 -0
  234. data/spec/autotest/discover_spec.rb +8 -0
  235. data/spec/autotest/failed_results_re_spec.rb +31 -0
  236. data/spec/autotest/rspec_spec.rb +126 -0
  237. data/spec/ruby_forker.rb +13 -0
  238. data/spec/spec.opts +6 -0
  239. data/spec/spec/dsl/main_spec.rb +103 -0
  240. data/spec/spec/example/example_group_class_definition_spec.rb +51 -0
  241. data/spec/spec/example/example_group_factory_spec.rb +180 -0
  242. data/spec/spec/example/example_group_methods_spec.rb +778 -0
  243. data/spec/spec/example/example_group_proxy_spec.rb +107 -0
  244. data/spec/spec/example/example_group_spec.rb +632 -0
  245. data/spec/spec/example/example_matcher_spec.rb +85 -0
  246. data/spec/spec/example/example_methods_spec.rb +162 -0
  247. data/spec/spec/example/example_proxy_spec.rb +57 -0
  248. data/spec/spec/example/helper_method_spec.rb +24 -0
  249. data/spec/spec/example/nested_example_group_spec.rb +71 -0
  250. data/spec/spec/example/pending_module_spec.rb +58 -0
  251. data/spec/spec/example/predicate_matcher_spec.rb +41 -0
  252. data/spec/spec/example/shared_example_group_spec.rb +257 -0
  253. data/spec/spec/example/subclassing_example_group_spec.rb +25 -0
  254. data/spec/spec/example/subject_spec.rb +110 -0
  255. data/spec/spec/expectations/differs/default_spec.rb +194 -0
  256. data/spec/spec/expectations/extensions/kernel_spec.rb +45 -0
  257. data/spec/spec/expectations/fail_with_spec.rb +96 -0
  258. data/spec/spec/expectations/handler_spec.rb +206 -0
  259. data/spec/spec/expectations/wrap_expectation_spec.rb +31 -0
  260. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +10 -0
  261. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +10 -0
  262. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +10 -0
  263. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +13 -0
  264. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +10 -0
  265. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +10 -0
  266. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +10 -0
  267. data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +22 -0
  268. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +38 -0
  269. data/spec/spec/interop/test/unit/spec_spec.rb +48 -0
  270. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +18 -0
  271. data/spec/spec/interop/test/unit/testcase_spec.rb +50 -0
  272. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +9 -0
  273. data/spec/spec/matchers/be_close_spec.rb +50 -0
  274. data/spec/spec/matchers/be_instance_of_spec.rb +36 -0
  275. data/spec/spec/matchers/be_kind_of_spec.rb +33 -0
  276. data/spec/spec/matchers/be_spec.rb +460 -0
  277. data/spec/spec/matchers/change_spec.rb +349 -0
  278. data/spec/spec/matchers/compatibility_spec.rb +28 -0
  279. data/spec/spec/matchers/description_generation_spec.rb +160 -0
  280. data/spec/spec/matchers/dsl_spec.rb +34 -0
  281. data/spec/spec/matchers/eql_spec.rb +33 -0
  282. data/spec/spec/matchers/equal_spec.rb +57 -0
  283. data/spec/spec/matchers/exist_spec.rb +65 -0
  284. data/spec/spec/matchers/has_spec.rb +190 -0
  285. data/spec/spec/matchers/have_spec.rb +381 -0
  286. data/spec/spec/matchers/include_spec.rb +88 -0
  287. data/spec/spec/matchers/match_array_spec.rb +115 -0
  288. data/spec/spec/matchers/match_spec.rb +57 -0
  289. data/spec/spec/matchers/matcher_spec.rb +289 -0
  290. data/spec/spec/matchers/matchers_spec.rb +2 -0
  291. data/spec/spec/matchers/operator_matcher_spec.rb +191 -0
  292. data/spec/spec/matchers/pretty_spec.rb +22 -0
  293. data/spec/spec/matchers/raise_exception_spec.rb +345 -0
  294. data/spec/spec/matchers/respond_to_spec.rb +116 -0
  295. data/spec/spec/matchers/satisfy_spec.rb +36 -0
  296. data/spec/spec/matchers/simple_matcher_spec.rb +100 -0
  297. data/spec/spec/matchers/throw_symbol_spec.rb +121 -0
  298. data/spec/spec/mocks/and_yield_spec.rb +117 -0
  299. data/spec/spec/mocks/any_number_of_times_spec.rb +36 -0
  300. data/spec/spec/mocks/argument_expectation_spec.rb +23 -0
  301. data/spec/spec/mocks/argument_matchers_spec.rb +19 -0
  302. data/spec/spec/mocks/at_least_spec.rb +97 -0
  303. data/spec/spec/mocks/at_most_spec.rb +93 -0
  304. data/spec/spec/mocks/bug_report_10260_spec.rb +8 -0
  305. data/spec/spec/mocks/bug_report_10263_spec.rb +27 -0
  306. data/spec/spec/mocks/bug_report_1049_spec.rb +30 -0
  307. data/spec/spec/mocks/bug_report_11545_spec.rb +32 -0
  308. data/spec/spec/mocks/bug_report_15719_spec.rb +30 -0
  309. data/spec/spec/mocks/bug_report_496_spec.rb +17 -0
  310. data/spec/spec/mocks/bug_report_600_spec.rb +22 -0
  311. data/spec/spec/mocks/bug_report_7611_spec.rb +19 -0
  312. data/spec/spec/mocks/bug_report_7805_spec.rb +22 -0
  313. data/spec/spec/mocks/bug_report_8165_spec.rb +31 -0
  314. data/spec/spec/mocks/bug_report_8302_spec.rb +26 -0
  315. data/spec/spec/mocks/bug_report_830_spec.rb +21 -0
  316. data/spec/spec/mocks/bug_report_957_spec.rb +22 -0
  317. data/spec/spec/mocks/double_spec.rb +12 -0
  318. data/spec/spec/mocks/failing_argument_matchers_spec.rb +95 -0
  319. data/spec/spec/mocks/hash_including_matcher_spec.rb +90 -0
  320. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +67 -0
  321. data/spec/spec/mocks/mock_ordering_spec.rb +94 -0
  322. data/spec/spec/mocks/mock_space_spec.rb +54 -0
  323. data/spec/spec/mocks/mock_spec.rb +601 -0
  324. data/spec/spec/mocks/multiple_return_value_spec.rb +113 -0
  325. data/spec/spec/mocks/nil_expectation_warning_spec.rb +53 -0
  326. data/spec/spec/mocks/null_object_mock_spec.rb +54 -0
  327. data/spec/spec/mocks/once_counts_spec.rb +53 -0
  328. data/spec/spec/mocks/options_hash_spec.rb +35 -0
  329. data/spec/spec/mocks/partial_mock_spec.rb +164 -0
  330. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +66 -0
  331. data/spec/spec/mocks/passing_argument_matchers_spec.rb +145 -0
  332. data/spec/spec/mocks/precise_counts_spec.rb +52 -0
  333. data/spec/spec/mocks/record_messages_spec.rb +26 -0
  334. data/spec/spec/mocks/stub_chain_spec.rb +42 -0
  335. data/spec/spec/mocks/stub_implementation_spec.rb +31 -0
  336. data/spec/spec/mocks/stub_spec.rb +203 -0
  337. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +26 -0
  338. data/spec/spec/mocks/twice_counts_spec.rb +67 -0
  339. data/spec/spec/mocks/unstub_spec.rb +127 -0
  340. data/spec/spec/package/bin_spec_spec.rb +16 -0
  341. data/spec/spec/rake/spectask_spec.rb +150 -0
  342. data/spec/spec/runner/class_and_argument_parser_spec.rb +23 -0
  343. data/spec/spec/runner/command_line_spec.rb +162 -0
  344. data/spec/spec/runner/configuration_spec.rb +320 -0
  345. data/spec/spec/runner/drb_command_line_spec.rb +146 -0
  346. data/spec/spec/runner/empty_file.txt +0 -0
  347. data/spec/spec/runner/example_group_runner_spec.rb +26 -0
  348. data/spec/spec/runner/examples.txt +2 -0
  349. data/spec/spec/runner/failed.txt +3 -0
  350. data/spec/spec/runner/formatter/base_formatter_spec.rb +30 -0
  351. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +113 -0
  352. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +45 -0
  353. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +33 -0
  354. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +377 -0
  355. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +377 -0
  356. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +377 -0
  357. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +377 -0
  358. data/spec/spec/runner/formatter/html_formatted-1.9.2.html +377 -0
  359. data/spec/spec/runner/formatter/html_formatter_spec.rb +118 -0
  360. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +329 -0
  361. data/spec/spec/runner/formatter/profile_formatter_spec.rb +70 -0
  362. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +149 -0
  363. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +18 -0
  364. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +159 -0
  365. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +371 -0
  366. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +371 -0
  367. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +371 -0
  368. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +371 -0
  369. data/spec/spec/runner/formatter/text_mate_formatted-1.9.2.html +371 -0
  370. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +106 -0
  371. data/spec/spec/runner/heckle_runner_spec.rb +78 -0
  372. data/spec/spec/runner/heckler_spec.rb +20 -0
  373. data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +70 -0
  374. data/spec/spec/runner/line_number_query_spec.rb +129 -0
  375. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +51 -0
  376. data/spec/spec/runner/option_parser_spec.rb +552 -0
  377. data/spec/spec/runner/options_spec.rb +554 -0
  378. data/spec/spec/runner/output_one_time_fixture.rb +7 -0
  379. data/spec/spec/runner/output_one_time_fixture_runner.rb +7 -0
  380. data/spec/spec/runner/output_one_time_spec.rb +15 -0
  381. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +123 -0
  382. data/spec/spec/runner/reporter_spec.rb +244 -0
  383. data/spec/spec/runner/resources/a_bar.rb +0 -0
  384. data/spec/spec/runner/resources/a_foo.rb +0 -0
  385. data/spec/spec/runner/resources/a_spec.rb +1 -0
  386. data/spec/spec/runner/resources/custom_example_group_runner.rb +14 -0
  387. data/spec/spec/runner/resources/utf8_encoded.rb +8 -0
  388. data/spec/spec/runner/spec.opts +2 -0
  389. data/spec/spec/runner/spec_drb.opts +2 -0
  390. data/spec/spec/runner/spec_spaced.opts +2 -0
  391. data/spec/spec/runner_spec.rb +13 -0
  392. data/spec/spec_helper.rb +113 -0
  393. data/spec/support/macros.rb +29 -0
  394. data/spec/support/spec_classes.rb +133 -0
  395. metadata +727 -0
@@ -0,0 +1,71 @@
1
+ module Spec
2
+ module Mocks
3
+ class Mock
4
+ include Methods
5
+
6
+ # Creates a new mock with a +name+ (that will be used in error messages
7
+ # only) == Options:
8
+ # * <tt>:null_object</tt> - if true, the mock object acts as a forgiving
9
+ # null object allowing any message to be sent to it.
10
+ def initialize(name=nil, stubs_and_options={})
11
+ if name.is_a?(Hash) && stubs_and_options.empty?
12
+ stubs_and_options = name
13
+ @name = nil
14
+ else
15
+ @name = name
16
+ end
17
+ @options = extract_options(stubs_and_options)
18
+ assign_stubs(stubs_and_options)
19
+ end
20
+
21
+ # This allows for comparing the mock to other objects that proxy such as
22
+ # ActiveRecords belongs_to proxy objects. By making the other object run
23
+ # the comparison, we're sure the call gets delegated to the proxy
24
+ # target.
25
+ def ==(other)
26
+ other == __mock_proxy
27
+ end
28
+
29
+ def inspect
30
+ "#<#{self.class}:#{sprintf '0x%x', self.object_id} @name=#{@name.inspect}>"
31
+ end
32
+
33
+ def to_s
34
+ inspect.gsub('<','[').gsub('>',']')
35
+ end
36
+
37
+ private
38
+
39
+ def method_missing(sym, *args, &block)
40
+ __mock_proxy.record_message_received(sym, args, block)
41
+ begin
42
+ return self if __mock_proxy.null_object?
43
+ super(sym, *args, &block)
44
+ rescue NameError
45
+ __mock_proxy.raise_unexpected_message_error sym, *args
46
+ end
47
+ end
48
+
49
+ def extract_options(stubs_and_options)
50
+ options = {}
51
+ extract_option(stubs_and_options, options, :null_object)
52
+ extract_option(stubs_and_options, options, :__declared_as, 'Mock')
53
+ options
54
+ end
55
+
56
+ def extract_option(source, target, key, default=nil)
57
+ if source[key]
58
+ target[key] = source.delete(key)
59
+ elsif default
60
+ target[key] = default
61
+ end
62
+ end
63
+
64
+ def assign_stubs(stubs)
65
+ stubs.each_pair do |message, response|
66
+ stub!(message).and_return(response)
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,29 @@
1
+ module Spec
2
+ module Mocks
3
+ class OrderGroup
4
+ def initialize error_generator
5
+ @error_generator = error_generator
6
+ @ordering = Array.new
7
+ end
8
+
9
+ def register(expectation)
10
+ @ordering << expectation
11
+ end
12
+
13
+ def ready_for?(expectation)
14
+ return @ordering.first == expectation
15
+ end
16
+
17
+ def consume
18
+ @ordering.shift
19
+ end
20
+
21
+ def handle_order_constraint expectation
22
+ return unless @ordering.include? expectation
23
+ return consume if ready_for?(expectation)
24
+ @error_generator.raise_out_of_order_error expectation.sym
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,254 @@
1
+ module Spec
2
+ module Mocks
3
+ class Proxy
4
+ DEFAULT_OPTIONS = {
5
+ :null_object => false,
6
+ }
7
+
8
+ @@warn_about_expectations_on_nil = true
9
+
10
+ def self.allow_message_expectations_on_nil
11
+ @@warn_about_expectations_on_nil = false
12
+
13
+ # ensure nil.rspec_verify is called even if an expectation is not set in the example
14
+ # otherwise the allowance would effect subsequent examples
15
+ $rspec_mocks.add(nil) unless $rspec_mocks.nil?
16
+ end
17
+
18
+ def initialize(target, name=nil, options={})
19
+ @target = target
20
+ @name = name
21
+ @error_generator = ErrorGenerator.new target, name, options
22
+ @expectation_ordering = OrderGroup.new @error_generator
23
+ @expectations = []
24
+ @messages_received = []
25
+ @stubs = []
26
+ @proxied_methods = []
27
+ @options = options ? DEFAULT_OPTIONS.dup.merge(options) : DEFAULT_OPTIONS
28
+ @already_proxied_respond_to = false
29
+ end
30
+
31
+ def null_object?
32
+ @options[:null_object]
33
+ end
34
+
35
+ def as_null_object
36
+ @options[:null_object] = true
37
+ @target
38
+ end
39
+
40
+ def add_message_expectation(expected_from, sym, opts={}, &block)
41
+ __add sym
42
+ warn_if_nil_class sym
43
+ if existing_stub = @stubs.detect {|s| s.sym == sym }
44
+ expectation = existing_stub.build_child(expected_from, block_given?? block : nil, 1, opts)
45
+ else
46
+ expectation = MessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, block_given? ? block : nil, 1, opts)
47
+ end
48
+ @expectations << expectation
49
+ @expectations.last
50
+ end
51
+
52
+ def add_negative_message_expectation(expected_from, sym, &block)
53
+ __add sym
54
+ warn_if_nil_class sym
55
+ @expectations << NegativeMessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, block_given? ? block : nil)
56
+ @expectations.last
57
+ end
58
+
59
+ def add_stub(expected_from, sym, opts={}, &implementation)
60
+ __add sym
61
+ @stubs.unshift MessageExpectation.new(@error_generator, @expectation_ordering, expected_from, sym, nil, :any, opts, &implementation)
62
+ @stubs.first
63
+ end
64
+
65
+ def remove_stub(message)
66
+ message = message.to_sym
67
+
68
+ if stub_to_remove = @stubs.detect { |s| s.matches_name?(message) }
69
+ reset_proxied_method(message)
70
+ @stubs.delete(stub_to_remove)
71
+ else
72
+ raise MockExpectationError, "The method `#{message}` was not stubbed or was already unstubbed"
73
+ end
74
+ end
75
+
76
+ def verify #:nodoc:
77
+ verify_expectations
78
+ ensure
79
+ reset
80
+ end
81
+
82
+ def reset
83
+ clear_expectations
84
+ clear_stubs
85
+ reset_proxied_methods
86
+ clear_proxied_methods
87
+ reset_nil_expectations_warning
88
+ end
89
+
90
+ def received_message?(sym, *args, &block)
91
+ @messages_received.any? {|array| array == [sym, args, block]}
92
+ end
93
+
94
+ def has_negative_expectation?(sym)
95
+ @expectations.detect {|expectation| expectation.negative_expectation_for?(sym)}
96
+ end
97
+
98
+ def record_message_received(sym, args, block)
99
+ @messages_received << [sym, args, block]
100
+ end
101
+
102
+ def message_received(sym, *args, &block)
103
+ expectation = find_matching_expectation(sym, *args)
104
+ stub = find_matching_method_stub(sym, *args)
105
+
106
+ if (stub && expectation && expectation.called_max_times?) || (stub && !expectation)
107
+ if expectation = find_almost_matching_expectation(sym, *args)
108
+ expectation.advise(*args) unless expectation.expected_messages_received?
109
+ end
110
+ stub.invoke(*args, &block)
111
+ elsif expectation
112
+ expectation.invoke(*args, &block)
113
+ elsif expectation = find_almost_matching_expectation(sym, *args)
114
+ expectation.advise(*args) if null_object? unless expectation.expected_messages_received?
115
+ raise_unexpected_message_args_error(expectation, *args) unless (has_negative_expectation?(sym) or null_object?)
116
+ elsif stub = find_almost_matching_stub(sym, *args)
117
+ stub.advise(*args)
118
+ raise_unexpected_message_args_error(stub, *args)
119
+ elsif @target.is_a?(Class) && @target.superclass.respond_to?(sym, true)
120
+ @target.superclass.send(sym, *args, &block)
121
+ else
122
+ @target.__send__ :method_missing, sym, *args, &block
123
+ end
124
+ end
125
+
126
+ def raise_unexpected_message_args_error(expectation, *args)
127
+ @error_generator.raise_unexpected_message_args_error expectation, *args
128
+ end
129
+
130
+ def raise_unexpected_message_error(sym, *args)
131
+ @error_generator.raise_unexpected_message_error sym, *args
132
+ end
133
+
134
+ def find_matching_method_stub(sym, *args)
135
+ @stubs.find {|stub| stub.matches(sym, args)}
136
+ end
137
+
138
+ private
139
+
140
+ def __add(sym)
141
+ $rspec_mocks.add(@target) unless $rspec_mocks.nil?
142
+ define_expected_method(sym)
143
+ end
144
+
145
+ def warn_if_nil_class(sym)
146
+ if proxy_for_nil_class? & @@warn_about_expectations_on_nil
147
+ Kernel.warn("An expectation of :#{sym} was set on nil. Called from #{caller[2]}. Use allow_message_expectations_on_nil to disable warnings.")
148
+ end
149
+ end
150
+
151
+ def define_expected_method(sym)
152
+ unless @proxied_methods.include?(sym)
153
+ visibility_string = "#{visibility(sym)} :#{sym}"
154
+ if target_responds_to?(sym)
155
+ munged_sym = munge(sym)
156
+ target_metaclass.instance_eval do
157
+ alias_method munged_sym, sym if method_defined?(sym)
158
+ end
159
+ @proxied_methods << sym
160
+ end
161
+ target_metaclass.class_eval(<<-EOF, __FILE__, __LINE__)
162
+ def #{sym}(*args, &block)
163
+ __mock_proxy.message_received :#{sym}, *args, &block
164
+ end
165
+ #{visibility_string}
166
+ EOF
167
+ end
168
+ end
169
+
170
+ def target_responds_to?(sym)
171
+ return @target.__send__(munge(:respond_to?),sym) if @already_proxied_respond_to
172
+ return @already_proxied_respond_to = true if sym == :respond_to?
173
+ return @target.respond_to?(sym, true)
174
+ end
175
+
176
+ def visibility(sym)
177
+ if Mock === @target
178
+ 'public'
179
+ elsif target_metaclass.private_method_defined?(sym)
180
+ 'private'
181
+ elsif target_metaclass.protected_method_defined?(sym)
182
+ 'protected'
183
+ else
184
+ 'public'
185
+ end
186
+ end
187
+
188
+ def munge(sym)
189
+ "proxied_by_rspec__#{sym}"
190
+ end
191
+
192
+ def clear_expectations
193
+ @expectations.clear
194
+ end
195
+
196
+ def clear_stubs
197
+ @stubs.clear
198
+ end
199
+
200
+ def clear_proxied_methods
201
+ @proxied_methods.clear
202
+ end
203
+
204
+ def target_metaclass
205
+ class << @target; self; end
206
+ end
207
+
208
+ def verify_expectations
209
+ @expectations.each do |expectation|
210
+ expectation.verify_messages_received
211
+ end
212
+ end
213
+
214
+ def reset_proxied_methods
215
+ @proxied_methods.each do |sym|
216
+ reset_proxied_method(sym)
217
+ end
218
+ end
219
+
220
+ def reset_proxied_method(sym)
221
+ munged_sym = munge(sym)
222
+ target_metaclass.instance_eval do
223
+ remove_method sym
224
+ if method_defined?(munged_sym)
225
+ alias_method sym, munged_sym
226
+ remove_method munged_sym
227
+ end
228
+ end
229
+ end
230
+
231
+ def proxy_for_nil_class?
232
+ @target.nil?
233
+ end
234
+
235
+ def reset_nil_expectations_warning
236
+ @@warn_about_expectations_on_nil = true if proxy_for_nil_class?
237
+ end
238
+
239
+ def find_matching_expectation(sym, *args)
240
+ @expectations.find {|expectation| expectation.matches(sym, args) && !expectation.called_max_times?} ||
241
+ @expectations.find {|expectation| expectation.matches(sym, args)}
242
+ end
243
+
244
+ def find_almost_matching_expectation(sym, *args)
245
+ @expectations.find {|expectation| expectation.matches_name_but_not_args(sym, args)}
246
+ end
247
+
248
+ def find_almost_matching_stub(sym, *args)
249
+ @stubs.find {|stub| stub.matches_name_but_not_args(sym, args)}
250
+ end
251
+
252
+ end
253
+ end
254
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Mocks
3
+ class Space
4
+ def add(obj)
5
+ mocks << obj unless mocks.detect {|m| m.equal? obj}
6
+ end
7
+
8
+ def verify_all
9
+ mocks.each do |mock|
10
+ mock.rspec_verify
11
+ end
12
+ end
13
+
14
+ def reset_all
15
+ mocks.each do |mock|
16
+ mock.rspec_reset
17
+ end
18
+ mocks.clear
19
+ end
20
+
21
+ private
22
+
23
+ def mocks
24
+ @mocks ||= []
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,230 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # Define a task library for running RSpec contexts.
4
+
5
+ require 'rake'
6
+ require 'rake/tasklib'
7
+
8
+ module Spec
9
+ module Rake
10
+
11
+ # A Rake task that runs a set of specs.
12
+ #
13
+ # Example:
14
+ #
15
+ # Spec::Rake::SpecTask.new do |t|
16
+ # t.warning = true
17
+ # t.rcov = true
18
+ # end
19
+ #
20
+ # This will create a task that can be run with:
21
+ #
22
+ # rake spec
23
+ #
24
+ # If rake is invoked with a "SPEC=filename" command line option,
25
+ # then the list of spec files will be overridden to include only the
26
+ # filename specified on the command line. This provides an easy way
27
+ # to run just one spec.
28
+ #
29
+ # If rake is invoked with a "SPEC_OPTS=options" command line option,
30
+ # then the given options will override the value of the +spec_opts+
31
+ # attribute.
32
+ #
33
+ # If rake is invoked with a "RCOV_OPTS=options" command line option,
34
+ # then the given options will override the value of the +rcov_opts+
35
+ # attribute.
36
+ #
37
+ # Examples:
38
+ #
39
+ # rake spec # run specs normally
40
+ # rake spec SPEC=just_one_file.rb # run just one spec file.
41
+ # rake spec SPEC_OPTS="--diff" # enable diffing
42
+ # rake spec RCOV_OPTS="--aggregate myfile.txt" # see rcov --help for details
43
+ #
44
+ # Each attribute of this task may be a proc. This allows for lazy evaluation,
45
+ # which is sometimes handy if you want to defer the evaluation of an attribute value
46
+ # until the task is run (as opposed to when it is defined).
47
+ #
48
+ # This task can also be used to run existing Test::Unit tests and get RSpec
49
+ # output, for example like this:
50
+ #
51
+ # require 'spec/rake/spectask'
52
+ # Spec::Rake::SpecTask.new do |t|
53
+ # t.ruby_opts = ['-rtest/unit']
54
+ # t.spec_files = FileList['test/**/*_test.rb']
55
+ # end
56
+ #
57
+ class SpecTask < ::Rake::TaskLib
58
+ def self.attr_accessor(*names)
59
+ super(*names)
60
+ names.each do |name|
61
+ module_eval "def #{name}() evaluate(@#{name}) end" # Allows use of procs
62
+ end
63
+ end
64
+
65
+ # Name of spec task. (default is :spec)
66
+ attr_accessor :name
67
+
68
+ # Array of directories to be added to $LOAD_PATH before running the
69
+ # specs. Defaults to ['<the absolute path to RSpec's lib directory>']
70
+ attr_accessor :libs
71
+
72
+ # If true, requests that the specs be run with the warning flag set.
73
+ # E.g. warning=true implies "ruby -w" used to run the specs. Defaults to false.
74
+ attr_accessor :warning
75
+
76
+ # Glob pattern to match spec files. (default is 'spec/**/*_spec.rb')
77
+ # Setting the SPEC environment variable overrides this.
78
+ attr_accessor :pattern
79
+
80
+ # Array of commandline options to pass to RSpec. Defaults to [].
81
+ # Setting the SPEC_OPTS environment variable overrides this.
82
+ attr_accessor :spec_opts
83
+
84
+ # Whether or not to use RCov (default is false)
85
+ # See http://eigenclass.org/hiki.rb?rcov
86
+ attr_accessor :rcov
87
+
88
+ # Array of commandline options to pass to RCov. Defaults to ['--exclude', 'lib\/spec,bin\/spec'].
89
+ # Ignored if rcov=false
90
+ # Setting the RCOV_OPTS environment variable overrides this.
91
+ attr_accessor :rcov_opts
92
+
93
+ # Directory where the RCov report is written. Defaults to "coverage"
94
+ # Ignored if rcov=false
95
+ attr_accessor :rcov_dir
96
+
97
+ # Array of commandline options to pass to ruby. Defaults to [].
98
+ attr_accessor :ruby_opts
99
+
100
+ # Whether or not to fail Rake when an error occurs (typically when specs fail).
101
+ # Defaults to true.
102
+ attr_accessor :fail_on_error
103
+
104
+ # A message to print to stderr when there are failures.
105
+ attr_accessor :failure_message
106
+
107
+ # Where RSpec's output is written. Defaults to $stdout.
108
+ # DEPRECATED. Use --format FORMAT:WHERE in spec_opts.
109
+ attr_accessor :out
110
+
111
+ # Explicitly define the list of spec files to be included in a
112
+ # spec. +spec_files+ is expected to be an array of file names (a
113
+ # FileList is acceptable). If both +pattern+ and +spec_files+ are
114
+ # used, then the list of spec files is the union of the two.
115
+ # Setting the SPEC environment variable overrides this.
116
+ attr_accessor :spec_files
117
+
118
+ # Use verbose output. If this is set to true, the task will print
119
+ # the executed spec command to stdout. Defaults to false.
120
+ attr_accessor :verbose
121
+
122
+ # Explicitly define the path to the ruby binary, or its proxy (e.g. multiruby)
123
+ attr_accessor :ruby_cmd
124
+
125
+ # Defines a new task, using the name +name+.
126
+ def initialize(name=:spec)
127
+ @name = name
128
+ @libs = ['lib']
129
+ @pattern = nil
130
+ @spec_files = nil
131
+ @spec_opts = []
132
+ @warning = false
133
+ @ruby_opts = []
134
+ @fail_on_error = true
135
+ @rcov = false
136
+ @rcov_opts = ['--exclude', 'lib\/spec,bin\/spec,config\/boot.rb']
137
+ @rcov_dir = "coverage"
138
+
139
+ yield self if block_given?
140
+ @pattern = 'spec/**/*_spec.rb' if pattern.nil? && spec_files.nil?
141
+ define
142
+ end
143
+
144
+ def define # :nodoc:
145
+ spec_script = File.expand_path(File.join(File.dirname(__FILE__),"..","..","..","bin","spec"))
146
+
147
+ lib_path = libs.join(File::PATH_SEPARATOR)
148
+ actual_name = Hash === name ? name.keys.first : name
149
+ unless ::Rake.application.last_comment
150
+ desc "Run specs" + (rcov ? " using RCov" : "")
151
+ end
152
+ task name do
153
+ RakeFileUtils.verbose(verbose) do
154
+ unless spec_file_list.empty?
155
+ # ruby [ruby_opts] -Ilib -S rcov [rcov_opts] bin/spec -- examples [spec_opts]
156
+ # or
157
+ # ruby [ruby_opts] -Ilib bin/spec examples [spec_opts]
158
+ cmd_parts = [ruby_cmd || RUBY]
159
+ cmd_parts += ruby_opts
160
+ cmd_parts << %[-I"#{lib_path}"]
161
+ cmd_parts << "-S rcov" if rcov
162
+ cmd_parts << "-w" if warning
163
+ cmd_parts << rcov_option_list
164
+ cmd_parts << %[-o "#{rcov_dir}"] if rcov
165
+ cmd_parts << %["#{spec_script}"]
166
+ cmd_parts << "--" if rcov
167
+ cmd_parts += spec_file_list.collect { |fn| %["#{fn}"] }
168
+ cmd_parts << spec_option_list
169
+ if out
170
+ cmd_parts << %[> "#{out}"]
171
+ STDERR.puts "The Spec::Rake::SpecTask#out attribute is DEPRECATED and will be removed in a future version. Use --format FORMAT:WHERE instead."
172
+ end
173
+ cmd = cmd_parts.join(" ")
174
+ puts cmd if verbose
175
+ unless system(cmd)
176
+ STDERR.puts failure_message if failure_message
177
+ raise("Command #{cmd} failed") if fail_on_error
178
+ end
179
+ end
180
+ end
181
+ end
182
+
183
+ if rcov
184
+ desc "Remove rcov products for #{actual_name}"
185
+ task paste("clobber_", actual_name) do
186
+ rm_r rcov_dir rescue nil
187
+ end
188
+
189
+ clobber_task = paste("clobber_", actual_name)
190
+ task :clobber => [clobber_task]
191
+
192
+ task actual_name => clobber_task
193
+ end
194
+ self
195
+ end
196
+
197
+ def rcov_option_list # :nodoc:
198
+ if rcov
199
+ ENV['RCOV_OPTS'] || rcov_opts.join(" ") || ""
200
+ else
201
+ ""
202
+ end
203
+ end
204
+
205
+ def spec_option_list # :nodoc:
206
+ STDERR.puts "RSPECOPTS is DEPRECATED and will be removed in a future version. Use SPEC_OPTS instead." if ENV['RSPECOPTS']
207
+ ENV['SPEC_OPTS'] || ENV['RSPECOPTS'] || spec_opts.join(" ") || ""
208
+ end
209
+
210
+ def evaluate(o) # :nodoc:
211
+ case o
212
+ when Proc then o.call
213
+ else o
214
+ end
215
+ end
216
+
217
+ def spec_file_list # :nodoc:
218
+ if ENV['SPEC']
219
+ FileList[ ENV['SPEC'] ]
220
+ else
221
+ result = []
222
+ result += spec_files.to_a if spec_files
223
+ result += FileList[ pattern ].to_a if pattern
224
+ FileList[result]
225
+ end
226
+ end
227
+
228
+ end
229
+ end
230
+ end