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,83 @@
1
+ module RSpec::Mocks
2
+ RSpec.describe "PartialDoubleUsingMocksDirectly" do
3
+ let(:klass) do
4
+ Class.new do
5
+ module MethodMissing
6
+ remove_method :method_missing rescue nil
7
+ def method_missing(m, *a, &b)
8
+ if m == :captured_by_method_missing
9
+ "response generated by method missing"
10
+ else
11
+ super(m, *a, &b)
12
+ end
13
+ end
14
+ end
15
+
16
+ extend MethodMissing
17
+ include MethodMissing
18
+
19
+ def existing_method
20
+ :original_value
21
+ end
22
+
23
+ end
24
+ end
25
+
26
+ let(:obj) { klass.new }
27
+
28
+ it "fails when expected message is not received" do
29
+ expect(obj).to receive(:msg)
30
+ expect {
31
+ verify obj
32
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
33
+ end
34
+
35
+ it "fails when message is received with incorrect args" do
36
+ expect(obj).to receive(:msg).with(:correct_arg)
37
+ expect {
38
+ obj.msg(:incorrect_arg)
39
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
40
+ obj.msg(:correct_arg)
41
+ end
42
+
43
+ it "passes when expected message is received" do
44
+ expect(obj).to receive(:msg)
45
+ obj.msg
46
+ verify obj
47
+ end
48
+
49
+ it "passes when message is received with correct args" do
50
+ expect(obj).to receive(:msg).with(:correct_arg)
51
+ obj.msg(:correct_arg)
52
+ verify obj
53
+ end
54
+
55
+ it "restores the original method if it existed" do
56
+ expect(obj.existing_method).to equal(:original_value)
57
+ expect(obj).to receive(:existing_method).and_return(:mock_value)
58
+ expect(obj.existing_method).to equal(:mock_value)
59
+ verify obj
60
+ expect(obj.existing_method).to equal(:original_value)
61
+ end
62
+
63
+ context "with an instance method handled by method_missing" do
64
+ it "restores the original behavior" do
65
+ expect(obj.captured_by_method_missing).to eq("response generated by method missing")
66
+ allow(obj).to receive(:captured_by_method_missing) { "foo" }
67
+ expect(obj.captured_by_method_missing).to eq("foo")
68
+ reset obj
69
+ expect(obj.captured_by_method_missing).to eq("response generated by method missing")
70
+ end
71
+ end
72
+
73
+ context "with a class method handled by method_missing" do
74
+ it "restores the original behavior" do
75
+ expect(klass.captured_by_method_missing).to eq("response generated by method missing")
76
+ allow(klass).to receive(:captured_by_method_missing) { "foo" }
77
+ expect(klass.captured_by_method_missing).to eq("foo")
78
+ reset klass
79
+ expect(klass.captured_by_method_missing).to eq("response generated by method missing")
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,66 @@
1
+ module RSpec
2
+ module Mocks
3
+ RSpec.describe "PreciseCounts" do
4
+ before(:each) do
5
+ @double = double("test double")
6
+ end
7
+
8
+ it "fails when exactly n times method is called less than n times" do
9
+ expect(@double).to receive(:do_something).exactly(3).times
10
+ @double.do_something
11
+ @double.do_something
12
+ expect {
13
+ verify @double
14
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
15
+ end
16
+
17
+ it "fails fast when exactly n times method is called more than n times" do
18
+ expect(@double).to receive(:do_something).exactly(3).times
19
+ @double.do_something
20
+ @double.do_something
21
+ @double.do_something
22
+ expect {
23
+ @double.do_something
24
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
25
+ end
26
+
27
+ it "fails when exactly n times method is never called" do
28
+ expect(@double).to receive(:do_something).exactly(3).times
29
+ expect {
30
+ verify @double
31
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
32
+ end
33
+
34
+ it "passes if exactly n times method is called exactly n times" do
35
+ expect(@double).to receive(:do_something).exactly(3).times
36
+ @double.do_something
37
+ @double.do_something
38
+ @double.do_something
39
+ verify @double
40
+ end
41
+
42
+ it "returns the value given by a block when the exactly once method is called" do
43
+ expect(@double).to receive(:to_s).exactly(:once) { "testing" }
44
+ expect(@double.to_s).to eq "testing"
45
+ verify @double
46
+ end
47
+
48
+ it "passes mutiple calls with different args" do
49
+ expect(@double).to receive(:do_something).once.with(1)
50
+ expect(@double).to receive(:do_something).once.with(2)
51
+ @double.do_something(1)
52
+ @double.do_something(2)
53
+ verify @double
54
+ end
55
+
56
+ it "passes multiple calls with different args and counts" do
57
+ expect(@double).to receive(:do_something).twice.with(1)
58
+ expect(@double).to receive(:do_something).once.with(2)
59
+ @double.do_something(1)
60
+ @double.do_something(2)
61
+ @double.do_something(1)
62
+ verify @double
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,89 @@
1
+ module RSpec
2
+ module Mocks
3
+ RSpec.describe "Serialization of mocked objects" do
4
+ include_context "with monkey-patched marshal"
5
+
6
+ class SerializableObject < Struct.new(:foo, :bar); end
7
+
8
+ def self.with_yaml_loaded(&block)
9
+ context 'with YAML loaded' do
10
+ module_exec(&block)
11
+ end
12
+ end
13
+
14
+ def self.without_yaml_loaded(&block)
15
+ context 'without YAML loaded' do
16
+ before do
17
+ # We can't really unload yaml, but we can fake it here...
18
+ hide_const("YAML")
19
+ Struct.class_exec do
20
+ alias __old_to_yaml to_yaml
21
+ undef to_yaml
22
+ end
23
+ end
24
+
25
+ module_exec(&block)
26
+
27
+ after do
28
+ Struct.class_exec do
29
+ alias to_yaml __old_to_yaml
30
+ undef __old_to_yaml
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ let(:serializable_object) { RSpec::Mocks::SerializableObject.new(7, "something") }
37
+
38
+ def set_stub
39
+ allow(serializable_object).to receive_messages(:bazz => 5)
40
+ end
41
+
42
+ shared_examples 'normal YAML serialization' do
43
+ it 'serializes to yaml the same with and without stubbing, using #to_yaml' do
44
+ expect { set_stub }.to_not change { serializable_object.to_yaml }
45
+ end
46
+
47
+ it 'serializes to yaml the same with and without stubbing, using YAML.dump' do
48
+ expect { set_stub }.to_not change { ::YAML.dump(serializable_object) }
49
+ end
50
+ end
51
+
52
+ with_yaml_loaded do
53
+ compiled_with_psych = begin
54
+ require 'psych'
55
+ true
56
+ rescue LoadError
57
+ false
58
+ end
59
+
60
+ if compiled_with_psych
61
+ context 'using Syck as the YAML engine' do
62
+ before(:each) { ::YAML::ENGINE.yamler = 'syck' }
63
+ around(:each) { |example| with_isolated_stderr(&example) }
64
+ it_behaves_like 'normal YAML serialization'
65
+ end
66
+
67
+ context 'using Psych as the YAML engine' do
68
+ before(:each) { ::YAML::ENGINE.yamler = 'psych' }
69
+ it_behaves_like 'normal YAML serialization'
70
+ end
71
+ else
72
+ it_behaves_like 'normal YAML serialization'
73
+ end
74
+ end
75
+
76
+ without_yaml_loaded do
77
+ it 'does not add #to_yaml to the stubbed object' do
78
+ expect(serializable_object).not_to respond_to(:to_yaml)
79
+ set_stub
80
+ expect(serializable_object).not_to respond_to(:to_yaml)
81
+ end
82
+ end
83
+
84
+ it 'marshals the same with and without stubbing' do
85
+ expect { set_stub }.to_not change { Marshal.dump(serializable_object) }
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,539 @@
1
+ require 'support/before_all_shared_example_group'
2
+
3
+ RSpec.describe "Using the legacy should syntax" do
4
+ include_context "with syntax", [:should, :expect]
5
+
6
+ describe "#received_message?" do
7
+ let(:dbl) { double("double").as_null_object }
8
+
9
+ it "answers false for received_message? when no messages received" do
10
+ expect(dbl.received_message?(:message)).to be_falsey
11
+ end
12
+
13
+ it "answers true for received_message? when message received" do
14
+ dbl.message
15
+ expect(dbl.received_message?(:message)).to be_truthy
16
+ end
17
+
18
+ it "answers true for received_message? when message received with correct args" do
19
+ dbl.message 1,2,3
20
+ expect(dbl.received_message?(:message, 1,2,3)).to be_truthy
21
+ end
22
+
23
+ it "answers false for received_message? when message received with incorrect args" do
24
+ dbl.message 1,2,3
25
+ expect(dbl.received_message?(:message, 1,2)).to be_falsey
26
+ end
27
+ end
28
+
29
+ describe "#stub" do
30
+ it "supports options" do
31
+ double.stub(:foo, :expected_from => "bar")
32
+ end
33
+
34
+ it 'returns `nil` from all terminal actions to discourage further configuration' do
35
+ expect(double.stub(:foo).and_return(1)).to be_nil
36
+ expect(double.stub(:foo).and_raise("boom")).to be_nil
37
+ expect(double.stub(:foo).and_throw(:foo)).to be_nil
38
+ end
39
+
40
+ it 'sets up a canned response' do
41
+ dbl = double
42
+ dbl.stub(:foo).and_return(3)
43
+ expect(dbl.foo).to eq(3)
44
+ end
45
+
46
+ it 'can stub multiple messages using a hash' do
47
+ dbl = double
48
+ dbl.stub(:foo => 2, :bar => 1)
49
+ expect(dbl.foo).to eq(2)
50
+ expect(dbl.bar).to eq(1)
51
+ end
52
+
53
+ include_examples "fails in a before(:all) block" do
54
+ def use_rspec_mocks
55
+ Object.stub(:foo)
56
+ end
57
+ end
58
+ end
59
+
60
+ describe "#stub_chain" do
61
+ it 'can stub a sequence of messages' do
62
+ dbl = double
63
+ dbl.stub_chain(:foo, :bar, :baz => 17)
64
+ expect(dbl.foo.bar.baz).to eq(17)
65
+ expect {
66
+ dbl.foo.baz.bar
67
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
68
+ end
69
+
70
+ include_examples "fails in a before(:all) block" do
71
+ def use_rspec_mocks
72
+ Object.stub_chain(:foo, :bar)
73
+ end
74
+ end
75
+ end
76
+
77
+ describe "#unstub" do
78
+ include_examples "fails in a before(:all) block" do
79
+ def use_rspec_mocks
80
+ Object.unstub(:foo)
81
+ end
82
+ end
83
+
84
+ it "replaces the stubbed method with the original method" do
85
+ obj = Object.new
86
+ def obj.foo; :original; end
87
+ obj.stub(:foo)
88
+ obj.unstub(:foo)
89
+ expect(obj.foo).to eq :original
90
+ end
91
+
92
+ it "removes all stubs with the supplied method name" do
93
+ obj = Object.new
94
+ def obj.foo; :original; end
95
+ obj.stub(:foo).with(1)
96
+ obj.stub(:foo).with(2)
97
+ obj.unstub(:foo)
98
+ expect(obj.foo).to eq :original
99
+ end
100
+
101
+ it "does not remove any expectations with the same method name" do
102
+ obj = Object.new
103
+ def obj.foo; :original; end
104
+ obj.should_receive(:foo).with(3).and_return(:three)
105
+ obj.stub(:foo).with(1)
106
+ obj.stub(:foo).with(2)
107
+ obj.unstub(:foo)
108
+ expect(obj.foo(3)).to eq :three
109
+ end
110
+
111
+ it "restores the correct implementations when stubbed and unstubbed on a parent and child class" do
112
+ parent = Class.new
113
+ child = Class.new(parent)
114
+
115
+ parent.stub(:new)
116
+ child.stub(:new)
117
+ parent.unstub(:new)
118
+ child.unstub(:new)
119
+
120
+ expect(parent.new).to be_an_instance_of parent
121
+ expect(child.new).to be_an_instance_of child
122
+ end
123
+
124
+ it "raises a MockExpectationError if the method has not been stubbed" do
125
+ obj = Object.new
126
+ expect {
127
+ obj.unstub(:foo)
128
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
129
+ end
130
+ end
131
+
132
+ describe "#should_receive" do
133
+ it 'fails on verification if the message is not received' do
134
+ dbl = double
135
+ dbl.should_receive(:foo)
136
+ expect { verify_all }.to raise_error(RSpec::Mocks::MockExpectationError)
137
+ end
138
+
139
+ it 'does not fail on verification if the message is received' do
140
+ dbl = double
141
+ dbl.should_receive(:foo)
142
+ dbl.foo
143
+ expect { verify_all }.not_to raise_error
144
+ end
145
+
146
+ it 'can set a canned response' do
147
+ dbl = double
148
+ dbl.should_receive(:bar).and_return(3)
149
+ expect(dbl.bar).to eq(3)
150
+ end
151
+
152
+ include_examples "fails in a before(:all) block" do
153
+ def use_rspec_mocks
154
+ Object.should_receive(:foo)
155
+ end
156
+ end
157
+
158
+ context "with an options hash" do
159
+ it "reports the file and line submitted with :expected_from" do
160
+ begin
161
+ mock = RSpec::Mocks::Double.new("a mock")
162
+ mock.should_receive(:message, :expected_from => "/path/to/blah.ext:37")
163
+ verify mock
164
+ rescue Exception => e
165
+ ensure
166
+ expect(e.backtrace.to_s).to match(/\/path\/to\/blah.ext:37/m)
167
+ end
168
+ end
169
+
170
+ it "uses the message supplied with :message" do
171
+ expect {
172
+ m = RSpec::Mocks::Double.new("a mock")
173
+ m.should_receive(:message, :message => "recebi nada")
174
+ verify m
175
+ }.to raise_error("recebi nada")
176
+ end
177
+
178
+ it "uses the message supplied with :message after a similar stub" do
179
+ expect {
180
+ m = RSpec::Mocks::Double.new("a mock")
181
+ m.stub(:message)
182
+ m.should_receive(:message, :message => "from mock")
183
+ verify m
184
+ }.to raise_error("from mock")
185
+ end
186
+ end
187
+ end
188
+
189
+ describe "#should_not_receive" do
190
+ it "returns a negative message expectation" do
191
+ expect(Object.new.should_not_receive(:foobar)).to be_negative
192
+ end
193
+
194
+ it 'fails when the message is received' do
195
+ dbl = double
196
+ dbl.should_not_receive(:foo)
197
+ expect { dbl.foo }.to raise_error(RSpec::Mocks::MockExpectationError)
198
+ end
199
+
200
+ it 'does not fail on verification if the message is not received' do
201
+ dbl = double
202
+ dbl.should_not_receive(:foo)
203
+ expect { verify_all }.not_to raise_error
204
+ end
205
+
206
+ include_examples "fails in a before(:all) block" do
207
+ def use_rspec_mocks
208
+ Object.should_not_receive(:foo)
209
+ end
210
+ end
211
+ end
212
+
213
+ describe "#any_instance" do
214
+ let(:klass) do
215
+ Class.new do
216
+ def existing_method; :existing_method_return_value; end
217
+ def existing_method_with_arguments(arg_one, arg_two = nil); :existing_method_with_arguments_return_value; end
218
+ def another_existing_method; end
219
+ private
220
+ def private_method; :private_method_return_value; end
221
+ end
222
+ end
223
+
224
+ include_examples "fails in a before(:all) block" do
225
+ def use_rspec_mocks
226
+ Object.any_instance.should_receive(:foo)
227
+ end
228
+ end
229
+
230
+ it "adds an class to the current space" do
231
+ expect {
232
+ klass.any_instance
233
+ }.to change { RSpec::Mocks.space.any_instance_recorders.size }.by(1)
234
+ end
235
+
236
+ it 'can stub a method' do
237
+ klass.any_instance.stub(:foo).and_return(2)
238
+ expect(klass.new.foo).to eq(2)
239
+ end
240
+
241
+ it 'can mock a method' do
242
+ klass.any_instance.should_receive(:foo)
243
+ klass.new
244
+ expect { verify_all }.to raise_error(RSpec::Mocks::MockExpectationError)
245
+ end
246
+
247
+ it 'can get method objects for the fluent interface', :if => RUBY_VERSION.to_f > 1.8 do
248
+ and_return = klass.any_instance.stub(:foo).method(:and_return)
249
+ and_return.call(23)
250
+
251
+ expect(klass.new.foo).to eq(23)
252
+ end
253
+
254
+ it 'affects previously stubbed instances when stubbing a method' do
255
+ instance = klass.new
256
+ klass.any_instance.stub(:foo).and_return(2)
257
+ expect(instance.foo).to eq(2)
258
+ klass.any_instance.stub(:foo).and_return(1)
259
+ expect(instance.foo).to eq(1)
260
+ end
261
+
262
+ it 'affects previously stubbed instances when mocking a method' do
263
+ instance = klass.new
264
+ klass.any_instance.stub(:foo).and_return(2)
265
+ expect(instance.foo).to eq(2)
266
+ klass.any_instance.should_receive(:foo).and_return(1)
267
+ expect(instance.foo).to eq(1)
268
+ end
269
+
270
+ context "invocation order" do
271
+ describe "#stub" do
272
+ it "raises an error if 'stub' follows 'with'" do
273
+ expect { klass.any_instance.with("1").stub(:foo) }.to raise_error(NoMethodError)
274
+ end
275
+
276
+ it "raises an error if 'with' follows 'and_return'" do
277
+ expect { klass.any_instance.stub(:foo).and_return(1).with("1") }.to raise_error(NoMethodError)
278
+ end
279
+
280
+ it "raises an error if 'with' follows 'and_raise'" do
281
+ expect { klass.any_instance.stub(:foo).and_raise(1).with("1") }.to raise_error(NoMethodError)
282
+ end
283
+
284
+ it "raises an error if 'with' follows 'and_yield'" do
285
+ expect { klass.any_instance.stub(:foo).and_yield(1).with("1") }.to raise_error(NoMethodError)
286
+ end
287
+
288
+ context "behaves as 'every instance'" do
289
+ let(:super_class) { Class.new { def foo; 'bar'; end } }
290
+ let(:sub_class) { Class.new(super_class) }
291
+
292
+ it 'handles `unstub` on subclasses' do
293
+ super_class.any_instance.stub(:foo)
294
+ sub_class.any_instance.stub(:foo)
295
+ sub_class.any_instance.unstub(:foo)
296
+ expect(sub_class.new.foo).to eq("bar")
297
+ end
298
+ end
299
+ end
300
+
301
+ describe "#stub_chain" do
302
+ it "raises an error if 'stub_chain' follows 'and_return'" do
303
+ expect { klass.any_instance.and_return("1").stub_chain(:foo, :bar) }.to raise_error(NoMethodError)
304
+ end
305
+
306
+ context "allows a chain of methods to be stubbed using #stub_chain" do
307
+ example "given symbols representing the methods" do
308
+ klass.any_instance.stub_chain(:one, :two, :three).and_return(:four)
309
+ expect(klass.new.one.two.three).to eq(:four)
310
+ end
311
+
312
+ example "given a hash as the last argument uses the value as the expected return value" do
313
+ klass.any_instance.stub_chain(:one, :two, :three => :four)
314
+ expect(klass.new.one.two.three).to eq(:four)
315
+ end
316
+
317
+ example "given a string of '.' separated method names representing the chain" do
318
+ klass.any_instance.stub_chain('one.two.three').and_return(:four)
319
+ expect(klass.new.one.two.three).to eq(:four)
320
+ end
321
+ end
322
+
323
+ it 'affects previously stubbed instances' do
324
+ instance = klass.new
325
+ dbl = double
326
+ klass.any_instance.stub(:foo).and_return(dbl)
327
+ expect(instance.foo).to eq(dbl)
328
+ klass.any_instance.stub_chain(:foo, :bar => 3)
329
+ expect(instance.foo.bar).to eq(3)
330
+ end
331
+ end
332
+
333
+ describe "#should_receive" do
334
+ it "raises an error if 'should_receive' follows 'with'" do
335
+ expect { klass.any_instance.with("1").should_receive(:foo) }.to raise_error(NoMethodError)
336
+ end
337
+ end
338
+
339
+ describe "#should_not_receive" do
340
+ it "fails if the method is called" do
341
+ klass.any_instance.should_not_receive(:existing_method)
342
+ expect { klass.new.existing_method }.to raise_error(RSpec::Mocks::MockExpectationError)
343
+ end
344
+
345
+ it "passes if no method is called" do
346
+ expect { klass.any_instance.should_not_receive(:existing_method) }.to_not raise_error
347
+ end
348
+
349
+ it "passes if only a different method is called" do
350
+ klass.any_instance.should_not_receive(:existing_method)
351
+ expect { klass.new.another_existing_method }.to_not raise_error
352
+ end
353
+
354
+ context "with constraints" do
355
+ it "fails if the method is called with the specified parameters" do
356
+ klass.any_instance.should_not_receive(:existing_method_with_arguments).with(:argument_one, :argument_two)
357
+ expect {
358
+ klass.new.existing_method_with_arguments(:argument_one, :argument_two)
359
+ }.to raise_error(RSpec::Mocks::MockExpectationError)
360
+ end
361
+
362
+ it "passes if the method is called with different parameters" do
363
+ klass.any_instance.should_not_receive(:existing_method_with_arguments).with(:argument_one, :argument_two)
364
+ expect { klass.new.existing_method_with_arguments(:argument_three, :argument_four) }.to_not raise_error
365
+ end
366
+ end
367
+
368
+ context 'when used in combination with should_receive' do
369
+ it 'passes if only the expected message is received' do
370
+ klass.any_instance.should_receive(:foo)
371
+ klass.any_instance.should_not_receive(:bar)
372
+ klass.new.foo
373
+ verify_all
374
+ end
375
+ end
376
+
377
+ it "prevents confusing double-negative expressions involving `never`" do
378
+ expect {
379
+ klass.any_instance.should_not_receive(:not_expected).never
380
+ }.to raise_error(/trying to negate it again/)
381
+ end
382
+ end
383
+
384
+ describe "#unstub" do
385
+ it "replaces the stubbed method with the original method" do
386
+ klass.any_instance.stub(:existing_method)
387
+ klass.any_instance.unstub(:existing_method)
388
+ expect(klass.new.existing_method).to eq(:existing_method_return_value)
389
+ end
390
+
391
+ it "removes all stubs with the supplied method name" do
392
+ klass.any_instance.stub(:existing_method).with(1)
393
+ klass.any_instance.stub(:existing_method).with(2)
394
+ klass.any_instance.unstub(:existing_method)
395
+ expect(klass.new.existing_method).to eq(:existing_method_return_value)
396
+ end
397
+
398
+ it "removes stubs even if they have already been invoked" do
399
+ klass.any_instance.stub(:existing_method).and_return(:any_instance_value)
400
+ obj = klass.new
401
+ obj.existing_method
402
+ klass.any_instance.unstub(:existing_method)
403
+ expect(obj.existing_method).to eq(:existing_method_return_value)
404
+ end
405
+
406
+ it "removes stubs from sub class after invokation when super class was originally stubbed" do
407
+ klass.any_instance.stub(:existing_method).and_return(:any_instance_value)
408
+ obj = Class.new(klass).new
409
+ expect(obj.existing_method).to eq(:any_instance_value)
410
+ klass.any_instance.unstub(:existing_method)
411
+ expect(obj.existing_method).to eq(:existing_method_return_value)
412
+ end
413
+
414
+ it "removes stubs set directly on an instance" do
415
+ klass.any_instance.stub(:existing_method).and_return(:any_instance_value)
416
+ obj = klass.new
417
+ obj.stub(:existing_method).and_return(:local_method)
418
+ klass.any_instance.unstub(:existing_method)
419
+ expect(obj.existing_method).to eq(:existing_method_return_value)
420
+ end
421
+
422
+ it "does not remove message expectations set directly on an instance" do
423
+ klass.any_instance.stub(:existing_method).and_return(:any_instance_value)
424
+ obj = klass.new
425
+ obj.should_receive(:existing_method).and_return(:local_method)
426
+ klass.any_instance.unstub(:existing_method)
427
+ expect(obj.existing_method).to eq(:local_method)
428
+ end
429
+
430
+ it "does not remove any expectations with the same method name" do
431
+ klass.any_instance.should_receive(:existing_method_with_arguments).with(3).and_return(:three)
432
+ klass.any_instance.stub(:existing_method_with_arguments).with(1)
433
+ klass.any_instance.stub(:existing_method_with_arguments).with(2)
434
+ klass.any_instance.unstub(:existing_method_with_arguments)
435
+ expect(klass.new.existing_method_with_arguments(3)).to eq(:three)
436
+ end
437
+
438
+ it "raises a MockExpectationError if the method has not been stubbed" do
439
+ expect {
440
+ klass.any_instance.unstub(:existing_method)
441
+ }.to raise_error(RSpec::Mocks::MockExpectationError, 'The method `existing_method` was not stubbed or was already unstubbed')
442
+ end
443
+
444
+ it 'does not get confused about string vs symbol usage for the message' do
445
+ klass.any_instance.stub(:existing_method) { :stubbed }
446
+ klass.any_instance.unstub("existing_method")
447
+ expect(klass.new.existing_method).to eq(:existing_method_return_value)
448
+ end
449
+ end
450
+ end
451
+ end
452
+ end
453
+
454
+ RSpec.context "with default syntax configuration" do
455
+ orig_syntax = nil
456
+
457
+ before(:all) { orig_syntax = RSpec::Mocks.configuration.syntax }
458
+ after(:all) { RSpec::Mocks.configuration.syntax = orig_syntax }
459
+ before { RSpec::Mocks.configuration.reset_syntaxes_to_default }
460
+
461
+ let(:expected_arguments) {
462
+ [
463
+ /Using.*without explicitly enabling/,
464
+ {:replacement=>"the new `:expect` syntax or explicitly enable `:should`"}
465
+ ]
466
+ }
467
+
468
+ it "it warns about should once, regardless of how many times it is called" do
469
+ expect(RSpec).to receive(:deprecate).with(*expected_arguments)
470
+ o = Object.new
471
+ o2 = Object.new
472
+ o.should_receive(:bees)
473
+ o2.should_receive(:bees)
474
+
475
+ o.bees
476
+ o2.bees
477
+ end
478
+
479
+ it "warns about should not once, regardless of how many times it is called" do
480
+ expect(RSpec).to receive(:deprecate).with(*expected_arguments)
481
+ o = Object.new
482
+ o2 = Object.new
483
+ o.should_not_receive(:bees)
484
+ o2.should_not_receive(:bees)
485
+ end
486
+
487
+ it "warns about stubbing once, regardless of how many times it is called" do
488
+ expect(RSpec).to receive(:deprecate).with(*expected_arguments)
489
+ o = Object.new
490
+ o2 = Object.new
491
+
492
+ o.stub(:faces)
493
+ o2.stub(:faces)
494
+ end
495
+
496
+ it "warns about unstubbing once, regardless of how many times it is called" do
497
+ expect(RSpec).to receive(:deprecate).with(/Using.*without explicitly enabling/,
498
+ {:replacement => "`allow(...).to_receive(...).and_call_original` or explicitly enable `:should`"})
499
+ o = Object.new
500
+ o2 = Object.new
501
+
502
+ allow(o).to receive(:faces)
503
+ allow(o2).to receive(:faces)
504
+
505
+ o.unstub(:faces)
506
+ o2.unstub(:faces)
507
+ end
508
+
509
+
510
+ it "doesn't warn about stubbing after a reset and setting should" do
511
+ expect(RSpec).not_to receive(:deprecate)
512
+ RSpec::Mocks.configuration.reset_syntaxes_to_default
513
+ RSpec::Mocks.configuration.syntax = :should
514
+ o = Object.new
515
+ o2 = Object.new
516
+ o.stub(:faces)
517
+ o2.stub(:faces)
518
+ end
519
+
520
+ it "includes the call site in the deprecation warning" do
521
+ obj = Object.new
522
+ expect_deprecation_with_call_site(__FILE__, __LINE__ + 1)
523
+ obj.stub(:faces)
524
+ end
525
+ end
526
+
527
+ RSpec.context "when the should syntax is enabled on a non-default syntax host" do
528
+ include_context "with the default mocks syntax"
529
+
530
+ it "continues to warn about the should syntax" do
531
+ my_host = Class.new
532
+ expect(RSpec).to receive(:deprecate)
533
+ RSpec::Mocks::Syntax.enable_should(my_host)
534
+
535
+ o = Object.new
536
+ o.should_receive(:bees)
537
+ o.bees
538
+ end
539
+ end