opal-connect-rspec 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (685) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +5 -0
  3. data/.gitmodules +15 -0
  4. data/.travis.yml +51 -0
  5. data/.yardopts +5 -0
  6. data/CHANGELOG.md +54 -0
  7. data/Gemfile +19 -0
  8. data/README.md +325 -0
  9. data/Rakefile +169 -0
  10. data/config.ru +15 -0
  11. data/example/Gemfile +4 -0
  12. data/example/README.md +13 -0
  13. data/example/Rakefile +8 -0
  14. data/example/opal/user.rb +11 -0
  15. data/example/spec/user_spec.rb +15 -0
  16. data/gemfiles/opal_master.gemfile +18 -0
  17. data/lib/opal-rspec.rb +2 -0
  18. data/lib/opal/rspec.rb +39 -0
  19. data/lib/opal/rspec/cached_environment.rb +25 -0
  20. data/lib/opal/rspec/post_rack_locator.rb +20 -0
  21. data/lib/opal/rspec/pre_rack_locator.rb +32 -0
  22. data/lib/opal/rspec/rake_task.rb +132 -0
  23. data/lib/opal/rspec/sprockets_environment.rb +37 -0
  24. data/lib/opal/rspec/version.rb +5 -0
  25. data/opal-rspec.gemspec +21 -0
  26. data/opal/opal-rspec.rb +1 -0
  27. data/opal/opal/rspec.rb +23 -0
  28. data/opal/opal/rspec/async.rb +5 -0
  29. data/opal/opal/rspec/async/async_example.rb +96 -0
  30. data/opal/opal/rspec/async/example_group.rb +96 -0
  31. data/opal/opal/rspec/async/hooks.rb +10 -0
  32. data/opal/opal/rspec/async/legacy.rb +50 -0
  33. data/opal/opal/rspec/async/reporter.rb +9 -0
  34. data/opal/opal/rspec/fixes.rb +5 -0
  35. data/opal/opal/rspec/fixes/opal.rb +5 -0
  36. data/opal/opal/rspec/fixes/opal/class.rb +8 -0
  37. data/opal/opal/rspec/fixes/opal/compatibility.rb +228 -0
  38. data/opal/opal/rspec/fixes/opal/corelib.rb +3 -0
  39. data/opal/opal/rspec/fixes/opal/corelib/error.rb +61 -0
  40. data/opal/opal/rspec/fixes/opal/corelib/regexp.rb +92 -0
  41. data/opal/opal/rspec/fixes/opal/corelib/struct.rb +260 -0
  42. data/opal/opal/rspec/fixes/opal/kernel.rb +80 -0
  43. data/opal/opal/rspec/fixes/opal/stdlib.rb +2 -0
  44. data/opal/opal/rspec/fixes/opal/stdlib/pp.rb +23 -0
  45. data/opal/opal/rspec/fixes/opal/stdlib/set.rb +36 -0
  46. data/opal/opal/rspec/fixes/rspec.rb +7 -0
  47. data/opal/opal/rspec/fixes/rspec/caller_filter.rb +6 -0
  48. data/opal/opal/rspec/fixes/rspec/core.rb +9 -0
  49. data/opal/opal/rspec/fixes/rspec/core/configuration.rb +11 -0
  50. data/opal/opal/rspec/fixes/rspec/core/example.rb +20 -0
  51. data/opal/opal/rspec/fixes/rspec/core/example_group.rb +9 -0
  52. data/opal/opal/rspec/fixes/rspec/core/formatters.rb +6 -0
  53. data/opal/opal/rspec/fixes/rspec/core/formatters/backtrace_formatter.rb +20 -0
  54. data/opal/opal/rspec/fixes/rspec/core/formatters/console_codes.rb +11 -0
  55. data/opal/opal/rspec/fixes/rspec/core/formatters/deprecation_formatter.rb +20 -0
  56. data/opal/opal/rspec/fixes/rspec/core/formatters/generated_deprecation_message.rb +15 -0
  57. data/opal/opal/rspec/fixes/rspec/core/formatters/json_formatter.rb +10 -0
  58. data/opal/opal/rspec/fixes/rspec/core/formatters/loader.rb +38 -0
  59. data/opal/opal/rspec/fixes/rspec/core/metadata.rb +39 -0
  60. data/opal/opal/rspec/fixes/rspec/core/notifications.rb +3 -0
  61. data/opal/opal/rspec/fixes/rspec/core/notifications/examples_notification.rb +30 -0
  62. data/opal/opal/rspec/fixes/rspec/core/notifications/failed_example_notification.rb +20 -0
  63. data/opal/opal/rspec/fixes/rspec/core/notifications/summary_notification.rb +26 -0
  64. data/opal/opal/rspec/fixes/rspec/core/ordering.rb +1 -0
  65. data/opal/opal/rspec/fixes/rspec/core/ordering/random.rb +13 -0
  66. data/opal/opal/rspec/fixes/rspec/core/reporter.rb +14 -0
  67. data/opal/opal/rspec/fixes/rspec/core/warnings.rb +18 -0
  68. data/opal/opal/rspec/fixes/rspec/example_groups.rb +49 -0
  69. data/opal/opal/rspec/fixes/rspec/expectations.rb +2 -0
  70. data/opal/opal/rspec/fixes/rspec/expectations/fail_with.rb +21 -0
  71. data/opal/opal/rspec/fixes/rspec/expectations/syntax.rb +25 -0
  72. data/opal/opal/rspec/fixes/rspec/matchers.rb +2 -0
  73. data/opal/opal/rspec/fixes/rspec/matchers/built_in.rb +4 -0
  74. data/opal/opal/rspec/fixes/rspec/matchers/built_in/all.rb +10 -0
  75. data/opal/opal/rspec/fixes/rspec/matchers/built_in/compound.rb +15 -0
  76. data/opal/opal/rspec/fixes/rspec/matchers/built_in/start_and_end_with.rb +42 -0
  77. data/opal/opal/rspec/fixes/rspec/matchers/built_in/yield.rb +21 -0
  78. data/opal/opal/rspec/fixes/rspec/matchers/pretty.rb +15 -0
  79. data/opal/opal/rspec/fixes/rspec/mocks.rb +4 -0
  80. data/opal/opal/rspec/fixes/rspec/mocks/error_generator.rb +40 -0
  81. data/opal/opal/rspec/fixes/rspec/mocks/space.rb +37 -0
  82. data/opal/opal/rspec/fixes/rspec/mocks/test_double.rb +39 -0
  83. data/opal/opal/rspec/fixes/rspec/mocks/verifying_double.rb +29 -0
  84. data/opal/opal/rspec/fixes/rspec/support.rb +4 -0
  85. data/opal/opal/rspec/fixes/rspec/support/encoded_string.rb +10 -0
  86. data/opal/opal/rspec/fixes/rspec/support/fuzzy_matcher.rb +23 -0
  87. data/opal/opal/rspec/fixes/rspec/support/recursive_const_methods.rb +7 -0
  88. data/opal/opal/rspec/fixes/rspec/support/ruby_features.rb +8 -0
  89. data/opal/opal/rspec/fixes/rspec/support/warnings.rb +18 -0
  90. data/opal/opal/rspec/formatter/browser_formatter.rb +38 -0
  91. data/opal/opal/rspec/formatter/document_io.rb +27 -0
  92. data/opal/opal/rspec/formatter/element.rb +100 -0
  93. data/opal/opal/rspec/formatter/html_printer.rb +121 -0
  94. data/opal/opal/rspec/formatter/noop_flush_string_io.rb +9 -0
  95. data/opal/opal/rspec/formatter/opal_closed_tty_io.rb +27 -0
  96. data/opal/opal/rspec/pre_require_fixes.rb +11 -0
  97. data/opal/opal/rspec/requires.rb +145 -0
  98. data/opal/opal/rspec/runner.rb +91 -0
  99. data/opal/opal/rspec/spec_opts.rb.erb +28 -0
  100. data/opal/opal/rspec/sprockets_runner.rb.erb +13 -0
  101. data/rspec-core/benchmarks/call_v_yield.rb +81 -0
  102. data/rspec-core/benchmarks/check_inclusion.rb +125 -0
  103. data/rspec-core/benchmarks/define_method_v_attr_reader_v_def.rb +81 -0
  104. data/rspec-core/benchmarks/eager_vs_lazy_metadata.rb +126 -0
  105. data/rspec-core/benchmarks/eager_vs_lazy_metadata/define_examples.rb +22 -0
  106. data/rspec-core/benchmarks/filter_object.rb +35 -0
  107. data/rspec-core/benchmarks/index_v_take_while.rb +47 -0
  108. data/rspec-core/benchmarks/map_then_flatten_vs_flat_map_benchmarks.rb +94 -0
  109. data/rspec-core/benchmarks/require_relative_v_require.rb +75 -0
  110. data/rspec-core/benchmarks/respond_to_v_defined.rb +72 -0
  111. data/rspec-core/benchmarks/several_regexps_v_one_big_one.rb +86 -0
  112. data/rspec-core/benchmarks/sort_by_v_shuffle.rb +83 -0
  113. data/rspec-core/benchmarks/to_proc_v_not_to_proc.rb +539 -0
  114. data/rspec-core/features/step_definitions/additional_cli_steps.rb +126 -0
  115. data/rspec-core/features/step_definitions/core_standalone_steps.rb +12 -0
  116. data/rspec-core/features/support/env.rb +21 -0
  117. data/rspec-core/features/support/require_expect_syntax_in_aruba_specs.rb +29 -0
  118. data/rspec-core/features/support/rubinius.rb +6 -0
  119. data/rspec-core/lib/rspec/autorun.rb +2 -0
  120. data/rspec-core/lib/rspec/core.rb +169 -0
  121. data/rspec-core/lib/rspec/core/backport_random.rb +336 -0
  122. data/rspec-core/lib/rspec/core/backtrace_formatter.rb +66 -0
  123. data/rspec-core/lib/rspec/core/configuration.rb +1440 -0
  124. data/rspec-core/lib/rspec/core/configuration_options.rb +173 -0
  125. data/rspec-core/lib/rspec/core/drb.rb +111 -0
  126. data/rspec-core/lib/rspec/core/dsl.rb +93 -0
  127. data/rspec-core/lib/rspec/core/example.rb +502 -0
  128. data/rspec-core/lib/rspec/core/example_group.rb +606 -0
  129. data/rspec-core/lib/rspec/core/filter_manager.rb +259 -0
  130. data/rspec-core/lib/rspec/core/flat_map.rb +18 -0
  131. data/rspec-core/lib/rspec/core/formatters.rb +240 -0
  132. data/rspec-core/lib/rspec/core/formatters/base_formatter.rb +67 -0
  133. data/rspec-core/lib/rspec/core/formatters/base_text_formatter.rb +76 -0
  134. data/rspec-core/lib/rspec/core/formatters/console_codes.rb +64 -0
  135. data/rspec-core/lib/rspec/core/formatters/deprecation_formatter.rb +222 -0
  136. data/rspec-core/lib/rspec/core/formatters/documentation_formatter.rb +68 -0
  137. data/rspec-core/lib/rspec/core/formatters/helpers.rb +87 -0
  138. data/rspec-core/lib/rspec/core/formatters/html_formatter.rb +149 -0
  139. data/rspec-core/lib/rspec/core/formatters/html_printer.rb +403 -0
  140. data/rspec-core/lib/rspec/core/formatters/json_formatter.rb +94 -0
  141. data/rspec-core/lib/rspec/core/formatters/profile_formatter.rb +65 -0
  142. data/rspec-core/lib/rspec/core/formatters/progress_formatter.rb +28 -0
  143. data/rspec-core/lib/rspec/core/formatters/protocol.rb +163 -0
  144. data/rspec-core/lib/rspec/core/formatters/snippet_extractor.rb +104 -0
  145. data/rspec-core/lib/rspec/core/hooks.rb +591 -0
  146. data/rspec-core/lib/rspec/core/memoized_helpers.rb +472 -0
  147. data/rspec-core/lib/rspec/core/metadata.rb +437 -0
  148. data/rspec-core/lib/rspec/core/metadata_filter.rb +95 -0
  149. data/rspec-core/lib/rspec/core/minitest_assertions_adapter.rb +28 -0
  150. data/rspec-core/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  151. data/rspec-core/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  152. data/rspec-core/lib/rspec/core/mocking_adapters/null.rb +14 -0
  153. data/rspec-core/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  154. data/rspec-core/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  155. data/rspec-core/lib/rspec/core/notifications.rb +542 -0
  156. data/rspec-core/lib/rspec/core/option_parser.rb +222 -0
  157. data/rspec-core/lib/rspec/core/ordering.rb +155 -0
  158. data/rspec-core/lib/rspec/core/pending.rb +163 -0
  159. data/rspec-core/lib/rspec/core/project_initializer.rb +48 -0
  160. data/rspec-core/lib/rspec/core/project_initializer/spec/spec_helper.rb +89 -0
  161. data/rspec-core/lib/rspec/core/rake_task.rb +187 -0
  162. data/rspec-core/lib/rspec/core/reporter.rb +149 -0
  163. data/rspec-core/lib/rspec/core/ruby_project.rb +45 -0
  164. data/rspec-core/lib/rspec/core/runner.rb +158 -0
  165. data/rspec-core/lib/rspec/core/shared_context.rb +55 -0
  166. data/rspec-core/lib/rspec/core/shared_example_group.rb +182 -0
  167. data/rspec-core/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  168. data/rspec-core/lib/rspec/core/version.rb +9 -0
  169. data/rspec-core/lib/rspec/core/warnings.rb +40 -0
  170. data/rspec-core/lib/rspec/core/world.rb +183 -0
  171. data/rspec-core/spec/command_line/order_spec.rb +213 -0
  172. data/rspec-core/spec/rspec/core/backtrace_formatter_spec.rb +306 -0
  173. data/rspec-core/spec/rspec/core/configuration_options_spec.rb +425 -0
  174. data/rspec-core/spec/rspec/core/configuration_spec.rb +1963 -0
  175. data/rspec-core/spec/rspec/core/drb_spec.rb +278 -0
  176. data/rspec-core/spec/rspec/core/dsl_spec.rb +85 -0
  177. data/rspec-core/spec/rspec/core/example_execution_result_spec.rb +142 -0
  178. data/rspec-core/spec/rspec/core/example_group_constants_spec.rb +16 -0
  179. data/rspec-core/spec/rspec/core/example_group_spec.rb +1621 -0
  180. data/rspec-core/spec/rspec/core/example_spec.rb +662 -0
  181. data/rspec-core/spec/rspec/core/failed_example_notification_spec.rb +25 -0
  182. data/rspec-core/spec/rspec/core/filter_manager_spec.rb +299 -0
  183. data/rspec-core/spec/rspec/core/formatters/base_text_formatter_spec.rb +182 -0
  184. data/rspec-core/spec/rspec/core/formatters/console_codes_spec.rb +65 -0
  185. data/rspec-core/spec/rspec/core/formatters/deprecation_formatter_spec.rb +225 -0
  186. data/rspec-core/spec/rspec/core/formatters/documentation_formatter_spec.rb +111 -0
  187. data/rspec-core/spec/rspec/core/formatters/helpers_spec.rb +104 -0
  188. data/rspec-core/spec/rspec/core/formatters/html_formatter_spec.rb +111 -0
  189. data/rspec-core/spec/rspec/core/formatters/json_formatter_spec.rb +183 -0
  190. data/rspec-core/spec/rspec/core/formatters/profile_formatter_spec.rb +99 -0
  191. data/rspec-core/spec/rspec/core/formatters/progress_formatter_spec.rb +55 -0
  192. data/rspec-core/spec/rspec/core/formatters/snippet_extractor_spec.rb +26 -0
  193. data/rspec-core/spec/rspec/core/formatters_spec.rb +160 -0
  194. data/rspec-core/spec/rspec/core/hooks_filtering_spec.rb +227 -0
  195. data/rspec-core/spec/rspec/core/hooks_spec.rb +447 -0
  196. data/rspec-core/spec/rspec/core/memoized_helpers_spec.rb +537 -0
  197. data/rspec-core/spec/rspec/core/metadata_filter_spec.rb +181 -0
  198. data/rspec-core/spec/rspec/core/metadata_spec.rb +642 -0
  199. data/rspec-core/spec/rspec/core/notifications_spec.rb +92 -0
  200. data/rspec-core/spec/rspec/core/option_parser_spec.rb +270 -0
  201. data/rspec-core/spec/rspec/core/ordering_spec.rb +102 -0
  202. data/rspec-core/spec/rspec/core/pending_example_spec.rb +221 -0
  203. data/rspec-core/spec/rspec/core/pending_spec.rb +8 -0
  204. data/rspec-core/spec/rspec/core/project_initializer_spec.rb +123 -0
  205. data/rspec-core/spec/rspec/core/rake_task_spec.rb +351 -0
  206. data/rspec-core/spec/rspec/core/random_spec.rb +47 -0
  207. data/rspec-core/spec/rspec/core/reporter_spec.rb +198 -0
  208. data/rspec-core/spec/rspec/core/resources/a_bar.rb +0 -0
  209. data/rspec-core/spec/rspec/core/resources/a_foo.rb +0 -0
  210. data/rspec-core/spec/rspec/core/resources/a_spec.rb +1 -0
  211. data/rspec-core/spec/rspec/core/resources/acceptance/bar.rb +0 -0
  212. data/rspec-core/spec/rspec/core/resources/acceptance/foo_spec.rb +0 -0
  213. data/rspec-core/spec/rspec/core/resources/custom_example_group_runner.rb +14 -0
  214. data/rspec-core/spec/rspec/core/resources/formatter_specs.rb +58 -0
  215. data/rspec-core/spec/rspec/core/resources/utf8_encoded.rb +9 -0
  216. data/rspec-core/spec/rspec/core/rspec_matchers_spec.rb +45 -0
  217. data/rspec-core/spec/rspec/core/ruby_project_spec.rb +26 -0
  218. data/rspec-core/spec/rspec/core/runner_spec.rb +309 -0
  219. data/rspec-core/spec/rspec/core/shared_context_spec.rb +102 -0
  220. data/rspec-core/spec/rspec/core/shared_example_group_spec.rb +268 -0
  221. data/rspec-core/spec/rspec/core/warnings_spec.rb +72 -0
  222. data/rspec-core/spec/rspec/core/world_spec.rb +142 -0
  223. data/rspec-core/spec/rspec/core_spec.rb +103 -0
  224. data/rspec-core/spec/spec_helper.rb +89 -0
  225. data/rspec-core/spec/support/config_options_helper.rb +13 -0
  226. data/rspec-core/spec/support/fake_minitest/minitest.rb +0 -0
  227. data/rspec-core/spec/support/fake_minitest/minitest/minitest_assertions.rb +4 -0
  228. data/rspec-core/spec/support/fake_minitest/test/unit/assertions.rb +6 -0
  229. data/rspec-core/spec/support/formatter_support.rb +263 -0
  230. data/rspec-core/spec/support/helper_methods.rb +26 -0
  231. data/rspec-core/spec/support/isolated_home_directory.rb +16 -0
  232. data/rspec-core/spec/support/matchers.rb +103 -0
  233. data/rspec-core/spec/support/mathn_integration_support.rb +12 -0
  234. data/rspec-core/spec/support/sandboxing.rb +50 -0
  235. data/rspec-core/spec/support/shared_example_groups.rb +43 -0
  236. data/rspec-core/spec/support/spec_files.rb +44 -0
  237. data/rspec-expectations/benchmarks/2.x_vs_3.x_matcher_dsl_implementation.rb +253 -0
  238. data/rspec-expectations/benchmarks/autoload_v_require.rb +25 -0
  239. data/rspec-expectations/benchmarks/cloning_matchers.rb +19 -0
  240. data/rspec-expectations/benchmarks/default_messages_as_methods_v_blocks.rb +27 -0
  241. data/rspec-expectations/benchmarks/example_spec.rb +9 -0
  242. data/rspec-expectations/benchmarks/include_v_superclass.rb +39 -0
  243. data/rspec-expectations/benchmarks/match_array/failing_with_distinct_items.rb +147 -0
  244. data/rspec-expectations/benchmarks/match_array/failing_with_duplicate_items.rb +122 -0
  245. data/rspec-expectations/benchmarks/match_array/passing_with_distinct_items.rb +154 -0
  246. data/rspec-expectations/benchmarks/match_array/passing_with_duplicate_items.rb +132 -0
  247. data/rspec-expectations/benchmarks/match_array/rubyprof/passing_with_distinct_items.rb +9 -0
  248. data/rspec-expectations/benchmarks/matcher_dsl_vs_classes.rb +180 -0
  249. data/rspec-expectations/benchmarks/method_to_proc.rb +72 -0
  250. data/rspec-expectations/benchmarks/set_vs_array_include.rb +68 -0
  251. data/rspec-expectations/features/step_definitions/additional_cli_steps.rb +22 -0
  252. data/rspec-expectations/features/support/disallow_certain_apis.rb +34 -0
  253. data/rspec-expectations/features/support/env.rb +21 -0
  254. data/rspec-expectations/features/support/rubinius.rb +6 -0
  255. data/rspec-expectations/lib/rspec/expectations.rb +68 -0
  256. data/rspec-expectations/lib/rspec/expectations/configuration.rb +147 -0
  257. data/rspec-expectations/lib/rspec/expectations/expectation_target.rb +119 -0
  258. data/rspec-expectations/lib/rspec/expectations/fail_with.rb +34 -0
  259. data/rspec-expectations/lib/rspec/expectations/handler.rb +167 -0
  260. data/rspec-expectations/lib/rspec/expectations/minitest_integration.rb +17 -0
  261. data/rspec-expectations/lib/rspec/expectations/syntax.rb +132 -0
  262. data/rspec-expectations/lib/rspec/expectations/version.rb +8 -0
  263. data/rspec-expectations/lib/rspec/matchers.rb +967 -0
  264. data/rspec-expectations/lib/rspec/matchers/aliased_matcher.rb +116 -0
  265. data/rspec-expectations/lib/rspec/matchers/built_in.rb +52 -0
  266. data/rspec-expectations/lib/rspec/matchers/built_in/all.rb +85 -0
  267. data/rspec-expectations/lib/rspec/matchers/built_in/base_matcher.rb +132 -0
  268. data/rspec-expectations/lib/rspec/matchers/built_in/be.rb +277 -0
  269. data/rspec-expectations/lib/rspec/matchers/built_in/be_between.rb +77 -0
  270. data/rspec-expectations/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
  271. data/rspec-expectations/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
  272. data/rspec-expectations/lib/rspec/matchers/built_in/be_within.rb +72 -0
  273. data/rspec-expectations/lib/rspec/matchers/built_in/change.rb +337 -0
  274. data/rspec-expectations/lib/rspec/matchers/built_in/compound.rb +258 -0
  275. data/rspec-expectations/lib/rspec/matchers/built_in/contain_exactly.rb +249 -0
  276. data/rspec-expectations/lib/rspec/matchers/built_in/cover.rb +24 -0
  277. data/rspec-expectations/lib/rspec/matchers/built_in/eq.rb +75 -0
  278. data/rspec-expectations/lib/rspec/matchers/built_in/eql.rb +34 -0
  279. data/rspec-expectations/lib/rspec/matchers/built_in/equal.rb +81 -0
  280. data/rspec-expectations/lib/rspec/matchers/built_in/exist.rb +86 -0
  281. data/rspec-expectations/lib/rspec/matchers/built_in/has.rb +101 -0
  282. data/rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb +84 -0
  283. data/rspec-expectations/lib/rspec/matchers/built_in/include.rb +105 -0
  284. data/rspec-expectations/lib/rspec/matchers/built_in/match.rb +29 -0
  285. data/rspec-expectations/lib/rspec/matchers/built_in/operators.rb +119 -0
  286. data/rspec-expectations/lib/rspec/matchers/built_in/output.rb +152 -0
  287. data/rspec-expectations/lib/rspec/matchers/built_in/raise_error.rb +174 -0
  288. data/rspec-expectations/lib/rspec/matchers/built_in/respond_to.rb +91 -0
  289. data/rspec-expectations/lib/rspec/matchers/built_in/satisfy.rb +39 -0
  290. data/rspec-expectations/lib/rspec/matchers/built_in/start_and_end_with.rb +82 -0
  291. data/rspec-expectations/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  292. data/rspec-expectations/lib/rspec/matchers/built_in/yield.rb +420 -0
  293. data/rspec-expectations/lib/rspec/matchers/composable.rb +183 -0
  294. data/rspec-expectations/lib/rspec/matchers/dsl.rb +391 -0
  295. data/rspec-expectations/lib/rspec/matchers/generated_descriptions.rb +42 -0
  296. data/rspec-expectations/lib/rspec/matchers/matcher_delegator.rb +33 -0
  297. data/rspec-expectations/lib/rspec/matchers/matcher_protocol.rb +99 -0
  298. data/rspec-expectations/lib/rspec/matchers/pretty.rb +77 -0
  299. data/rspec-expectations/spec/rspec/expectations/configuration_spec.rb +226 -0
  300. data/rspec-expectations/spec/rspec/expectations/expectation_target_spec.rb +147 -0
  301. data/rspec-expectations/spec/rspec/expectations/extensions/kernel_spec.rb +69 -0
  302. data/rspec-expectations/spec/rspec/expectations/fail_with_spec.rb +73 -0
  303. data/rspec-expectations/spec/rspec/expectations/handler_spec.rb +200 -0
  304. data/rspec-expectations/spec/rspec/expectations/minitest_integration_spec.rb +25 -0
  305. data/rspec-expectations/spec/rspec/expectations/syntax_spec.rb +93 -0
  306. data/rspec-expectations/spec/rspec/expectations_spec.rb +15 -0
  307. data/rspec-expectations/spec/rspec/matchers/aliased_matcher_spec.rb +113 -0
  308. data/rspec-expectations/spec/rspec/matchers/aliases_spec.rb +455 -0
  309. data/rspec-expectations/spec/rspec/matchers/built_in/all_spec.rb +212 -0
  310. data/rspec-expectations/spec/rspec/matchers/built_in/base_matcher_spec.rb +140 -0
  311. data/rspec-expectations/spec/rspec/matchers/built_in/be_between_spec.rb +157 -0
  312. data/rspec-expectations/spec/rspec/matchers/built_in/be_instance_of_spec.rb +61 -0
  313. data/rspec-expectations/spec/rspec/matchers/built_in/be_kind_of_spec.rb +39 -0
  314. data/rspec-expectations/spec/rspec/matchers/built_in/be_spec.rb +685 -0
  315. data/rspec-expectations/spec/rspec/matchers/built_in/be_within_spec.rb +139 -0
  316. data/rspec-expectations/spec/rspec/matchers/built_in/change_spec.rb +829 -0
  317. data/rspec-expectations/spec/rspec/matchers/built_in/compound_spec.rb +537 -0
  318. data/rspec-expectations/spec/rspec/matchers/built_in/contain_exactly_spec.rb +556 -0
  319. data/rspec-expectations/spec/rspec/matchers/built_in/cover_spec.rb +67 -0
  320. data/rspec-expectations/spec/rspec/matchers/built_in/eq_spec.rb +176 -0
  321. data/rspec-expectations/spec/rspec/matchers/built_in/eql_spec.rb +39 -0
  322. data/rspec-expectations/spec/rspec/matchers/built_in/equal_spec.rb +130 -0
  323. data/rspec-expectations/spec/rspec/matchers/built_in/exist_spec.rb +139 -0
  324. data/rspec-expectations/spec/rspec/matchers/built_in/has_spec.rb +179 -0
  325. data/rspec-expectations/spec/rspec/matchers/built_in/have_attributes_spec.rb +177 -0
  326. data/rspec-expectations/spec/rspec/matchers/built_in/include_spec.rb +587 -0
  327. data/rspec-expectations/spec/rspec/matchers/built_in/match_spec.rb +100 -0
  328. data/rspec-expectations/spec/rspec/matchers/built_in/operators_spec.rb +250 -0
  329. data/rspec-expectations/spec/rspec/matchers/built_in/output_spec.rb +168 -0
  330. data/rspec-expectations/spec/rspec/matchers/built_in/raise_error_spec.rb +446 -0
  331. data/rspec-expectations/spec/rspec/matchers/built_in/respond_to_spec.rb +290 -0
  332. data/rspec-expectations/spec/rspec/matchers/built_in/satisfy_spec.rb +42 -0
  333. data/rspec-expectations/spec/rspec/matchers/built_in/start_and_end_with_spec.rb +347 -0
  334. data/rspec-expectations/spec/rspec/matchers/built_in/throw_symbol_spec.rb +133 -0
  335. data/rspec-expectations/spec/rspec/matchers/built_in/yield_spec.rb +643 -0
  336. data/rspec-expectations/spec/rspec/matchers/composable_spec.rb +77 -0
  337. data/rspec-expectations/spec/rspec/matchers/define_negated_matcher_spec.rb +199 -0
  338. data/rspec-expectations/spec/rspec/matchers/description_generation_spec.rb +189 -0
  339. data/rspec-expectations/spec/rspec/matchers/dsl_spec.rb +1036 -0
  340. data/rspec-expectations/spec/rspec/matchers/legacy_spec.rb +104 -0
  341. data/rspec-expectations/spec/rspec/matchers_spec.rb +108 -0
  342. data/rspec-expectations/spec/spec_helper.rb +94 -0
  343. data/rspec-expectations/spec/support/matchers.rb +54 -0
  344. data/rspec-expectations/spec/support/shared_examples.rb +101 -0
  345. data/rspec-mocks/benchmarks/double_creation.rb +66 -0
  346. data/rspec-mocks/benchmarks/each_value_v_values_each.rb +58 -0
  347. data/rspec-mocks/benchmarks/find_original_method_early.rb +64 -0
  348. data/rspec-mocks/benchmarks/method_defined_at_any_visibility.rb +101 -0
  349. data/rspec-mocks/benchmarks/thread_safety.rb +24 -0
  350. data/rspec-mocks/benchmarks/transfer_nested_constants.rb +77 -0
  351. data/rspec-mocks/features/step_definitions/additional_cli_steps.rb +21 -0
  352. data/rspec-mocks/features/support/disallow_certain_apis.rb +24 -0
  353. data/rspec-mocks/features/support/env.rb +22 -0
  354. data/rspec-mocks/features/support/rubinius.rb +6 -0
  355. data/rspec-mocks/lib/rspec/mocks.rb +126 -0
  356. data/rspec-mocks/lib/rspec/mocks/any_instance.rb +10 -0
  357. data/rspec-mocks/lib/rspec/mocks/any_instance/chain.rb +109 -0
  358. data/rspec-mocks/lib/rspec/mocks/any_instance/expect_chain_chain.rb +35 -0
  359. data/rspec-mocks/lib/rspec/mocks/any_instance/expectation_chain.rb +48 -0
  360. data/rspec-mocks/lib/rspec/mocks/any_instance/message_chains.rb +85 -0
  361. data/rspec-mocks/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  362. data/rspec-mocks/lib/rspec/mocks/any_instance/recorder.rb +267 -0
  363. data/rspec-mocks/lib/rspec/mocks/any_instance/stub_chain.rb +45 -0
  364. data/rspec-mocks/lib/rspec/mocks/any_instance/stub_chain_chain.rb +27 -0
  365. data/rspec-mocks/lib/rspec/mocks/argument_list_matcher.rb +72 -0
  366. data/rspec-mocks/lib/rspec/mocks/argument_matchers.rb +282 -0
  367. data/rspec-mocks/lib/rspec/mocks/configuration.rb +157 -0
  368. data/rspec-mocks/lib/rspec/mocks/error_generator.rb +253 -0
  369. data/rspec-mocks/lib/rspec/mocks/example_methods.rb +379 -0
  370. data/rspec-mocks/lib/rspec/mocks/instance_method_stasher.rb +135 -0
  371. data/rspec-mocks/lib/rspec/mocks/marshal_extension.rb +41 -0
  372. data/rspec-mocks/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  373. data/rspec-mocks/lib/rspec/mocks/matchers/have_received.rb +121 -0
  374. data/rspec-mocks/lib/rspec/mocks/matchers/receive.rb +106 -0
  375. data/rspec-mocks/lib/rspec/mocks/matchers/receive_message_chain.rb +66 -0
  376. data/rspec-mocks/lib/rspec/mocks/matchers/receive_messages.rb +71 -0
  377. data/rspec-mocks/lib/rspec/mocks/message_chain.rb +91 -0
  378. data/rspec-mocks/lib/rspec/mocks/message_expectation.rb +694 -0
  379. data/rspec-mocks/lib/rspec/mocks/method_double.rb +260 -0
  380. data/rspec-mocks/lib/rspec/mocks/method_reference.rb +155 -0
  381. data/rspec-mocks/lib/rspec/mocks/mutate_const.rb +324 -0
  382. data/rspec-mocks/lib/rspec/mocks/object_reference.rb +91 -0
  383. data/rspec-mocks/lib/rspec/mocks/order_group.rb +81 -0
  384. data/rspec-mocks/lib/rspec/mocks/proxy.rb +431 -0
  385. data/rspec-mocks/lib/rspec/mocks/space.rb +221 -0
  386. data/rspec-mocks/lib/rspec/mocks/standalone.rb +3 -0
  387. data/rspec-mocks/lib/rspec/mocks/syntax.rb +329 -0
  388. data/rspec-mocks/lib/rspec/mocks/targets.rb +97 -0
  389. data/rspec-mocks/lib/rspec/mocks/test_double.rb +135 -0
  390. data/rspec-mocks/lib/rspec/mocks/verifying_double.rb +127 -0
  391. data/rspec-mocks/lib/rspec/mocks/verifying_message_expecation.rb +62 -0
  392. data/rspec-mocks/lib/rspec/mocks/verifying_proxy.rb +171 -0
  393. data/rspec-mocks/lib/rspec/mocks/version.rb +9 -0
  394. data/rspec-mocks/spec/rspec/mocks/and_call_original_spec.rb +267 -0
  395. data/rspec-mocks/spec/rspec/mocks/and_return_spec.rb +21 -0
  396. data/rspec-mocks/spec/rspec/mocks/and_wrap_original_spec.rb +63 -0
  397. data/rspec-mocks/spec/rspec/mocks/and_yield_spec.rb +161 -0
  398. data/rspec-mocks/spec/rspec/mocks/any_instance/message_chains_spec.rb +39 -0
  399. data/rspec-mocks/spec/rspec/mocks/any_instance_spec.rb +1242 -0
  400. data/rspec-mocks/spec/rspec/mocks/argument_matchers_spec.rb +336 -0
  401. data/rspec-mocks/spec/rspec/mocks/array_including_matcher_spec.rb +39 -0
  402. data/rspec-mocks/spec/rspec/mocks/at_least_spec.rb +147 -0
  403. data/rspec-mocks/spec/rspec/mocks/at_most_spec.rb +113 -0
  404. data/rspec-mocks/spec/rspec/mocks/before_all_spec.rb +75 -0
  405. data/rspec-mocks/spec/rspec/mocks/block_return_value_spec.rb +68 -0
  406. data/rspec-mocks/spec/rspec/mocks/combining_implementation_instructions_spec.rb +196 -0
  407. data/rspec-mocks/spec/rspec/mocks/configuration_spec.rb +175 -0
  408. data/rspec-mocks/spec/rspec/mocks/double_spec.rb +830 -0
  409. data/rspec-mocks/spec/rspec/mocks/example_methods_spec.rb +11 -0
  410. data/rspec-mocks/spec/rspec/mocks/expiration_spec.rb +90 -0
  411. data/rspec-mocks/spec/rspec/mocks/hash_excluding_matcher_spec.rb +65 -0
  412. data/rspec-mocks/spec/rspec/mocks/hash_including_matcher_spec.rb +92 -0
  413. data/rspec-mocks/spec/rspec/mocks/instance_method_stasher_spec.rb +72 -0
  414. data/rspec-mocks/spec/rspec/mocks/marshal_extension_spec.rb +67 -0
  415. data/rspec-mocks/spec/rspec/mocks/matchers/have_received_spec.rb +513 -0
  416. data/rspec-mocks/spec/rspec/mocks/matchers/receive_message_chain_spec.rb +227 -0
  417. data/rspec-mocks/spec/rspec/mocks/matchers/receive_messages_spec.rb +148 -0
  418. data/rspec-mocks/spec/rspec/mocks/matchers/receive_spec.rb +525 -0
  419. data/rspec-mocks/spec/rspec/mocks/methods_spec.rb +24 -0
  420. data/rspec-mocks/spec/rspec/mocks/mock_expectation_error_spec.rb +20 -0
  421. data/rspec-mocks/spec/rspec/mocks/mock_ordering_spec.rb +112 -0
  422. data/rspec-mocks/spec/rspec/mocks/multiple_return_value_spec.rb +130 -0
  423. data/rspec-mocks/spec/rspec/mocks/mutate_const_spec.rb +561 -0
  424. data/rspec-mocks/spec/rspec/mocks/nil_expectation_warning_spec.rb +52 -0
  425. data/rspec-mocks/spec/rspec/mocks/null_object_double_spec.rb +135 -0
  426. data/rspec-mocks/spec/rspec/mocks/once_counts_spec.rb +50 -0
  427. data/rspec-mocks/spec/rspec/mocks/order_group_spec.rb +26 -0
  428. data/rspec-mocks/spec/rspec/mocks/partial_double_spec.rb +379 -0
  429. data/rspec-mocks/spec/rspec/mocks/partial_double_using_mocks_directly_spec.rb +83 -0
  430. data/rspec-mocks/spec/rspec/mocks/precise_counts_spec.rb +66 -0
  431. data/rspec-mocks/spec/rspec/mocks/serialization_spec.rb +89 -0
  432. data/rspec-mocks/spec/rspec/mocks/should_syntax_spec.rb +539 -0
  433. data/rspec-mocks/spec/rspec/mocks/space_spec.rb +242 -0
  434. data/rspec-mocks/spec/rspec/mocks/spy_spec.rb +127 -0
  435. data/rspec-mocks/spec/rspec/mocks/stash_spec.rb +43 -0
  436. data/rspec-mocks/spec/rspec/mocks/stub_chain_spec.rb +166 -0
  437. data/rspec-mocks/spec/rspec/mocks/stub_implementation_spec.rb +98 -0
  438. data/rspec-mocks/spec/rspec/mocks/stub_spec.rb +520 -0
  439. data/rspec-mocks/spec/rspec/mocks/stubbed_message_expectations_spec.rb +56 -0
  440. data/rspec-mocks/spec/rspec/mocks/syntax_agnostic_message_matchers_spec.rb +99 -0
  441. data/rspec-mocks/spec/rspec/mocks/syntax_spec.rb +7 -0
  442. data/rspec-mocks/spec/rspec/mocks/test_double_spec.rb +53 -0
  443. data/rspec-mocks/spec/rspec/mocks/thrice_counts_spec.rb +72 -0
  444. data/rspec-mocks/spec/rspec/mocks/to_ary_spec.rb +52 -0
  445. data/rspec-mocks/spec/rspec/mocks/twice_counts_spec.rb +64 -0
  446. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/class_double_with_class_loaded_spec.rb +118 -0
  447. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/class_double_with_class_not_loaded_spec.rb +58 -0
  448. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/construction_spec.rb +54 -0
  449. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb +81 -0
  450. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/instance_double_with_class_loaded_spec.rb +195 -0
  451. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/instance_double_with_class_not_loaded_spec.rb +57 -0
  452. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/method_visibility_spec.rb +129 -0
  453. data/rspec-mocks/spec/rspec/mocks/verifying_doubles/object_double_spec.rb +68 -0
  454. data/rspec-mocks/spec/rspec/mocks_spec.rb +199 -0
  455. data/rspec-mocks/spec/spec_helper.rb +131 -0
  456. data/rspec-mocks/spec/support/before_all_shared_example_group.rb +16 -0
  457. data/rspec-mocks/spec/support/doubled_classes.rb +74 -0
  458. data/rspec-mocks/spec/support/matchers.rb +15 -0
  459. data/rspec-support/benchmarks/caller.rb +81 -0
  460. data/rspec-support/lib/rspec/support.rb +76 -0
  461. data/rspec-support/lib/rspec/support/caller_filter.rb +63 -0
  462. data/rspec-support/lib/rspec/support/differ.rb +214 -0
  463. data/rspec-support/lib/rspec/support/directory_maker.rb +61 -0
  464. data/rspec-support/lib/rspec/support/encoded_string.rb +69 -0
  465. data/rspec-support/lib/rspec/support/fuzzy_matcher.rb +48 -0
  466. data/rspec-support/lib/rspec/support/hunk_generator.rb +47 -0
  467. data/rspec-support/lib/rspec/support/matcher_definition.rb +31 -0
  468. data/rspec-support/lib/rspec/support/method_signature_verifier.rb +272 -0
  469. data/rspec-support/lib/rspec/support/os.rb +18 -0
  470. data/rspec-support/lib/rspec/support/recursive_const_methods.rb +76 -0
  471. data/rspec-support/lib/rspec/support/ruby_features.rb +45 -0
  472. data/rspec-support/lib/rspec/support/spec.rb +72 -0
  473. data/rspec-support/lib/rspec/support/spec/deprecation_helpers.rb +60 -0
  474. data/rspec-support/lib/rspec/support/spec/formatting_support.rb +9 -0
  475. data/rspec-support/lib/rspec/support/spec/in_sub_process.rb +43 -0
  476. data/rspec-support/lib/rspec/support/spec/prevent_load_time_warnings.rb +44 -0
  477. data/rspec-support/lib/rspec/support/spec/shell_out.rb +69 -0
  478. data/rspec-support/lib/rspec/support/spec/stderr_splitter.rb +52 -0
  479. data/rspec-support/lib/rspec/support/spec/with_isolated_directory.rb +9 -0
  480. data/rspec-support/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  481. data/rspec-support/lib/rspec/support/version.rb +7 -0
  482. data/rspec-support/lib/rspec/support/version_checker.rb +53 -0
  483. data/rspec-support/lib/rspec/support/warnings.rb +39 -0
  484. data/rspec-support/spec/rspec/support/caller_filter_spec.rb +66 -0
  485. data/rspec-support/spec/rspec/support/differ_spec.rb +322 -0
  486. data/rspec-support/spec/rspec/support/directory_maker_spec.rb +58 -0
  487. data/rspec-support/spec/rspec/support/encoded_string_spec.rb +86 -0
  488. data/rspec-support/spec/rspec/support/fuzzy_matcher_spec.rb +179 -0
  489. data/rspec-support/spec/rspec/support/method_signature_verifier_spec.rb +357 -0
  490. data/rspec-support/spec/rspec/support/os_spec.rb +36 -0
  491. data/rspec-support/spec/rspec/support/recursive_const_methods_spec.rb +49 -0
  492. data/rspec-support/spec/rspec/support/spec/in_sub_process_spec.rb +36 -0
  493. data/rspec-support/spec/rspec/support/spec/prevent_load_time_warnings_spec.rb +10 -0
  494. data/rspec-support/spec/rspec/support/spec/shell_out_spec.rb +44 -0
  495. data/rspec-support/spec/rspec/support/spec/stderr_splitter_spec.rb +60 -0
  496. data/rspec-support/spec/rspec/support/spec/with_isolated_std_err_spec.rb +21 -0
  497. data/rspec-support/spec/rspec/support/version_checker_spec.rb +29 -0
  498. data/rspec-support/spec/rspec/support/warnings_spec.rb +66 -0
  499. data/rspec-support/spec/rspec/support_spec.rb +119 -0
  500. data/rspec-support/spec/spec_helper.rb +2 -0
  501. data/rspec/lib/rspec.rb +3 -0
  502. data/rspec/lib/rspec/version.rb +5 -0
  503. data/spec/mri/integration/browser_spec.rb +31 -0
  504. data/spec/mri/integration/rack/sprockets_runner_js_errors.rb.erb +20 -0
  505. data/spec/mri/integration/spec_opts_spec.rb +81 -0
  506. data/spec/mri/unit/opal/rspec/browser_formatter_spec.rb +35 -0
  507. data/spec/mri/unit/opal/rspec/cached_environment_spec.rb +85 -0
  508. data/spec/mri/unit/opal/rspec/opal/browser_formatter_spec.rb +14 -0
  509. data/spec/mri/unit/opal/rspec/rack/config.ru +12 -0
  510. data/spec/mri/unit/opal/rspec/rake_task_spec.rb +261 -0
  511. data/spec/mri/unit/opal/rspec/sprockets_environment_spec.rb +55 -0
  512. data/spec/mri/unit/opal/rspec/temp_dir_helper.rb +19 -0
  513. data/spec/opal/after_hooks_spec.rb +140 -0
  514. data/spec/opal/around_hooks_spec.rb +164 -0
  515. data/spec/opal/async_spec.rb +184 -0
  516. data/spec/opal/before_hooks_spec.rb +183 -0
  517. data/spec/opal/example_spec.rb +174 -0
  518. data/spec/opal/expected_failures.txt +40 -0
  519. data/spec/opal/matchers_spec.rb +205 -0
  520. data/spec/opal/mock_spec.rb +63 -0
  521. data/spec/opal/should_syntax_spec.rb +17 -0
  522. data/spec/opal/skip_pending_spec.rb +43 -0
  523. data/spec/opal/subject_spec.rb +87 -0
  524. data/spec/other/color_on_by_default_spec.rb +9 -0
  525. data/spec/other/dummy_spec.rb +5 -0
  526. data/spec/other/formatter_dependency.rb +3 -0
  527. data/spec/other/ignored_spec.opal +5 -0
  528. data/spec/other/test_formatter.rb +9 -0
  529. data/spec/rspec/core/config.rb +5 -0
  530. data/spec/rspec/core/config.ru +4 -0
  531. data/spec/rspec/core/core_spec_loader.rb +46 -0
  532. data/spec/rspec/core/filter/core/async/example_group.txt +13 -0
  533. data/spec/rspec/core/filter/core/async/hooks.rb +12 -0
  534. data/spec/rspec/core/filter/core/async/memoized_helpers.txt +3 -0
  535. data/spec/rspec/core/filter/core/async/metadata.txt +2 -0
  536. data/spec/rspec/core/filter/core/bugs/filter_manager.txt +4 -0
  537. data/spec/rspec/core/filter/core/bugs/formatters.txt +4 -0
  538. data/spec/rspec/core/filter/core/bugs/memoized_helpers.rb +11 -0
  539. data/spec/rspec/core/filter/core/bugs/metadata.txt +5 -0
  540. data/spec/rspec/core/filter/core/bugs/sandbox/subject_issue_test.rb +328 -0
  541. data/spec/rspec/core/filter/core/bugs/warnings_deprecations.txt +3 -0
  542. data/spec/rspec/core/filter/core/unsupported/core.txt +5 -0
  543. data/spec/rspec/core/filter/core/unsupported/example.txt +7 -0
  544. data/spec/rspec/core/filter/core/unsupported/example_group.txt +13 -0
  545. data/spec/rspec/core/filter/core/unsupported/filter_manager.txt +7 -0
  546. data/spec/rspec/core/filter/core/unsupported/formatters.txt +27 -0
  547. data/spec/rspec/core/filter/core/unsupported/hooks.txt +2 -0
  548. data/spec/rspec/core/filter/core/unsupported/memoized_helpers.txt +6 -0
  549. data/spec/rspec/core/filter/core/unsupported/metadata.txt +14 -0
  550. data/spec/rspec/core/filter/core/unsupported/metadata_filter.txt +2 -0
  551. data/spec/rspec/core/filter/core/unsupported/notifications.txt +8 -0
  552. data/spec/rspec/core/filter/core/unsupported/world.txt +3 -0
  553. data/spec/rspec/core/fixes/missing_constants.rb +20 -0
  554. data/spec/rspec/core/fixes/opal_itself.rb +38 -0
  555. data/spec/rspec/core/fixes/shared_examples.rb +3 -0
  556. data/spec/rspec/core/opal_alternates/rspec/core/example_group_spec.rb +145 -0
  557. data/spec/rspec/core/opal_alternates/rspec/core/failed_example_notification_spec.rb +31 -0
  558. data/spec/rspec/core/opal_alternates/rspec/core/hooks_spec.rb +113 -0
  559. data/spec/rspec/core/opal_alternates/rspec/core/memoized_helpers_spec.rb +36 -0
  560. data/spec/rspec/core/opal_alternates/rspec/core/metadata_spec.rb +48 -0
  561. data/spec/rspec/core/require_specs.rb +25 -0
  562. data/spec/rspec/core/sandboxing.rb +72 -0
  563. data/spec/rspec/core/spec_files_exclude.txt +41 -0
  564. data/spec/rspec/expectations/config.rb +16 -0
  565. data/spec/rspec/expectations/config.ru +4 -0
  566. data/spec/rspec/expectations/expectation_spec_loader.rb +110 -0
  567. data/spec/rspec/expectations/filter/bugs/aliased_matcher.txt +2 -0
  568. data/spec/rspec/expectations/filter/bugs/aliases.rb +13 -0
  569. data/spec/rspec/expectations/filter/bugs/base_matcher.txt +2 -0
  570. data/spec/rspec/expectations/filter/bugs/be.rb +4 -0
  571. data/spec/rspec/expectations/filter/bugs/be_instance_of.rb +7 -0
  572. data/spec/rspec/expectations/filter/bugs/be_spec.txt +2 -0
  573. data/spec/rspec/expectations/filter/bugs/configuration.txt +8 -0
  574. data/spec/rspec/expectations/filter/bugs/contain_exactly.rb +13 -0
  575. data/spec/rspec/expectations/filter/bugs/define_negated_matcher.rb +9 -0
  576. data/spec/rspec/expectations/filter/bugs/description_generation.rb +4 -0
  577. data/spec/rspec/expectations/filter/bugs/dsl.txt +14 -0
  578. data/spec/rspec/expectations/filter/bugs/equal.txt +3 -0
  579. data/spec/rspec/expectations/filter/bugs/expectation_target.txt +2 -0
  580. data/spec/rspec/expectations/filter/bugs/expectations.txt +2 -0
  581. data/spec/rspec/expectations/filter/bugs/have_attributes.rb +8 -0
  582. data/spec/rspec/expectations/filter/bugs/include.rb +4 -0
  583. data/spec/rspec/expectations/filter/bugs/operators.txt +2 -0
  584. data/spec/rspec/expectations/filter/bugs/raise_error.txt +2 -0
  585. data/spec/rspec/expectations/filter/bugs/respond_to.rb +13 -0
  586. data/spec/rspec/expectations/filter/bugs/sandbox/undef.rb +20 -0
  587. data/spec/rspec/expectations/filter/unsupported/aliases.txt +5 -0
  588. data/spec/rspec/expectations/filter/unsupported/be.txt +2 -0
  589. data/spec/rspec/expectations/filter/unsupported/be_instance_of.txt +3 -0
  590. data/spec/rspec/expectations/filter/unsupported/change.txt +2 -0
  591. data/spec/rspec/expectations/filter/unsupported/configuration.txt +2 -0
  592. data/spec/rspec/expectations/filter/unsupported/contain_exactly.txt +2 -0
  593. data/spec/rspec/expectations/filter/unsupported/description_generation.txt +6 -0
  594. data/spec/rspec/expectations/filter/unsupported/dsl.txt +8 -0
  595. data/spec/rspec/expectations/filter/unsupported/eq.txt +10 -0
  596. data/spec/rspec/expectations/filter/unsupported/equal.txt +3 -0
  597. data/spec/rspec/expectations/filter/unsupported/expectation_target.txt +2 -0
  598. data/spec/rspec/expectations/filter/unsupported/expectations.txt +8 -0
  599. data/spec/rspec/expectations/filter/unsupported/has.txt +2 -0
  600. data/spec/rspec/expectations/filter/unsupported/include.txt +3 -0
  601. data/spec/rspec/expectations/filter/unsupported/match.txt +2 -0
  602. data/spec/rspec/expectations/filter/unsupported/matchers.txt +11 -0
  603. data/spec/rspec/expectations/filter/unsupported/output.txt +14 -0
  604. data/spec/rspec/expectations/filter/unsupported/raise_error.txt +3 -0
  605. data/spec/rspec/expectations/filter/unsupported/respond_to.rb +5 -0
  606. data/spec/rspec/expectations/filter/unsupported/syntax.txt +3 -0
  607. data/spec/rspec/expectations/filter/unsupported/yield.txt +2 -0
  608. data/spec/rspec/expectations/fixes/example_patches.rb +32 -0
  609. data/spec/rspec/expectations/fixes/missing_constants.rb +12 -0
  610. data/spec/rspec/expectations/fixes/not_compatible.rb +6 -0
  611. data/spec/rspec/expectations/fixes/opal_itself.rb +140 -0
  612. data/spec/rspec/expectations/opal_alternates/be_instance_of_spec.rb +11 -0
  613. data/spec/rspec/expectations/opal_alternates/dsl_spec.rb +66 -0
  614. data/spec/rspec/expectations/opal_alternates/expectation_target_spec.rb +21 -0
  615. data/spec/rspec/expectations/opal_alternates/yield_spec.rb +11 -0
  616. data/spec/rspec/expectations/require_specs.rb +16 -0
  617. data/spec/rspec/expectations/shared_examples.rb +47 -0
  618. data/spec/rspec/expectations/spec_files_exclude.txt +2 -0
  619. data/spec/rspec/expectations/spec_helper_opal.rb +13 -0
  620. data/spec/rspec/filter_processor.rb +77 -0
  621. data/spec/rspec/mocks/config.ru +4 -0
  622. data/spec/rspec/mocks/filter/bugs/and_call_original.txt +9 -0
  623. data/spec/rspec/mocks/filter/bugs/and_wrap_original.txt +2 -0
  624. data/spec/rspec/mocks/filter/bugs/any_instance.rb +24 -0
  625. data/spec/rspec/mocks/filter/bugs/argument_matchers.rb +3 -0
  626. data/spec/rspec/mocks/filter/bugs/configuration.txt +2 -0
  627. data/spec/rspec/mocks/filter/bugs/double.txt +3 -0
  628. data/spec/rspec/mocks/filter/bugs/expiration.txt +2 -0
  629. data/spec/rspec/mocks/filter/bugs/instance_method_stasher.txt +2 -0
  630. data/spec/rspec/mocks/filter/bugs/methods.rb +5 -0
  631. data/spec/rspec/mocks/filter/bugs/mocks.txt +6 -0
  632. data/spec/rspec/mocks/filter/bugs/mutate_const.txt +2 -0
  633. data/spec/rspec/mocks/filter/bugs/partial_double.rb +8 -0
  634. data/spec/rspec/mocks/filter/bugs/receive.txt +5 -0
  635. data/spec/rspec/mocks/filter/bugs/should_syntax.txt +5 -0
  636. data/spec/rspec/mocks/filter/bugs/space.txt +2 -0
  637. data/spec/rspec/mocks/filter/bugs/spy.txt +5 -0
  638. data/spec/rspec/mocks/filter/bugs/stub_implementation.rb +9 -0
  639. data/spec/rspec/mocks/filter/unsupported/and_call_original.txt +5 -0
  640. data/spec/rspec/mocks/filter/unsupported/and_return.txt +2 -0
  641. data/spec/rspec/mocks/filter/unsupported/any_instance.rb +6 -0
  642. data/spec/rspec/mocks/filter/unsupported/argument_matchers.rb +10 -0
  643. data/spec/rspec/mocks/filter/unsupported/combining_implementation_instructions.rb +9 -0
  644. data/spec/rspec/mocks/filter/unsupported/double.rb +16 -0
  645. data/spec/rspec/mocks/filter/unsupported/expected_arg_verification.txt +2 -0
  646. data/spec/rspec/mocks/filter/unsupported/have_received.txt +2 -0
  647. data/spec/rspec/mocks/filter/unsupported/instance_double_with_class_loaded.txt +8 -0
  648. data/spec/rspec/mocks/filter/unsupported/mocks.rb +8 -0
  649. data/spec/rspec/mocks/filter/unsupported/nil_expectation_warning.rb +8 -0
  650. data/spec/rspec/mocks/filter/unsupported/partial_double.rb +6 -0
  651. data/spec/rspec/mocks/filter/unsupported/receive.txt +13 -0
  652. data/spec/rspec/mocks/filter/unsupported/receive_message_chain.rb +4 -0
  653. data/spec/rspec/mocks/filter/unsupported/receive_messages.txt +2 -0
  654. data/spec/rspec/mocks/filter/unsupported/should_syntax.txt +1 -0
  655. data/spec/rspec/mocks/filter/unsupported/space.rb +7 -0
  656. data/spec/rspec/mocks/filter/unsupported/stub.rb +7 -0
  657. data/spec/rspec/mocks/fixes/doubled_classes.rb +76 -0
  658. data/spec/rspec/mocks/fixes/missing_constants.rb +3 -0
  659. data/spec/rspec/mocks/fixes/opal_itself.rb +59 -0
  660. data/spec/rspec/mocks/mocks_spec_loader.rb +91 -0
  661. data/spec/rspec/mocks/require_specs.rb +15 -0
  662. data/spec/rspec/mocks/spec_files_exclude.txt +11 -0
  663. data/spec/rspec/mocks/spec_helper_opal.rb +129 -0
  664. data/spec/rspec/opal_rspec_spec_loader.rb +359 -0
  665. data/spec/rspec/shared/opal/fixes/deprecation_helpers.rb +31 -0
  666. data/spec/rspec/shared/opal/fixes/rspec_helpers.rb +6 -0
  667. data/spec/rspec/shared/opal/progress_json_formatter.rb +29 -0
  668. data/spec/rspec/support/config.rb +5 -0
  669. data/spec/rspec/support/config.ru +4 -0
  670. data/spec/rspec/support/filter/bugs/recursive_const_methods.txt +3 -0
  671. data/spec/rspec/support/filter/bugs/sandbox/basic_object.rb +30 -0
  672. data/spec/rspec/support/filter/bugs/stderr_splitter_spec.txt +2 -0
  673. data/spec/rspec/support/filter/bugs/support.txt +2 -0
  674. data/spec/rspec/support/filter/unsupported/fuzzy_matcher.txt +2 -0
  675. data/spec/rspec/support/filter/unsupported/support.rb +7 -0
  676. data/spec/rspec/support/filter/unsupported/warnings.txt +6 -0
  677. data/spec/rspec/support/fixes/missing_constants.rb +3 -0
  678. data/spec/rspec/support/fixes/opal_itself.rb +13 -0
  679. data/spec/rspec/support/require_specs.rb +15 -0
  680. data/spec/rspec/support/spec_files_exclude.txt +26 -0
  681. data/spec/rspec/support/spec_helper.rb +27 -0
  682. data/spec/rspec/support/support_spec_loader.rb +38 -0
  683. data/util/create_requires.rb +49 -0
  684. data/vendor/spec_runner.js +64 -0
  685. metadata +774 -0
