rspec 1.3.0 → 2.0.0

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 (391) hide show
  1. data/.document +1 -6
  2. data/.gitignore +7 -0
  3. data/Gemfile +6 -0
  4. data/License.txt +1 -1
  5. data/README.markdown +30 -0
  6. data/Rakefile +10 -143
  7. data/lib/rspec/version.rb +5 -0
  8. data/lib/rspec.rb +4 -0
  9. data/rspec.gemspec +29 -0
  10. metadata +69 -462
  11. data/History.rdoc +0 -1529
  12. data/Manifest.txt +0 -384
  13. data/README.rdoc +0 -54
  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/examples/failing/README.txt +0 -11
  21. data/examples/failing/diffing_spec.rb +0 -36
  22. data/examples/failing/failing_implicit_docstrings_example.rb +0 -17
  23. data/examples/failing/failure_in_after.rb +0 -10
  24. data/examples/failing/failure_in_before.rb +0 -10
  25. data/examples/failing/mocking_example.rb +0 -38
  26. data/examples/failing/mocking_with_flexmock.rb +0 -26
  27. data/examples/failing/mocking_with_mocha.rb +0 -25
  28. data/examples/failing/mocking_with_rr.rb +0 -27
  29. data/examples/failing/partial_mock_example.rb +0 -18
  30. data/examples/failing/pending_example.rb +0 -7
  31. data/examples/failing/predicate_example.rb +0 -32
  32. data/examples/failing/raising_example.rb +0 -47
  33. data/examples/failing/syntax_error_example.rb +0 -7
  34. data/examples/failing/team_spec.rb +0 -41
  35. data/examples/failing/timeout_behaviour.rb +0 -5
  36. data/examples/passing/custom_formatter.rb +0 -11
  37. data/examples/passing/custom_matchers.rb +0 -54
  38. data/examples/passing/dynamic_spec.rb +0 -7
  39. data/examples/passing/file_accessor.rb +0 -18
  40. data/examples/passing/file_accessor_spec.rb +0 -37
  41. data/examples/passing/filtered_formatter.rb +0 -17
  42. data/examples/passing/filtered_formatter_example.rb +0 -31
  43. data/examples/passing/greeter_spec.rb +0 -30
  44. data/examples/passing/helper_method_example.rb +0 -12
  45. data/examples/passing/implicit_docstrings_example.rb +0 -16
  46. data/examples/passing/io_processor.rb +0 -8
  47. data/examples/passing/io_processor_spec.rb +0 -20
  48. data/examples/passing/mocking_example.rb +0 -25
  49. data/examples/passing/multi_threaded_example_group_runner.rb +0 -26
  50. data/examples/passing/nested_classes_example.rb +0 -35
  51. data/examples/passing/options_example.rb +0 -29
  52. data/examples/passing/options_formatter.rb +0 -20
  53. data/examples/passing/partial_mock_example.rb +0 -27
  54. data/examples/passing/pending_example.rb +0 -18
  55. data/examples/passing/predicate_example.rb +0 -25
  56. data/examples/passing/shared_example_group_example.rb +0 -79
  57. data/examples/passing/shared_stack_examples.rb +0 -36
  58. data/examples/passing/simple_matcher_example.rb +0 -29
  59. data/examples/passing/stack.rb +0 -36
  60. data/examples/passing/stack_spec.rb +0 -63
  61. data/examples/passing/stack_spec_with_nested_example_groups.rb +0 -66
  62. data/examples/passing/stubbing_example.rb +0 -67
  63. data/examples/passing/yielding_example.rb +0 -31
  64. data/examples/ruby1.9.compatibility/access_to_constants_spec.rb +0 -85
  65. data/features/before_and_after_blocks/before_and_after_blocks.feature +0 -167
  66. data/features/command_line/line_number_option.feature +0 -56
  67. data/features/command_line/line_number_option_with_example_with_no_name.feature +0 -22
  68. data/features/example_groups/define_example_attribute.feature +0 -41
  69. data/features/example_groups/example_group_with_should_methods.feature +0 -29
  70. data/features/example_groups/implicit_docstrings.feature +0 -59
  71. data/features/example_groups/nested_groups.feature +0 -32
  72. data/features/expectations/customized_message.feature +0 -54
  73. data/features/expectations/expect_change.feature +0 -65
  74. data/features/expectations/expect_error.feature +0 -44
  75. data/features/extensions/custom_example_group.feature +0 -19
  76. data/features/formatters/custom_formatter.feature +0 -30
  77. data/features/formatters/nested_formatter.feature +0 -32
  78. data/features/interop/cucumber_stubs_dont_leak.feature +0 -11
  79. data/features/interop/examples_and_tests_together.feature +0 -84
  80. data/features/interop/rspec_output.feature +0 -25
  81. data/features/interop/test_but_not_test_unit.feature +0 -26
  82. data/features/interop/test_case_with_should_methods.feature +0 -46
  83. data/features/load_paths/add_lib_to_load_path.feature +0 -20
  84. data/features/load_paths/add_spec_to_load_path.feature +0 -20
  85. data/features/matchers/define_diffable_matcher.feature +0 -26
  86. data/features/matchers/define_matcher.feature +0 -179
  87. data/features/matchers/define_matcher_outside_rspec.feature +0 -38
  88. data/features/matchers/define_matcher_with_fluent_interface.feature +0 -48
  89. data/features/matchers/define_wrapped_matcher.feature +0 -56
  90. data/features/matchers/match_unless_raises.feature +0 -60
  91. data/features/matchers/match_unless_raises_unexpected_error.feature +0 -39
  92. data/features/mock_framework_integration/use_flexmock.feature +0 -27
  93. data/features/mock_framework_integration/use_mocha.feature +0 -27
  94. data/features/mock_framework_integration/use_rr.feature +0 -27
  95. data/features/mocks/block_local_expectations.feature +0 -62
  96. data/features/mocks/mix_stubs_and_mocks.feature +0 -22
  97. data/features/mocks/stub_implementation.feature +0 -26
  98. data/features/pending/pending_examples.feature +0 -81
  99. data/features/runner/specify_line_number.feature +0 -32
  100. data/features/spec_helper/spec_helper.feature +0 -25
  101. data/features/step_definitions/running_rspec_steps.rb +0 -52
  102. data/features/step_definitions/stubbing_steps.rb +0 -16
  103. data/features/subject/explicit_subject.feature +0 -31
  104. data/features/subject/implicit_subject.feature +0 -43
  105. data/features/support/env.rb +0 -83
  106. data/features/support/matchers/smart_match.rb +0 -31
  107. data/geminstaller.yml +0 -28
  108. data/init.rb +0 -9
  109. data/lib/autotest/discover.rb +0 -3
  110. data/lib/autotest/rspec.rb +0 -54
  111. data/lib/spec/adapters/mock_frameworks/flexmock.rb +0 -24
  112. data/lib/spec/adapters/mock_frameworks/mocha.rb +0 -25
  113. data/lib/spec/adapters/mock_frameworks/rr.rb +0 -22
  114. data/lib/spec/adapters/mock_frameworks/rspec.rb +0 -21
  115. data/lib/spec/autorun.rb +0 -3
  116. data/lib/spec/deprecation.rb +0 -40
  117. data/lib/spec/dsl/main.rb +0 -92
  118. data/lib/spec/dsl.rb +0 -1
  119. data/lib/spec/example/args_and_options.rb +0 -27
  120. data/lib/spec/example/before_and_after_hooks.rb +0 -93
  121. data/lib/spec/example/errors.rb +0 -25
  122. data/lib/spec/example/example_group.rb +0 -10
  123. data/lib/spec/example/example_group_factory.rb +0 -82
  124. data/lib/spec/example/example_group_hierarchy.rb +0 -53
  125. data/lib/spec/example/example_group_methods.rb +0 -282
  126. data/lib/spec/example/example_group_proxy.rb +0 -61
  127. data/lib/spec/example/example_matcher.rb +0 -43
  128. data/lib/spec/example/example_methods.rb +0 -152
  129. data/lib/spec/example/example_proxy.rb +0 -41
  130. data/lib/spec/example/module_reopening_fix.rb +0 -43
  131. data/lib/spec/example/pending.rb +0 -18
  132. data/lib/spec/example/predicate_matchers.rb +0 -46
  133. data/lib/spec/example/shared_example_group.rb +0 -59
  134. data/lib/spec/example/subject.rb +0 -108
  135. data/lib/spec/example.rb +0 -164
  136. data/lib/spec/expectations/errors.rb +0 -12
  137. data/lib/spec/expectations/extensions/kernel.rb +0 -52
  138. data/lib/spec/expectations/extensions.rb +0 -1
  139. data/lib/spec/expectations/fail_with.rb +0 -45
  140. data/lib/spec/expectations/handler.rb +0 -50
  141. data/lib/spec/expectations.rb +0 -35
  142. data/lib/spec/extensions/instance_exec.rb +0 -31
  143. data/lib/spec/interop/test/unit/autorunner.rb +0 -6
  144. data/lib/spec/interop/test/unit/testcase.rb +0 -56
  145. data/lib/spec/interop/test/unit/testresult.rb +0 -6
  146. data/lib/spec/interop/test/unit/testsuite_adapter.rb +0 -34
  147. data/lib/spec/interop/test/unit/ui/console/testrunner.rb +0 -61
  148. data/lib/spec/interop/test.rb +0 -44
  149. data/lib/spec/matchers/be.rb +0 -249
  150. data/lib/spec/matchers/be_close.rb +0 -32
  151. data/lib/spec/matchers/be_instance_of.rb +0 -26
  152. data/lib/spec/matchers/be_kind_of.rb +0 -26
  153. data/lib/spec/matchers/change.rb +0 -151
  154. data/lib/spec/matchers/compatibility.rb +0 -14
  155. data/lib/spec/matchers/dsl.rb +0 -20
  156. data/lib/spec/matchers/eql.rb +0 -42
  157. data/lib/spec/matchers/equal.rb +0 -53
  158. data/lib/spec/matchers/errors.rb +0 -5
  159. data/lib/spec/matchers/exist.rb +0 -16
  160. data/lib/spec/matchers/generated_descriptions.rb +0 -36
  161. data/lib/spec/matchers/has.rb +0 -35
  162. data/lib/spec/matchers/have.rb +0 -152
  163. data/lib/spec/matchers/include.rb +0 -44
  164. data/lib/spec/matchers/match.rb +0 -21
  165. data/lib/spec/matchers/match_array.rb +0 -71
  166. data/lib/spec/matchers/matcher.rb +0 -132
  167. data/lib/spec/matchers/method_missing.rb +0 -9
  168. data/lib/spec/matchers/operator_matcher.rb +0 -78
  169. data/lib/spec/matchers/pretty.rb +0 -37
  170. data/lib/spec/matchers/raise_exception.rb +0 -131
  171. data/lib/spec/matchers/respond_to.rb +0 -71
  172. data/lib/spec/matchers/satisfy.rb +0 -47
  173. data/lib/spec/matchers/simple_matcher.rb +0 -133
  174. data/lib/spec/matchers/throw_symbol.rb +0 -100
  175. data/lib/spec/matchers/wrap_expectation.rb +0 -55
  176. data/lib/spec/matchers.rb +0 -214
  177. data/lib/spec/mocks/argument_expectation.rb +0 -51
  178. data/lib/spec/mocks/argument_matchers.rb +0 -237
  179. data/lib/spec/mocks/error_generator.rb +0 -92
  180. data/lib/spec/mocks/errors.rb +0 -10
  181. data/lib/spec/mocks/example_methods.rb +0 -69
  182. data/lib/spec/mocks/extensions/object.rb +0 -3
  183. data/lib/spec/mocks/extensions.rb +0 -1
  184. data/lib/spec/mocks/framework.rb +0 -15
  185. data/lib/spec/mocks/message_expectation.rb +0 -344
  186. data/lib/spec/mocks/methods.rb +0 -94
  187. data/lib/spec/mocks/mock.rb +0 -71
  188. data/lib/spec/mocks/order_group.rb +0 -29
  189. data/lib/spec/mocks/proxy.rb +0 -266
  190. data/lib/spec/mocks/space.rb +0 -28
  191. data/lib/spec/mocks.rb +0 -200
  192. data/lib/spec/rake/spectask.rb +0 -230
  193. data/lib/spec/rake/verify_rcov.rb +0 -52
  194. data/lib/spec/ruby.rb +0 -9
  195. data/lib/spec/runner/backtrace_tweaker.rb +0 -77
  196. data/lib/spec/runner/class_and_arguments_parser.rb +0 -14
  197. data/lib/spec/runner/command_line.rb +0 -15
  198. data/lib/spec/runner/configuration.rb +0 -194
  199. data/lib/spec/runner/differs/default.rb +0 -93
  200. data/lib/spec/runner/differs/load-diff-lcs.rb +0 -12
  201. data/lib/spec/runner/drb_command_line.rb +0 -32
  202. data/lib/spec/runner/example_group_runner.rb +0 -58
  203. data/lib/spec/runner/extensions/kernel.rb +0 -9
  204. data/lib/spec/runner/formatter/base_formatter.rb +0 -139
  205. data/lib/spec/runner/formatter/base_text_formatter.rb +0 -142
  206. data/lib/spec/runner/formatter/failing_example_groups_formatter.rb +0 -25
  207. data/lib/spec/runner/formatter/failing_examples_formatter.rb +0 -20
  208. data/lib/spec/runner/formatter/html_formatter.rb +0 -338
  209. data/lib/spec/runner/formatter/nested_text_formatter.rb +0 -50
  210. data/lib/spec/runner/formatter/no_op_method_missing.rb +0 -21
  211. data/lib/spec/runner/formatter/profile_formatter.rb +0 -47
  212. data/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -33
  213. data/lib/spec/runner/formatter/silent_formatter.rb +0 -10
  214. data/lib/spec/runner/formatter/snippet_extractor.rb +0 -52
  215. data/lib/spec/runner/formatter/specdoc_formatter.rb +0 -33
  216. data/lib/spec/runner/formatter/text_mate_formatter.rb +0 -16
  217. data/lib/spec/runner/heckle_runner.rb +0 -72
  218. data/lib/spec/runner/heckle_runner_unsupported.rb +0 -10
  219. data/lib/spec/runner/line_number_query.rb +0 -78
  220. data/lib/spec/runner/option_parser.rb +0 -225
  221. data/lib/spec/runner/options.rb +0 -405
  222. data/lib/spec/runner/reporter.rb +0 -171
  223. data/lib/spec/runner.rb +0 -66
  224. data/lib/spec/stubs/cucumber.rb +0 -5
  225. data/lib/spec/test/unit.rb +0 -10
  226. data/lib/spec/version.rb +0 -14
  227. data/lib/spec.rb +0 -8
  228. data/resources/helpers/cmdline.rb +0 -8
  229. data/resources/rake/examples.rake +0 -7
  230. data/resources/rake/examples_with_rcov.rake +0 -9
  231. data/resources/rake/failing_examples_with_html.rake +0 -9
  232. data/resources/rake/verify_rcov.rake +0 -7
  233. data/spec/README.jruby +0 -15
  234. data/spec/autotest/autotest_helper.rb +0 -8
  235. data/spec/autotest/autotest_matchers.rb +0 -38
  236. data/spec/autotest/discover_spec.rb +0 -8
  237. data/spec/autotest/failed_results_re_spec.rb +0 -31
  238. data/spec/autotest/rspec_spec.rb +0 -126
  239. data/spec/ruby_forker.rb +0 -13
  240. data/spec/spec/dsl/main_spec.rb +0 -95
  241. data/spec/spec/example/example_group_class_definition_spec.rb +0 -51
  242. data/spec/spec/example/example_group_factory_spec.rb +0 -180
  243. data/spec/spec/example/example_group_methods_spec.rb +0 -759
  244. data/spec/spec/example/example_group_proxy_spec.rb +0 -107
  245. data/spec/spec/example/example_group_spec.rb +0 -643
  246. data/spec/spec/example/example_matcher_spec.rb +0 -86
  247. data/spec/spec/example/example_methods_spec.rb +0 -162
  248. data/spec/spec/example/example_proxy_spec.rb +0 -57
  249. data/spec/spec/example/helper_method_spec.rb +0 -24
  250. data/spec/spec/example/nested_example_group_spec.rb +0 -71
  251. data/spec/spec/example/pending_module_spec.rb +0 -58
  252. data/spec/spec/example/predicate_matcher_spec.rb +0 -41
  253. data/spec/spec/example/shared_example_group_spec.rb +0 -257
  254. data/spec/spec/example/subclassing_example_group_spec.rb +0 -25
  255. data/spec/spec/example/subject_spec.rb +0 -103
  256. data/spec/spec/expectations/differs/default_spec.rb +0 -194
  257. data/spec/spec/expectations/extensions/kernel_spec.rb +0 -45
  258. data/spec/spec/expectations/fail_with_spec.rb +0 -96
  259. data/spec/spec/expectations/handler_spec.rb +0 -206
  260. data/spec/spec/expectations/wrap_expectation_spec.rb +0 -30
  261. data/spec/spec/interop/test/unit/resources/spec_that_fails.rb +0 -10
  262. data/spec/spec/interop/test/unit/resources/spec_that_passes.rb +0 -10
  263. data/spec/spec/interop/test/unit/resources/spec_with_errors.rb +0 -10
  264. data/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +0 -13
  265. data/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +0 -10
  266. data/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +0 -10
  267. data/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +0 -10
  268. data/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +0 -22
  269. data/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +0 -38
  270. data/spec/spec/interop/test/unit/spec_spec.rb +0 -48
  271. data/spec/spec/interop/test/unit/test_unit_spec_helper.rb +0 -18
  272. data/spec/spec/interop/test/unit/testcase_spec.rb +0 -50
  273. data/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +0 -9
  274. data/spec/spec/matchers/be_close_spec.rb +0 -50
  275. data/spec/spec/matchers/be_instance_of_spec.rb +0 -36
  276. data/spec/spec/matchers/be_kind_of_spec.rb +0 -33
  277. data/spec/spec/matchers/be_spec.rb +0 -460
  278. data/spec/spec/matchers/change_spec.rb +0 -349
  279. data/spec/spec/matchers/compatibility_spec.rb +0 -28
  280. data/spec/spec/matchers/description_generation_spec.rb +0 -160
  281. data/spec/spec/matchers/dsl_spec.rb +0 -34
  282. data/spec/spec/matchers/eql_spec.rb +0 -33
  283. data/spec/spec/matchers/equal_spec.rb +0 -57
  284. data/spec/spec/matchers/exist_spec.rb +0 -65
  285. data/spec/spec/matchers/has_spec.rb +0 -190
  286. data/spec/spec/matchers/have_spec.rb +0 -396
  287. data/spec/spec/matchers/include_spec.rb +0 -88
  288. data/spec/spec/matchers/match_array_spec.rb +0 -108
  289. data/spec/spec/matchers/match_spec.rb +0 -57
  290. data/spec/spec/matchers/matcher_spec.rb +0 -289
  291. data/spec/spec/matchers/matchers_spec.rb +0 -2
  292. data/spec/spec/matchers/operator_matcher_spec.rb +0 -191
  293. data/spec/spec/matchers/raise_exception_spec.rb +0 -345
  294. data/spec/spec/matchers/respond_to_spec.rb +0 -116
  295. data/spec/spec/matchers/satisfy_spec.rb +0 -36
  296. data/spec/spec/matchers/simple_matcher_spec.rb +0 -93
  297. data/spec/spec/matchers/throw_symbol_spec.rb +0 -121
  298. data/spec/spec/mocks/and_yield_spec.rb +0 -117
  299. data/spec/spec/mocks/any_number_of_times_spec.rb +0 -36
  300. data/spec/spec/mocks/argument_expectation_spec.rb +0 -23
  301. data/spec/spec/mocks/argument_matchers_spec.rb +0 -19
  302. data/spec/spec/mocks/at_least_spec.rb +0 -97
  303. data/spec/spec/mocks/at_most_spec.rb +0 -93
  304. data/spec/spec/mocks/bug_report_10260_spec.rb +0 -8
  305. data/spec/spec/mocks/bug_report_10263_spec.rb +0 -27
  306. data/spec/spec/mocks/bug_report_11545_spec.rb +0 -32
  307. data/spec/spec/mocks/bug_report_15719_spec.rb +0 -30
  308. data/spec/spec/mocks/bug_report_496_spec.rb +0 -19
  309. data/spec/spec/mocks/bug_report_600_spec.rb +0 -22
  310. data/spec/spec/mocks/bug_report_7611_spec.rb +0 -19
  311. data/spec/spec/mocks/bug_report_7805_spec.rb +0 -22
  312. data/spec/spec/mocks/bug_report_8165_spec.rb +0 -31
  313. data/spec/spec/mocks/bug_report_8302_spec.rb +0 -26
  314. data/spec/spec/mocks/bug_report_830_spec.rb +0 -21
  315. data/spec/spec/mocks/double_spec.rb +0 -12
  316. data/spec/spec/mocks/failing_argument_matchers_spec.rb +0 -95
  317. data/spec/spec/mocks/hash_including_matcher_spec.rb +0 -90
  318. data/spec/spec/mocks/hash_not_including_matcher_spec.rb +0 -67
  319. data/spec/spec/mocks/mock_ordering_spec.rb +0 -94
  320. data/spec/spec/mocks/mock_space_spec.rb +0 -54
  321. data/spec/spec/mocks/mock_spec.rb +0 -594
  322. data/spec/spec/mocks/multiple_return_value_spec.rb +0 -113
  323. data/spec/spec/mocks/nil_expectation_warning_spec.rb +0 -53
  324. data/spec/spec/mocks/null_object_mock_spec.rb +0 -54
  325. data/spec/spec/mocks/once_counts_spec.rb +0 -53
  326. data/spec/spec/mocks/options_hash_spec.rb +0 -35
  327. data/spec/spec/mocks/partial_mock_spec.rb +0 -164
  328. data/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +0 -66
  329. data/spec/spec/mocks/passing_argument_matchers_spec.rb +0 -145
  330. data/spec/spec/mocks/precise_counts_spec.rb +0 -52
  331. data/spec/spec/mocks/record_messages_spec.rb +0 -26
  332. data/spec/spec/mocks/stub_chain_spec.rb +0 -42
  333. data/spec/spec/mocks/stub_implementation_spec.rb +0 -31
  334. data/spec/spec/mocks/stub_spec.rb +0 -203
  335. data/spec/spec/mocks/stubbed_message_expectations_spec.rb +0 -26
  336. data/spec/spec/mocks/twice_counts_spec.rb +0 -67
  337. data/spec/spec/mocks/unstub_spec.rb +0 -127
  338. data/spec/spec/package/bin_spec_spec.rb +0 -16
  339. data/spec/spec/rake/spectask_spec.rb +0 -150
  340. data/spec/spec/runner/class_and_argument_parser_spec.rb +0 -23
  341. data/spec/spec/runner/command_line_spec.rb +0 -162
  342. data/spec/spec/runner/configuration_spec.rb +0 -320
  343. data/spec/spec/runner/drb_command_line_spec.rb +0 -146
  344. data/spec/spec/runner/empty_file.txt +0 -0
  345. data/spec/spec/runner/example_group_runner_spec.rb +0 -26
  346. data/spec/spec/runner/examples.txt +0 -2
  347. data/spec/spec/runner/failed.txt +0 -3
  348. data/spec/spec/runner/formatter/base_formatter_spec.rb +0 -30
  349. data/spec/spec/runner/formatter/base_text_formatter_spec.rb +0 -113
  350. data/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +0 -45
  351. data/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +0 -33
  352. data/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +0 -377
  353. data/spec/spec/runner/formatter/html_formatted-1.8.6.html +0 -377
  354. data/spec/spec/runner/formatter/html_formatted-1.8.7.html +0 -377
  355. data/spec/spec/runner/formatter/html_formatted-1.9.1.html +0 -377
  356. data/spec/spec/runner/formatter/html_formatter_spec.rb +0 -118
  357. data/spec/spec/runner/formatter/nested_text_formatter_spec.rb +0 -329
  358. data/spec/spec/runner/formatter/profile_formatter_spec.rb +0 -70
  359. data/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +0 -149
  360. data/spec/spec/runner/formatter/snippet_extractor_spec.rb +0 -18
  361. data/spec/spec/runner/formatter/specdoc_formatter_spec.rb +0 -159
  362. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +0 -371
  363. data/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +0 -371
  364. data/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +0 -371
  365. data/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +0 -371
  366. data/spec/spec/runner/formatter/text_mate_formatter_spec.rb +0 -106
  367. data/spec/spec/runner/heckle_runner_spec.rb +0 -78
  368. data/spec/spec/runner/heckler_spec.rb +0 -20
  369. data/spec/spec/runner/line_number_query/line_number_query_fixture.rb +0 -70
  370. data/spec/spec/runner/line_number_query_spec.rb +0 -129
  371. data/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +0 -51
  372. data/spec/spec/runner/option_parser_spec.rb +0 -551
  373. data/spec/spec/runner/options_spec.rb +0 -554
  374. data/spec/spec/runner/output_one_time_fixture.rb +0 -7
  375. data/spec/spec/runner/output_one_time_fixture_runner.rb +0 -7
  376. data/spec/spec/runner/output_one_time_spec.rb +0 -15
  377. data/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +0 -123
  378. data/spec/spec/runner/reporter_spec.rb +0 -244
  379. data/spec/spec/runner/resources/a_bar.rb +0 -0
  380. data/spec/spec/runner/resources/a_foo.rb +0 -0
  381. data/spec/spec/runner/resources/a_spec.rb +0 -1
  382. data/spec/spec/runner/resources/custom_example_group_runner.rb +0 -14
  383. data/spec/spec/runner/resources/utf8_encoded.rb +0 -8
  384. data/spec/spec/runner/spec.opts +0 -2
  385. data/spec/spec/runner/spec_drb.opts +0 -2
  386. data/spec/spec/runner/spec_spaced.opts +0 -2
  387. data/spec/spec/runner_spec.rb +0 -13
  388. data/spec/spec.opts +0 -6
  389. data/spec/spec_helper.rb +0 -112
  390. data/spec/support/macros.rb +0 -29
  391. data/spec/support/spec_classes.rb +0 -133
