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,11 @@
1
+ module RSpec
2
+ module Mocks
3
+ RSpec.describe ExampleMethods do
4
+ it 'does not define private helper methods since it gets included into a ' +
5
+ 'namespace where users define methods and could inadvertently overwrite ' +
6
+ 'them' do
7
+ expect(ExampleMethods.private_instance_methods).to eq([])
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,90 @@
1
+ module RSpec
2
+ module Mocks
3
+ RSpec.describe "After a test double has been torn down" do
4
+ RSpec.shared_examples_for "expiration" do
5
+ before do
6
+ expect(dbl).to receive(:foo).at_least(:once)
7
+ allow(dbl).to receive(:bar)
8
+ dbl.foo
9
+
10
+ RSpec::Mocks.verify
11
+ RSpec::Mocks.teardown
12
+ RSpec::Mocks.setup
13
+ end
14
+
15
+ it 'disallows previously mocked methods' do
16
+ expect { dbl.foo }.to raise_error(ExpiredTestDoubleError)
17
+ end
18
+
19
+ it 'disallows previously stubbed methods' do
20
+ expect { dbl.bar }.to raise_error(ExpiredTestDoubleError)
21
+ end
22
+
23
+ it 'disallows stubbing new methods (with receive)' do
24
+ expect {
25
+ allow(dbl).to receive(:bazz)
26
+ }.to raise_error(ExpiredTestDoubleError)
27
+ end
28
+
29
+ it 'disallows stubbing new methods (with receive_messages)' do
30
+ expect {
31
+ allow(dbl).to receive_messages(:bazz => 3)
32
+ }.to raise_error(ExpiredTestDoubleError)
33
+ end
34
+
35
+ it 'disallows stubbing new message chains' do
36
+ expect {
37
+ allow(dbl).to receive_message_chain(:bazz, :bam, :goo)
38
+ }.to raise_error(ExpiredTestDoubleError)
39
+ end
40
+
41
+ it 'disallows mocking new methods' do
42
+ expect {
43
+ expect(dbl).to receive(:bazz)
44
+ }.to raise_error(ExpiredTestDoubleError)
45
+ end
46
+
47
+ it 'disallows being turned into a null object' do
48
+ expect { dbl.as_null_object }.to raise_error(ExpiredTestDoubleError)
49
+ end
50
+
51
+ it 'disallows being checked for nullness' do
52
+ expect { dbl.null_object? }.to raise_error(ExpiredTestDoubleError)
53
+ end
54
+
55
+ end
56
+
57
+ context "for a plain double" do
58
+ let(:dbl) { double }
59
+ include_examples "expiration"
60
+ end
61
+
62
+ class ExpiredInstanceInterface
63
+ def foo; end
64
+ def bar; end
65
+ def bazz; end
66
+ end
67
+
68
+ class ExpiredClassInterface
69
+ def self.foo; end
70
+ def self.bar; end
71
+ def self.bazz; end
72
+ end
73
+
74
+ context "for an instance_double" do
75
+ let(:dbl) { instance_double(ExpiredInstanceInterface) }
76
+ include_examples "expiration"
77
+ end
78
+
79
+ context "for a class_double" do
80
+ let(:dbl) { class_double(ExpiredClassInterface) }
81
+ include_examples "expiration"
82
+ end
83
+
84
+ context "for an object_double" do
85
+ let(:dbl) { object_double(ExpiredInstanceInterface.new) }
86
+ include_examples "expiration"
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,65 @@
1
+ module RSpec
2
+ module Mocks
3
+ module ArgumentMatchers
4
+ RSpec.describe HashExcludingMatcher do
5
+
6
+ it "describes itself properly" do
7
+ expect(HashExcludingMatcher.new(:a => 5).description).to eq "hash_not_including(:a=>5)"
8
+ end
9
+
10
+ describe "passing" do
11
+ it "matches a hash without the specified key" do
12
+ expect(hash_not_including(:c)).to be === {:a => 1, :b => 2}
13
+ end
14
+
15
+ it "matches a hash with the specified key, but different value" do
16
+ expect(hash_not_including(:b => 3)).to be === {:a => 1, :b => 2}
17
+ end
18
+
19
+ it "matches a hash without the specified key, given as anything()" do
20
+ expect(hash_not_including(:c => anything)).to be === {:a => 1, :b => 2}
21
+ end
22
+
23
+ it "matches an empty hash" do
24
+ expect(hash_not_including(:a)).to be === {}
25
+ end
26
+
27
+ it "matches a hash without any of the specified keys" do
28
+ expect(hash_not_including(:a, :b, :c)).to be === { :d => 7 }
29
+ end
30
+
31
+ end
32
+
33
+ describe "failing" do
34
+ it "does not match a non-hash" do
35
+ expect(hash_not_including(:a => 1)).not_to be === 1
36
+ end
37
+
38
+ it "does not match a hash with a specified key" do
39
+ expect(hash_not_including(:b)).not_to be === { :b => 2 }
40
+ end
41
+
42
+ it "does not match a hash with the specified key/value pair" do
43
+ expect(hash_not_including(:b => 2)).not_to be === { :a => 1, :b => 2 }
44
+ end
45
+
46
+ it "does not match a hash with the specified key" do
47
+ expect(hash_not_including(:a, :b => 3)).not_to be === { :a => 1, :b => 2 }
48
+ end
49
+
50
+ it "does not match a hash with one of the specified keys" do
51
+ expect(hash_not_including(:a, :b)).not_to be === { :b => 2 }
52
+ end
53
+
54
+ it "does not match a hash with some of the specified keys" do
55
+ expect(hash_not_including(:a, :b, :c)).not_to be === { :a => 1, :b => 2 }
56
+ end
57
+
58
+ it "does not match a hash with one key/value pair included" do
59
+ expect(hash_not_including(:a, :b, :c, :d => 7)).not_to be === { :d => 7 }
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,92 @@
1
+ module RSpec
2
+ module Mocks
3
+ module ArgumentMatchers
4
+ RSpec.describe HashIncludingMatcher do
5
+
6
+ it "describes itself properly" do
7
+ expect(HashIncludingMatcher.new(:a => 1).description).to eq "hash_including(:a=>1)"
8
+ end
9
+
10
+ describe "passing" do
11
+ it "matches the same hash" do
12
+ expect(hash_including(:a => 1)).to be === {:a => 1}
13
+ end
14
+
15
+ it "matches a hash with extra stuff" do
16
+ expect(hash_including(:a => 1)).to be === {:a => 1, :b => 2}
17
+ end
18
+
19
+ describe "when matching against other matchers" do
20
+ it "matches an int against anything()" do
21
+ expect(hash_including(:a => anything, :b => 2)).to be === {:a => 1, :b => 2}
22
+ end
23
+
24
+ it "matches a string against anything()" do
25
+ expect(hash_including(:a => anything, :b => 2)).to be === {:a => "1", :b => 2}
26
+ end
27
+
28
+ it 'can match against arbitrary objects that implement #===' do
29
+ expect(hash_including(:a => /foo/)).to be === { :a => "foobar" }
30
+ end
31
+ end
32
+
33
+ describe "when passed only keys or keys mixed with key/value pairs" do
34
+ it "matches if the key is present" do
35
+ expect(hash_including(:a)).to be === {:a => 1, :b => 2}
36
+ end
37
+
38
+ it "matches if more keys are present" do
39
+ expect(hash_including(:a, :b)).to be === {:a => 1, :b => 2, :c => 3}
40
+ end
41
+
42
+ it "matches a string against a given key" do
43
+ expect(hash_including(:a)).to be === {:a => "1", :b => 2}
44
+ end
45
+
46
+ it "matches if passed one key and one key/value pair" do
47
+ expect(hash_including(:a, :b => 2)).to be === {:a => 1, :b => 2}
48
+ end
49
+
50
+ it "matches if passed many keys and one key/value pair" do
51
+ expect(hash_including(:a, :b, :c => 3)).to be === {:a => 1, :b => 2, :c => 3, :d => 4}
52
+ end
53
+
54
+ it "matches if passed many keys and many key/value pairs" do
55
+ expect(hash_including(:a, :b, :c => 3, :e => 5)).to be === {:a => 1, :b => 2, :c => 3, :d => 4, :e => 5}
56
+ end
57
+ end
58
+ end
59
+
60
+ describe "failing" do
61
+ it "does not match a non-hash" do
62
+ expect(hash_including(:a => 1)).not_to be === 1
63
+ end
64
+
65
+ it "does not match a hash with a missing key" do
66
+ expect(hash_including(:a => 1)).not_to be === { :b => 2 }
67
+ end
68
+
69
+ it "does not match a hash with a missing key" do
70
+ expect(hash_including(:a)).not_to be === { :b => 2 }
71
+ end
72
+
73
+ it "does not match an empty hash with a given key" do
74
+ expect(hash_including(:a)).not_to be === {}
75
+ end
76
+
77
+ it "does not match a hash with a missing key when one pair is matching" do
78
+ expect(hash_including(:a, :b => 2)).not_to be === { :b => 2 }
79
+ end
80
+
81
+ it "does not match a hash with an incorrect value" do
82
+ expect(hash_including(:a => 1, :b => 2)).not_to be === { :a => 1, :b => 3 }
83
+ end
84
+
85
+ it "does not match when values are nil but keys are different" do
86
+ expect(hash_including(:a => nil)).not_to be === { :b => nil }
87
+ end
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,72 @@
1
+ module RSpec
2
+ module Mocks
3
+ RSpec.describe InstanceMethodStasher do
4
+ class ExampleClass
5
+ def hello
6
+ :hello_defined_on_class
7
+ end
8
+ end
9
+
10
+ def singleton_class_for(obj)
11
+ class << obj; self; end
12
+ end
13
+
14
+ def stasher_for(obj, method_name)
15
+ InstanceMethodStasher.new(obj, method_name)
16
+ end
17
+
18
+ it "stashes the current implementation of an instance method so it can be temporarily replaced" do
19
+ obj = Object.new
20
+ def obj.hello; :hello_defined_on_singleton_class; end;
21
+
22
+ stashed_method = stasher_for(obj, :hello)
23
+ stashed_method.stash
24
+
25
+ with_isolated_stderr { def obj.hello; :overridden_hello; end }
26
+ expect(obj.hello).to eql :overridden_hello
27
+
28
+ stashed_method.restore
29
+ expect(obj.hello).to eql :hello_defined_on_singleton_class
30
+ end
31
+
32
+ it "stashes private instance methods" do
33
+ obj = Object.new
34
+ def obj.hello; :hello_defined_on_singleton_class; end;
35
+ singleton_class_for(obj).__send__(:private, :hello)
36
+
37
+ stashed_method = stasher_for(obj, :hello)
38
+ stashed_method.stash
39
+
40
+ with_isolated_stderr { def obj.hello; :overridden_hello; end }
41
+ stashed_method.restore
42
+ expect(obj.send(:hello)).to eql :hello_defined_on_singleton_class
43
+ end
44
+
45
+ it "only stashes methods directly defined on the given class, not its ancestors" do
46
+ obj = ExampleClass.new
47
+
48
+ stashed_method = stasher_for(obj, :hello)
49
+ stashed_method.stash
50
+
51
+ def obj.hello; :overridden_hello; end;
52
+ expect(obj.hello).to eql :overridden_hello
53
+
54
+ stashed_method.restore
55
+ expect(obj.hello).to eql :overridden_hello
56
+ end
57
+
58
+ it "does not unnecessarily create obfuscated aliased methods", :if => (RUBY_VERSION.to_f > 1.8) do
59
+ obj = Object.new
60
+ def obj.hello; :hello_defined_on_singleton_class; end;
61
+
62
+ stashed_method = stasher_for(obj, :hello)
63
+
64
+ expect {
65
+ stashed_method.stash
66
+ }.not_to change { obj.methods.count }
67
+
68
+ expect(obj.methods.grep(/rspec/)).to eq([])
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,67 @@
1
+ RSpec.describe Marshal, 'extensions' do
2
+ # An object that raises when code attempts to dup it.
3
+ #
4
+ # Because we manipulate the internals of RSpec::Mocks.space below, we need
5
+ # an object that simply blows up when #dup is called without using any
6
+ # partial mocking or stubbing from rspec-mocks itself.
7
+ class UndupableObject
8
+ def dup
9
+ raise NotImplementedError
10
+ end
11
+ end
12
+
13
+ describe '#dump' do
14
+ context 'when rspec-mocks has been fully initialized' do
15
+ include_context "with monkey-patched marshal"
16
+
17
+ it 'duplicates objects with stubbed or mocked implementations before serialization' do
18
+ obj = double(:foo => "bar")
19
+
20
+ serialized = Marshal.dump(obj)
21
+ expect(Marshal.load(serialized)).to be_an(obj.class)
22
+ end
23
+
24
+ it 'does not duplicate other objects before serialization' do
25
+ obj = UndupableObject.new
26
+
27
+ serialized = Marshal.dump(obj)
28
+ expect(Marshal.load(serialized)).to be_an(UndupableObject)
29
+ end
30
+
31
+ it 'does not duplicate nil before serialization' do
32
+ serialized = Marshal.dump(nil)
33
+ expect(Marshal.load(serialized)).to be_nil
34
+ end
35
+
36
+ specify 'applying and unapplying patch is idempotent' do
37
+ obj = double(:foo => "bar")
38
+ config = RSpec::Mocks.configuration
39
+
40
+ config.patch_marshal_to_support_partial_doubles = true
41
+ config.patch_marshal_to_support_partial_doubles = true
42
+ serialized = Marshal.dump(obj)
43
+ expect(Marshal.load(serialized)).to be_an(obj.class)
44
+ config.patch_marshal_to_support_partial_doubles = false
45
+ config.patch_marshal_to_support_partial_doubles = false
46
+ expect { Marshal.dump(obj) }.to raise_error(TypeError)
47
+ end
48
+ end
49
+
50
+ context 'outside the per-test lifecycle' do
51
+ def outside_per_test_lifecycle
52
+ RSpec::Mocks.teardown
53
+ yield
54
+ ensure
55
+ RSpec::Mocks.setup
56
+ end
57
+
58
+ it 'does not duplicate the object before serialization' do
59
+ obj = UndupableObject.new
60
+ outside_per_test_lifecycle do
61
+ serialized = Marshal.dump(obj)
62
+ expect(Marshal.load(serialized)).to be_an(UndupableObject)
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,513 @@
1
+ module RSpec
2
+ module Mocks
3
+ RSpec.describe Matchers::HaveReceived do
4
+ describe "expect(...).to have_received" do
5
+ it 'passes when the double has received the given message' do
6
+ dbl = double_with_met_expectation(:expected_method)
7
+ expect(dbl).to have_received(:expected_method)
8
+ end
9
+
10
+ it 'passes when a null object has received the given message' do
11
+ dbl = null_object_with_met_expectation(:expected_method)
12
+ expect(dbl).to have_received(:expected_method)
13
+ end
14
+
15
+ it 'fails when the double has not received the given message' do
16
+ dbl = double_with_unmet_expectation(:expected_method)
17
+
18
+ expect {
19
+ expect(dbl).to have_received(:expected_method)
20
+ }.to raise_error(/expected: 1 time/)
21
+ end
22
+
23
+ it 'fails when a null object has not received the given message' do
24
+ dbl = double.as_null_object
25
+
26
+ expect {
27
+ expect(dbl).to have_received(:expected_method)
28
+ }.to raise_error(/expected: 1 time/)
29
+ end
30
+
31
+ it 'fails when the method has not been previously stubbed' do
32
+ dbl = double
33
+
34
+ expect {
35
+ expect(dbl).to have_received(:expected_method)
36
+ }.to raise_error(/method has not been stubbed/)
37
+ end
38
+
39
+ it 'fails when the method has been mocked' do
40
+ dbl = double
41
+ expect(dbl).to receive(:expected_method)
42
+ dbl.expected_method
43
+
44
+ expect {
45
+ expect(dbl).to have_received(:expected_method)
46
+ }.to raise_error(/method has been mocked instead of stubbed/)
47
+ end
48
+
49
+ it "takes a curly-bracket block and yields the arguments given to the stubbed method call" do
50
+ dbl = double(:foo => nil)
51
+ yielded = []
52
+ dbl.foo(:a, :b, :c)
53
+ expect(dbl).to have_received(:foo) { |*args|
54
+ yielded << args
55
+ }
56
+ expect(yielded).to include([:a,:b,:c])
57
+ end
58
+
59
+ it "takes a do-end block and yields the arguments given to the stubbed method call" do
60
+ dbl = double(:foo => nil)
61
+ yielded = []
62
+ dbl.foo(:a, :b, :c)
63
+ expect(dbl).to have_received(:foo) do |*args|
64
+ yielded << args
65
+ end
66
+ expect(yielded).to include([:a,:b,:c])
67
+ end
68
+
69
+ it "passes if expectations against the yielded arguments pass" do
70
+ dbl = double(:foo => nil)
71
+ dbl.foo(42)
72
+ expect {
73
+ expect(dbl).to have_received(:foo) { |arg|
74
+ expect(arg).to eq(42)
75
+ }
76
+ }.to_not raise_error
77
+ end
78
+
79
+ it "fails if expectations against the yielded arguments fail" do
80
+ dbl = double(:foo => nil)
81
+ dbl.foo(43)
82
+ expect {
83
+ expect(dbl).to have_received(:foo) { |arg|
84
+ expect(arg).to eq(42)
85
+ }
86
+ }.to raise_error(RSpec::Expectations::ExpectationNotMetError)
87
+ end
88
+
89
+ it 'gives precedence to a `{ ... }` block when both forms are provided ' +
90
+ 'since that form actually binds to `receive`' do
91
+ dbl = double(:foo => nil)
92
+ called = []
93
+ dbl.foo
94
+ expect(dbl).to have_received(:foo) { called << :curly } do
95
+ called << :do_end
96
+ end
97
+ expect(called).to include(:curly)
98
+ expect(called).not_to include(:do_end)
99
+ end
100
+
101
+ it 'resets expectations on class methods when mocks are reset' do
102
+ dbl = Object
103
+ allow(dbl).to receive(:expected_method)
104
+ dbl.expected_method
105
+ reset dbl
106
+ allow(dbl).to receive(:expected_method)
107
+
108
+ expect {
109
+ expect(dbl).to have_received(:expected_method)
110
+ }.to raise_error(/0 times/)
111
+ end
112
+
113
+ context "with" do
114
+ it 'passes when the given args match the args used with the message' do
115
+ dbl = double_with_met_expectation(:expected_method, :expected, :args)
116
+ expect(dbl).to have_received(:expected_method).with(:expected, :args)
117
+ end
118
+
119
+ it 'fails when the given args do not match the args used with the message' do
120
+ dbl = double_with_met_expectation(:expected_method, :expected, :args)
121
+
122
+ expect {
123
+ expect(dbl).to have_received(:expected_method).with(:unexpected, :args)
124
+ }.to raise_error(/with unexpected arguments/)
125
+ end
126
+ end
127
+
128
+ it 'generates a useful description' do
129
+ matcher = have_received(:expected_method).with(:expected_args).once
130
+ expect(matcher.description).to eq 'have received expected_method(:expected_args) 1 time'
131
+ end
132
+
133
+ it 'can generate a description after mocks have been torn down (e.g. when rspec-core requests it)' do
134
+ matcher = have_received(:expected_method).with(:expected_args).once
135
+ matcher.matches?(double(:expected_method => 1))
136
+ RSpec::Mocks.teardown
137
+ expect(matcher.description).to eq 'have received expected_method(:expected_args) 1 time'
138
+ end
139
+
140
+ context "counts" do
141
+ let(:dbl) { double(:expected_method => nil) }
142
+
143
+ before do
144
+ dbl.expected_method
145
+ dbl.expected_method
146
+ dbl.expected_method
147
+ end
148
+
149
+ context "exactly" do
150
+ it 'passes when the message was received the given number of times' do
151
+ expect(dbl).to have_received(:expected_method).exactly(3).times
152
+ end
153
+
154
+ it 'fails when the message was received more times than expected' do
155
+ expect {
156
+ expect(dbl).to have_received(:expected_method).exactly(1).times
157
+ }.to raise_error(/expected: 1 time.*received: 3 times/m)
158
+ expect {
159
+ expect(dbl).to have_received(:expected_method).exactly(2).times
160
+ }.to raise_error(/expected: 2 times.*received: 3 times/m)
161
+ expect {
162
+ dbl.expected_method
163
+ dbl.expected_method
164
+ expect(dbl).to have_received(:expected_method).exactly(2).times
165
+ }.to raise_error(/expected: 2 times.*received: 5 times/m)
166
+ end
167
+
168
+ it 'fails when the message was received fewer times' do
169
+ expect {
170
+ expect(dbl).to have_received(:expected_method).exactly(4).times
171
+ }.to raise_error(/expected: 4 times.*received: 3 times/m)
172
+ end
173
+ end
174
+
175
+ context 'at_least' do
176
+ it 'passes when the message was received the given number of times' do
177
+ expect(dbl).to have_received(:expected_method).at_least(3).times
178
+ end
179
+
180
+ it 'passes when the message was received more times' do
181
+ expect(dbl).to have_received(:expected_method).at_least(2).times
182
+ end
183
+
184
+ it 'fails when the message was received fewer times' do
185
+ expect {
186
+ expect(dbl).to have_received(:expected_method).at_least(4).times
187
+ }.to raise_error(/expected: at least 4 times.*received: 3 times/m)
188
+ end
189
+ end
190
+
191
+ context 'at_most' do
192
+ it 'passes when the message was received the given number of times' do
193
+ expect(dbl).to have_received(:expected_method).at_most(3).times
194
+ end
195
+
196
+ it 'passes when the message was received fewer times' do
197
+ expect(dbl).to have_received(:expected_method).at_most(4).times
198
+ end
199
+
200
+ it 'fails when the message was received more times' do
201
+ expect {
202
+ expect(dbl).to have_received(:expected_method).at_most(2).times
203
+ }.to raise_error(/expected: at most 2 times.*received: 3 times/m)
204
+ end
205
+ end
206
+
207
+ context 'once' do
208
+ it 'passes when the message was received once' do
209
+ dbl = double(:expected_method => nil)
210
+ dbl.expected_method
211
+ expect(dbl).to have_received(:expected_method).once
212
+ end
213
+
214
+ it 'fails when the message was never received' do
215
+ dbl = double(:expected_method => nil)
216
+
217
+ expect {
218
+ expect(dbl).to have_received(:expected_method).once
219
+ }.to raise_error(/expected: 1 time.*received: 0 times/m)
220
+ end
221
+
222
+ it 'fails when the message was received twice' do
223
+ dbl = double(:expected_method => nil)
224
+ dbl.expected_method
225
+ dbl.expected_method
226
+
227
+ expect {
228
+ expect(dbl).to have_received(:expected_method).once
229
+ }.to raise_error(/expected: 1 time.*received: 2 times/m)
230
+ end
231
+ end
232
+
233
+ context 'twice' do
234
+ it 'passes when the message was received twice' do
235
+ dbl = double(:expected_method => nil)
236
+ dbl.expected_method
237
+ dbl.expected_method
238
+
239
+ expect(dbl).to have_received(:expected_method).twice
240
+ end
241
+
242
+ it 'fails when the message was received once' do
243
+ dbl = double(:expected_method => nil)
244
+ dbl.expected_method
245
+
246
+ expect {
247
+ expect(dbl).to have_received(:expected_method).twice
248
+ }.to raise_error(/expected: 2 times.*received: 1 time/m)
249
+ end
250
+
251
+ it 'fails when the message was received thrice' do
252
+ dbl = double(:expected_method => nil)
253
+ dbl.expected_method
254
+ dbl.expected_method
255
+ dbl.expected_method
256
+
257
+ expect {
258
+ expect(dbl).to have_received(:expected_method).twice
259
+ }.to raise_error(/expected: 2 times.*received: 3 times/m)
260
+ end
261
+ end
262
+
263
+ context 'thrice' do
264
+ it 'passes when the message was received thrice' do
265
+ dbl = double(:expected_method => nil)
266
+ dbl.expected_method
267
+ dbl.expected_method
268
+ dbl.expected_method
269
+
270
+ expect(dbl).to have_received(:expected_method).thrice
271
+ end
272
+
273
+ it 'fails when the message was received less than three times' do
274
+ dbl = double(:expected_method => nil)
275
+ dbl.expected_method
276
+ dbl.expected_method
277
+
278
+ expect {
279
+ expect(dbl).to have_received(:expected_method).thrice
280
+ }.to raise_error(/expected: 3 times.*received: 2 times/m)
281
+ end
282
+
283
+ it 'fails when the message was received more than three times' do
284
+ dbl = double(:expected_method => nil)
285
+ dbl.expected_method
286
+ dbl.expected_method
287
+ dbl.expected_method
288
+ dbl.expected_method
289
+
290
+ expect {
291
+ expect(dbl).to have_received(:expected_method).thrice
292
+ }.to raise_error(/expected: 3 times.*received: 4 times/m)
293
+ end
294
+ end
295
+ end
296
+
297
+ context 'ordered' do
298
+ let(:dbl) { double :one => 1, :two => 2, :three => 3 }
299
+
300
+ it 'passes when the messages were received in order' do
301
+ dbl.one
302
+ dbl.two
303
+
304
+ expect(dbl).to have_received(:one).ordered
305
+ expect(dbl).to have_received(:two).ordered
306
+ end
307
+
308
+ it 'passes with exact receive counts when received in order' do
309
+ 3.times { dbl.one }
310
+ 2.times { dbl.two }
311
+ dbl.three
312
+
313
+ expect(dbl).to have_received(:one).thrice.ordered
314
+ expect(dbl).to have_received(:two).twice.ordered
315
+ expect(dbl).to have_received(:three).once.ordered
316
+ end
317
+
318
+ pending 'passes with at most receive counts when received in order' do
319
+ dbl.one
320
+ dbl.one
321
+ dbl.two
322
+
323
+ expect(dbl).to have_received(:one).at_most(3).times.ordered
324
+ expect(dbl).to have_received(:one).at_most(:thrice).times.ordered
325
+ expect(dbl).to have_received(:two).once.ordered
326
+ end
327
+
328
+ pending 'passes with at least receive counts when received in order' do
329
+ dbl.one
330
+ dbl.one
331
+ dbl.two
332
+
333
+ expect(dbl).to have_received(:one).at_least(1).times.ordered
334
+ expect(dbl).to have_received(:two).once.ordered
335
+ end
336
+
337
+ it 'fails with exact receive counts when received out of order' do
338
+ dbl.one
339
+ dbl.two
340
+ dbl.one
341
+
342
+ expect {
343
+ expect(dbl).to have_received(:one).twice.ordered
344
+ expect(dbl).to have_received(:two).once.ordered
345
+ }.to raise_error(/received :two out of order/m)
346
+ end
347
+
348
+ pending "fails with at most receive counts when recieved out of order" do
349
+ dbl.one
350
+ dbl.two
351
+ dbl.one
352
+
353
+ expect {
354
+ expect(dbl).to have_received(:one).at_most(2).times.ordered
355
+ expect(dbl).to have_received(:two).once.ordered
356
+ }.to raise_error(/received :two out of order/m)
357
+ end
358
+
359
+ pending "fails with at least receive counts when recieved out of order" do
360
+ dbl.one
361
+ dbl.two
362
+ dbl.one
363
+
364
+ expect {
365
+ expect(dbl).to have_received(:one).at_least(1).times.ordered
366
+ expect(dbl).to have_received(:two).once.ordered
367
+ }.to raise_error(/received :two out of order/m)
368
+ end
369
+
370
+ it 'fails when the messages are received out of order' do
371
+ dbl.two
372
+ dbl.one
373
+
374
+ expect {
375
+ expect(dbl).to have_received(:one).ordered
376
+ expect(dbl).to have_received(:two).ordered
377
+ }.to raise_error(/received :two out of order/m)
378
+ end
379
+
380
+ context "when used with `with`" do
381
+ before do
382
+ dbl.one(1)
383
+ dbl.one(2)
384
+ end
385
+
386
+ it "passes when the order lines up" do
387
+ expect(dbl).to have_received(:one).with(1).ordered
388
+ expect(dbl).to have_received(:one).with(2).ordered
389
+ end
390
+
391
+ it "fails when the order is not matched" do
392
+ expect {
393
+ expect(dbl).to have_received(:one).with(2).ordered
394
+ expect(dbl).to have_received(:one).with(1).ordered
395
+ }.to fail_with(/received :one out of order/m)
396
+ end
397
+ end
398
+
399
+ context "when used on individually allowed messages" do
400
+ before do
401
+ allow(dbl).to receive(:foo)
402
+ allow(dbl).to receive(:bar)
403
+
404
+ dbl.foo
405
+ dbl.bar
406
+ end
407
+
408
+ it 'passes when the messages were received in order' do
409
+ expect(dbl).to have_received(:foo).ordered
410
+ expect(dbl).to have_received(:bar).ordered
411
+ end
412
+
413
+ it 'fails when the messages are received out of order' do
414
+ expect {
415
+ expect(dbl).to have_received(:bar).ordered
416
+ expect(dbl).to have_received(:foo).ordered
417
+ }.to raise_error(/received :foo out of order/m)
418
+ end
419
+ end
420
+ end
421
+ end
422
+
423
+ describe "expect(...).not_to have_received" do
424
+ it 'passes when the double has not received the given message' do
425
+ dbl = double_with_unmet_expectation(:expected_method)
426
+ expect(dbl).not_to have_received(:expected_method)
427
+ end
428
+
429
+ it 'fails when the double has received the given message' do
430
+ dbl = double_with_met_expectation(:expected_method)
431
+
432
+ expect {
433
+ expect(dbl).not_to have_received(:expected_method)
434
+ }.to raise_error(/expected: 0 times.*received: 1 time/m)
435
+ end
436
+
437
+ it 'fails when the method has not been previously stubbed' do
438
+ dbl = double
439
+
440
+ expect {
441
+ expect(dbl).not_to have_received(:expected_method)
442
+ }.to raise_error(/method has not been stubbed/)
443
+ end
444
+
445
+ context "with" do
446
+ it 'passes when the given args do not match the args used with the message' do
447
+ dbl = double_with_met_expectation(:expected_method, :expected, :args)
448
+ expect(dbl).not_to have_received(:expected_method).with(:unexpected, :args)
449
+ end
450
+
451
+ it 'fails when the given args match the args used with the message' do
452
+ dbl = double_with_met_expectation(:expected_method, :expected, :args)
453
+
454
+ expect {
455
+ expect(dbl).not_to have_received(:expected_method).with(:expected, :args)
456
+ }.to raise_error(/expected: 0 times.*received: 1 time/m) # TODO: better message
457
+ end
458
+ end
459
+
460
+ %w(exactly at_least at_most times once twice).each do |constraint|
461
+ it "does not allow #{constraint} to be used because it creates confusion" do
462
+ dbl = double_with_unmet_expectation(:expected_method)
463
+ expect {
464
+ expect(dbl).not_to have_received(:expected_method).send(constraint)
465
+ }.to raise_error(/can't use #{constraint} when negative/)
466
+ end
467
+ end
468
+ end
469
+
470
+ describe "allow(...).to have_received" do
471
+ it "fails because its nonsensical" do
472
+ expect {
473
+ allow(double).to have_received(:some_method)
474
+ }.to fail_with("Using allow(...) with the `have_received` matcher is not supported as it would have no effect.")
475
+ end
476
+ end
477
+
478
+ describe "allow_any_instance_of(...).to have_received" do
479
+ it "fails because its nonsensical" do
480
+ expect {
481
+ allow_any_instance_of(double).to have_received(:some_method)
482
+ }.to fail_with("Using allow_any_instance_of(...) with the `have_received` matcher is not supported.")
483
+ end
484
+ end
485
+
486
+ describe "expect_any_instance_of(...).to have_received" do
487
+ it "fails because we dont want to support it" do
488
+ expect {
489
+ expect_any_instance_of(double).to have_received(:some_method)
490
+ }.to fail_with("Using expect_any_instance_of(...) with the `have_received` matcher is not supported.")
491
+ end
492
+ end
493
+
494
+ def double_with_met_expectation(method_name, *args)
495
+ double = double_with_unmet_expectation(method_name)
496
+ meet_expectation(double, method_name, *args)
497
+ end
498
+
499
+ def null_object_with_met_expectation(method_name, *args)
500
+ meet_expectation(double.as_null_object, method_name, *args)
501
+ end
502
+
503
+ def meet_expectation(double, method_name, *args)
504
+ double.send(method_name, *args)
505
+ double
506
+ end
507
+
508
+ def double_with_unmet_expectation(method_name)
509
+ double('double', method_name => true)
510
+ end
511
+ end
512
+ end
513
+ end