opal-rspec 0.6.2 → 0.7.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (710) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +5 -5
  3. data/.travis.yml +47 -19
  4. data/Appraisals +9 -0
  5. data/CHANGELOG.md +4 -6
  6. data/Gemfile +9 -9
  7. data/README.md +2 -2
  8. data/Rakefile +4 -182
  9. data/bin/console +14 -0
  10. data/{util/create_requires.rb → bin/generate_requires} +20 -10
  11. data/bin/opal +3 -0
  12. data/bin/opal-rspec +3 -0
  13. data/bin/setup +7 -0
  14. data/config.ru +13 -11
  15. data/example/Gemfile +5 -1
  16. data/exe/opal-rspec +78 -0
  17. data/gemfiles/.bundle/config +2 -0
  18. data/gemfiles/opal_0.11.gemfile +14 -0
  19. data/gemfiles/opal_master.gemfile +14 -0
  20. data/{opal → lib-opal}/opal-rspec.rb +0 -0
  21. data/lib-opal/opal/rspec.rb +5 -0
  22. data/{opal → lib-opal}/opal/rspec/async.rb +3 -2
  23. data/lib-opal/opal/rspec/async/core_ext.rb +23 -0
  24. data/lib-opal/opal/rspec/async/example.rb +187 -0
  25. data/{opal → lib-opal}/opal/rspec/async/example_group.rb +1 -1
  26. data/{opal → lib-opal}/opal/rspec/async/hooks.rb +4 -2
  27. data/lib-opal/opal/rspec/async/legacy.rb +49 -0
  28. data/lib-opal/opal/rspec/async/reporter.rb +17 -0
  29. data/lib-opal/opal/rspec/async/runner.rb +44 -0
  30. data/lib-opal/opal/rspec/autorun.rb +3 -0
  31. data/lib-opal/opal/rspec/browser.rb +13 -0
  32. data/lib-opal/opal/rspec/default_config.rb +12 -0
  33. data/{opal → lib-opal}/opal/rspec/fixes.rb +0 -0
  34. data/{opal/opal/rspec/fixes/opal/compatibility.rb → lib-opal/opal/rspec/fixes/opal.rb} +35 -0
  35. data/{opal → lib-opal}/opal/rspec/fixes/rspec.rb +0 -0
  36. data/{opal → lib-opal}/opal/rspec/fixes/rspec/caller_filter.rb +0 -0
  37. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core.rb +0 -0
  38. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/configuration.rb +9 -0
  39. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/example.rb +0 -0
  40. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/formatters.rb +0 -0
  41. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/formatters/backtrace_formatter.rb +0 -0
  42. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/formatters/console_codes.rb +0 -0
  43. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/formatters/deprecation_formatter.rb +0 -0
  44. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/formatters/generated_deprecation_message.rb +0 -0
  45. data/lib-opal/opal/rspec/fixes/rspec/core/formatters/json_formatter.rb +15 -0
  46. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/formatters/loader.rb +6 -0
  47. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/metadata.rb +0 -0
  48. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/notifications.rb +0 -0
  49. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/notifications/examples_notification.rb +0 -0
  50. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/notifications/failed_example_notification.rb +0 -0
  51. data/lib-opal/opal/rspec/fixes/rspec/core/notifications/summary_notification.rb +21 -0
  52. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/ordering.rb +0 -0
  53. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/ordering/random.rb +0 -0
  54. data/{opal → lib-opal}/opal/rspec/fixes/rspec/core/warnings.rb +10 -1
  55. data/{opal → lib-opal}/opal/rspec/fixes/rspec/example_groups.rb +0 -0
  56. data/{opal → lib-opal}/opal/rspec/fixes/rspec/expectations.rb +0 -0
  57. data/{opal → lib-opal}/opal/rspec/fixes/rspec/expectations/fail_with.rb +0 -0
  58. data/{opal → lib-opal}/opal/rspec/fixes/rspec/matchers.rb +0 -0
  59. data/{opal → lib-opal}/opal/rspec/fixes/rspec/matchers/built_in.rb +0 -0
  60. data/{opal → lib-opal}/opal/rspec/fixes/rspec/matchers/built_in/all.rb +0 -0
  61. data/{opal → lib-opal}/opal/rspec/fixes/rspec/matchers/built_in/compound.rb +0 -0
  62. data/{opal → lib-opal}/opal/rspec/fixes/rspec/matchers/built_in/start_and_end_with.rb +0 -0
  63. data/{opal → lib-opal}/opal/rspec/fixes/rspec/matchers/built_in/yield.rb +0 -0
  64. data/{opal → lib-opal}/opal/rspec/fixes/rspec/matchers/pretty.rb +0 -0
  65. data/{opal → lib-opal}/opal/rspec/fixes/rspec/mocks.rb +0 -0
  66. data/{opal → lib-opal}/opal/rspec/fixes/rspec/mocks/error_generator.rb +0 -0
  67. data/lib-opal/opal/rspec/fixes/rspec/mocks/space.rb +41 -0
  68. data/{opal → lib-opal}/opal/rspec/fixes/rspec/mocks/test_double.rb +0 -0
  69. data/{opal → lib-opal}/opal/rspec/fixes/rspec/mocks/verifying_double.rb +0 -0
  70. data/{opal → lib-opal}/opal/rspec/fixes/rspec/support.rb +1 -0
  71. data/{opal → lib-opal}/opal/rspec/fixes/rspec/support/encoded_string.rb +0 -0
  72. data/lib-opal/opal/rspec/fixes/rspec/support/formatter_support.rb +34 -0
  73. data/{opal → lib-opal}/opal/rspec/fixes/rspec/support/recursive_const_methods.rb +0 -0
  74. data/{opal → lib-opal}/opal/rspec/fixes/rspec/support/spec.rb +0 -0
  75. data/{opal → lib-opal}/opal/rspec/fixes/rspec/support/spec/stderr_splitter.rb +0 -0
  76. data/{opal → lib-opal}/opal/rspec/fixes/rspec/support/warnings.rb +0 -2
  77. data/{opal → lib-opal}/opal/rspec/formatter/browser_formatter.rb +0 -0
  78. data/{opal → lib-opal}/opal/rspec/formatter/document_io.rb +0 -0
  79. data/{opal → lib-opal}/opal/rspec/formatter/element.rb +0 -0
  80. data/{opal → lib-opal}/opal/rspec/formatter/html_printer.rb +0 -0
  81. data/{opal → lib-opal}/opal/rspec/formatter/noop_flush_string_io.rb +2 -0
  82. data/{opal → lib-opal}/opal/rspec/pre_require_fixes.rb +1 -1
  83. data/{opal → lib-opal}/opal/rspec/requires.rb +5 -2
  84. data/lib-opal/opal/rspec/spec_opts.rb.erb +1 -0
  85. data/{opal → lib-opal}/opal/rspec/sprockets_runner.rb.erb +0 -0
  86. data/lib/opal/rspec.rb +37 -28
  87. data/lib/opal/rspec/cached_environment.rb +7 -4
  88. data/lib/opal/rspec/locator.rb +38 -0
  89. data/lib/opal/rspec/rake_task.rb +12 -130
  90. data/lib/opal/rspec/runner.rb +136 -0
  91. data/lib/opal/rspec/sprockets_environment.rb +5 -3
  92. data/lib/opal/rspec/version.rb +1 -1
  93. data/opal-rspec.gemspec +32 -20
  94. data/rspec-core/spec/files_to_exclude.txt +12 -0
  95. data/rspec-core/spec/filters.rb +211 -0
  96. data/rspec-core/spec/fixes/missing_constants.rb +34 -0
  97. data/{spec/rspec/core → rspec-core/spec/fixes}/sandboxing.rb +0 -0
  98. data/rspec-core/spec/fixes/shared_examples.rb +6 -0
  99. data/rspec-core/spec/requires.rb +41 -0
  100. data/{spec/rspec/expectations/spec_files_exclude.txt → rspec-expectations/spec/files_to_exclude.txt} +0 -0
  101. data/rspec-expectations/spec/filters.rb +188 -0
  102. data/{spec/rspec/expectations/fixes/not_compatible.rb → rspec-expectations/spec/fixes/missing_constants.rb} +4 -0
  103. data/rspec-expectations/spec/fixes/shared_examples.rb +15 -0
  104. data/rspec-expectations/spec/requires.rb +32 -0
  105. data/{spec/rspec/mocks/spec_files_exclude.txt → rspec-mocks/spec/files_to_exclude.txt} +0 -0
  106. data/rspec-mocks/spec/filters.rb +98 -0
  107. data/rspec-mocks/spec/fixes/shared_examples.rb +6 -0
  108. data/rspec-mocks/spec/requires.rb +22 -0
  109. data/{spec/rspec/support/spec_files_exclude.txt → rspec-support/spec/files_to_exclude.txt} +0 -0
  110. data/rspec-support/spec/filters.rb +17 -0
  111. data/{spec/rspec/mocks → rspec-support/spec}/fixes/missing_constants.rb +0 -0
  112. data/{spec/rspec/core → rspec-support/spec}/fixes/shared_examples.rb +1 -0
  113. data/{spec/rspec/core/require_specs.rb → rspec-support/spec/requires.rb} +14 -8
  114. data/spec-opal-passing/spec_helper.rb +3 -0
  115. data/spec-opal-passing/tautology_spec.rb +21 -0
  116. data/{spec/rspec/core/opal_alternates/rspec → spec-opal-rspec}/core/example_group_spec.rb +0 -0
  117. data/{spec/rspec/core/opal_alternates/rspec → spec-opal-rspec}/core/failed_example_notification_spec.rb +0 -0
  118. data/{spec/rspec/core/opal_alternates/rspec → spec-opal-rspec}/core/hooks_spec.rb +0 -0
  119. data/{spec/rspec/core/opal_alternates/rspec → spec-opal-rspec}/core/memoized_helpers_spec.rb +3 -3
  120. data/{spec/rspec/core/opal_alternates/rspec → spec-opal-rspec}/core/metadata_spec.rb +0 -0
  121. data/{spec/rspec/expectations/opal_alternates → spec-opal-rspec/expectations}/be_instance_of_spec.rb +0 -0
  122. data/{spec/rspec/expectations/opal_alternates → spec-opal-rspec/expectations}/dsl_spec.rb +0 -0
  123. data/{spec/rspec/expectations/opal_alternates → spec-opal-rspec/expectations}/expectation_target_spec.rb +0 -0
  124. data/{spec/rspec/expectations/opal_alternates → spec-opal-rspec/expectations}/yield_spec.rb +0 -0
  125. data/{spec/opal → spec-opal}/after_hooks_spec.rb +0 -0
  126. data/{spec/opal → spec-opal}/around_hooks_spec.rb +0 -89
  127. data/{spec/opal → spec-opal}/async_spec.rb +1 -53
  128. data/{spec/opal → spec-opal}/before_hooks_spec.rb +0 -0
  129. data/{spec/mri/unit/opal/rspec/opal/browser_formatter_spec.rb → spec-opal/browser-formatter/opal_browser_formatter_spec.rb} +1 -1
  130. data/{spec/opal → spec-opal}/example_spec.rb +0 -0
  131. data/spec-opal/legacy_async_spec.rb +189 -0
  132. data/{spec/opal → spec-opal}/matchers_spec.rb +0 -0
  133. data/{spec/opal → spec-opal}/mock_spec.rb +0 -0
  134. data/{spec → spec-opal}/other/color_on_by_default_spec.rb +0 -0
  135. data/{spec → spec-opal}/other/dummy_spec.rb +0 -0
  136. data/{spec → spec-opal}/other/formatter_dependency.rb +0 -0
  137. data/{spec → spec-opal}/other/ignored_spec.opal +0 -0
  138. data/{spec → spec-opal}/other/test_formatter.rb +0 -0
  139. data/{spec/opal → spec-opal}/should_syntax_spec.rb +0 -0
  140. data/{spec/opal → spec-opal}/skip_pending_spec.rb +0 -0
  141. data/{spec/opal → spec-opal}/spec_helper.rb +4 -0
  142. data/{spec/mri/integration/rack → spec-opal}/sprockets_runner_js_errors.rb.erb +5 -7
  143. data/{spec/opal → spec-opal}/subject_spec.rb +0 -0
  144. data/{rspec-core/spec/rspec/core/resources/a_bar.rb → stubs/cgi/escape.rb} +0 -0
  145. data/{rspec-core/spec/rspec/core/resources/a_foo.rb → stubs/cgi/util.rb} +0 -0
  146. data/{rspec-core/spec/rspec/core/resources/acceptance/bar.rb → stubs/diff/lcs.rb} +0 -0
  147. data/{rspec-core/spec/rspec/core/resources/acceptance/foo_spec.rb → stubs/diff/lcs/assertions.rb} +0 -0
  148. data/{rspec-core/spec/support/fake_minitest/minitest.rb → stubs/diff/lcs/block.rb} +0 -0
  149. data/stubs/diff/lcs/callbacks.rb +0 -0
  150. data/stubs/diff/lcs/change.rb +0 -0
  151. data/stubs/diff/lcs/hunk.rb +0 -0
  152. data/stubs/diff/lcs/internals.rb +0 -0
  153. data/stubs/drb/drb.rb +0 -0
  154. data/stubs/minitest.rb +0 -0
  155. data/stubs/minitest/assertions.rb +0 -0
  156. data/stubs/minitest/unit.rb +0 -0
  157. data/stubs/mutex_m.rb +0 -0
  158. data/stubs/optparse.rb +0 -0
  159. data/stubs/prettyprint.rb +0 -0
  160. data/stubs/rubygems/bundler_version_finder.rb +0 -0
  161. data/stubs/rubygems/util.rb +0 -0
  162. data/stubs/shellwords.rb +0 -0
  163. data/stubs/socket.rb +0 -0
  164. data/stubs/tempfile.rb +0 -0
  165. data/stubs/test/unit/assertions.rb +0 -0
  166. data/stubs/uri.rb +0 -0
  167. data/tasks/building.rake +50 -0
  168. data/tasks/testing.rake +73 -0
  169. metadata +203 -651
  170. data/lib/opal/rspec/post_rack_locator.rb +0 -20
  171. data/lib/opal/rspec/pre_rack_locator.rb +0 -32
  172. data/opal/opal/rspec.rb +0 -23
  173. data/opal/opal/rspec/async/async_example.rb +0 -96
  174. data/opal/opal/rspec/async/legacy.rb +0 -49
  175. data/opal/opal/rspec/async/reporter.rb +0 -9
  176. data/opal/opal/rspec/fixes/opal.rb +0 -1
  177. data/opal/opal/rspec/fixes/rspec/core/formatters/json_formatter.rb +0 -10
  178. data/opal/opal/rspec/fixes/rspec/core/notifications/summary_notification.rb +0 -25
  179. data/opal/opal/rspec/fixes/rspec/mocks/space.rb +0 -37
  180. data/opal/opal/rspec/formatter/opal_closed_tty_io.rb +0 -27
  181. data/opal/opal/rspec/runner.rb +0 -91
  182. data/opal/opal/rspec/spec_opts.rb.erb +0 -27
  183. data/rspec-core/benchmarks/call_v_yield.rb +0 -81
  184. data/rspec-core/benchmarks/check_inclusion.rb +0 -125
  185. data/rspec-core/benchmarks/define_method_v_attr_reader_v_def.rb +0 -81
  186. data/rspec-core/benchmarks/eager_vs_lazy_metadata.rb +0 -126
  187. data/rspec-core/benchmarks/eager_vs_lazy_metadata/define_examples.rb +0 -22
  188. data/rspec-core/benchmarks/filter_object.rb +0 -35
  189. data/rspec-core/benchmarks/index_v_take_while.rb +0 -47
  190. data/rspec-core/benchmarks/map_then_flatten_vs_flat_map_benchmarks.rb +0 -94
  191. data/rspec-core/benchmarks/require_relative_v_require.rb +0 -75
  192. data/rspec-core/benchmarks/respond_to_v_defined.rb +0 -72
  193. data/rspec-core/benchmarks/several_regexps_v_one_big_one.rb +0 -86
  194. data/rspec-core/benchmarks/sort_by_v_shuffle.rb +0 -83
  195. data/rspec-core/benchmarks/to_proc_v_not_to_proc.rb +0 -539
  196. data/rspec-core/features/step_definitions/additional_cli_steps.rb +0 -126
  197. data/rspec-core/features/step_definitions/core_standalone_steps.rb +0 -12
  198. data/rspec-core/features/support/env.rb +0 -21
  199. data/rspec-core/features/support/require_expect_syntax_in_aruba_specs.rb +0 -29
  200. data/rspec-core/features/support/rubinius.rb +0 -6
  201. data/rspec-core/lib/rspec/autorun.rb +0 -2
  202. data/rspec-core/lib/rspec/core.rb +0 -169
  203. data/rspec-core/lib/rspec/core/backport_random.rb +0 -336
  204. data/rspec-core/lib/rspec/core/backtrace_formatter.rb +0 -66
  205. data/rspec-core/lib/rspec/core/configuration.rb +0 -1440
  206. data/rspec-core/lib/rspec/core/configuration_options.rb +0 -173
  207. data/rspec-core/lib/rspec/core/drb.rb +0 -111
  208. data/rspec-core/lib/rspec/core/dsl.rb +0 -93
  209. data/rspec-core/lib/rspec/core/example.rb +0 -502
  210. data/rspec-core/lib/rspec/core/example_group.rb +0 -606
  211. data/rspec-core/lib/rspec/core/filter_manager.rb +0 -259
  212. data/rspec-core/lib/rspec/core/flat_map.rb +0 -18
  213. data/rspec-core/lib/rspec/core/formatters.rb +0 -240
  214. data/rspec-core/lib/rspec/core/formatters/base_formatter.rb +0 -67
  215. data/rspec-core/lib/rspec/core/formatters/base_text_formatter.rb +0 -76
  216. data/rspec-core/lib/rspec/core/formatters/console_codes.rb +0 -64
  217. data/rspec-core/lib/rspec/core/formatters/deprecation_formatter.rb +0 -222
  218. data/rspec-core/lib/rspec/core/formatters/documentation_formatter.rb +0 -68
  219. data/rspec-core/lib/rspec/core/formatters/helpers.rb +0 -87
  220. data/rspec-core/lib/rspec/core/formatters/html_formatter.rb +0 -149
  221. data/rspec-core/lib/rspec/core/formatters/html_printer.rb +0 -403
  222. data/rspec-core/lib/rspec/core/formatters/json_formatter.rb +0 -94
  223. data/rspec-core/lib/rspec/core/formatters/profile_formatter.rb +0 -65
  224. data/rspec-core/lib/rspec/core/formatters/progress_formatter.rb +0 -28
  225. data/rspec-core/lib/rspec/core/formatters/protocol.rb +0 -163
  226. data/rspec-core/lib/rspec/core/formatters/snippet_extractor.rb +0 -104
  227. data/rspec-core/lib/rspec/core/hooks.rb +0 -591
  228. data/rspec-core/lib/rspec/core/memoized_helpers.rb +0 -472
  229. data/rspec-core/lib/rspec/core/metadata.rb +0 -437
  230. data/rspec-core/lib/rspec/core/metadata_filter.rb +0 -95
  231. data/rspec-core/lib/rspec/core/minitest_assertions_adapter.rb +0 -28
  232. data/rspec-core/lib/rspec/core/mocking_adapters/flexmock.rb +0 -31
  233. data/rspec-core/lib/rspec/core/mocking_adapters/mocha.rb +0 -57
  234. data/rspec-core/lib/rspec/core/mocking_adapters/null.rb +0 -14
  235. data/rspec-core/lib/rspec/core/mocking_adapters/rr.rb +0 -31
  236. data/rspec-core/lib/rspec/core/mocking_adapters/rspec.rb +0 -32
  237. data/rspec-core/lib/rspec/core/notifications.rb +0 -542
  238. data/rspec-core/lib/rspec/core/option_parser.rb +0 -222
  239. data/rspec-core/lib/rspec/core/ordering.rb +0 -155
  240. data/rspec-core/lib/rspec/core/pending.rb +0 -163
  241. data/rspec-core/lib/rspec/core/project_initializer.rb +0 -48
  242. data/rspec-core/lib/rspec/core/project_initializer/spec/spec_helper.rb +0 -89
  243. data/rspec-core/lib/rspec/core/rake_task.rb +0 -187
  244. data/rspec-core/lib/rspec/core/reporter.rb +0 -149
  245. data/rspec-core/lib/rspec/core/ruby_project.rb +0 -45
  246. data/rspec-core/lib/rspec/core/runner.rb +0 -158
  247. data/rspec-core/lib/rspec/core/shared_context.rb +0 -55
  248. data/rspec-core/lib/rspec/core/shared_example_group.rb +0 -182
  249. data/rspec-core/lib/rspec/core/test_unit_assertions_adapter.rb +0 -30
  250. data/rspec-core/lib/rspec/core/version.rb +0 -9
  251. data/rspec-core/lib/rspec/core/warnings.rb +0 -40
  252. data/rspec-core/lib/rspec/core/world.rb +0 -183
  253. data/rspec-core/spec/command_line/order_spec.rb +0 -213
  254. data/rspec-core/spec/rspec/core/backtrace_formatter_spec.rb +0 -306
  255. data/rspec-core/spec/rspec/core/configuration_options_spec.rb +0 -425
  256. data/rspec-core/spec/rspec/core/configuration_spec.rb +0 -1963
  257. data/rspec-core/spec/rspec/core/drb_spec.rb +0 -278
  258. data/rspec-core/spec/rspec/core/dsl_spec.rb +0 -85
  259. data/rspec-core/spec/rspec/core/example_execution_result_spec.rb +0 -142
  260. data/rspec-core/spec/rspec/core/example_group_constants_spec.rb +0 -16
  261. data/rspec-core/spec/rspec/core/example_group_spec.rb +0 -1621
  262. data/rspec-core/spec/rspec/core/example_spec.rb +0 -662
  263. data/rspec-core/spec/rspec/core/failed_example_notification_spec.rb +0 -25
  264. data/rspec-core/spec/rspec/core/filter_manager_spec.rb +0 -299
  265. data/rspec-core/spec/rspec/core/formatters/base_text_formatter_spec.rb +0 -182
  266. data/rspec-core/spec/rspec/core/formatters/console_codes_spec.rb +0 -65
  267. data/rspec-core/spec/rspec/core/formatters/deprecation_formatter_spec.rb +0 -225
  268. data/rspec-core/spec/rspec/core/formatters/documentation_formatter_spec.rb +0 -111
  269. data/rspec-core/spec/rspec/core/formatters/helpers_spec.rb +0 -104
  270. data/rspec-core/spec/rspec/core/formatters/html_formatter_spec.rb +0 -111
  271. data/rspec-core/spec/rspec/core/formatters/json_formatter_spec.rb +0 -183
  272. data/rspec-core/spec/rspec/core/formatters/profile_formatter_spec.rb +0 -99
  273. data/rspec-core/spec/rspec/core/formatters/progress_formatter_spec.rb +0 -55
  274. data/rspec-core/spec/rspec/core/formatters/snippet_extractor_spec.rb +0 -26
  275. data/rspec-core/spec/rspec/core/formatters_spec.rb +0 -160
  276. data/rspec-core/spec/rspec/core/hooks_filtering_spec.rb +0 -227
  277. data/rspec-core/spec/rspec/core/hooks_spec.rb +0 -447
  278. data/rspec-core/spec/rspec/core/memoized_helpers_spec.rb +0 -537
  279. data/rspec-core/spec/rspec/core/metadata_filter_spec.rb +0 -181
  280. data/rspec-core/spec/rspec/core/metadata_spec.rb +0 -642
  281. data/rspec-core/spec/rspec/core/notifications_spec.rb +0 -92
  282. data/rspec-core/spec/rspec/core/option_parser_spec.rb +0 -270
  283. data/rspec-core/spec/rspec/core/ordering_spec.rb +0 -102
  284. data/rspec-core/spec/rspec/core/pending_example_spec.rb +0 -221
  285. data/rspec-core/spec/rspec/core/pending_spec.rb +0 -8
  286. data/rspec-core/spec/rspec/core/project_initializer_spec.rb +0 -123
  287. data/rspec-core/spec/rspec/core/rake_task_spec.rb +0 -351
  288. data/rspec-core/spec/rspec/core/random_spec.rb +0 -47
  289. data/rspec-core/spec/rspec/core/reporter_spec.rb +0 -198
  290. data/rspec-core/spec/rspec/core/resources/a_spec.rb +0 -1
  291. data/rspec-core/spec/rspec/core/resources/custom_example_group_runner.rb +0 -14
  292. data/rspec-core/spec/rspec/core/resources/formatter_specs.rb +0 -58
  293. data/rspec-core/spec/rspec/core/resources/utf8_encoded.rb +0 -9
  294. data/rspec-core/spec/rspec/core/rspec_matchers_spec.rb +0 -45
  295. data/rspec-core/spec/rspec/core/ruby_project_spec.rb +0 -26
  296. data/rspec-core/spec/rspec/core/runner_spec.rb +0 -309
  297. data/rspec-core/spec/rspec/core/shared_context_spec.rb +0 -102
  298. data/rspec-core/spec/rspec/core/shared_example_group_spec.rb +0 -268
  299. data/rspec-core/spec/rspec/core/warnings_spec.rb +0 -72
  300. data/rspec-core/spec/rspec/core/world_spec.rb +0 -142
  301. data/rspec-core/spec/rspec/core_spec.rb +0 -103
  302. data/rspec-core/spec/spec_helper.rb +0 -89
  303. data/rspec-core/spec/support/config_options_helper.rb +0 -13
  304. data/rspec-core/spec/support/fake_minitest/minitest/minitest_assertions.rb +0 -4
  305. data/rspec-core/spec/support/fake_minitest/test/unit/assertions.rb +0 -6
  306. data/rspec-core/spec/support/formatter_support.rb +0 -263
  307. data/rspec-core/spec/support/helper_methods.rb +0 -26
  308. data/rspec-core/spec/support/isolated_home_directory.rb +0 -16
  309. data/rspec-core/spec/support/matchers.rb +0 -103
  310. data/rspec-core/spec/support/mathn_integration_support.rb +0 -12
  311. data/rspec-core/spec/support/sandboxing.rb +0 -50
  312. data/rspec-core/spec/support/shared_example_groups.rb +0 -43
  313. data/rspec-core/spec/support/spec_files.rb +0 -44
  314. data/rspec-expectations/benchmarks/2.x_vs_3.x_matcher_dsl_implementation.rb +0 -253
  315. data/rspec-expectations/benchmarks/autoload_v_require.rb +0 -25
  316. data/rspec-expectations/benchmarks/cloning_matchers.rb +0 -19
  317. data/rspec-expectations/benchmarks/default_messages_as_methods_v_blocks.rb +0 -27
  318. data/rspec-expectations/benchmarks/example_spec.rb +0 -9
  319. data/rspec-expectations/benchmarks/include_v_superclass.rb +0 -39
  320. data/rspec-expectations/benchmarks/match_array/failing_with_distinct_items.rb +0 -147
  321. data/rspec-expectations/benchmarks/match_array/failing_with_duplicate_items.rb +0 -122
  322. data/rspec-expectations/benchmarks/match_array/passing_with_distinct_items.rb +0 -154
  323. data/rspec-expectations/benchmarks/match_array/passing_with_duplicate_items.rb +0 -132
  324. data/rspec-expectations/benchmarks/match_array/rubyprof/passing_with_distinct_items.rb +0 -9
  325. data/rspec-expectations/benchmarks/matcher_dsl_vs_classes.rb +0 -180
  326. data/rspec-expectations/benchmarks/method_to_proc.rb +0 -72
  327. data/rspec-expectations/benchmarks/set_vs_array_include.rb +0 -68
  328. data/rspec-expectations/features/step_definitions/additional_cli_steps.rb +0 -22
  329. data/rspec-expectations/features/support/disallow_certain_apis.rb +0 -34
  330. data/rspec-expectations/features/support/env.rb +0 -21
  331. data/rspec-expectations/features/support/rubinius.rb +0 -6
  332. data/rspec-expectations/lib/rspec/expectations.rb +0 -68
  333. data/rspec-expectations/lib/rspec/expectations/configuration.rb +0 -147
  334. data/rspec-expectations/lib/rspec/expectations/expectation_target.rb +0 -119
  335. data/rspec-expectations/lib/rspec/expectations/fail_with.rb +0 -34
  336. data/rspec-expectations/lib/rspec/expectations/handler.rb +0 -167
  337. data/rspec-expectations/lib/rspec/expectations/minitest_integration.rb +0 -17
  338. data/rspec-expectations/lib/rspec/expectations/syntax.rb +0 -132
  339. data/rspec-expectations/lib/rspec/expectations/version.rb +0 -8
  340. data/rspec-expectations/lib/rspec/matchers.rb +0 -967
  341. data/rspec-expectations/lib/rspec/matchers/aliased_matcher.rb +0 -116
  342. data/rspec-expectations/lib/rspec/matchers/built_in.rb +0 -52
  343. data/rspec-expectations/lib/rspec/matchers/built_in/all.rb +0 -85
  344. data/rspec-expectations/lib/rspec/matchers/built_in/base_matcher.rb +0 -132
  345. data/rspec-expectations/lib/rspec/matchers/built_in/be.rb +0 -277
  346. data/rspec-expectations/lib/rspec/matchers/built_in/be_between.rb +0 -77
  347. data/rspec-expectations/lib/rspec/matchers/built_in/be_instance_of.rb +0 -22
  348. data/rspec-expectations/lib/rspec/matchers/built_in/be_kind_of.rb +0 -16
  349. data/rspec-expectations/lib/rspec/matchers/built_in/be_within.rb +0 -72
  350. data/rspec-expectations/lib/rspec/matchers/built_in/change.rb +0 -337
  351. data/rspec-expectations/lib/rspec/matchers/built_in/compound.rb +0 -258
  352. data/rspec-expectations/lib/rspec/matchers/built_in/contain_exactly.rb +0 -249
  353. data/rspec-expectations/lib/rspec/matchers/built_in/cover.rb +0 -24
  354. data/rspec-expectations/lib/rspec/matchers/built_in/eq.rb +0 -75
  355. data/rspec-expectations/lib/rspec/matchers/built_in/eql.rb +0 -34
  356. data/rspec-expectations/lib/rspec/matchers/built_in/equal.rb +0 -81
  357. data/rspec-expectations/lib/rspec/matchers/built_in/exist.rb +0 -86
  358. data/rspec-expectations/lib/rspec/matchers/built_in/has.rb +0 -101
  359. data/rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb +0 -84
  360. data/rspec-expectations/lib/rspec/matchers/built_in/include.rb +0 -105
  361. data/rspec-expectations/lib/rspec/matchers/built_in/match.rb +0 -29
  362. data/rspec-expectations/lib/rspec/matchers/built_in/operators.rb +0 -119
  363. data/rspec-expectations/lib/rspec/matchers/built_in/output.rb +0 -152
  364. data/rspec-expectations/lib/rspec/matchers/built_in/raise_error.rb +0 -174
  365. data/rspec-expectations/lib/rspec/matchers/built_in/respond_to.rb +0 -91
  366. data/rspec-expectations/lib/rspec/matchers/built_in/satisfy.rb +0 -39
  367. data/rspec-expectations/lib/rspec/matchers/built_in/start_and_end_with.rb +0 -82
  368. data/rspec-expectations/lib/rspec/matchers/built_in/throw_symbol.rb +0 -132
  369. data/rspec-expectations/lib/rspec/matchers/built_in/yield.rb +0 -420
  370. data/rspec-expectations/lib/rspec/matchers/composable.rb +0 -183
  371. data/rspec-expectations/lib/rspec/matchers/dsl.rb +0 -391
  372. data/rspec-expectations/lib/rspec/matchers/generated_descriptions.rb +0 -42
  373. data/rspec-expectations/lib/rspec/matchers/matcher_delegator.rb +0 -33
  374. data/rspec-expectations/lib/rspec/matchers/matcher_protocol.rb +0 -99
  375. data/rspec-expectations/lib/rspec/matchers/pretty.rb +0 -77
  376. data/rspec-expectations/spec/rspec/expectations/configuration_spec.rb +0 -226
  377. data/rspec-expectations/spec/rspec/expectations/expectation_target_spec.rb +0 -147
  378. data/rspec-expectations/spec/rspec/expectations/extensions/kernel_spec.rb +0 -69
  379. data/rspec-expectations/spec/rspec/expectations/fail_with_spec.rb +0 -73
  380. data/rspec-expectations/spec/rspec/expectations/handler_spec.rb +0 -200
  381. data/rspec-expectations/spec/rspec/expectations/minitest_integration_spec.rb +0 -25
  382. data/rspec-expectations/spec/rspec/expectations/syntax_spec.rb +0 -93
  383. data/rspec-expectations/spec/rspec/expectations_spec.rb +0 -15
  384. data/rspec-expectations/spec/rspec/matchers/aliased_matcher_spec.rb +0 -113
  385. data/rspec-expectations/spec/rspec/matchers/aliases_spec.rb +0 -455
  386. data/rspec-expectations/spec/rspec/matchers/built_in/all_spec.rb +0 -212
  387. data/rspec-expectations/spec/rspec/matchers/built_in/base_matcher_spec.rb +0 -140
  388. data/rspec-expectations/spec/rspec/matchers/built_in/be_between_spec.rb +0 -157
  389. data/rspec-expectations/spec/rspec/matchers/built_in/be_instance_of_spec.rb +0 -61
  390. data/rspec-expectations/spec/rspec/matchers/built_in/be_kind_of_spec.rb +0 -39
  391. data/rspec-expectations/spec/rspec/matchers/built_in/be_spec.rb +0 -685
  392. data/rspec-expectations/spec/rspec/matchers/built_in/be_within_spec.rb +0 -139
  393. data/rspec-expectations/spec/rspec/matchers/built_in/change_spec.rb +0 -829
  394. data/rspec-expectations/spec/rspec/matchers/built_in/compound_spec.rb +0 -537
  395. data/rspec-expectations/spec/rspec/matchers/built_in/contain_exactly_spec.rb +0 -556
  396. data/rspec-expectations/spec/rspec/matchers/built_in/cover_spec.rb +0 -67
  397. data/rspec-expectations/spec/rspec/matchers/built_in/eq_spec.rb +0 -176
  398. data/rspec-expectations/spec/rspec/matchers/built_in/eql_spec.rb +0 -39
  399. data/rspec-expectations/spec/rspec/matchers/built_in/equal_spec.rb +0 -130
  400. data/rspec-expectations/spec/rspec/matchers/built_in/exist_spec.rb +0 -139
  401. data/rspec-expectations/spec/rspec/matchers/built_in/has_spec.rb +0 -179
  402. data/rspec-expectations/spec/rspec/matchers/built_in/have_attributes_spec.rb +0 -177
  403. data/rspec-expectations/spec/rspec/matchers/built_in/include_spec.rb +0 -587
  404. data/rspec-expectations/spec/rspec/matchers/built_in/match_spec.rb +0 -100
  405. data/rspec-expectations/spec/rspec/matchers/built_in/operators_spec.rb +0 -250
  406. data/rspec-expectations/spec/rspec/matchers/built_in/output_spec.rb +0 -168
  407. data/rspec-expectations/spec/rspec/matchers/built_in/raise_error_spec.rb +0 -446
  408. data/rspec-expectations/spec/rspec/matchers/built_in/respond_to_spec.rb +0 -290
  409. data/rspec-expectations/spec/rspec/matchers/built_in/satisfy_spec.rb +0 -42
  410. data/rspec-expectations/spec/rspec/matchers/built_in/start_and_end_with_spec.rb +0 -347
  411. data/rspec-expectations/spec/rspec/matchers/built_in/throw_symbol_spec.rb +0 -133
  412. data/rspec-expectations/spec/rspec/matchers/built_in/yield_spec.rb +0 -643
  413. data/rspec-expectations/spec/rspec/matchers/composable_spec.rb +0 -77
  414. data/rspec-expectations/spec/rspec/matchers/define_negated_matcher_spec.rb +0 -199
  415. data/rspec-expectations/spec/rspec/matchers/description_generation_spec.rb +0 -189
  416. data/rspec-expectations/spec/rspec/matchers/dsl_spec.rb +0 -1036
  417. data/rspec-expectations/spec/rspec/matchers/legacy_spec.rb +0 -104
  418. data/rspec-expectations/spec/rspec/matchers_spec.rb +0 -108
  419. data/rspec-expectations/spec/spec_helper.rb +0 -94
  420. data/rspec-expectations/spec/support/matchers.rb +0 -54
  421. data/rspec-expectations/spec/support/shared_examples.rb +0 -101
  422. data/rspec-mocks/benchmarks/double_creation.rb +0 -66
  423. data/rspec-mocks/benchmarks/each_value_v_values_each.rb +0 -58
  424. data/rspec-mocks/benchmarks/find_original_method_early.rb +0 -64
  425. data/rspec-mocks/benchmarks/method_defined_at_any_visibility.rb +0 -101
  426. data/rspec-mocks/benchmarks/thread_safety.rb +0 -24
  427. data/rspec-mocks/benchmarks/transfer_nested_constants.rb +0 -77
  428. data/rspec-mocks/features/step_definitions/additional_cli_steps.rb +0 -21
  429. data/rspec-mocks/features/support/disallow_certain_apis.rb +0 -24
  430. data/rspec-mocks/features/support/env.rb +0 -22
  431. data/rspec-mocks/features/support/rubinius.rb +0 -6
  432. data/rspec-mocks/lib/rspec/mocks.rb +0 -126
  433. data/rspec-mocks/lib/rspec/mocks/any_instance.rb +0 -10
  434. data/rspec-mocks/lib/rspec/mocks/any_instance/chain.rb +0 -109
  435. data/rspec-mocks/lib/rspec/mocks/any_instance/expect_chain_chain.rb +0 -35
  436. data/rspec-mocks/lib/rspec/mocks/any_instance/expectation_chain.rb +0 -48
  437. data/rspec-mocks/lib/rspec/mocks/any_instance/message_chains.rb +0 -85
  438. data/rspec-mocks/lib/rspec/mocks/any_instance/proxy.rb +0 -116
  439. data/rspec-mocks/lib/rspec/mocks/any_instance/recorder.rb +0 -267
  440. data/rspec-mocks/lib/rspec/mocks/any_instance/stub_chain.rb +0 -45
  441. data/rspec-mocks/lib/rspec/mocks/any_instance/stub_chain_chain.rb +0 -27
  442. data/rspec-mocks/lib/rspec/mocks/argument_list_matcher.rb +0 -72
  443. data/rspec-mocks/lib/rspec/mocks/argument_matchers.rb +0 -282
  444. data/rspec-mocks/lib/rspec/mocks/configuration.rb +0 -157
  445. data/rspec-mocks/lib/rspec/mocks/error_generator.rb +0 -253
  446. data/rspec-mocks/lib/rspec/mocks/example_methods.rb +0 -379
  447. data/rspec-mocks/lib/rspec/mocks/instance_method_stasher.rb +0 -135
  448. data/rspec-mocks/lib/rspec/mocks/marshal_extension.rb +0 -41
  449. data/rspec-mocks/lib/rspec/mocks/matchers/expectation_customization.rb +0 -20
  450. data/rspec-mocks/lib/rspec/mocks/matchers/have_received.rb +0 -121
  451. data/rspec-mocks/lib/rspec/mocks/matchers/receive.rb +0 -106
  452. data/rspec-mocks/lib/rspec/mocks/matchers/receive_message_chain.rb +0 -66
  453. data/rspec-mocks/lib/rspec/mocks/matchers/receive_messages.rb +0 -71
  454. data/rspec-mocks/lib/rspec/mocks/message_chain.rb +0 -91
  455. data/rspec-mocks/lib/rspec/mocks/message_expectation.rb +0 -694
  456. data/rspec-mocks/lib/rspec/mocks/method_double.rb +0 -260
  457. data/rspec-mocks/lib/rspec/mocks/method_reference.rb +0 -155
  458. data/rspec-mocks/lib/rspec/mocks/mutate_const.rb +0 -324
  459. data/rspec-mocks/lib/rspec/mocks/object_reference.rb +0 -91
  460. data/rspec-mocks/lib/rspec/mocks/order_group.rb +0 -81
  461. data/rspec-mocks/lib/rspec/mocks/proxy.rb +0 -431
  462. data/rspec-mocks/lib/rspec/mocks/space.rb +0 -221
  463. data/rspec-mocks/lib/rspec/mocks/standalone.rb +0 -3
  464. data/rspec-mocks/lib/rspec/mocks/syntax.rb +0 -329
  465. data/rspec-mocks/lib/rspec/mocks/targets.rb +0 -97
  466. data/rspec-mocks/lib/rspec/mocks/test_double.rb +0 -135
  467. data/rspec-mocks/lib/rspec/mocks/verifying_double.rb +0 -127
  468. data/rspec-mocks/lib/rspec/mocks/verifying_message_expecation.rb +0 -62
  469. data/rspec-mocks/lib/rspec/mocks/verifying_proxy.rb +0 -171
  470. data/rspec-mocks/lib/rspec/mocks/version.rb +0 -9
  471. data/rspec-mocks/spec/rspec/mocks/and_call_original_spec.rb +0 -267
  472. data/rspec-mocks/spec/rspec/mocks/and_return_spec.rb +0 -21
  473. data/rspec-mocks/spec/rspec/mocks/and_wrap_original_spec.rb +0 -63
  474. data/rspec-mocks/spec/rspec/mocks/and_yield_spec.rb +0 -161
  475. data/rspec-mocks/spec/rspec/mocks/any_instance/message_chains_spec.rb +0 -39
  476. data/rspec-mocks/spec/rspec/mocks/any_instance_spec.rb +0 -1242
  477. data/rspec-mocks/spec/rspec/mocks/argument_matchers_spec.rb +0 -336
  478. data/rspec-mocks/spec/rspec/mocks/array_including_matcher_spec.rb +0 -39
  479. data/rspec-mocks/spec/rspec/mocks/at_least_spec.rb +0 -147
  480. data/rspec-mocks/spec/rspec/mocks/at_most_spec.rb +0 -113
  481. data/rspec-mocks/spec/rspec/mocks/before_all_spec.rb +0 -75
  482. data/rspec-mocks/spec/rspec/mocks/block_return_value_spec.rb +0 -68
  483. data/rspec-mocks/spec/rspec/mocks/combining_implementation_instructions_spec.rb +0 -196
  484. data/rspec-mocks/spec/rspec/mocks/configuration_spec.rb +0 -175
  485. data/rspec-mocks/spec/rspec/mocks/double_spec.rb +0 -830
  486. data/rspec-mocks/spec/rspec/mocks/example_methods_spec.rb +0 -11
  487. data/rspec-mocks/spec/rspec/mocks/expiration_spec.rb +0 -90
  488. data/rspec-mocks/spec/rspec/mocks/hash_excluding_matcher_spec.rb +0 -65
  489. data/rspec-mocks/spec/rspec/mocks/hash_including_matcher_spec.rb +0 -92
  490. data/rspec-mocks/spec/rspec/mocks/instance_method_stasher_spec.rb +0 -72
  491. data/rspec-mocks/spec/rspec/mocks/marshal_extension_spec.rb +0 -67
  492. data/rspec-mocks/spec/rspec/mocks/matchers/have_received_spec.rb +0 -513
  493. data/rspec-mocks/spec/rspec/mocks/matchers/receive_message_chain_spec.rb +0 -227
  494. data/rspec-mocks/spec/rspec/mocks/matchers/receive_messages_spec.rb +0 -148
  495. data/rspec-mocks/spec/rspec/mocks/matchers/receive_spec.rb +0 -525
  496. data/rspec-mocks/spec/rspec/mocks/methods_spec.rb +0 -24
  497. data/rspec-mocks/spec/rspec/mocks/mock_expectation_error_spec.rb +0 -20
  498. data/rspec-mocks/spec/rspec/mocks/mock_ordering_spec.rb +0 -112
  499. data/rspec-mocks/spec/rspec/mocks/multiple_return_value_spec.rb +0 -130
  500. data/rspec-mocks/spec/rspec/mocks/mutate_const_spec.rb +0 -561
  501. data/rspec-mocks/spec/rspec/mocks/nil_expectation_warning_spec.rb +0 -52
  502. data/rspec-mocks/spec/rspec/mocks/null_object_double_spec.rb +0 -135
  503. data/rspec-mocks/spec/rspec/mocks/once_counts_spec.rb +0 -50
  504. data/rspec-mocks/spec/rspec/mocks/order_group_spec.rb +0 -26
  505. data/rspec-mocks/spec/rspec/mocks/partial_double_spec.rb +0 -379
  506. data/rspec-mocks/spec/rspec/mocks/partial_double_using_mocks_directly_spec.rb +0 -83
  507. data/rspec-mocks/spec/rspec/mocks/precise_counts_spec.rb +0 -66
  508. data/rspec-mocks/spec/rspec/mocks/serialization_spec.rb +0 -89
  509. data/rspec-mocks/spec/rspec/mocks/should_syntax_spec.rb +0 -539
  510. data/rspec-mocks/spec/rspec/mocks/space_spec.rb +0 -242
  511. data/rspec-mocks/spec/rspec/mocks/spy_spec.rb +0 -127
  512. data/rspec-mocks/spec/rspec/mocks/stash_spec.rb +0 -43
  513. data/rspec-mocks/spec/rspec/mocks/stub_chain_spec.rb +0 -166
  514. data/rspec-mocks/spec/rspec/mocks/stub_implementation_spec.rb +0 -98
  515. data/rspec-mocks/spec/rspec/mocks/stub_spec.rb +0 -520
  516. data/rspec-mocks/spec/rspec/mocks/stubbed_message_expectations_spec.rb +0 -56
  517. data/rspec-mocks/spec/rspec/mocks/syntax_agnostic_message_matchers_spec.rb +0 -99
  518. data/rspec-mocks/spec/rspec/mocks/syntax_spec.rb +0 -7
  519. data/rspec-mocks/spec/rspec/mocks/test_double_spec.rb +0 -53
  520. data/rspec-mocks/spec/rspec/mocks/thrice_counts_spec.rb +0 -72
  521. data/rspec-mocks/spec/rspec/mocks/to_ary_spec.rb +0 -52
  522. data/rspec-mocks/spec/rspec/mocks/twice_counts_spec.rb +0 -64
  523. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/class_double_with_class_loaded_spec.rb +0 -118
  524. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/class_double_with_class_not_loaded_spec.rb +0 -58
  525. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/construction_spec.rb +0 -54
  526. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb +0 -81
  527. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/instance_double_with_class_loaded_spec.rb +0 -195
  528. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/instance_double_with_class_not_loaded_spec.rb +0 -57
  529. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/method_visibility_spec.rb +0 -129
  530. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/object_double_spec.rb +0 -68
  531. data/rspec-mocks/spec/rspec/mocks_spec.rb +0 -199
  532. data/rspec-mocks/spec/spec_helper.rb +0 -131
  533. data/rspec-mocks/spec/support/before_all_shared_example_group.rb +0 -16
  534. data/rspec-mocks/spec/support/doubled_classes.rb +0 -74
  535. data/rspec-mocks/spec/support/matchers.rb +0 -15
  536. data/rspec-support/benchmarks/caller.rb +0 -81
  537. data/rspec-support/lib/rspec/support.rb +0 -76
  538. data/rspec-support/lib/rspec/support/caller_filter.rb +0 -63
  539. data/rspec-support/lib/rspec/support/differ.rb +0 -214
  540. data/rspec-support/lib/rspec/support/directory_maker.rb +0 -61
  541. data/rspec-support/lib/rspec/support/encoded_string.rb +0 -69
  542. data/rspec-support/lib/rspec/support/fuzzy_matcher.rb +0 -48
  543. data/rspec-support/lib/rspec/support/hunk_generator.rb +0 -47
  544. data/rspec-support/lib/rspec/support/matcher_definition.rb +0 -31
  545. data/rspec-support/lib/rspec/support/method_signature_verifier.rb +0 -272
  546. data/rspec-support/lib/rspec/support/os.rb +0 -18
  547. data/rspec-support/lib/rspec/support/recursive_const_methods.rb +0 -76
  548. data/rspec-support/lib/rspec/support/ruby_features.rb +0 -45
  549. data/rspec-support/lib/rspec/support/spec.rb +0 -72
  550. data/rspec-support/lib/rspec/support/spec/deprecation_helpers.rb +0 -60
  551. data/rspec-support/lib/rspec/support/spec/formatting_support.rb +0 -9
  552. data/rspec-support/lib/rspec/support/spec/in_sub_process.rb +0 -43
  553. data/rspec-support/lib/rspec/support/spec/prevent_load_time_warnings.rb +0 -44
  554. data/rspec-support/lib/rspec/support/spec/shell_out.rb +0 -69
  555. data/rspec-support/lib/rspec/support/spec/stderr_splitter.rb +0 -52
  556. data/rspec-support/lib/rspec/support/spec/with_isolated_directory.rb +0 -9
  557. data/rspec-support/lib/rspec/support/spec/with_isolated_stderr.rb +0 -13
  558. data/rspec-support/lib/rspec/support/version.rb +0 -7
  559. data/rspec-support/lib/rspec/support/version_checker.rb +0 -53
  560. data/rspec-support/lib/rspec/support/warnings.rb +0 -39
  561. data/rspec-support/spec/rspec/support/caller_filter_spec.rb +0 -66
  562. data/rspec-support/spec/rspec/support/differ_spec.rb +0 -322
  563. data/rspec-support/spec/rspec/support/directory_maker_spec.rb +0 -58
  564. data/rspec-support/spec/rspec/support/encoded_string_spec.rb +0 -86
  565. data/rspec-support/spec/rspec/support/fuzzy_matcher_spec.rb +0 -179
  566. data/rspec-support/spec/rspec/support/method_signature_verifier_spec.rb +0 -357
  567. data/rspec-support/spec/rspec/support/os_spec.rb +0 -36
  568. data/rspec-support/spec/rspec/support/recursive_const_methods_spec.rb +0 -49
  569. data/rspec-support/spec/rspec/support/spec/in_sub_process_spec.rb +0 -36
  570. data/rspec-support/spec/rspec/support/spec/prevent_load_time_warnings_spec.rb +0 -10
  571. data/rspec-support/spec/rspec/support/spec/shell_out_spec.rb +0 -44
  572. data/rspec-support/spec/rspec/support/spec/stderr_splitter_spec.rb +0 -60
  573. data/rspec-support/spec/rspec/support/spec/with_isolated_std_err_spec.rb +0 -21
  574. data/rspec-support/spec/rspec/support/version_checker_spec.rb +0 -29
  575. data/rspec-support/spec/rspec/support/warnings_spec.rb +0 -66
  576. data/rspec-support/spec/rspec/support_spec.rb +0 -119
  577. data/rspec-support/spec/spec_helper.rb +0 -2
  578. data/rspec/lib/rspec.rb +0 -3
  579. data/rspec/lib/rspec/version.rb +0 -5
  580. data/spec/mri/integration/browser_spec.rb +0 -21
  581. data/spec/mri/integration/spec_opts_spec.rb +0 -81
  582. data/spec/mri/spec_helper.rb +0 -2
  583. data/spec/mri/support/capybara.rb +0 -14
  584. data/spec/mri/unit/opal/rspec/browser_formatter_spec.rb +0 -26
  585. data/spec/mri/unit/opal/rspec/cached_environment_spec.rb +0 -85
  586. data/spec/mri/unit/opal/rspec/rack/config.ru +0 -12
  587. data/spec/mri/unit/opal/rspec/rake_task_spec.rb +0 -320
  588. data/spec/mri/unit/opal/rspec/sprockets_environment_spec.rb +0 -55
  589. data/spec/mri/unit/opal/rspec/temp_dir_helper.rb +0 -19
  590. data/spec/opal/expected_failures.txt +0 -40
  591. data/spec/rspec/core/config.rb +0 -5
  592. data/spec/rspec/core/config.ru +0 -4
  593. data/spec/rspec/core/core_spec_loader.rb +0 -46
  594. data/spec/rspec/core/filter/core/async/example_group.txt +0 -13
  595. data/spec/rspec/core/filter/core/async/hooks.rb +0 -11
  596. data/spec/rspec/core/filter/core/async/memoized_helpers.txt +0 -3
  597. data/spec/rspec/core/filter/core/async/metadata.rb +0 -4
  598. data/spec/rspec/core/filter/core/bugs/filter_manager.txt +0 -4
  599. data/spec/rspec/core/filter/core/bugs/formatters.txt +0 -4
  600. data/spec/rspec/core/filter/core/bugs/memoized_helpers.rb +0 -5
  601. data/spec/rspec/core/filter/core/bugs/metadata.txt +0 -5
  602. data/spec/rspec/core/filter/core/bugs/sandbox/subject_issue_test.rb +0 -328
  603. data/spec/rspec/core/filter/core/bugs/warnings_deprecations.txt +0 -3
  604. data/spec/rspec/core/filter/core/unsupported/core.txt +0 -5
  605. data/spec/rspec/core/filter/core/unsupported/example.txt +0 -7
  606. data/spec/rspec/core/filter/core/unsupported/example_group.txt +0 -13
  607. data/spec/rspec/core/filter/core/unsupported/filter_manager.txt +0 -7
  608. data/spec/rspec/core/filter/core/unsupported/formatters.txt +0 -27
  609. data/spec/rspec/core/filter/core/unsupported/hooks.txt +0 -2
  610. data/spec/rspec/core/filter/core/unsupported/memoized_helpers.txt +0 -6
  611. data/spec/rspec/core/filter/core/unsupported/metadata.txt +0 -14
  612. data/spec/rspec/core/filter/core/unsupported/notifications.txt +0 -8
  613. data/spec/rspec/core/filter/core/unsupported/world.txt +0 -3
  614. data/spec/rspec/core/fixes/missing_constants.rb +0 -20
  615. data/spec/rspec/core/spec_files_exclude.txt +0 -41
  616. data/spec/rspec/expectations/config.rb +0 -21
  617. data/spec/rspec/expectations/config.ru +0 -4
  618. data/spec/rspec/expectations/expectation_spec_loader.rb +0 -110
  619. data/spec/rspec/expectations/filter/bugs/aliased_matcher.txt +0 -2
  620. data/spec/rspec/expectations/filter/bugs/base_matcher.txt +0 -2
  621. data/spec/rspec/expectations/filter/bugs/be_spec.txt +0 -2
  622. data/spec/rspec/expectations/filter/bugs/configuration.txt +0 -5
  623. data/spec/rspec/expectations/filter/bugs/contain_exactly.rb +0 -8
  624. data/spec/rspec/expectations/filter/bugs/define_negated_matcher.rb +0 -8
  625. data/spec/rspec/expectations/filter/bugs/dsl.rb +0 -15
  626. data/spec/rspec/expectations/filter/bugs/equal.txt +0 -3
  627. data/spec/rspec/expectations/filter/bugs/expectation_target.rb +0 -4
  628. data/spec/rspec/expectations/filter/bugs/expectations.rb +0 -4
  629. data/spec/rspec/expectations/filter/bugs/operators.txt +0 -2
  630. data/spec/rspec/expectations/filter/bugs/raise_error.txt +0 -2
  631. data/spec/rspec/expectations/filter/bugs/respond_to.rb +0 -7
  632. data/spec/rspec/expectations/filter/bugs/sandbox/undef.rb +0 -20
  633. data/spec/rspec/expectations/filter/unsupported/aliases.txt +0 -5
  634. data/spec/rspec/expectations/filter/unsupported/be.txt +0 -2
  635. data/spec/rspec/expectations/filter/unsupported/be_instance_of.txt +0 -3
  636. data/spec/rspec/expectations/filter/unsupported/change.txt +0 -2
  637. data/spec/rspec/expectations/filter/unsupported/configuration.txt +0 -2
  638. data/spec/rspec/expectations/filter/unsupported/contain_exactly.txt +0 -2
  639. data/spec/rspec/expectations/filter/unsupported/description_generation.txt +0 -6
  640. data/spec/rspec/expectations/filter/unsupported/dsl.rb +0 -10
  641. data/spec/rspec/expectations/filter/unsupported/eq.txt +0 -10
  642. data/spec/rspec/expectations/filter/unsupported/equal.txt +0 -3
  643. data/spec/rspec/expectations/filter/unsupported/expectation_target.txt +0 -2
  644. data/spec/rspec/expectations/filter/unsupported/expectations.txt +0 -8
  645. data/spec/rspec/expectations/filter/unsupported/has.txt +0 -2
  646. data/spec/rspec/expectations/filter/unsupported/include.txt +0 -3
  647. data/spec/rspec/expectations/filter/unsupported/match.txt +0 -2
  648. data/spec/rspec/expectations/filter/unsupported/matchers.txt +0 -11
  649. data/spec/rspec/expectations/filter/unsupported/output.txt +0 -14
  650. data/spec/rspec/expectations/filter/unsupported/raise_error.txt +0 -3
  651. data/spec/rspec/expectations/filter/unsupported/syntax.txt +0 -3
  652. data/spec/rspec/expectations/filter/unsupported/yield.txt +0 -2
  653. data/spec/rspec/expectations/fixes/example_patches.rb +0 -15
  654. data/spec/rspec/expectations/fixes/missing_constants.rb +0 -12
  655. data/spec/rspec/expectations/require_specs.rb +0 -15
  656. data/spec/rspec/expectations/shared_examples.rb +0 -47
  657. data/spec/rspec/expectations/spec_helper_opal.rb +0 -13
  658. data/spec/rspec/filter_processor.rb +0 -93
  659. data/spec/rspec/mocks/config.ru +0 -4
  660. data/spec/rspec/mocks/filter/bugs/and_call_original.rb +0 -11
  661. data/spec/rspec/mocks/filter/bugs/and_wrap_original.txt +0 -2
  662. data/spec/rspec/mocks/filter/bugs/and_yield.rb +0 -4
  663. data/spec/rspec/mocks/filter/bugs/any_instance.rb +0 -18
  664. data/spec/rspec/mocks/filter/bugs/configuration.txt +0 -2
  665. data/spec/rspec/mocks/filter/bugs/expiration.txt +0 -2
  666. data/spec/rspec/mocks/filter/bugs/instance_method_stasher.txt +0 -2
  667. data/spec/rspec/mocks/filter/bugs/mocks.txt +0 -6
  668. data/spec/rspec/mocks/filter/bugs/mutate_const.txt +0 -2
  669. data/spec/rspec/mocks/filter/bugs/partial_double.rb +0 -7
  670. data/spec/rspec/mocks/filter/bugs/receive.rb +0 -7
  671. data/spec/rspec/mocks/filter/bugs/should_syntax.txt +0 -5
  672. data/spec/rspec/mocks/filter/bugs/space.txt +0 -2
  673. data/spec/rspec/mocks/filter/bugs/spy.txt +0 -5
  674. data/spec/rspec/mocks/filter/bugs/stub_implementation.rb +0 -5
  675. data/spec/rspec/mocks/filter/unsupported/and_call_original.rb +0 -7
  676. data/spec/rspec/mocks/filter/unsupported/and_return.rb +0 -4
  677. data/spec/rspec/mocks/filter/unsupported/any_instance.rb +0 -6
  678. data/spec/rspec/mocks/filter/unsupported/argument_matchers.rb +0 -7
  679. data/spec/rspec/mocks/filter/unsupported/combining_implementation_instructions.rb +0 -4
  680. data/spec/rspec/mocks/filter/unsupported/double.rb +0 -13
  681. data/spec/rspec/mocks/filter/unsupported/have_received.txt +0 -2
  682. data/spec/rspec/mocks/filter/unsupported/instance_double_with_class_loaded.rb +0 -10
  683. data/spec/rspec/mocks/filter/unsupported/mocks.rb +0 -8
  684. data/spec/rspec/mocks/filter/unsupported/nil_expectation_warning.rb +0 -4
  685. data/spec/rspec/mocks/filter/unsupported/partial_double.rb +0 -4
  686. data/spec/rspec/mocks/filter/unsupported/receive.txt +0 -13
  687. data/spec/rspec/mocks/filter/unsupported/receive_messages.txt +0 -2
  688. data/spec/rspec/mocks/filter/unsupported/should_syntax.txt +0 -1
  689. data/spec/rspec/mocks/filter/unsupported/space.rb +0 -7
  690. data/spec/rspec/mocks/fixes/doubled_classes.rb +0 -76
  691. data/spec/rspec/mocks/mocks_spec_loader.rb +0 -91
  692. data/spec/rspec/mocks/require_specs.rb +0 -14
  693. data/spec/rspec/mocks/spec_helper_opal.rb +0 -131
  694. data/spec/rspec/opal_rspec_spec_loader.rb +0 -371
  695. data/spec/rspec/shared/opal/fixes/deprecation_helpers.rb +0 -31
  696. data/spec/rspec/shared/opal/fixes/rspec_helpers.rb +0 -6
  697. data/spec/rspec/shared/opal/separator_formatter.rb +0 -14
  698. data/spec/rspec/support/config.rb +0 -5
  699. data/spec/rspec/support/config.ru +0 -4
  700. data/spec/rspec/support/filter/bugs/recursive_const_methods.txt +0 -3
  701. data/spec/rspec/support/filter/bugs/sandbox/basic_object.rb +0 -30
  702. data/spec/rspec/support/filter/bugs/stderr_splitter_spec.txt +0 -2
  703. data/spec/rspec/support/filter/bugs/support.txt +0 -2
  704. data/spec/rspec/support/filter/unsupported/fuzzy_matcher.rb +0 -4
  705. data/spec/rspec/support/filter/unsupported/support.rb +0 -4
  706. data/spec/rspec/support/filter/unsupported/warnings.txt +0 -6
  707. data/spec/rspec/support/fixes/missing_constants.rb +0 -3
  708. data/spec/rspec/support/require_specs.rb +0 -14
  709. data/spec/rspec/support/spec_helper.rb +0 -27
  710. data/spec/rspec/support/support_spec_loader.rb +0 -38