@@ -1,230 +0,0 @@
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
@@ -1,52 +0,0 @@
1
- module RCov
2
- # A task that can verify that the RCov coverage doesn't
3
- # drop below a certain threshold. It should be run after
4
- # running Spec::Rake::SpecTask.
5
- class VerifyTask < Rake::TaskLib
6
- # Name of the task. Defaults to :verify_rcov
7
- attr_accessor :name
8
-
9
- # Path to the index.html file generated by RCov, which
10
- # is the file containing the total coverage.
11
- # Defaults to 'coverage/index.html'
12
- attr_accessor :index_html
13
-
14
- # Whether or not to output details. Defaults to true.
15
- attr_accessor :verbose
16
-
17
- # The threshold value (in percent) for coverage. If the
18
- # actual coverage is not equal to this value, the task will raise an
19
- # exception.
20
- attr_accessor :threshold
21
-
22
- # Require the threshold value be met exactly. This is the default.
23
- attr_accessor :require_exact_threshold
24
-
25
- def initialize(name=:verify_rcov)
26
- @name = name
27
- @index_html = 'coverage/index.html'
28
- @verbose = true
29
- @require_exact_threshold = true
30
- yield self if block_given?
31
- raise "Threshold must be set" if @threshold.nil?
32
- define
33
- end
34
-
35
- def define
36
- desc "Verify that rcov coverage is at least #{threshold}%"
37
- task @name do
38
- total_coverage = 0
39
-
40
- File.open(index_html).each_line do |line|
41
- if line =~ /<tt class='coverage_total'>\s*(\d+\.\d+)%\s*<\/tt>/
42
- total_coverage = $1.to_f
43
- break
44
- end
45
- end
46
- puts "Coverage: #{total_coverage}% (threshold: #{threshold}%)" if verbose
47
- raise "Coverage must be at least #{threshold}% but was #{total_coverage}%" if total_coverage < threshold
48
- raise "Coverage has increased above the threshold of #{threshold}% to #{total_coverage}%. You should update your threshold value." if (total_coverage > threshold) and require_exact_threshold
49
- end
50
- end
51
- end
52
- end
data/lib/spec/ruby.rb DELETED
@@ -1,9 +0,0 @@
1
- module Spec
2
- module Ruby
3
- class << self
4
- def version
5
- RUBY_VERSION
6
- end
7
- end
8
- end
9
- end
@@ -1,77 +0,0 @@
1
- module Spec
2
- module Runner
3
- class BacktraceTweaker
4
- def initialize(*patterns)
5
- @ignore_patterns = []
6
- end
7
-
8
- def clean_up_double_slashes(line)
9
- line.gsub!('//','/')
10
- end
11
-
12
- def ignore_patterns(*patterns)
13
- # do nothing. Only QuietBacktraceTweaker ignores patterns.
14
- end
15
-
16
- def ignored_patterns
17
- []
18
- end
19
-
20
- def tweak_backtrace(error)
21
- return if error.backtrace.nil?
22
- tweaked = error.backtrace.collect do |message|
23
- clean_up_double_slashes(message)
24
- kept_lines = message.split("\n").select do |line|
25
- ignored_patterns.each do |ignore|
26
- break if line =~ ignore
27
- end
28
- end
29
- kept_lines.empty?? nil : kept_lines.join("\n")
30
- end
31
- error.set_backtrace(tweaked.select {|line| line})
32
- end
33
- end
34
-
35
- class NoisyBacktraceTweaker < BacktraceTweaker
36
- end
37
-
38
- # Tweaks raised Exceptions to mask noisy (unneeded) parts of the backtrace
39
- class QuietBacktraceTweaker < BacktraceTweaker
40
- unless defined?(IGNORE_PATTERNS)
41
- spec_files = Dir["lib/*"].map do |path|
42
- subpath = path[1..-1]
43
- /#{subpath}/
44
- end
45
- IGNORE_PATTERNS = spec_files + [
46
- /\/rspec-[^\/]*\/lib\/spec\//,
47
- /\/spork-[^\/]*\/lib\/spork\//,
48
- /\/lib\/ruby\//,
49
- /bin\/spec:/,
50
- /bin\/spork:/,
51
- /bin\/rcov:/,
52
- /lib\/rspec-rails/,
53
- /vendor\/rails/,
54
- # TextMate's Ruby and RSpec plugins
55
- /Ruby\.tmbundle\/Support\/tmruby.rb:/,
56
- /RSpec\.tmbundle\/Support\/lib/,
57
- /temp_textmate\./,
58
- /mock_frameworks\/rspec/,
59
- /spec_server/
60
- ]
61
- end
62
-
63
- def initialize(*patterns)
64
- super
65
- ignore_patterns(*patterns)
66
- end
67
-
68
- def ignore_patterns(*patterns)
69
- @ignore_patterns += patterns.flatten.map { |pattern| Regexp.new(pattern) }
70
- end
71
-
72
- def ignored_patterns
73
- IGNORE_PATTERNS + @ignore_patterns
74
- end
75
- end
76
- end
77
- end
@@ -1,14 +0,0 @@
1
- module Spec
2
- module Runner
3
- class ClassAndArgumentsParser
4
- def self.parse(s)
5
- if s =~ /([a-zA-Z_]+(?:::[a-zA-Z_]+)*):?(.*)/
6
- arg = $2 == "" ? nil : $2
7
- [$1, arg]
8
- else
9
- raise "Couldn't parse #{s.inspect}"
10
- end
11
- end
12
- end
13
- end
14
- end
@@ -1,15 +0,0 @@
1
- require 'spec/runner/option_parser'
2
-
3
- module Spec
4
- module Runner
5
- class CommandLine
6
- def self.run(tmp_options=Spec::Runner.options)
7
- orig_options = Spec::Runner.options
8
- Spec::Runner.use tmp_options
9
- tmp_options.run_examples
10
- ensure
11
- Spec::Runner.use orig_options
12
- end
13
- end
14
- end
15
- end
@@ -1,194 +0,0 @@
1
- module Spec
2
- module Runner
3
- class Configuration
4
- include Spec::Example::ArgsAndOptions
5
-
6
- # Chooses what mock framework to use. Example:
7
- #
8
- # Spec::Runner.configure do |config|
9
- # config.mock_with :rspec, :mocha, :flexmock, or :rr
10
- # end
11
- #
12
- # To use any other mock framework, you'll have to provide your own
13
- # adapter. This is simply a module that responds to the following
14
- # methods:
15
- #
16
- # setup_mocks_for_rspec
17
- # verify_mocks_for_rspec
18
- # teardown_mocks_for_rspec.
19
- #
20
- # These are your hooks into the lifecycle of a given example. RSpec will
21
- # call setup_mocks_for_rspec before running anything else in each
22
- # Example. After executing the #after methods, RSpec will then call
23
- # verify_mocks_for_rspec and teardown_mocks_for_rspec (this is
24
- # guaranteed to run even if there are failures in
25
- # verify_mocks_for_rspec).
26
- #
27
- # Once you've defined this module, you can pass that to mock_with:
28
- #
29
- # Spec::Runner.configure do |config|
30
- # config.mock_with MyMockFrameworkAdapter
31
- # end
32
- #
33
- def mock_with(mock_framework)
34
- @mock_framework = case mock_framework
35
- when Symbol
36
- mock_framework_path(mock_framework.to_s)
37
- else
38
- mock_framework
39
- end
40
- end
41
-
42
- def mock_framework # :nodoc:
43
- @mock_framework ||= mock_framework_path("rspec")
44
- end
45
-
46
- # :call-seq:
47
- # include(Some::Helpers)
48
- # include(Some::Helpers, More::Helpers)
49
- # include(My::Helpers, :type => :key)
50
- #
51
- # Declares modules to be included in multiple example groups
52
- # (<tt>describe</tt> blocks). With no <tt>:type</tt>, the modules listed
53
- # will be included in all example groups.
54
- #
55
- # Use <tt>:type</tt> to restrict
56
- # the inclusion to a subset of example groups. The value assigned to
57
- # <tt>:type</tt> should be a key that maps to a class that is either a
58
- # subclass of Spec::Example::ExampleGroup or extends
59
- # Spec::Example::ExampleGroupMethods and includes
60
- # Spec::Example::ExampleMethods.
61
- #
62
- # For example, the rspec-rails gem/plugin extends Test::Unit::TestCase
63
- # with Spec::Example::ExampleGroupMethods and includes
64
- # Spec::Example::ExampleMethods in it. So if you have a module of helper
65
- # methods for controller examples, you could do this:
66
- #
67
- # config.include(ControllerExampleHelpers, :type => :controller)
68
- #
69
- # Only example groups that have that type will get the modules included:
70
- #
71
- # describe Account, :type => :model do
72
- # # Will *not* include ControllerExampleHelpers
73
- # end
74
- #
75
- # describe AccountsController, :type => :controller do
76
- # # *Will* include ControllerExampleHelpers
77
- # end
78
- #
79
- def include(*modules_and_options)
80
- include_or_extend(:include, *modules_and_options)
81
- end
82
-
83
- # :call-seq:
84
- # extend(Some::Helpers)
85
- # extend(Some::Helpers, More::Helpers)
86
- # extend(My::Helpers, :type => :key)
87
- #
88
- # Works just like #include, but extends the example groups
89
- # with the modules rather than including them.
90
- def extend(*modules_and_options)
91
- include_or_extend(:extend, *modules_and_options)
92
- end
93
-
94
- # Appends a global <tt>before</tt> block to all example groups.
95
- # <tt>scope</tt> can be any of <tt>:each</tt> (default), <tt>:all</tt>, or
96
- # <tt>:suite</tt>. When <tt>:each</tt>, the block is executed before each
97
- # example. When <tt>:all</tt>, the block is executed once per example
98
- # group, before any of its examples are run. When <tt>:suite</tt> the
99
- # block is run once before the entire suite is run.
100
- def append_before(scope = :each, options={}, &proc)
101
- add_callback(:append_before, scope, options, &proc)
102
- end
103
- alias_method :before, :append_before
104
-
105
- # Prepends a global <tt>before</tt> block to all example groups.
106
- #
107
- # See <tt>append_before</tt> for scoping semantics.
108
- def prepend_before(scope = :each, options={}, &proc)
109
- add_callback(:prepend_before, scope, options, &proc)
110
- end
111
-
112
- # Prepends a global <tt>after</tt> block to all example groups.
113
- #
114
- # See <tt>append_before</tt> for scoping semantics.
115
- def prepend_after(scope = :each, options={}, &proc)
116
- add_callback(:prepend_after, scope, options, &proc)
117
- end
118
- alias_method :after, :prepend_after
119
-
120
- # Appends a global <tt>after</tt> block to all example groups.
121
- #
122
- # See <tt>append_before</tt> for scoping semantics.
123
- def append_after(scope = :each, options={}, &proc)
124
- add_callback(:append_after, scope, options, &proc)
125
- end
126
-
127
- # DEPRECATED - use Spec::Matchers::DSL instead
128
- #
129
- # Defines global predicate matchers. Example:
130
- #
131
- # config.predicate_matchers[:swim] = :can_swim?
132
- #
133
- # This makes it possible to say:
134
- #
135
- # person.should swim # passes if person.can_swim? returns true
136
- #
137
- def predicate_matchers
138
- @predicate_matchers ||= Spec::HashWithDeprecationNotice.new("predicate_matchers", "the new Matcher DSL")
139
- end
140
-
141
- # Adds patterns to the list of patterns ignored in the backtrace when a
142
- # failure is output by rspec. Example:
143
- #
144
- # config.ignore_backtrace_patterns /spork/, /shoulda/, "/some/weird/path/"
145
- #
146
- # When quiet backtraces are turned on (default), this will exclude any
147
- # lines that match any of the Regexps and Strings passed.
148
- #
149
- def ignore_backtrace_patterns(*patterns)
150
- @ignored_backtrace_patterns ||= []
151
- @ignored_backtrace_patterns += patterns
152
- end
153
-
154
- def ignored_backtrace_patterns # :nodoc:
155
- @ignored_backtrace_patterns ||= []
156
- end
157
-
158
- private
159
-
160
- def include_or_extend(action, *args)
161
- modules, options = args_and_options(*args)
162
- [get_type_from_options(options)].flatten.each do |required_example_group|
163
- required_example_group = required_example_group.to_sym if required_example_group
164
- modules.each do |mod|
165
- Spec::Example::ExampleGroupFactory[required_example_group].__send__(action, mod)
166
- end
167
- end
168
- end
169
-
170
- def add_callback(sym, *args, &proc)
171
- scope, options = scope_and_options(*args)
172
- example_group = Spec::Example::ExampleGroupFactory[get_type_from_options(options)]
173
- example_group.__send__(sym, scope, &proc)
174
- end
175
-
176
- def get_type_from_options(options)
177
- options[:type] || options[:behaviour_type]
178
- end
179
-
180
- def mock_framework_path(framework_name)
181
- "spec/adapters/mock_frameworks/#{framework_name}"
182
- end
183
-
184
- def scope_and_options(*args) # :nodoc:
185
- args, options = args_and_options(*args)
186
- return scope_from(*args), options
187
- end
188
-
189
- def scope_from(*args) # :nodoc:
190
- args[0] || :each
191
- end
192
- end
193
- end
194
- end
@@ -1,93 +0,0 @@
1
- require 'spec/runner/differs/load-diff-lcs'
2
- require 'pp'
3
-
4
- module Spec
5
- module Expectations
6
- module Differs
7
- unless defined?(Spec::Expectations::Differs::Default)
8
- class Default
9
- def initialize(options)
10
- @options = options
11
- end
12
-
13
- # This is snagged from diff/lcs/ldiff.rb (which is a commandline tool)
14
- def diff_as_string(data_new, data_old)
15
- data_old = data_old.split(/\n/).map! { |e| e.chomp }
16
- data_new = data_new.split(/\n/).map! { |e| e.chomp }
17
- output = ""
18
- diffs = Diff::LCS.diff(data_old, data_new)
19
- return output if diffs.empty?
20
- oldhunk = hunk = nil
21
- file_length_difference = 0
22
- diffs.each do |piece|
23
- begin
24
- hunk = Diff::LCS::Hunk.new(data_old, data_new, piece, context_lines,
25
- file_length_difference)
26
- file_length_difference = hunk.file_length_difference
27
- next unless oldhunk
28
- # Hunks may overlap, which is why we need to be careful when our
29
- # diff includes lines of context. Otherwise, we might print
30
- # redundant lines.
31
- if (context_lines > 0) and hunk.overlaps?(oldhunk)
32
- hunk.unshift(oldhunk)
33
- else
34
- output << oldhunk.diff(format)
35
- end
36
- ensure
37
- oldhunk = hunk
38
- output << "\n"
39
- end
40
- end
41
- #Handle the last remaining hunk
42
- output << oldhunk.diff(format) << "\n"
43
- end
44
-
45
- def diff_as_object(target,expected)
46
- diff_as_string(PP.pp(target,""), PP.pp(expected,""))
47
- end
48
-
49
- def diff_as_hash(target, expected)
50
- contains_hash = false
51
- contains_array = false
52
-
53
- extra_expected_keys = expected.keys - target.keys
54
- extra_target_keys = target.keys - expected.keys
55
-
56
- o = "\n"
57
-
58
- o << "Expected hash contains keys that target hash does not: " << extra_expected_keys.inspect << "\n" if !extra_expected_keys.empty?
59
- o << "Target hash contains keys that expected hash does not: " << extra_target_keys.inspect << "\n" if !extra_target_keys.empty?
60
-
61
- expected.delete_if do |key, value|
62
- contains_hash = true if value.is_a?(Hash)
63
- contains_array = true if value.is_a?(Array)
64
- target[key] == value
65
- end
66
-
67
- expected.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |key|
68
- o << "Expected the key #{key.inspect} to be #{expected[key].inspect}, but was #{target[key].inspect}\n"
69
- end
70
-
71
- o << "\n"
72
-
73
- if contains_hash || contains_array
74
- o << diff_as_object(target, expected)
75
- else
76
- o
77
- end
78
- end
79
-
80
- protected
81
- def format
82
- @options.diff_format
83
- end
84
-
85
- def context_lines
86
- @options.context_lines
87
- end
88
- end
89
-
90
- end
91
- end
92
- end
93
- end