@@ -0,0 +1,227 @@
1
+ module RSpec::Mocks::Matchers
2
+ RSpec.describe "receive_message_chain" do
3
+ let(:object) { double(:object) }
4
+
5
+ context "with only the expect syntax enabled" do
6
+ include_context "with syntax", :expect
7
+
8
+ it "errors with a negative allowance" do
9
+ expect {
10
+ allow(object).not_to receive_message_chain(:to_a)
11
+ }.to raise_error(RSpec::Mocks::NegationUnsupportedError)
12
+ end
13
+
14
+ it "errors with a negative expectation" do
15
+ expect {
16
+ expect(object).not_to receive_message_chain(:to_a)
17
+ }.to raise_error(RSpec::Mocks::NegationUnsupportedError)
18
+ end
19
+
20
+ it "errors with a negative any_instance expectation" do
21
+ expect {
22
+ expect_any_instance_of(Object).not_to receive_message_chain(:to_a)
23
+ }.to raise_error(RSpec::Mocks::NegationUnsupportedError)
24
+ end
25
+
26
+ it "errors with a negative any_instance allowance" do
27
+ expect {
28
+ allow_any_instance_of(Object).not_to receive_message_chain(:to_a)
29
+ }.to raise_error(RSpec::Mocks::NegationUnsupportedError)
30
+ end
31
+
32
+ it "works with a do block" do
33
+ allow(object).to receive_message_chain(:to_a, :length) do
34
+ 3
35
+ end
36
+
37
+ expect(object.to_a.length).to eq(3)
38
+ end
39
+
40
+ it "works with a {} block" do
41
+ allow(object).to receive_message_chain(:to_a, :length) { 3 }
42
+
43
+ expect(object.to_a.length).to eq(3)
44
+ end
45
+
46
+ it "gives the { } block prescedence over the do block" do
47
+ allow(object).to receive_message_chain(:to_a, :length) { 3 } do
48
+ 4
49
+ end
50
+
51
+ expect(object.to_a.length).to eq(3)
52
+ end
53
+
54
+ it "works with and_return" do
55
+ allow(object).to receive_message_chain(:to_a, :length).and_return(3)
56
+
57
+ expect(object.to_a.length).to eq(3)
58
+ end
59
+
60
+ it "can constrain the return value by the argument to the last call" do
61
+ allow(object).to receive_message_chain(:one, :plus).with(1) { 2 }
62
+ allow(object).to receive_message_chain(:one, :plus).with(2) { 3 }
63
+ expect(object.one.plus(1)).to eq(2)
64
+ expect(object.one.plus(2)).to eq(3)
65
+ end
66
+
67
+ it "works with and_call_original", :pending => "See https://github.com/rspec/rspec-mocks/pull/467#issuecomment-28631621" do
68
+ list = [1, 2, 3]
69
+ expect(list).to receive_message_chain(:to_a, :length).and_call_original
70
+ expect(list.to_a.length).to eq(3)
71
+ end
72
+
73
+ it "fails with and_call_original when the entire chain is not called", :pending => "See https://github.com/rspec/rspec-mocks/pull/467#issuecomment-28631621" do
74
+ list = [1, 2, 3]
75
+ expect(list).to receive_message_chain(:to_a, :length).and_call_original
76
+ expect(list.to_a).to eq([1, 2, 3])
77
+ end
78
+
79
+ it "works with and_raise" do
80
+ allow(object).to receive_message_chain(:to_a, :length).and_raise(StandardError.new("hi"))
81
+
82
+ expect { object.to_a.length }.to raise_error(StandardError, "hi")
83
+ end
84
+
85
+ it "works with and_throw" do
86
+ allow(object).to receive_message_chain(:to_a, :length).and_throw(:nope)
87
+
88
+ expect { object.to_a.length }.to throw_symbol(:nope)
89
+ end
90
+
91
+ it "works with and_yield" do
92
+ allow(object).to receive_message_chain(:to_a, :length).and_yield(3)
93
+
94
+ expect { |blk| object.to_a.length(&blk) }.to yield_with_args(3)
95
+ end
96
+
97
+ it "works with a string of messages to chain" do
98
+ allow(object).to receive_message_chain("to_a.length").and_yield(3)
99
+
100
+ expect { |blk| object.to_a.length(&blk) }.to yield_with_args(3)
101
+ end
102
+
103
+ it "works with a hash return as the last argument in the chain" do
104
+ allow(object).to receive_message_chain(:to_a, :length => 3)
105
+
106
+ expect(object.to_a.length).to eq(3)
107
+ end
108
+
109
+ it "accepts any number of arguments to the stubbed messages" do
110
+ allow(object).to receive_message_chain(:msg1, :msg2).and_return(:return_value)
111
+
112
+ expect(object.msg1("nonsense", :value).msg2("another", :nonsense, 3.0, "value")).to eq(:return_value)
113
+ end
114
+
115
+ it "accepts any number of arguments to the stubbed messages with an inline hash return value" do
116
+ allow(object).to receive_message_chain(:msg1, :msg2 => :return_value)
117
+
118
+ expect(object.msg1("nonsense", :value).msg2("another", :nonsense, 3.0, "value")).to eq(:return_value)
119
+ end
120
+
121
+ it "raises when expect is used and some of the messages in the chain aren't called" do
122
+ expect {
123
+ expect(object).to receive_message_chain(:to_a, :farce, :length => 3)
124
+ object.to_a
125
+ verify_all
126
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
127
+ end
128
+
129
+ it "raises when expect is used and all but the last message in the chain are called" do
130
+ expect {
131
+ expect(object).to receive_message_chain(:foo, :bar, :baz)
132
+ object.foo.bar
133
+ verify_all
134
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
135
+ end
136
+
137
+ it "does not raise when expect is used and the entire chain is called" do
138
+ expect {
139
+ expect(object).to receive_message_chain(:to_a, :length => 3)
140
+ object.to_a.length
141
+ verify_all
142
+ }.not_to raise_error
143
+ end
144
+
145
+ it "works with allow_any_instance" do
146
+ o = Object.new
147
+
148
+ allow_any_instance_of(Object).to receive_message_chain(:to_a, :length => 3)
149
+
150
+ expect(o.to_a.length).to eq(3)
151
+ end
152
+
153
+ it "stubs already stubbed instances when using `allow_any_instance_of`" do
154
+ o = Object.new
155
+ allow(o).to receive(:foo).and_return(dbl = double)
156
+ expect(o.foo).to be(dbl)
157
+
158
+ allow_any_instance_of(Object).to receive_message_chain(:foo, :bar).and_return("bazz")
159
+ expect(o.foo.bar).to eq("bazz")
160
+ end
161
+
162
+ it "fails when with expect_any_instance_of is used and the entire chain is not called" do
163
+ expect {
164
+ expect_any_instance_of(Object).to receive_message_chain(:to_a, :length => 3)
165
+ verify_all
166
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
167
+ end
168
+
169
+ it "affects previously stubbed instances when `expect_any_instance_of` is called" do
170
+ o = Object.new
171
+ allow(o).to receive(:foo).and_return(double)
172
+
173
+ expect_any_instance_of(Object).to receive_message_chain(:foo, :bar => 3)
174
+ expect(o.foo.bar).to eq(3)
175
+ end
176
+
177
+ it "passes when with expect_any_instance_of is used and the entire chain is called" do
178
+ o = Object.new
179
+
180
+ expect_any_instance_of(Object).to receive_message_chain(:to_a, :length => 3)
181
+ o.to_a.length
182
+ end
183
+
184
+ it "works with expect where the first level of the chain is already expected" do
185
+ o = Object.new
186
+ expect(o).to receive(:foo).and_return(double)
187
+ expect(o).to receive_message_chain(:foo, :bar, :baz)
188
+
189
+ o.foo.bar.baz
190
+ end
191
+
192
+ it "works with allow where the first level of the chain is already expected" do
193
+ o = Object.new
194
+ expect(o).to receive(:foo).and_return(double)
195
+ allow(o).to receive_message_chain(:foo, :bar, :baz).and_return(3)
196
+
197
+ expect(o.foo.bar.baz).to eq(3)
198
+ end
199
+
200
+ it "works with expect where the first level of the chain is already stubbed" do
201
+ o = Object.new
202
+ allow(o).to receive(:foo).and_return(double)
203
+ expect(o).to receive_message_chain(:foo, :bar, :baz)
204
+
205
+ o.foo.bar.baz
206
+ end
207
+
208
+ it "works with allow where the first level of the chain is already stubbed" do
209
+ o = Object.new
210
+ allow(o).to receive(:foo).and_return(double)
211
+ allow(o).to receive_message_chain(:foo, :bar, :baz).and_return(3)
212
+
213
+ expect(o.foo.bar.baz).to eq(3)
214
+ end
215
+ end
216
+
217
+ context "when the expect and should syntaxes are enabled" do
218
+ include_context "with syntax", [:expect, :should]
219
+
220
+ it "stubs the message correctly" do
221
+ allow(object).to receive_message_chain(:to_a, :length)
222
+
223
+ expect { object.to_a.length }.not_to raise_error
224
+ end
225
+ end
226
+ end
227
+ end
@@ -0,0 +1,148 @@
1
+ module RSpec
2
+ module Mocks
3
+ RSpec.shared_examples "complains when given blocks" do
4
+ it "complains if a { } block is given" do
5
+ expect {
6
+ target.to receive_messages(:a => 1) { "implementation" }
7
+ }.to raise_error "Implementation blocks aren't supported with `receive_messages`"
8
+ end
9
+
10
+ it "complains if a do; end; block is given" do
11
+ expect {
12
+ target.to receive_messages(:a => 1) do
13
+ "implementation"
14
+ end
15
+ }.to raise_error "Implementation blocks aren't supported with `receive_messages`"
16
+ end
17
+ end
18
+
19
+ RSpec.shared_examples "handles partially mocked objects correctly" do
20
+ let(:obj) { Struct.new(:a).new('original') }
21
+
22
+ it "resets partially mocked objects correctly" do
23
+ target.to receive_messages(:a => 1, :b => 2)
24
+
25
+ expect {
26
+ reset obj
27
+ }.to change { obj.a }.from(1).to("original")
28
+ end
29
+ end
30
+
31
+ RSpec.describe "allow(...).to receive_messages(:a => 1, :b => 2)" do
32
+ let(:obj) { double "Object" }
33
+ let(:target) { allow(obj) }
34
+
35
+ it "allows the object to respond to multiple messages" do
36
+ allow(obj).to receive_messages(:a => 1, :b => 2)
37
+ expect(obj.a).to eq 1
38
+ expect(obj.b).to eq 2
39
+ end
40
+
41
+ it_behaves_like "complains when given blocks"
42
+ it_behaves_like "handles partially mocked objects correctly"
43
+ end
44
+
45
+ RSpec.describe "allow_any_instance_of(...).to receive_messages(:a => 1, :b => 2)" do
46
+ let(:obj) { Object.new }
47
+ let(:target) { allow_any_instance_of(Object) }
48
+
49
+ it "allows the object to respond to multiple messages" do
50
+ allow_any_instance_of(Object).to receive_messages(:a => 1, :b => 2)
51
+ expect(obj.a).to eq 1
52
+ expect(obj.b).to eq 2
53
+ end
54
+
55
+ it "updates stubs on instances with existing stubs" do
56
+ allow(obj).to receive(:a).and_return(3)
57
+ expect(obj.a).to eq(3)
58
+
59
+ allow_any_instance_of(Object).to receive_messages(:a => 1, :b => 2)
60
+ expect(obj.a).to eq 1
61
+ expect(obj.b).to eq 2
62
+ end
63
+
64
+ it_behaves_like "complains when given blocks"
65
+ end
66
+
67
+ RSpec.describe "expect(...).to receive_messages(:a => 1, :b => 2)" do
68
+ let(:obj) { double "Object" }
69
+ let(:target) { expect(obj) }
70
+
71
+ let(:expectation_error) do
72
+ failure = nil
73
+ begin
74
+ verify_all
75
+ rescue RSpec::Mocks::MockExpectationError => error
76
+ failure = error
77
+ end
78
+ failure
79
+ end
80
+
81
+ it "sets up multiple expectations" do
82
+ expect(obj).to receive_messages(:a => 1, :b => 2)
83
+ obj.a
84
+ expect { verify_all }.to raise_error RSpec::Mocks::MockExpectationError
85
+ end
86
+
87
+ it 'fails with a sensible message' do
88
+ expect(obj).to receive_messages(:a => 1, :b => 2)
89
+ obj.b
90
+ expect(expectation_error.to_s).to eq %Q{(Double "Object").a(no args)\n expected: 1 time with any arguments\n received: 0 times}
91
+ end
92
+
93
+ it 'fails with the correct location' do
94
+ expect(obj).to receive_messages(:a => 1, :b => 2); line = __LINE__
95
+ expect(expectation_error.backtrace[0]).to match(/#{__FILE__}:#{line}/)
96
+ end
97
+
98
+ it_behaves_like "complains when given blocks"
99
+ it_behaves_like "handles partially mocked objects correctly"
100
+ end
101
+
102
+ RSpec.describe "expect_any_instance_of(...).to receive_messages(:a => 1, :b => 2)" do
103
+ let(:obj) { Object.new }
104
+ let(:target) { expect_any_instance_of(Object) }
105
+
106
+ it "sets up multiple expectations" do
107
+ expect_any_instance_of(Object).to receive_messages(:a => 1, :b => 2)
108
+ obj.a
109
+ expect { RSpec::Mocks.space.verify_all }.to raise_error RSpec::Mocks::MockExpectationError
110
+ RSpec::Mocks.space.reset_all
111
+ end
112
+
113
+ it_behaves_like "complains when given blocks"
114
+ end
115
+
116
+ RSpec.describe "negative expectation failure" do
117
+ let(:obj) { Object.new }
118
+
119
+ example "allow(...).to_not receive_messages(:a => 1, :b => 2)" do
120
+ expect { allow(obj).to_not receive_messages(:a => 1, :b => 2) }.to(
121
+ raise_error "`allow(...).to_not receive_messages` is not supported "+
122
+ "since it doesn't really make sense. What would it even mean?"
123
+ )
124
+ end
125
+
126
+ example "allow_any_instance_of(...).to_not receive_messages(:a => 1, :b => 2)" do
127
+ expect { allow_any_instance_of(obj).to_not receive_messages(:a => 1, :b => 2) }.to(
128
+ raise_error "`allow_any_instance_of(...).to_not receive_messages` is not supported "+
129
+ "since it doesn't really make sense. What would it even mean?"
130
+ )
131
+ end
132
+
133
+ example "expect(...).to_not receive_messages(:a => 1, :b => 2)" do
134
+ expect { expect(obj).to_not receive_messages(:a => 1, :b => 2) }.to(
135
+ raise_error "`expect(...).to_not receive_messages` is not supported "+
136
+ "since it doesn't really make sense. What would it even mean?"
137
+ )
138
+ end
139
+
140
+ example "expect_any_instance_of(...).to_not receive_messages(:a => 1, :b => 2)" do
141
+ expect { expect_any_instance_of(obj).to_not receive_messages(:a => 1, :b => 2) }.to(
142
+ raise_error "`expect_any_instance_of(...).to_not receive_messages` is not supported "+
143
+ "since it doesn't really make sense. What would it even mean?"
144
+ )
145
+ end
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,525 @@
1
+ module RSpec
2
+ module Mocks
3
+ RSpec.describe Matchers::Receive do
4
+ include_context "with syntax", :expect
5
+
6
+ describe "expectations/allowances on any instance recorders" do
7
+ include_context "with syntax", [:expect, :should]
8
+
9
+ it "warns about allow(Klass.any_instance).to receive..." do
10
+ expect(RSpec).to receive(:warning).with(/allow.*any_instance.*is probably not what you meant.*allow_any_instance_of.*instead/)
11
+ allow(Object.any_instance).to receive(:foo)
12
+ end
13
+
14
+ it "includes the correct call site in the allow warning" do
15
+ expect_warning_with_call_site(__FILE__, __LINE__ + 1)
16
+ allow(Object.any_instance).to receive(:foo)
17
+ end
18
+
19
+ it "warns about expect(Klass.any_instance).to receive..." do
20
+ expect(RSpec).to receive(:warning).with(/expect.*any_instance.*is probably not what you meant.*expect_any_instance_of.*instead/)
21
+ any_instance_proxy = Object.any_instance
22
+ expect(any_instance_proxy).to receive(:foo)
23
+ any_instance_proxy.foo
24
+ end
25
+
26
+ it "includes the correct call site in the expect warning" do
27
+ any_instance_proxy = Object.any_instance
28
+ expect_warning_with_call_site(__FILE__, __LINE__ + 1)
29
+ expect(any_instance_proxy).to receive(:foo)
30
+ any_instance_proxy.foo
31
+ end
32
+ end
33
+
34
+ shared_examples "a receive matcher" do |*options|
35
+ it 'allows the caller to configure how the subject responds' do
36
+ wrapped.to receive(:foo).and_return(5)
37
+ expect(receiver.foo).to eq(5)
38
+ end
39
+
40
+ it 'allows the caller to constrain the received arguments' do
41
+ wrapped.to receive(:foo).with(:a)
42
+ receiver.foo(:a)
43
+
44
+ expect {
45
+ receiver.foo(:b)
46
+ }.to raise_error(/received :foo with unexpected arguments/)
47
+ end
48
+
49
+ it 'allows the caller to constrain the received arguments by matcher' do
50
+ wrapped.to receive(:foo).with an_instance_of Fixnum
51
+ expect {
52
+ receiver.foo(1.1)
53
+ }.to raise_error(/expected.*\(an instance of Fixnum\)/)
54
+ receiver.foo(1)
55
+ end
56
+
57
+ it 'allows a `do...end` block implementation to be provided' do
58
+ wrapped.to receive(:foo) do
59
+ 4
60
+ end
61
+
62
+ expect(receiver.foo).to eq(4)
63
+ end
64
+
65
+ it 'allows chaining off a `do...end` block implementation to be provided' do
66
+ wrapped.to receive(:foo) do
67
+ 4
68
+ end.and_return(6)
69
+
70
+ expect(receiver.foo).to eq(6)
71
+ end
72
+
73
+ it 'allows a `{ ... }` block implementation to be provided' do
74
+ wrapped.to receive(:foo) { 5 }
75
+ expect(receiver.foo).to eq(5)
76
+ end
77
+
78
+ it 'gives precedence to a `{ ... }` block when both forms are provided ' +
79
+ 'since that form actually binds to `receive`' do
80
+ wrapped.to receive(:foo) { :curly } do
81
+ :do_end
82
+ end
83
+
84
+ expect(receiver.foo).to eq(:curly)
85
+ end
86
+
87
+ it 'does not support other matchers', :unless => options.include?(:allow_other_matchers) do
88
+ expect {
89
+ wrapped.to eq(3)
90
+ }.to raise_error(UnsupportedMatcherError)
91
+ end
92
+
93
+ it 'does not get confused by messages being passed as strings and symbols' do
94
+ wrapped.to receive(:foo).with(1) { :a }
95
+ wrapped.to receive("foo").with(2) { :b }
96
+
97
+ expect(receiver.foo(1)).to eq(:a)
98
+ expect(receiver.foo(2)).to eq(:b)
99
+ end
100
+
101
+ it 'allows do...end blocks to be passed to the fluent interface methods without getting a warning' do
102
+ expect(RSpec).not_to receive(:warning)
103
+
104
+ wrapped.to receive(:foo).with(1) do
105
+ :a
106
+ end
107
+
108
+ expect(receiver.foo(1)).to eq(:a)
109
+ end
110
+
111
+ it 'makes { } blocks trump do...end blocks when passed to a fluent interface method' do
112
+ wrapped.to receive(:foo).with(1) { :curly } do
113
+ :do_end
114
+ end
115
+
116
+ expect(receiver.foo(1)).to eq(:curly)
117
+ end
118
+ end
119
+
120
+ shared_examples "an expect syntax allowance" do |*options|
121
+ it_behaves_like "a receive matcher", *options
122
+
123
+ it 'does not expect the message to be received' do
124
+ wrapped.to receive(:foo)
125
+ expect { verify_all }.not_to raise_error
126
+ end
127
+ end
128
+
129
+ shared_examples "an expect syntax negative allowance" do
130
+ it 'is disabled since this expression is confusing' do
131
+ expect {
132
+ wrapped.not_to receive(:foo)
133
+ }.to raise_error(/not_to receive` is not supported/)
134
+
135
+ expect {
136
+ wrapped.to_not receive(:foo)
137
+ }.to raise_error(/to_not receive` is not supported/)
138
+ end
139
+ end
140
+
141
+ shared_examples "an expect syntax expectation" do |*options|
142
+ it_behaves_like "a receive matcher", *options
143
+
144
+ it 'sets up a message expectation that passes if the message is received' do
145
+ wrapped.to receive(:foo)
146
+ receiver.foo
147
+ verify_all
148
+ end
149
+
150
+ it 'sets up a message expectation that fails if the message is not received' do
151
+ wrapped.to receive(:foo)
152
+
153
+ expect {
154
+ verify_all
155
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
156
+ end
157
+
158
+ it "reports the line number of expectation of unreceived message", :pending => options.include?(:does_not_report_line_num) do
159
+ expected_error_line = __LINE__; wrapped.to receive(:foo)
160
+
161
+ expect {
162
+ verify_all
163
+ }.to raise_error { |e|
164
+ expect(e.backtrace.first).to match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
165
+ }
166
+ end
167
+ end
168
+
169
+ shared_examples "an expect syntax negative expectation" do
170
+ it 'sets up a negaive message expectation that passes if the message is not received' do
171
+ wrapped.not_to receive(:foo)
172
+ verify_all
173
+ end
174
+
175
+ it 'sets up a negative message expectation that fails if the message is received' do
176
+ wrapped.not_to receive(:foo)
177
+
178
+ expect {
179
+ receiver.foo
180
+ }.to raise_error(/expected: 0 times.*received: 1 time/m)
181
+ end
182
+
183
+ it 'supports `to_not` as an alias for `not_to`' do
184
+ wrapped.to_not receive(:foo)
185
+
186
+ expect {
187
+ receiver.foo
188
+ }.to raise_error(/expected: 0 times.*received: 1 time/m)
189
+ end
190
+
191
+ it 'allows the caller to constrain the received arguments' do
192
+ wrapped.not_to receive(:foo).with(:a)
193
+ def receiver.method_missing(*a); end # a poor man's stub...
194
+
195
+ expect {
196
+ receiver.foo(:b)
197
+ }.not_to raise_error
198
+
199
+ expect {
200
+ receiver.foo(:a)
201
+ }.to raise_error(/expected: 0 times.*received: 1 time/m)
202
+ end
203
+
204
+ it 'prevents confusing double-negative expressions involving `never`' do
205
+ expect {
206
+ wrapped.not_to receive(:foo).never
207
+ }.to raise_error(/trying to negate it again/)
208
+
209
+ expect {
210
+ wrapped.to_not receive(:foo).never
211
+ }.to raise_error(/trying to negate it again/)
212
+ end
213
+ end
214
+
215
+ shared_examples "resets partial mocks cleanly" do
216
+ let(:klass) { Struct.new(:foo) }
217
+ let(:object) { klass.new :bar }
218
+
219
+ it "removes the method double" do
220
+ target.to receive(:foo).and_return(:baz)
221
+ expect { reset object }.to change { object.foo }.from(:baz).to(:bar)
222
+ end
223
+
224
+ context "on a frozen object" do
225
+ it "warns about being unable to remove the method double" do
226
+ target.to receive(:foo).and_return(:baz)
227
+ expect_warning_without_call_site(/rspec-mocks was unable to restore the original `foo` method on #{object.inspect}/)
228
+ object.freeze
229
+ reset object
230
+ end
231
+
232
+ it "includes the spec location in the warning" do
233
+ line = __LINE__ - 1
234
+ target.to receive(:foo).and_return(:baz)
235
+ expect_warning_without_call_site(/#{RSpec::Core::Metadata.relative_path(__FILE__)}:#{line}/)
236
+ object.freeze
237
+ reset object
238
+ end
239
+ end
240
+ end
241
+
242
+ shared_examples "resets partial mocks of any instance cleanly" do
243
+ let(:klass) { Struct.new(:foo) }
244
+ let(:object) { klass.new :bar }
245
+
246
+ it "removes the method double" do
247
+ target.to receive(:foo).and_return(:baz)
248
+ expect {
249
+ verify_all
250
+ }.to change { object.foo }.from(:baz).to(:bar)
251
+ end
252
+ end
253
+
254
+ describe "allow(...).to receive" do
255
+ it_behaves_like "an expect syntax allowance" do
256
+ let(:receiver) { double }
257
+ let(:wrapped) { allow(receiver) }
258
+ end
259
+ it_behaves_like "resets partial mocks cleanly" do
260
+ let(:target) { allow(object) }
261
+ end
262
+ end
263
+
264
+ describe "allow(...).not_to receive" do
265
+ it_behaves_like "an expect syntax negative allowance" do
266
+ let(:wrapped) { allow(double) }
267
+ end
268
+ end
269
+
270
+ describe "allow_any_instance_of(...).to receive" do
271
+ it_behaves_like "an expect syntax allowance" do
272
+ let(:klass) { Class.new }
273
+ let(:wrapped) { allow_any_instance_of(klass) }
274
+ let(:receiver) { klass.new }
275
+ end
276
+
277
+ it_behaves_like "resets partial mocks of any instance cleanly" do
278
+ let(:target) { allow_any_instance_of(klass) }
279
+ end
280
+ end
281
+
282
+ describe "allow_any_instance_of(...).not_to receive" do
283
+ it_behaves_like "an expect syntax negative allowance" do
284
+ let(:wrapped) { allow_any_instance_of(Class.new) }
285
+ end
286
+ end
287
+
288
+ describe "expect(...).to receive" do
289
+ it_behaves_like "an expect syntax expectation", :allow_other_matchers do
290
+ let(:receiver) { double }
291
+ let(:wrapped) { expect(receiver) }
292
+
293
+ it 'sets up a message expectation that formats argument matchers correctly' do
294
+ wrapped.to receive(:foo).with an_instance_of Fixnum
295
+ expect { verify_all }.to(
296
+ raise_error(/expected: 1 time with arguments: \(an instance of Fixnum\)\n\s+received: 0 times$/)
297
+ )
298
+ end
299
+ end
300
+ it_behaves_like "resets partial mocks cleanly" do
301
+ let(:target) { expect(object) }
302
+ end
303
+
304
+ context "ordered with receive counts" do
305
+ let(:dbl) { double(:one => 1, :two => 2) }
306
+
307
+ it "passes with exact receive counts when the ordering is correct" do
308
+ expect(dbl).to receive(:one).twice.ordered
309
+ expect(dbl).to receive(:two).once.ordered
310
+
311
+ dbl.one
312
+ dbl.one
313
+ dbl.two
314
+ end
315
+
316
+ it "fails with exact receive counts when the ordering is incorrect" do
317
+ expect {
318
+ expect(dbl).to receive(:one).twice.ordered
319
+ expect(dbl).to receive(:two).once.ordered
320
+
321
+ dbl.one
322
+ dbl.two
323
+ dbl.one
324
+ }.to raise_error(/out of order/)
325
+
326
+ reset_all
327
+ end
328
+
329
+ it "passes with at least when the ordering is correct" do
330
+ expect(dbl).to receive(:one).at_least(2).times.ordered
331
+ expect(dbl).to receive(:two).once.ordered
332
+
333
+ dbl.one
334
+ dbl.one
335
+ dbl.one
336
+ dbl.two
337
+ end
338
+
339
+ pending "fails with at least when the ordering is incorrect" do
340
+ expect {
341
+ expect(dbl).to receive(:one).at_least(2).times.ordered
342
+ expect(dbl).to receive(:two).once.ordered
343
+
344
+ dbl.one
345
+ dbl.two
346
+ }.to raise_error
347
+
348
+ reset_all
349
+ end
350
+
351
+ it "passes with at most when the ordering is correct" do
352
+ expect(dbl).to receive(:one).at_most(2).times.ordered
353
+ expect(dbl).to receive(:two).once.ordered
354
+
355
+ dbl.one
356
+ dbl.two
357
+ end
358
+
359
+ pending "fails with at most when the ordering is incorrect" do
360
+ expect {
361
+ expect(dbl).to receive(:one).at_most(2).times.ordered
362
+ expect(dbl).to receive(:two).once.ordered
363
+
364
+ dbl.one
365
+ dbl.one
366
+ dbl.one
367
+ dbl.two
368
+ }.to raise_error
369
+
370
+ reset_all
371
+ end
372
+ end
373
+ end
374
+
375
+ describe "expect_any_instance_of(...).to receive" do
376
+ it_behaves_like "an expect syntax expectation", :does_not_report_line_num do
377
+ let(:klass) { Class.new }
378
+ let(:wrapped) { expect_any_instance_of(klass) }
379
+ let(:receiver) { klass.new }
380
+
381
+ it 'sets up a message expectation that formats argument matchers correctly' do
382
+ wrapped.to receive(:foo).with an_instance_of Fixnum
383
+ expect { verify_all }.to raise_error(/should have received the following message\(s\) but didn't/)
384
+ end
385
+ end
386
+ it_behaves_like "resets partial mocks of any instance cleanly" do
387
+ let(:target) { expect_any_instance_of(klass) }
388
+ end
389
+ end
390
+
391
+ describe "expect(...).not_to receive" do
392
+ it_behaves_like "an expect syntax negative expectation" do
393
+ let(:receiver) { double }
394
+ let(:wrapped) { expect(receiver) }
395
+ end
396
+ end
397
+
398
+ describe "expect_any_instance_of(...).not_to receive" do
399
+ it_behaves_like "an expect syntax negative expectation" do
400
+ let(:klass) { Class.new }
401
+ let(:wrapped) { expect_any_instance_of(klass) }
402
+ let(:receiver) { klass.new }
403
+ end
404
+ end
405
+
406
+ shared_examples "using rspec-mocks in another test framework" do
407
+ it 'can use the `expect` syntax' do
408
+ dbl = double
409
+
410
+ framework.new.instance_exec do
411
+ expect(dbl).to receive(:foo).and_return(3)
412
+ end
413
+
414
+ expect(dbl.foo).to eq(3)
415
+ end
416
+
417
+ it 'expects the method to be called when `expect` is used' do
418
+ dbl = double
419
+
420
+ framework.new.instance_exec do
421
+ expect(dbl).to receive(:foo)
422
+ end
423
+
424
+ expect { verify dbl }.to raise_error(RSpec::Mocks::MockExpectationError)
425
+ end
426
+
427
+ it 'supports `expect(...).not_to receive`' do
428
+ dbl = double
429
+
430
+ framework.new.instance_exec do
431
+ expect(dbl).not_to receive(:foo)
432
+ end
433
+
434
+ expect { dbl.foo }.to raise_error(RSpec::Mocks::MockExpectationError)
435
+ end
436
+
437
+ it 'supports `expect(...).to_not receive`' do
438
+ dbl = double
439
+
440
+ framework.new.instance_exec do
441
+ expect(dbl).to_not receive(:foo)
442
+ end
443
+
444
+ expect { dbl.foo }.to raise_error(RSpec::Mocks::MockExpectationError)
445
+ end
446
+ end
447
+
448
+ context "when used in a test framework without rspec-expectations" do
449
+ let(:framework) do
450
+ Class.new do
451
+ include RSpec::Mocks::ExampleMethods
452
+
453
+ def eq(value)
454
+ double("MyMatcher")
455
+ end
456
+ end
457
+ end
458
+
459
+ it_behaves_like "using rspec-mocks in another test framework"
460
+
461
+ it 'cannot use `expect` with another matcher' do
462
+ expect {
463
+ framework.new.instance_exec do
464
+ expect(3).to eq(3)
465
+ end
466
+ }.to raise_error(/only the `receive` or `receive_messages` matchers are supported with `expect\(...\).to`/)
467
+ end
468
+
469
+ it 'can toggle the available syntax' do
470
+ expect(framework.new).to respond_to(:expect)
471
+ RSpec::Mocks.configuration.syntax = :should
472
+ expect(framework.new).not_to respond_to(:expect)
473
+ RSpec::Mocks.configuration.syntax = :expect
474
+ expect(framework.new).to respond_to(:expect)
475
+ end
476
+
477
+ after { RSpec::Mocks.configuration.syntax = :expect }
478
+ end
479
+
480
+ context "when rspec-expectations is included in the test framework first" do
481
+ before do
482
+ # the examples here assume `expect` is define in RSpec::Matchers...
483
+ expect(RSpec::Matchers.method_defined?(:expect)).to be_truthy
484
+ end
485
+
486
+ let(:framework) do
487
+ Class.new do
488
+ include RSpec::Matchers
489
+ include RSpec::Mocks::ExampleMethods
490
+ end
491
+ end
492
+
493
+ it_behaves_like "using rspec-mocks in another test framework"
494
+
495
+ it 'can use `expect` with any matcher' do
496
+ framework.new.instance_exec do
497
+ expect(3).to eq(3)
498
+ end
499
+ end
500
+ end
501
+
502
+ context "when rspec-expectations is included in the test framework last" do
503
+ before do
504
+ # the examples here assume `expect` is define in RSpec::Matchers...
505
+ expect(RSpec::Matchers.method_defined?(:expect)).to be_truthy
506
+ end
507
+
508
+ let(:framework) do
509
+ Class.new do
510
+ include RSpec::Mocks::ExampleMethods
511
+ include RSpec::Matchers
512
+ end
513
+ end
514
+
515
+ it_behaves_like "using rspec-mocks in another test framework"
516
+
517
+ it 'can use `expect` with any matcher' do
518
+ framework.new.instance_exec do
519
+ expect(3).to eq(3)
520
+ end
521
+ end
522
+ end
523
+ end
524
+ end
525
+ end