@@ -1,167 +0,0 @@
1
- module RSpec
2
- module Expectations
3
- # @private
4
- module ExpectationHelper
5
- def self.check_message(msg)
6
- unless msg.nil? || msg.respond_to?(:to_str) || msg.respond_to?(:call)
7
- ::Kernel.warn [
8
- "WARNING: ignoring the provided expectation message argument (",
9
- msg.inspect,
10
- ") since it is not a string or a proc."
11
- ].join
12
- end
13
- end
14
-
15
- # Returns an RSpec-3+ compatible matcher, wrapping a legacy one
16
- # in an adapter if necessary.
17
- #
18
- # @private
19
- def self.modern_matcher_from(matcher)
20
- LegacyMatcherAdapter::RSpec2.wrap(matcher) ||
21
- LegacyMatcherAdapter::RSpec1.wrap(matcher) || matcher
22
- end
23
-
24
- def self.setup(handler, matcher, message)
25
- check_message(message)
26
- ::RSpec::Matchers.last_expectation_handler = handler
27
- ::RSpec::Matchers.last_matcher = modern_matcher_from(matcher)
28
- end
29
-
30
- def self.handle_failure(matcher, message, failure_message_method)
31
- message = message.call if message.respond_to?(:call)
32
- message ||= matcher.__send__(failure_message_method)
33
-
34
- if matcher.respond_to?(:diffable?) && matcher.diffable?
35
- ::RSpec::Expectations.fail_with message, matcher.expected, matcher.actual
36
- else
37
- ::RSpec::Expectations.fail_with message
38
- end
39
- end
40
- end
41
-
42
- # @private
43
- class PositiveExpectationHandler
44
- def self.handle_matcher(actual, initial_matcher, message=nil, &block)
45
- matcher = ExpectationHelper.setup(self, initial_matcher, message)
46
-
47
- return ::RSpec::Matchers::BuiltIn::PositiveOperatorMatcher.new(actual) unless initial_matcher
48
- matcher.matches?(actual, &block) || ExpectationHelper.handle_failure(matcher, message, :failure_message)
49
- end
50
-
51
- def self.verb
52
- "should"
53
- end
54
-
55
- def self.should_method
56
- :should
57
- end
58
-
59
- def self.opposite_should_method
60
- :should_not
61
- end
62
- end
63
-
64
- # @private
65
- class NegativeExpectationHandler
66
- def self.handle_matcher(actual, initial_matcher, message=nil, &block)
67
- matcher = ExpectationHelper.setup(self, initial_matcher, message)
68
-
69
- return ::RSpec::Matchers::BuiltIn::NegativeOperatorMatcher.new(actual) unless initial_matcher
70
- !(does_not_match?(matcher, actual, &block) || ExpectationHelper.handle_failure(matcher, message, :failure_message_when_negated))
71
- end
72
-
73
- def self.does_not_match?(matcher, actual, &block)
74
- if matcher.respond_to?(:does_not_match?)
75
- matcher.does_not_match?(actual, &block)
76
- else
77
- !matcher.matches?(actual, &block)
78
- end
79
- end
80
-
81
- def self.verb
82
- "should not"
83
- end
84
-
85
- def self.should_method
86
- :should_not
87
- end
88
-
89
- def self.opposite_should_method
90
- :should
91
- end
92
- end
93
-
94
- # Wraps a matcher written against one of the legacy protocols in
95
- # order to present the current protocol.
96
- #
97
- # @private
98
- class LegacyMatcherAdapter < Matchers::MatcherDelegator
99
- def initialize(matcher)
100
- super
101
- ::RSpec.warn_deprecation(<<-EOS.gsub(/^\s+\|/, ''), :type => "legacy_matcher")
102
- |#{matcher.class.name || matcher.inspect} implements a legacy RSpec matcher
103
- |protocol. For the current protocol you should expose the failure messages
104
- |via the `failure_message` and `failure_message_when_negated` methods.
105
- |(Used from #{CallerFilter.first_non_rspec_line})
106
- EOS
107
- end
108
-
109
- def self.wrap(matcher)
110
- new(matcher) if interface_matches?(matcher)
111
- end
112
-
113
- # Starting in RSpec 1.2 (and continuing through all 2.x releases),
114
- # the failure message protocol was:
115
- # * `failure_message_for_should`
116
- # * `failure_message_for_should_not`
117
- # @private
118
- class RSpec2 < self
119
- def failure_message
120
- base_matcher.failure_message_for_should
121
- end
122
-
123
- def failure_message_when_negated
124
- base_matcher.failure_message_for_should_not
125
- end
126
-
127
- def self.interface_matches?(matcher)
128
- (
129
- !matcher.respond_to?(:failure_message) &&
130
- matcher.respond_to?(:failure_message_for_should)
131
- ) || (
132
- !matcher.respond_to?(:failure_message_when_negated) &&
133
- matcher.respond_to?(:failure_message_for_should_not)
134
- )
135
- end
136
- end
137
-
138
- # Before RSpec 1.2, the failure message protocol was:
139
- # * `failure_message`
140
- # * `negative_failure_message`
141
- # @private
142
- class RSpec1 < self
143
- def failure_message
144
- base_matcher.failure_message
145
- end
146
-
147
- def failure_message_when_negated
148
- base_matcher.negative_failure_message
149
- end
150
-
151
- # Note: `failure_message` is part of the RSpec 3 protocol
152
- # (paired with `failure_message_when_negated`), so we don't check
153
- # for `failure_message` here.
154
- def self.interface_matches?(matcher)
155
- !matcher.respond_to?(:failure_message_when_negated) &&
156
- matcher.respond_to?(:negative_failure_message)
157
- end
158
- end
159
- end
160
-
161
- # RSpec 3.0 was released with the class name misspelled. For SemVer compatibility,
162
- # we will provide this misspelled alias until 4.0.
163
- # @deprecated Use LegacyMatcherAdapter instead.
164
- # @private
165
- LegacyMacherAdapter = LegacyMatcherAdapter
166
- end
167
- end
@@ -1,17 +0,0 @@
1
- require 'rspec/expectations'
2
-
3
- Minitest::Test.class_eval do
4
- include ::RSpec::Matchers
5
-
6
- def expect(*a, &b)
7
- assert(true) # so each expectation gets counted in minitest's assertion stats
8
- super
9
- end
10
- end
11
-
12
- module RSpec
13
- module Expectations
14
- remove_const :ExpectationNotMetError
15
- ExpectationNotMetError = ::Minitest::Assertion
16
- end
17
- end
@@ -1,132 +0,0 @@
1
- module RSpec
2
- module Expectations
3
- # @api private
4
- # Provides methods for enabling and disabling the available
5
- # syntaxes provided by rspec-expectations.
6
- module Syntax
7
- module_function
8
-
9
- # @api private
10
- # Determines where we add `should` and `should_not`.
11
- def default_should_host
12
- @default_should_host ||= ::Object.ancestors.last
13
- end
14
-
15
- # @api private
16
- # Instructs rspec-expectations to warn on first usage of `should` or `should_not`.
17
- # Enabled by default. This is largely here to facilitate testing.
18
- def warn_about_should!
19
- @warn_about_should = true
20
- end
21
-
22
- # @api private
23
- # Generates a deprecation warning for the given method if no warning
24
- # has already been issued.
25
- def warn_about_should_unless_configured(method_name)
26
- return unless @warn_about_should
27
-
28
- RSpec.deprecate(
29
- "Using `#{method_name}` from rspec-expectations' old `:should` syntax without explicitly enabling the syntax",
30
- :replacement => "the new `:expect` syntax or explicitly enable `:should`"
31
- )
32
-
33
- @warn_about_should = false
34
- end
35
-
36
- # @api private
37
- # Enables the `should` syntax.
38
- def enable_should(syntax_host=default_should_host)
39
- @warn_about_should = false if syntax_host == default_should_host
40
- return if should_enabled?(syntax_host)
41
-
42
- syntax_host.module_exec do
43
- def should(matcher=nil, message=nil, &block)
44
- ::RSpec::Expectations::Syntax.warn_about_should_unless_configured(__method__)
45
- ::RSpec::Expectations::PositiveExpectationHandler.handle_matcher(self, matcher, message, &block)
46
- end
47
-
48
- def should_not(matcher=nil, message=nil, &block)
49
- ::RSpec::Expectations::Syntax.warn_about_should_unless_configured(__method__)
50
- ::RSpec::Expectations::NegativeExpectationHandler.handle_matcher(self, matcher, message, &block)
51
- end
52
- end
53
- end
54
-
55
- # @api private
56
- # Disables the `should` syntax.
57
- def disable_should(syntax_host=default_should_host)
58
- return unless should_enabled?(syntax_host)
59
-
60
- syntax_host.module_exec do
61
- undef should
62
- undef should_not
63
- end
64
- end
65
-
66
- # @api private
67
- # Enables the `expect` syntax.
68
- def enable_expect(syntax_host=::RSpec::Matchers)
69
- return if expect_enabled?(syntax_host)
70
-
71
- syntax_host.module_exec do
72
- def expect(value=::RSpec::Expectations::ExpectationTarget::UndefinedValue, &block)
73
- ::RSpec::Expectations::ExpectationTarget.for(value, block)
74
- end
75
- end
76
- end
77
-
78
- # @api private
79
- # Disables the `expect` syntax.
80
- def disable_expect(syntax_host=::RSpec::Matchers)
81
- return unless expect_enabled?(syntax_host)
82
-
83
- syntax_host.module_exec do
84
- undef expect
85
- end
86
- end
87
-
88
- # @api private
89
- # Indicates whether or not the `should` syntax is enabled.
90
- def should_enabled?(syntax_host=default_should_host)
91
- syntax_host.method_defined?(:should)
92
- end
93
-
94
- # @api private
95
- # Indicates whether or not the `expect` syntax is enabled.
96
- def expect_enabled?(syntax_host=::RSpec::Matchers)
97
- syntax_host.method_defined?(:expect)
98
- end
99
- end
100
- end
101
- end
102
-
103
- if defined?(BasicObject)
104
- # The legacy `:should` syntax adds the following methods directly to
105
- # `BasicObject` so that they are available off of any object. Note, however,
106
- # that this syntax does not always play nice with delegate/proxy objects.
107
- # We recommend you use the non-monkeypatching `:expect` syntax instead.
108
- class BasicObject
109
- # @method should
110
- # Passes if `matcher` returns true. Available on every `Object`.
111
- # @example
112
- # actual.should eq expected
113
- # actual.should match /expression/
114
- # @param [Matcher]
115
- # matcher
116
- # @param [String] message optional message to display when the expectation fails
117
- # @return [Boolean] true if the expectation succeeds (else raises)
118
- # @note This is only available when you have enabled the `:should` syntax.
119
- # @see RSpec::Matchers
120
-
121
- # @method should_not
122
- # Passes if `matcher` returns false. Available on every `Object`.
123
- # @example
124
- # actual.should_not eq expected
125
- # @param [Matcher]
126
- # matcher
127
- # @param [String] message optional message to display when the expectation fails
128
- # @return [Boolean] false if the negative expectation succeeds (else raises)
129
- # @note This is only available when you have enabled the `:should` syntax.
130
- # @see RSpec::Matchers
131
- end
132
- end
@@ -1,8 +0,0 @@
1
- module RSpec
2
- module Expectations
3
- # @private
4
- module Version
5
- STRING = '3.1.2'
6
- end
7
- end
8
- end
@@ -1,967 +0,0 @@
1
- require 'rspec/support'
2
- RSpec::Support.require_rspec_support 'matcher_definition'
3
- RSpec::Support.define_optimized_require_for_rspec(:matchers) { |f| require_relative(f) }
4
-
5
- %w[
6
- pretty
7
- composable
8
- built_in
9
- generated_descriptions
10
- dsl
11
- matcher_delegator
12
- aliased_matcher
13
- ].each { |file| RSpec::Support.require_rspec_matchers(file) }
14
-
15
- # RSpec's top level namespace. All of rspec-expectations is contained
16
- # in the `RSpec::Expectations` and `RSpec::Matchers` namespaces.
17
- module RSpec
18
- # RSpec::Matchers provides a number of useful matchers we use to define
19
- # expectations. Any object that implements the [matcher protocol](Matchers/MatcherProtocol)
20
- # can be used as a matcher.
21
- #
22
- # ## Predicates
23
- #
24
- # In addition to matchers that are defined explicitly, RSpec will create
25
- # custom matchers on the fly for any arbitrary predicate, giving your specs a
26
- # much more natural language feel.
27
- #
28
- # A Ruby predicate is a method that ends with a "?" and returns true or false.
29
- # Common examples are `empty?`, `nil?`, and `instance_of?`.
30
- #
31
- # All you need to do is write `expect(..).to be_` followed by the predicate
32
- # without the question mark, and RSpec will figure it out from there.
33
- # For example:
34
- #
35
- # expect([]).to be_empty # => [].empty?() | passes
36
- # expect([]).not_to be_empty # => [].empty?() | fails
37
- #
38
- # In addtion to prefixing the predicate matchers with "be_", you can also use "be_a_"
39
- # and "be_an_", making your specs read much more naturally:
40
- #
41
- # expect("a string").to be_an_instance_of(String) # =>"a string".instance_of?(String) # passes
42
- #
43
- # expect(3).to be_a_kind_of(Fixnum) # => 3.kind_of?(Numeric) | passes
44
- # expect(3).to be_a_kind_of(Numeric) # => 3.kind_of?(Numeric) | passes
45
- # expect(3).to be_an_instance_of(Fixnum) # => 3.instance_of?(Fixnum) | passes
46
- # expect(3).not_to be_an_instance_of(Numeric) # => 3.instance_of?(Numeric) | fails
47
- #
48
- # RSpec will also create custom matchers for predicates like `has_key?`. To
49
- # use this feature, just state that the object should have_key(:key) and RSpec will
50
- # call has_key?(:key) on the target. For example:
51
- #
52
- # expect(:a => "A").to have_key(:a)
53
- # expect(:a => "A").to have_key(:b) # fails
54
- #
55
- # You can use this feature to invoke any predicate that begins with "has_", whether it is
56
- # part of the Ruby libraries (like `Hash#has_key?`) or a method you wrote on your own class.
57
- #
58
- # Note that RSpec does not provide composable aliases for these dynamic predicate
59
- # matchers. You can easily define your own aliases, though:
60
- #
61
- # RSpec::Matchers.alias_matcher :a_user_who_is_an_admin, :be_an_admin
62
- # expect(user_list).to include(a_user_who_is_an_admin)
63
- #
64
- # ## Custom Matchers
65
- #
66
- # When you find that none of the stock matchers provide a natural feeling
67
- # expectation, you can very easily write your own using RSpec's matcher DSL
68
- # or writing one from scratch.
69
- #
70
- # ### Matcher DSL
71
- #
72
- # Imagine that you are writing a game in which players can be in various
73
- # zones on a virtual board. To specify that bob should be in zone 4, you
74
- # could say:
75
- #
76
- # expect(bob.current_zone).to eql(Zone.new("4"))
77
- #
78
- # But you might find it more expressive to say:
79
- #
80
- # expect(bob).to be_in_zone("4")
81
- #
82
- # and/or
83
- #
84
- # expect(bob).not_to be_in_zone("3")
85
- #
86
- # You can create such a matcher like so:
87
- #
88
- # RSpec::Matchers.define :be_in_zone do |zone|
89
- # match do |player|
90
- # player.in_zone?(zone)
91
- # end
92
- # end
93
- #
94
- # This will generate a <tt>be_in_zone</tt> method that returns a matcher
95
- # with logical default messages for failures. You can override the failure
96
- # messages and the generated description as follows:
97
- #
98
- # RSpec::Matchers.define :be_in_zone do |zone|
99
- # match do |player|
100
- # player.in_zone?(zone)
101
- # end
102
- #
103
- # failure_message do |player|
104
- # # generate and return the appropriate string.
105
- # end
106
- #
107
- # failure_message_when_negated do |player|
108
- # # generate and return the appropriate string.
109
- # end
110
- #
111
- # description do
112
- # # generate and return the appropriate string.
113
- # end
114
- # end
115
- #
116
- # Each of the message-generation methods has access to the block arguments
117
- # passed to the <tt>create</tt> method (in this case, <tt>zone</tt>). The
118
- # failure message methods (<tt>failure_message</tt> and
119
- # <tt>failure_message_when_negated</tt>) are passed the actual value (the
120
- # receiver of <tt>expect(..)</tt> or <tt>expect(..).not_to</tt>).
121
- #
122
- # ### Custom Matcher from scratch
123
- #
124
- # You could also write a custom matcher from scratch, as follows:
125
- #
126
- # class BeInZone
127
- # def initialize(expected)
128
- # @expected = expected
129
- # end
130
- #
131
- # def matches?(target)
132
- # @target = target
133
- # @target.current_zone.eql?(Zone.new(@expected))
134
- # end
135
- #
136
- # def failure_message
137
- # "expected #{@target.inspect} to be in Zone #{@expected}"
138
- # end
139
- #
140
- # def failure_message_when_negated
141
- # "expected #{@target.inspect} not to be in Zone #{@expected}"
142
- # end
143
- # end
144
- #
145
- # ... and a method like this:
146
- #
147
- # def be_in_zone(expected)
148
- # BeInZone.new(expected)
149
- # end
150
- #
151
- # And then expose the method to your specs. This is normally done
152
- # by including the method and the class in a module, which is then
153
- # included in your spec:
154
- #
155
- # module CustomGameMatchers
156
- # class BeInZone
157
- # # ...
158
- # end
159
- #
160
- # def be_in_zone(expected)
161
- # # ...
162
- # end
163
- # end
164
- #
165
- # describe "Player behaviour" do
166
- # include CustomGameMatchers
167
- # # ...
168
- # end
169
- #
170
- # or you can include in globally in a spec_helper.rb file <tt>require</tt>d
171
- # from your spec file(s):
172
- #
173
- # RSpec::configure do |config|
174
- # config.include(CustomGameMatchers)
175
- # end
176
- #
177
- # ### Making custom matchers composable
178
- #
179
- # RSpec's built-in matchers are designed to be composed, in expressions like:
180
- #
181
- # expect(["barn", 2.45]).to contain_exactly(
182
- # a_value_within(0.1).of(2.5),
183
- # a_string_starting_with("bar")
184
- # )
185
- #
186
- # Custom matchers can easily participate in composed matcher expressions like these.
187
- # Include {RSpec::Matchers::Composable} in your custom matcher to make it support
188
- # being composed (matchers defined using the DSL have this included automatically).
189
- # Within your matcher's `matches?` method (or the `match` block, if using the DSL),
190
- # use `values_match?(expected, actual)` rather than `expected == actual`.
191
- # Under the covers, `values_match?` is able to match arbitrary
192
- # nested data structures containing a mix of both matchers and non-matcher objects.
193
- # It uses `===` and `==` to perform the matching, considering the values to
194
- # match if either returns `true`. The `Composable` mixin also provides some helper
195
- # methods for surfacing the matcher descriptions within your matcher's description
196
- # or failure messages.
197
- #
198
- # RSpec's built-in matchers each have a number of aliases that rephrase the matcher
199
- # from a verb phrase (such as `be_within`) to a noun phrase (such as `a_value_within`),
200
- # which reads better when the matcher is passed as an argument in a composed matcher
201
- # expressions, and also uses the noun-phrase wording in the matcher's `description`,
202
- # for readable failure messages. You can alias your custom matchers in similar fashion
203
- # using {RSpec::Matchers.alias_matcher}.
204
- module Matchers
205
- # @method expect
206
- # Supports `expect(actual).to matcher` syntax by wrapping `actual` in an
207
- # `ExpectationTarget`.
208
- # @example
209
- # expect(actual).to eq(expected)
210
- # expect(actual).not_to eq(expected)
211
- # @return [ExpectationTarget]
212
- # @see ExpectationTarget#to
213
- # @see ExpectationTarget#not_to
214
-
215
- # Defines a matcher alias. The returned matcher's `description` will be overriden
216
- # to reflect the phrasing of the new name, which will be used in failure messages
217
- # when passed as an argument to another matcher in a composed matcher expression.
218
- #
219
- # @param new_name [Symbol] the new name for the matcher
220
- # @param old_name [Symbol] the original name for the matcher
221
- # @param options [Hash] options for the aliased matcher
222
- # @option options [Class] :klass the ruby class to use as the decorator. (Not normally used).
223
- # @yield [String] optional block that, when given is used to define the overriden
224
- # description. The yielded arg is the original description. If no block is
225
- # provided, a default description override is used based on the old and
226
- # new names.
227
- #
228
- # @example
229
- #
230
- # RSpec::Matchers.alias_matcher :a_list_that_sums_to, :sum_to
231
- # sum_to(3).description # => "sum to 3"
232
- # a_list_that_sums_to(3).description # => "a list that sums to 3"
233
- #
234
- # @example
235
- #
236
- # RSpec::Matchers.alias_matcher :a_list_sorted_by, :be_sorted_by do |description|
237
- # description.sub("be sorted by", "a list sorted by")
238
- # end
239
- #
240
- # be_sorted_by(:age).description # => "be sorted by age"
241
- # a_list_sorted_by(:age).description # => "a list sorted by age"
242
- #
243
- # @!macro [attach] alias_matcher
244
- # @!parse
245
- # alias $1 $2
246
- def self.alias_matcher(new_name, old_name, options={}, &description_override)
247
- description_override ||= lambda do |old_desc|
248
- old_desc.gsub(Pretty.split_words(old_name), Pretty.split_words(new_name))
249
- end
250
- klass = options.fetch(:klass) { AliasedMatcher }
251
-
252
- define_method(new_name) do |*args, &block|
253
- matcher = __send__(old_name, *args, &block)
254
- klass.new(matcher, description_override)
255
- end
256
- end
257
-
258
- # Defines a negated matcher. The returned matcher's `description` and `failure_message`
259
- # will be overriden to reflect the phrasing of the new name, and the match logic will
260
- # be based on the original matcher but negated.
261
- #
262
- # @param negated_name [Symbol] the name for the negated matcher
263
- # @param base_name [Symbol] the name of the original matcher that will be negated
264
- # @yield [String] optional block that, when given is used to define the overriden
265
- # description. The yielded arg is the original description. If no block is
266
- # provided, a default description override is used based on the old and
267
- # new names.
268
- #
269
- # @example
270
- #
271
- # RSpec::Matchers.define_negated_matcher :a_value_not_between, :a_value_between
272
- # a_value_between(3, 5).description # => "a value between 3 and 5"
273
- # a_value_not_between(3, 5).description # => "a value not between 3 and 5"
274
- def self.define_negated_matcher(negated_name, base_name, &description_override)
275
- alias_matcher(negated_name, base_name, :klass => AliasedNegatedMatcher, &description_override)
276
- end
277
-
278
- # Passes if actual is truthy (anything but false or nil)
279
- def be_truthy
280
- BuiltIn::BeTruthy.new
281
- end
282
- alias_matcher :a_truthy_value, :be_truthy
283
-
284
- # Passes if actual is falsey (false or nil)
285
- def be_falsey
286
- BuiltIn::BeFalsey.new
287
- end
288
- alias_matcher :be_falsy, :be_falsey
289
- alias_matcher :a_falsey_value, :be_falsey
290
- alias_matcher :a_falsy_value, :be_falsey
291
-
292
- # Passes if actual is nil
293
- def be_nil
294
- BuiltIn::BeNil.new
295
- end
296
- alias_matcher :a_nil_value, :be_nil
297
-
298
- # @example
299
- # expect(actual).to be_truthy
300
- # expect(actual).to be_falsey
301
- # expect(actual).to be_nil
302
- # expect(actual).to be_[arbitrary_predicate](*args)
303
- # expect(actual).not_to be_nil
304
- # expect(actual).not_to be_[arbitrary_predicate](*args)
305
- #
306
- # Given true, false, or nil, will pass if actual value is true, false or
307
- # nil (respectively). Given no args means the caller should satisfy an if
308
- # condition (to be or not to be).
309
- #
310
- # Predicates are any Ruby method that ends in a "?" and returns true or
311
- # false. Given be_ followed by arbitrary_predicate (without the "?"),
312
- # RSpec will match convert that into a query against the target object.
313
- #
314
- # The arbitrary_predicate feature will handle any predicate prefixed with
315
- # "be_an_" (e.g. be_an_instance_of), "be_a_" (e.g. be_a_kind_of) or "be_"
316
- # (e.g. be_empty), letting you choose the prefix that best suits the
317
- # predicate.
318
- def be(*args)
319
- args.empty? ? Matchers::BuiltIn::Be.new : equal(*args)
320
- end
321
- alias_matcher :a_value, :be, :klass => AliasedMatcherWithOperatorSupport
322
-
323
- # passes if target.kind_of?(klass)
324
- def be_a(klass)
325
- be_a_kind_of(klass)
326
- end
327
- alias_method :be_an, :be_a
328
-
329
- # Passes if actual.instance_of?(expected)
330
- #
331
- # @example
332
- #
333
- # expect(5).to be_an_instance_of(Fixnum)
334
- # expect(5).not_to be_an_instance_of(Numeric)
335
- # expect(5).not_to be_an_instance_of(Float)
336
- def be_an_instance_of(expected)
337
- BuiltIn::BeAnInstanceOf.new(expected)
338
- end
339
- alias_method :be_instance_of, :be_an_instance_of
340
- alias_matcher :an_instance_of, :be_an_instance_of
341
-
342
- # Passes if actual.kind_of?(expected)
343
- #
344
- # @example
345
- #
346
- # expect(5).to be_a_kind_of(Fixnum)
347
- # expect(5).to be_a_kind_of(Numeric)
348
- # expect(5).not_to be_a_kind_of(Float)
349
- def be_a_kind_of(expected)
350
- BuiltIn::BeAKindOf.new(expected)
351
- end
352
- alias_method :be_kind_of, :be_a_kind_of
353
- alias_matcher :a_kind_of, :be_a_kind_of
354
-
355
- # Passes if actual.between?(min, max). Works with any Comparable object,
356
- # including String, Symbol, Time, or Numeric (Fixnum, Bignum, Integer,
357
- # Float, Complex, and Rational).
358
- #
359
- # By default, `be_between` is inclusive (i.e. passes when given either the max or min value),
360
- # but you can make it `exclusive` by chaining that off the matcher.
361
- #
362
- # @example
363
- #
364
- # expect(5).to be_between(1, 10)
365
- # expect(11).not_to be_between(1, 10)
366
- # expect(10).not_to be_between(1, 10).exclusive
367
- def be_between(min, max)
368
- BuiltIn::BeBetween.new(min, max)
369
- end
370
- alias_matcher :a_value_between, :be_between
371
-
372
- # Passes if actual == expected +/- delta
373
- #
374
- # @example
375
- #
376
- # expect(result).to be_within(0.5).of(3.0)
377
- # expect(result).not_to be_within(0.5).of(3.0)
378
- def be_within(delta)
379
- BuiltIn::BeWithin.new(delta)
380
- end
381
- alias_matcher :a_value_within, :be_within
382
- alias_matcher :within, :be_within
383
-
384
- # Applied to a proc, specifies that its execution will cause some value to
385
- # change.
386
- #
387
- # @param [Object] receiver
388
- # @param [Symbol] message the message to send the receiver
389
- #
390
- # You can either pass <tt>receiver</tt> and <tt>message</tt>, or a block,
391
- # but not both.
392
- #
393
- # When passing a block, it must use the `{ ... }` format, not
394
- # do/end, as `{ ... }` binds to the `change` method, whereas do/end
395
- # would errantly bind to the `expect(..).to` or `expect(...).not_to` method.
396
- #
397
- # You can chain any of the following off of the end to specify details
398
- # about the change:
399
- #
400
- # * `from`
401
- # * `to`
402
- #
403
- # or any one of:
404
- #
405
- # * `by`
406
- # * `by_at_least`
407
- # * `by_at_most`
408
- #
409
- # @example
410
- #
411
- # expect {
412
- # team.add_player(player)
413
- # }.to change(roster, :count)
414
- #
415
- # expect {
416
- # team.add_player(player)
417
- # }.to change(roster, :count).by(1)
418
- #
419
- # expect {
420
- # team.add_player(player)
421
- # }.to change(roster, :count).by_at_least(1)
422
- #
423
- # expect {
424
- # team.add_player(player)
425
- # }.to change(roster, :count).by_at_most(1)
426
- #
427
- # string = "string"
428
- # expect {
429
- # string.reverse!
430
- # }.to change { string }.from("string").to("gnirts")
431
- #
432
- # string = "string"
433
- # expect {
434
- # string
435
- # }.not_to change { string }.from("string")
436
- #
437
- # expect {
438
- # person.happy_birthday
439
- # }.to change(person, :birthday).from(32).to(33)
440
- #
441
- # expect {
442
- # employee.develop_great_new_social_networking_app
443
- # }.to change(employee, :title).from("Mail Clerk").to("CEO")
444
- #
445
- # expect {
446
- # doctor.leave_office
447
- # }.to change(doctor, :sign).from(/is in/).to(/is out/)
448
- #
449
- # user = User.new(:type => "admin")
450
- # expect {
451
- # user.symbolize_type
452
- # }.to change(user, :type).from(String).to(Symbol)
453
- #
454
- # == Notes
455
- #
456
- # Evaluates `receiver.message` or `block` before and after it
457
- # evaluates the block passed to `expect`.
458
- #
459
- # `expect( ... ).not_to change` supports the form that specifies `from`
460
- # (which specifies what you expect the starting, unchanged value to be)
461
- # but does not support forms with subsequent calls to `by`, `by_at_least`,
462
- # `by_at_most` or `to`.
463
- def change(receiver=nil, message=nil, &block)
464
- BuiltIn::Change.new(receiver, message, &block)
465
- end
466
- alias_matcher :a_block_changing, :change
467
- alias_matcher :changing, :change
468
-
469
- # Passes if actual contains all of the expected regardless of order.
470
- # This works for collections. Pass in multiple args and it will only
471
- # pass if all args are found in collection.
472
- #
473
- # @note This is also available using the `=~` operator with `should`,
474
- # but `=~` is not supported with `expect`.
475
- #
476
- # @example
477
- #
478
- # expect([1, 2, 3]).to contain_exactly(1, 2, 3)
479
- # expect([1, 2, 3]).to contain_exactly(1, 3, 2)
480
- #
481
- # @see #match_array
482
- def contain_exactly(*items)
483
- BuiltIn::ContainExactly.new(items)
484
- end
485
- alias_matcher :a_collection_containing_exactly, :contain_exactly
486
- alias_matcher :containing_exactly, :contain_exactly
487
-
488
- # Passes if actual covers expected. This works for
489
- # Ranges. You can also pass in multiple args
490
- # and it will only pass if all args are found in Range.
491
- #
492
- # @example
493
- # expect(1..10).to cover(5)
494
- # expect(1..10).to cover(4, 6)
495
- # expect(1..10).to cover(4, 6, 11) # fails
496
- # expect(1..10).not_to cover(11)
497
- # expect(1..10).not_to cover(5) # fails
498
- #
499
- # ### Warning:: Ruby >= 1.9 only
500
- def cover(*values)
501
- BuiltIn::Cover.new(*values)
502
- end
503
- alias_matcher :a_range_covering, :cover
504
- alias_matcher :covering, :cover
505
-
506
- # Matches if the actual value ends with the expected value(s). In the case
507
- # of a string, matches against the last `expected.length` characters of the
508
- # actual string. In the case of an array, matches against the last
509
- # `expected.length` elements of the actual array.
510
- #
511
- # @example
512
- #
513
- # expect("this string").to end_with "string"
514
- # expect([0, 1, 2, 3, 4]).to end_with 4
515
- # expect([0, 2, 3, 4, 4]).to end_with 3, 4
516
- def end_with(*expected)
517
- BuiltIn::EndWith.new(*expected)
518
- end
519
- alias_matcher :a_collection_ending_with, :end_with
520
- alias_matcher :a_string_ending_with, :end_with
521
- alias_matcher :ending_with, :end_with
522
-
523
- # Passes if <tt>actual == expected</tt>.
524
- #
525
- # See http://www.ruby-doc.org/core/classes/Object.html#M001057 for more
526
- # information about equality in Ruby.
527
- #
528
- # @example
529
- #
530
- # expect(5).to eq(5)
531
- # expect(5).not_to eq(3)
532
- def eq(expected)
533
- BuiltIn::Eq.new(expected)
534
- end
535
- alias_matcher :an_object_eq_to, :eq
536
- alias_matcher :eq_to, :eq
537
-
538
- # Passes if `actual.eql?(expected)`
539
- #
540
- # See http://www.ruby-doc.org/core/classes/Object.html#M001057 for more
541
- # information about equality in Ruby.
542
- #
543
- # @example
544
- #
545
- # expect(5).to eql(5)
546
- # expect(5).not_to eql(3)
547
- def eql(expected)
548
- BuiltIn::Eql.new(expected)
549
- end
550
- alias_matcher :an_object_eql_to, :eql
551
- alias_matcher :eql_to, :eql
552
-
553
- # Passes if <tt>actual.equal?(expected)</tt> (object identity).
554
- #
555
- # See http://www.ruby-doc.org/core/classes/Object.html#M001057 for more
556
- # information about equality in Ruby.
557
- #
558
- # @example
559
- #
560
- # expect(5).to equal(5) # Fixnums are equal
561
- # expect("5").not_to equal("5") # Strings that look the same are not the same object
562
- def equal(expected)
563
- BuiltIn::Equal.new(expected)
564
- end
565
- alias_matcher :an_object_equal_to, :equal
566
- alias_matcher :equal_to, :equal
567
-
568
- # Passes if `actual.exist?` or `actual.exists?`
569
- #
570
- # @example
571
- # expect(File).to exist("path/to/file")
572
- def exist(*args)
573
- BuiltIn::Exist.new(*args)
574
- end
575
- alias_matcher :an_object_existing, :exist
576
- alias_matcher :existing, :exist
577
-
578
- # Passes if actual's attribute values match the expected attributes hash.
579
- # This works no matter how you define your attribute readers.
580
- #
581
- # @example
582
- #
583
- # Person = Struct.new(:name, :age)
584
- # person = Person.new("Bob", 32)
585
- #
586
- # expect(person).to have_attributes(:name => "Bob", :age => 32)
587
- # expect(person).to have_attributes(:name => a_string_starting_with("B"), :age => (a_value > 30) )
588
- #
589
- # @note It will fail if actual doesn't respond to any of the expected attributes.
590
- #
591
- # @example
592
- #
593
- # expect(person).to have_attributes(:color => "red")
594
- def have_attributes(expected)
595
- BuiltIn::HaveAttributes.new(expected)
596
- end
597
- alias_matcher :an_object_having_attributes, :have_attributes
598
-
599
- # Passes if actual includes expected. This works for
600
- # collections and Strings. You can also pass in multiple args
601
- # and it will only pass if all args are found in collection.
602
- #
603
- # @example
604
- #
605
- # expect([1,2,3]).to include(3)
606
- # expect([1,2,3]).to include(2,3)
607
- # expect([1,2,3]).to include(2,3,4) # fails
608
- # expect([1,2,3]).not_to include(4)
609
- # expect("spread").to include("read")
610
- # expect("spread").not_to include("red")
611
- def include(*expected)
612
- BuiltIn::Include.new(*expected)
613
- end
614
- alias_matcher :a_collection_including, :include
615
- alias_matcher :a_string_including, :include
616
- alias_matcher :a_hash_including, :include
617
- alias_matcher :including, :include
618
-
619
- # Passes if actual all expected objects pass. This works for
620
- # any enumerable object.
621
- #
622
- # @example
623
- #
624
- # expect([1, 3, 5]).to all be_odd
625
- # expect([1, 3, 6]).to all be_odd # fails
626
- #
627
- # @note The negative form `not_to all` is not supported. Instead
628
- # use `not_to include` or pass a negative form of a matcher
629
- # as the argument (e.g. `all exclude(:foo)`).
630
- #
631
- # @note You can also use this with compound matchers as well.
632
- #
633
- # @example
634
- # expect([1, 3, 5]).to all( be_odd.and be_an(Integer) )
635
- def all(expected)
636
- BuiltIn::All.new(expected)
637
- end
638
-
639
- # Given a `Regexp` or `String`, passes if `actual.match(pattern)`
640
- # Given an arbitrary nested data structure (e.g. arrays and hashes),
641
- # matches if `expected === actual` || `actual == expected` for each
642
- # pair of elements.
643
- #
644
- # @example
645
- #
646
- # expect(email).to match(/^([^\s]+)((?:[-a-z0-9]+\.)+[a-z]{2,})$/i)
647
- # expect(email).to match("@example.com")
648
- #
649
- # @example
650
- #
651
- # hash = {
652
- # :a => {
653
- # :b => ["foo", 5],
654
- # :c => { :d => 2.05 }
655
- # }
656
- # }
657
- #
658
- # expect(hash).to match(
659
- # :a => {
660
- # :b => a_collection_containing_exactly(
661
- # a_string_starting_with("f"),
662
- # an_instance_of(Fixnum)
663
- # ),
664
- # :c => { :d => (a_value < 3) }
665
- # }
666
- # )
667
- #
668
- # @note The `match_regex` alias is deprecated and is not recommended for use.
669
- # It was added in 2.12.1 to facilitate its use from within custom
670
- # matchers (due to how the custom matcher DSL was evaluated in 2.x,
671
- # `match` could not be used there), but is no longer needed in 3.x.
672
- def match(expected)
673
- BuiltIn::Match.new(expected)
674
- end
675
- alias_matcher :match_regex, :match
676
- alias_matcher :an_object_matching, :match
677
- alias_matcher :a_string_matching, :match
678
- alias_matcher :matching, :match
679
-
680
- # An alternate form of `contain_exactly` that accepts
681
- # the expected contents as a single array arg rather
682
- # that splatted out as individual items.
683
- #
684
- # @example
685
- #
686
- # expect(results).to contain_exactly(1, 2)
687
- # # is identical to:
688
- # expect(results).to match_array([1, 2])
689
- #
690
- # @see #contain_exactly
691
- def match_array(items)
692
- contain_exactly(*items)
693
- end
694
-
695
- # With no arg, passes if the block outputs `to_stdout` or `to_stderr`.
696
- # With a string, passes if the blocks outputs that specific string `to_stdout` or `to_stderr`.
697
- # With a regexp or matcher, passes if the blocks outputs a string `to_stdout` or `to_stderr` that matches.
698
- #
699
- # @example
700
- #
701
- # expect { print 'foo' }.to output.to_stdout
702
- # expect { print 'foo' }.to output('foo').to_stdout
703
- # expect { print 'foo' }.to output(/foo/).to_stdout
704
- #
705
- # expect { do_something }.to_not output.to_stdout
706
- #
707
- # expect { warn('foo') }.to output.to_stderr
708
- # expect { warn('foo') }.to output('foo').to_stderr
709
- # expect { warn('foo') }.to output(/foo/).to_stderr
710
- #
711
- # expect { do_something }.to_not output.to_stderr
712
- #
713
- # @note This matcher works by temporarily replacing `$stdout` or `$stderr`,
714
- # so it's not able to intercept stream output that explicitly uses `STDOUT`/`STDERR`
715
- # or that uses a reference to `$stdout`/`$stderr` that was stored before the
716
- # matcher is used.
717
- def output(expected=nil)
718
- BuiltIn::Output.new(expected)
719
- end
720
- alias_matcher :a_block_outputting, :output
721
-
722
- # With no args, matches if any error is raised.
723
- # With a named error, matches only if that specific error is raised.
724
- # With a named error and messsage specified as a String, matches only if both match.
725
- # With a named error and messsage specified as a Regexp, matches only if both match.
726
- # Pass an optional block to perform extra verifications on the exception matched
727
- #
728
- # @example
729
- #
730
- # expect { do_something_risky }.to raise_error
731
- # expect { do_something_risky }.to raise_error(PoorRiskDecisionError)
732
- # expect { do_something_risky }.to raise_error(PoorRiskDecisionError) { |error| expect(error.data).to eq 42 }
733
- # expect { do_something_risky }.to raise_error(PoorRiskDecisionError, "that was too risky")
734
- # expect { do_something_risky }.to raise_error(PoorRiskDecisionError, /oo ri/)
735
- #
736
- # expect { do_something_risky }.not_to raise_error
737
- def raise_error(error=Exception, message=nil, &block)
738
- BuiltIn::RaiseError.new(error, message, &block)
739
- end
740
- alias_method :raise_exception, :raise_error
741
-
742
- alias_matcher :a_block_raising, :raise_error do |desc|
743
- desc.sub("raise", "a block raising")
744
- end
745
-
746
- alias_matcher :raising, :raise_error do |desc|
747
- desc.sub("raise", "raising")
748
- end
749
-
750
- # Matches if the target object responds to all of the names
751
- # provided. Names can be Strings or Symbols.
752
- #
753
- # @example
754
- #
755
- # expect("string").to respond_to(:length)
756
- #
757
- def respond_to(*names)
758
- BuiltIn::RespondTo.new(*names)
759
- end
760
- alias_matcher :an_object_responding_to, :respond_to
761
- alias_matcher :responding_to, :respond_to
762
-
763
- # Passes if the submitted block returns true. Yields target to the
764
- # block.
765
- #
766
- # Generally speaking, this should be thought of as a last resort when
767
- # you can't find any other way to specify the behaviour you wish to
768
- # specify.
769
- #
770
- # If you do find yourself in such a situation, you could always write
771
- # a custom matcher, which would likely make your specs more expressive.
772
- #
773
- # @example
774
- #
775
- # expect(5).to satisfy { |n| n > 3 }
776
- def satisfy(&block)
777
- BuiltIn::Satisfy.new(&block)
778
- end
779
- alias_matcher :an_object_satisfying, :satisfy
780
- alias_matcher :satisfying, :satisfy
781
-
782
- # Matches if the actual value starts with the expected value(s). In the
783
- # case of a string, matches against the first `expected.length` characters
784
- # of the actual string. In the case of an array, matches against the first
785
- # `expected.length` elements of the actual array.
786
- #
787
- # @example
788
- #
789
- # expect("this string").to start_with "this s"
790
- # expect([0, 1, 2, 3, 4]).to start_with 0
791
- # expect([0, 2, 3, 4, 4]).to start_with 0, 1
792
- def start_with(*expected)
793
- BuiltIn::StartWith.new(*expected)
794
- end
795
- alias_matcher :a_collection_starting_with, :start_with
796
- alias_matcher :a_string_starting_with, :start_with
797
- alias_matcher :starting_with, :start_with
798
-
799
- # Given no argument, matches if a proc throws any Symbol.
800
- #
801
- # Given a Symbol, matches if the given proc throws the specified Symbol.
802
- #
803
- # Given a Symbol and an arg, matches if the given proc throws the
804
- # specified Symbol with the specified arg.
805
- #
806
- # @example
807
- #
808
- # expect { do_something_risky }.to throw_symbol
809
- # expect { do_something_risky }.to throw_symbol(:that_was_risky)
810
- # expect { do_something_risky }.to throw_symbol(:that_was_risky, 'culprit')
811
- #
812
- # expect { do_something_risky }.not_to throw_symbol
813
- # expect { do_something_risky }.not_to throw_symbol(:that_was_risky)
814
- # expect { do_something_risky }.not_to throw_symbol(:that_was_risky, 'culprit')
815
- def throw_symbol(expected_symbol=nil, expected_arg=nil)
816
- BuiltIn::ThrowSymbol.new(expected_symbol, expected_arg)
817
- end
818
-
819
- alias_matcher :a_block_throwing, :throw_symbol do |desc|
820
- desc.sub("throw", "a block throwing")
821
- end
822
-
823
- alias_matcher :throwing, :throw_symbol do |desc|
824
- desc.sub("throw", "throwing")
825
- end
826
-
827
- # Passes if the method called in the expect block yields, regardless
828
- # of whether or not arguments are yielded.
829
- #
830
- # @example
831
- #
832
- # expect { |b| 5.tap(&b) }.to yield_control
833
- # expect { |b| "a".to_sym(&b) }.not_to yield_control
834
- #
835
- # @note Your expect block must accept a parameter and pass it on to
836
- # the method-under-test as a block.
837
- # @note This matcher is not designed for use with methods that yield
838
- # multiple times.
839
- def yield_control
840
- BuiltIn::YieldControl.new
841
- end
842
- alias_matcher :a_block_yielding_control, :yield_control
843
- alias_matcher :yielding_control, :yield_control
844
-
845
- # Passes if the method called in the expect block yields with
846
- # no arguments. Fails if it does not yield, or yields with arguments.
847
- #
848
- # @example
849
- #
850
- # expect { |b| User.transaction(&b) }.to yield_with_no_args
851
- # expect { |b| 5.tap(&b) }.not_to yield_with_no_args # because it yields with `5`
852
- # expect { |b| "a".to_sym(&b) }.not_to yield_with_no_args # because it does not yield
853
- #
854
- # @note Your expect block must accept a parameter and pass it on to
855
- # the method-under-test as a block.
856
- # @note This matcher is not designed for use with methods that yield
857
- # multiple times.
858
- def yield_with_no_args
859
- BuiltIn::YieldWithNoArgs.new
860
- end
861
- alias_matcher :a_block_yielding_with_no_args, :yield_with_no_args
862
- alias_matcher :yielding_with_no_args, :yield_with_no_args
863
-
864
- # Given no arguments, matches if the method called in the expect
865
- # block yields with arguments (regardless of what they are or how
866
- # many there are).
867
- #
868
- # Given arguments, matches if the method called in the expect block
869
- # yields with arguments that match the given arguments.
870
- #
871
- # Argument matching is done using `===` (the case match operator)
872
- # and `==`. If the expected and actual arguments match with either
873
- # operator, the matcher will pass.
874
- #
875
- # @example
876
- #
877
- # expect { |b| 5.tap(&b) }.to yield_with_args # because #tap yields an arg
878
- # expect { |b| 5.tap(&b) }.to yield_with_args(5) # because 5 == 5
879
- # expect { |b| 5.tap(&b) }.to yield_with_args(Fixnum) # because Fixnum === 5
880
- # expect { |b| File.open("f.txt", &b) }.to yield_with_args(/txt/) # because /txt/ === "f.txt"
881
- #
882
- # expect { |b| User.transaction(&b) }.not_to yield_with_args # because it yields no args
883
- # expect { |b| 5.tap(&b) }.not_to yield_with_args(1, 2, 3)
884
- #
885
- # @note Your expect block must accept a parameter and pass it on to
886
- # the method-under-test as a block.
887
- # @note This matcher is not designed for use with methods that yield
888
- # multiple times.
889
- def yield_with_args(*args)
890
- BuiltIn::YieldWithArgs.new(*args)
891
- end
892
- alias_matcher :a_block_yielding_with_args, :yield_with_args
893
- alias_matcher :yielding_with_args, :yield_with_args
894
-
895
- # Designed for use with methods that repeatedly yield (such as
896
- # iterators). Passes if the method called in the expect block yields
897
- # multiple times with arguments matching those given.
898
- #
899
- # Argument matching is done using `===` (the case match operator)
900
- # and `==`. If the expected and actual arguments match with either
901
- # operator, the matcher will pass.
902
- #
903
- # @example
904
- #
905
- # expect { |b| [1, 2, 3].each(&b) }.to yield_successive_args(1, 2, 3)
906
- # expect { |b| { :a => 1, :b => 2 }.each(&b) }.to yield_successive_args([:a, 1], [:b, 2])
907
- # expect { |b| [1, 2, 3].each(&b) }.not_to yield_successive_args(1, 2)
908
- #
909
- # @note Your expect block must accept a parameter and pass it on to
910
- # the method-under-test as a block.
911
- def yield_successive_args(*args)
912
- BuiltIn::YieldSuccessiveArgs.new(*args)
913
- end
914
- alias_matcher :a_block_yielding_successive_args, :yield_successive_args
915
- alias_matcher :yielding_successive_args, :yield_successive_args
916
-
917
- # Delegates to {RSpec::Expectations.configuration}.
918
- # This is here because rspec-core's `expect_with` option
919
- # looks for a `configuration` method on the mixin
920
- # (`RSpec::Matchers`) to yield to a block.
921
- # @return [RSpec::Expectations::Configuration] the configuration object
922
- def self.configuration
923
- Expectations.configuration
924
- end
925
-
926
- private
927
-
928
- BE_PREDICATE_REGEX = /^(be_(?:an?_)?)(.*)/
929
- HAS_REGEX = /^(?:have_)(.*)/
930
-
931
- def method_missing(method, *args, &block)
932
- case method.to_s
933
- when BE_PREDICATE_REGEX
934
- BuiltIn::BePredicate.new(method, *args, &block)
935
- when HAS_REGEX
936
- BuiltIn::Has.new(method, *args, &block)
937
- else
938
- super
939
- end
940
- end
941
-
942
- # @api private
943
- def self.is_a_matcher?(obj)
944
- return true if ::RSpec::Matchers::BuiltIn::BaseMatcher === obj
945
- begin
946
- return false if obj.respond_to?(:i_respond_to_everything_so_im_not_really_a_matcher)
947
- rescue NoMethodError
948
- # Some objects, like BasicObject, don't implemented standard
949
- # reflection methods.
950
- return false
951
- end
952
- return false unless obj.respond_to?(:matches?)
953
-
954
- obj.respond_to?(:failure_message) ||
955
- obj.respond_to?(:failure_message_for_should) # support legacy matchers
956
- end
957
-
958
- ::RSpec::Support.register_matcher_definition do |obj|
959
- is_a_matcher?(obj)
960
- end
961
-
962
- # @api private
963
- def self.is_a_describable_matcher?(obj)
964
- is_a_matcher?(obj) && obj.respond_to?(:description)
965
- end
966
- end
967
- end