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,139 @@
1
+ module RSpec
2
+ module Matchers
3
+ RSpec.describe "expect(actual).to be_within(delta).of(expected)" do
4
+ it_behaves_like "an RSpec matcher", :valid_value => 5, :invalid_value => -5 do
5
+ let(:matcher) { be_within(2).of(4.0) }
6
+ end
7
+
8
+ it "passes when actual == expected" do
9
+ expect(5.0).to be_within(0.5).of(5.0)
10
+ end
11
+
12
+ it "passes when actual < (expected + delta)" do
13
+ expect(5.49).to be_within(0.5).of(5.0)
14
+ end
15
+
16
+ it "passes when actual > (expected - delta)" do
17
+ expect(4.51).to be_within(0.5).of(5.0)
18
+ end
19
+
20
+ it "passes when actual == (expected - delta)" do
21
+ expect(4.5).to be_within(0.5).of(5.0)
22
+ end
23
+
24
+ it "passes when actual == (expected + delta)" do
25
+ expect(5.5).to be_within(0.5).of(5.0)
26
+ end
27
+
28
+ it "passes with integer arguments that are near each other" do
29
+ expect(1.0001).to be_within(5).percent_of(1)
30
+ end
31
+
32
+ it "passes with negative arguments" do
33
+ expect(-1.0001).to be_within(5).percent_of(-1)
34
+ end
35
+
36
+ it "fails when actual < (expected - delta)" do
37
+ expect {
38
+ expect(4.49).to be_within(0.5).of(5.0)
39
+ }.to fail_with("expected 4.49 to be within 0.5 of 5.0")
40
+ end
41
+
42
+ it "fails when actual > (expected + delta)" do
43
+ expect {
44
+ expect(5.51).to be_within(0.5).of(5.0)
45
+ }.to fail_with("expected 5.51 to be within 0.5 of 5.0")
46
+ end
47
+
48
+ it "works with Time" do
49
+ expect(Time.now).to be_within(0.1).of(Time.now)
50
+ end
51
+
52
+ it "provides a description" do
53
+ matcher = be_within(0.5).of(5.0)
54
+ matcher.matches?(5.1)
55
+ expect(matcher.description).to eq "be within 0.5 of 5.0"
56
+ end
57
+
58
+ it "raises an error if no expected value is given" do
59
+ expect {
60
+ expect(5.1).to be_within(0.5)
61
+ }.to raise_error(ArgumentError, /must set an expected value using #of/)
62
+ end
63
+
64
+ it "fails if the actual is not numeric" do
65
+ expect {
66
+ expect(nil).to be_within(0.1).of(0)
67
+ }.to fail_with("expected nil to be within 0.1 of 0, but it could not be treated as a numeric value")
68
+ end
69
+ end
70
+
71
+ RSpec.describe "expect(actual).to be_within(delta).percent_of(expected)" do
72
+ it "passes when actual is within the given percent variance" do
73
+ expect(9.0).to be_within(10).percent_of(10.0)
74
+ expect(10.0).to be_within(10).percent_of(10.0)
75
+ expect(11.0).to be_within(10).percent_of(10.0)
76
+ end
77
+
78
+ it "fails when actual is outside the given percent variance" do
79
+ expect {
80
+ expect(8.9).to be_within(10).percent_of(10.0)
81
+ }.to fail_with("expected 8.9 to be within 10% of 10.0")
82
+
83
+ expect {
84
+ expect(11.1).to be_within(10).percent_of(10.0)
85
+ }.to fail_with("expected 11.1 to be within 10% of 10.0")
86
+ end
87
+
88
+ it "provides a description" do
89
+ matcher = be_within(0.5).percent_of(5.0)
90
+ matcher.matches?(5.1)
91
+ expect(matcher.description).to eq "be within 0.5% of 5.0"
92
+ end
93
+ end
94
+
95
+ RSpec.describe "expect(actual).not_to be_within(delta).of(expected)" do
96
+ it "passes when actual < (expected - delta)" do
97
+ expect(4.49).not_to be_within(0.5).of(5.0)
98
+ end
99
+
100
+ it "passes when actual > (expected + delta)" do
101
+ expect(5.51).not_to be_within(0.5).of(5.0)
102
+ end
103
+
104
+ it "fails when actual == expected" do
105
+ expect {
106
+ expect(5.0).not_to be_within(0.5).of(5.0)
107
+ }.to fail_with("expected 5.0 not to be within 0.5 of 5.0")
108
+ end
109
+
110
+ it "fails when actual < (expected + delta)" do
111
+ expect {
112
+ expect(5.49).not_to be_within(0.5).of(5.0)
113
+ }.to fail_with("expected 5.49 not to be within 0.5 of 5.0")
114
+ end
115
+
116
+ it "fails when actual > (expected - delta)" do
117
+ expect {
118
+ expect(4.51).not_to be_within(0.5).of(5.0)
119
+ }.to fail_with("expected 4.51 not to be within 0.5 of 5.0")
120
+ end
121
+
122
+ it "fails when actual == (expected - delta)" do
123
+ expect {
124
+ expect(4.5).not_to be_within(0.5).of(5.0)
125
+ }.to fail_with("expected 4.5 not to be within 0.5 of 5.0")
126
+ end
127
+
128
+ it "fails when actual == (expected + delta)" do
129
+ expect {
130
+ expect(5.5).not_to be_within(0.5).of(5.0)
131
+ }.to fail_with("expected 5.5 not to be within 0.5 of 5.0")
132
+ end
133
+
134
+ it "passes if the actual is not numeric" do
135
+ expect(nil).not_to be_within(0.1).of(0)
136
+ end
137
+ end
138
+ end
139
+ end
@@ -0,0 +1,829 @@
1
+ class SomethingExpected
2
+ attr_accessor :some_value
3
+ end
4
+
5
+ RSpec.describe "expect { ... }.to change(actual, message)" do
6
+ context "with a numeric value" do
7
+ before(:example) do
8
+ @instance = SomethingExpected.new
9
+ @instance.some_value = 5
10
+ end
11
+
12
+ it "passes when actual is modified by the block" do
13
+ expect {@instance.some_value = 6.0}.to change(@instance, :some_value)
14
+ end
15
+
16
+ it "fails when actual is not modified by the block" do
17
+ expect do
18
+ expect {}.to change(@instance, :some_value)
19
+ end.to fail_with("expected #some_value to have changed, but is still 5")
20
+ end
21
+
22
+ it "provides a #description" do
23
+ expect(change(@instance, :some_value).description).to eq "change #some_value"
24
+ end
25
+ end
26
+
27
+ it "can specify the change of a variable's class" do
28
+ val = nil
29
+
30
+ expect {
31
+ val = 42
32
+ }.to change { val.class }.from(NilClass).to(Fixnum)
33
+
34
+ expect {
35
+ expect {
36
+ val = "string"
37
+ }.to change { val.class }.from(Fixnum).to(NilClass)
38
+ }.to fail_with(/but is now String/)
39
+ end
40
+
41
+ context "with boolean values" do
42
+ before(:example) do
43
+ @instance = SomethingExpected.new
44
+ @instance.some_value = true
45
+ end
46
+
47
+ it "passes when actual is modified by the block" do
48
+ expect {@instance.some_value = false}.to change(@instance, :some_value)
49
+ end
50
+
51
+ it "fails when actual is not modified by the block" do
52
+ expect do
53
+ expect {}.to change(@instance, :some_value)
54
+ end.to fail_with("expected #some_value to have changed, but is still true")
55
+ end
56
+ end
57
+
58
+ context "with an IO stream" do
59
+ it "fails when the stream does not change" do
60
+ expect {
61
+ k = STDOUT
62
+ expect { }.to change { k }
63
+ }.to fail_with(/expected result to have changed/)
64
+ end
65
+ end
66
+
67
+ context "with nil value" do
68
+ before(:example) do
69
+ @instance = SomethingExpected.new
70
+ @instance.some_value = nil
71
+ end
72
+
73
+ it "passes when actual is modified by the block" do
74
+ expect {@instance.some_value = false}.to change(@instance, :some_value)
75
+ end
76
+
77
+ it "fails when actual is not modified by the block" do
78
+ expect do
79
+ expect {}.to change(@instance, :some_value)
80
+ end.to fail_with("expected #some_value to have changed, but is still nil")
81
+ end
82
+ end
83
+
84
+ context "with an array" do
85
+ before(:example) do
86
+ @instance = SomethingExpected.new
87
+ @instance.some_value = []
88
+ end
89
+
90
+ it "passes when actual is modified by the block" do
91
+ expect {@instance.some_value << 1}.to change(@instance, :some_value)
92
+ end
93
+
94
+ it "fails when a predicate on the actual fails" do
95
+ expect do
96
+ expect {@instance.some_value << 1}.to change { @instance.some_value }.to be_empty
97
+ end.to fail_with(/result to have changed to/)
98
+ end
99
+
100
+ it "passes when a predicate on the actual passes" do
101
+ @instance.some_value = [1]
102
+ expect {@instance.some_value.pop}.to change { @instance.some_value }.to be_empty
103
+ end
104
+
105
+ it "fails when actual is not modified by the block" do
106
+ expect do
107
+ expect {}.to change(@instance, :some_value)
108
+ end.to fail_with("expected #some_value to have changed, but is still []")
109
+ end
110
+ end
111
+
112
+ context "with a hash" do
113
+ before(:example) do
114
+ @instance = SomethingExpected.new
115
+ @instance.some_value = {:a => 'a'}
116
+ end
117
+
118
+ it "passes when actual is modified by the block" do
119
+ expect {@instance.some_value[:a] = 'A'}.to change(@instance, :some_value)
120
+ end
121
+
122
+ it "fails when actual is not modified by the block" do
123
+ expect do
124
+ expect {}.to change(@instance, :some_value)
125
+ end.to fail
126
+ end
127
+ end
128
+
129
+ context "with a string" do
130
+ it "passes when actual is modified by the block" do
131
+ string = "ab"
132
+ expect { string << "c" }.to change { string }
133
+ end
134
+
135
+ it 'fails when actual is not modified by the block' do
136
+ string = "ab"
137
+ expect {
138
+ expect { }.to change { string }
139
+ }.to fail_with(/to have changed/)
140
+ end
141
+ end
142
+
143
+ context "with an arbitrary enumerable" do
144
+ before(:example) do
145
+ @instance = SomethingExpected.new
146
+ @instance.some_value = Class.new do
147
+ include Enumerable
148
+
149
+ attr_reader :elements
150
+
151
+ def initialize(*elements)
152
+ @elements = elements.dup
153
+ end
154
+
155
+ def <<(element)
156
+ elements << element
157
+ end
158
+
159
+ def dup
160
+ self.class.new(*elements)
161
+ end
162
+
163
+ def ==(other)
164
+ elements == other.elements
165
+ end
166
+ end.new
167
+ end
168
+
169
+ it "passes when actual is modified by the block" do
170
+ expect {@instance.some_value << 1}.to change(@instance, :some_value)
171
+ end
172
+
173
+ it "fails when actual is not modified by the block" do
174
+ expect do
175
+ expect {}.to change(@instance, :some_value)
176
+ end.to fail_with(/^expected #some_value to have changed, but is still/)
177
+ end
178
+ end
179
+
180
+ context "with a missing message" do
181
+ it "fails with an ArgumentError" do
182
+ expect do
183
+ expect {}.to change(:receiver)
184
+ end.to raise_error(ArgumentError, /^`change` requires either an object and message/)
185
+ end
186
+ end
187
+ end
188
+
189
+ RSpec.describe "expect { ... }.not_to change(actual, message)" do
190
+ before(:example) do
191
+ @instance = SomethingExpected.new
192
+ @instance.some_value = 5
193
+ end
194
+
195
+ it "passes when actual is not modified by the block" do
196
+ expect { }.not_to change(@instance, :some_value)
197
+ end
198
+
199
+ it "fails when actual is not modified by the block" do
200
+ expect do
201
+ expect {@instance.some_value = 6}.not_to change(@instance, :some_value)
202
+ end.to fail_with("expected #some_value not to have changed, but did change from 5 to 6")
203
+ end
204
+ end
205
+
206
+ RSpec.describe "expect { ... }.to change { block }" do
207
+
208
+ before(:example) do
209
+ @instance = SomethingExpected.new
210
+ @instance.some_value = 5
211
+ end
212
+
213
+ it "passes when actual is modified by the block" do
214
+ expect {@instance.some_value = 6}.to change { @instance.some_value }
215
+ end
216
+
217
+ it "fails when actual is not modified by the block" do
218
+ expect do
219
+ expect {}.to change{ @instance.some_value }
220
+ end.to fail_with("expected result to have changed, but is still 5")
221
+ end
222
+
223
+ it "warns if passed a block using do/end instead of {}" do
224
+ expect do
225
+ expect {}.to change do; end
226
+ end.to raise_error(SyntaxError, /block passed to the `change` matcher/)
227
+ end
228
+
229
+ it "provides a #description" do
230
+ expect(change { @instance.some_value }.description).to eq "change result"
231
+ end
232
+
233
+ context "with an IO stream" do
234
+ it "passes when the stream does not change" do
235
+ k = STDOUT
236
+ expect { }.not_to change { k }
237
+ end
238
+ end
239
+ end
240
+
241
+ RSpec.describe "expect { ... }.not_to change { block }" do
242
+ before(:example) do
243
+ @instance = SomethingExpected.new
244
+ @instance.some_value = 5
245
+ end
246
+
247
+ it "passes when actual is modified by the block" do
248
+ expect {}.not_to change{ @instance.some_value }
249
+ end
250
+
251
+ it "fails when actual is not modified by the block" do
252
+ expect do
253
+ expect {@instance.some_value = 6}.not_to change { @instance.some_value }
254
+ end.to fail_with("expected result not to have changed, but did change from 5 to 6")
255
+ end
256
+
257
+ it "warns if passed a block using do/end instead of {}" do
258
+ expect do
259
+ expect {}.not_to change do; end
260
+ end.to raise_error(SyntaxError, /block passed to the `change` matcher/)
261
+ end
262
+ end
263
+
264
+
265
+ RSpec.describe "expect { ... }.not_to change { }.from" do
266
+ context 'when the value starts at the from value' do
267
+ it 'passes when the value does not change' do
268
+ k = 5
269
+ expect { }.not_to change { k }.from(5)
270
+ end
271
+
272
+ it 'fails when the value does change' do
273
+ expect {
274
+ k = 5
275
+ expect { k += 1 }.not_to change { k }.from(5)
276
+ }.to fail_with(/but did change from 5 to 6/)
277
+ end
278
+ end
279
+
280
+ context 'when the value starts at a different value' do
281
+ it 'fails when the value does not change' do
282
+ expect {
283
+ k = 6
284
+ expect { }.not_to change { k }.from(5)
285
+ }.to fail_with(/expected result to have initially been 5/)
286
+ end
287
+
288
+ it 'fails when the value does change' do
289
+ expect {
290
+ k = 6
291
+ expect { k += 1 }.not_to change { k }.from(5)
292
+ }.to fail_with(/expected result to have initially been 5/)
293
+ end
294
+ end
295
+ end
296
+
297
+ RSpec.describe "expect { ... }.not_to change { }.to" do
298
+ it 'is not supported' do
299
+ expect {
300
+ expect { }.not_to change { }.to(3)
301
+ }.to raise_error(NotImplementedError)
302
+ end
303
+
304
+ it 'is not supported when it comes after `from`' do
305
+ expect {
306
+ expect { }.not_to change { }.from(nil).to(3)
307
+ }.to raise_error(NotImplementedError)
308
+ end
309
+ end
310
+
311
+ RSpec.describe "expect { ... }.not_to change { }.by" do
312
+ it 'is not supported' do
313
+ expect {
314
+ expect { }.not_to change { }.by(3)
315
+ }.to raise_error(NotImplementedError)
316
+ end
317
+ end
318
+
319
+ RSpec.describe "expect { ... }.not_to change { }.by_at_least" do
320
+ it 'is not supported' do
321
+ expect {
322
+ expect { }.not_to change { }.by_at_least(3)
323
+ }.to raise_error(NotImplementedError)
324
+ end
325
+ end
326
+
327
+ RSpec.describe "expect { ... }.not_to change { }.by_at_most" do
328
+ it 'is not supported' do
329
+ expect {
330
+ expect { }.not_to change { }.by_at_most(3)
331
+ }.to raise_error(NotImplementedError)
332
+ end
333
+ end
334
+
335
+ RSpec.describe "expect { ... }.to change(actual, message).by(expected)" do
336
+ before(:example) do
337
+ @instance = SomethingExpected.new
338
+ @instance.some_value = 5
339
+ end
340
+
341
+ it "passes when attribute is changed by expected amount" do
342
+ expect { @instance.some_value += 1 }.to change(@instance, :some_value).by(1)
343
+ end
344
+
345
+ it "passes when attribute is not changed and expected amount is 0" do
346
+ expect { @instance.some_value += 0 }.to change(@instance, :some_value).by(0)
347
+ end
348
+
349
+ it "fails when the attribute is changed by unexpected amount" do
350
+ expect do
351
+ expect { @instance.some_value += 2 }.to change(@instance, :some_value).by(1)
352
+ end.to fail_with("expected #some_value to have changed by 1, but was changed by 2")
353
+ end
354
+
355
+ it "fails when the attribute is changed by unexpected amount in the opposite direction" do
356
+ expect do
357
+ expect { @instance.some_value -= 1 }.to change(@instance, :some_value).by(1)
358
+ end.to fail_with("expected #some_value to have changed by 1, but was changed by -1")
359
+ end
360
+
361
+ it "provides a #description" do
362
+ expect(change(@instance, :some_value).by(3).description).to eq "change #some_value by 3"
363
+ end
364
+ end
365
+
366
+ RSpec.describe "expect { ... }.to change { block }.by(expected)" do
367
+ before(:example) do
368
+ @instance = SomethingExpected.new
369
+ @instance.some_value = 5
370
+ end
371
+
372
+ it "passes when attribute is changed by expected amount" do
373
+ expect { @instance.some_value += 1 }.to change{@instance.some_value}.by(1)
374
+ end
375
+
376
+ it "fails when the attribute is changed by unexpected amount" do
377
+ expect do
378
+ expect { @instance.some_value += 2 }.to change{@instance.some_value}.by(1)
379
+ end.to fail_with("expected result to have changed by 1, but was changed by 2")
380
+ end
381
+
382
+ it "fails when the attribute is changed by unexpected amount in the opposite direction" do
383
+ expect do
384
+ expect { @instance.some_value -= 1 }.to change{@instance.some_value}.by(1)
385
+ end.to fail_with("expected result to have changed by 1, but was changed by -1")
386
+ end
387
+
388
+ it "provides a #description" do
389
+ expect(change { @instance.some_value }.by(3).description).to eq "change result by 3"
390
+ end
391
+ end
392
+
393
+ RSpec.describe "expect { ... }.to change(actual, message).by_at_least(expected)" do
394
+ before(:example) do
395
+ @instance = SomethingExpected.new
396
+ @instance.some_value = 5
397
+ end
398
+
399
+ it "passes when attribute is changed by greater than the expected amount" do
400
+ expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_least(1)
401
+ end
402
+
403
+ it "passes when attribute is changed by the expected amount" do
404
+ expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_least(2)
405
+ end
406
+
407
+ it "fails when the attribute is changed by less than the expected amount" do
408
+ expect do
409
+ expect { @instance.some_value += 1 }.to change(@instance, :some_value).by_at_least(2)
410
+ end.to fail_with("expected #some_value to have changed by at least 2, but was changed by 1")
411
+ end
412
+
413
+ it "provides a #description" do
414
+ expect(change(@instance, :some_value).by_at_least(3).description).to eq "change #some_value by at least 3"
415
+ end
416
+ end
417
+
418
+ RSpec.describe "expect { ... }.to change { block }.by_at_least(expected)" do
419
+ before(:example) do
420
+ @instance = SomethingExpected.new
421
+ @instance.some_value = 5
422
+ end
423
+
424
+ it "passes when attribute is changed by greater than expected amount" do
425
+ expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_least(1)
426
+ end
427
+
428
+ it "passes when attribute is changed by the expected amount" do
429
+ expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_least(2)
430
+ end
431
+
432
+ it "fails when the attribute is changed by less than the unexpected amount" do
433
+ expect do
434
+ expect { @instance.some_value += 1 }.to change{@instance.some_value}.by_at_least(2)
435
+ end.to fail_with("expected result to have changed by at least 2, but was changed by 1")
436
+ end
437
+
438
+ it "provides a #description" do
439
+ expect(change { @instance.some_value }.by_at_least(3).description).to eq "change result by at least 3"
440
+ end
441
+ end
442
+
443
+
444
+ RSpec.describe "expect { ... }.to change(actual, message).by_at_most(expected)" do
445
+ before(:example) do
446
+ @instance = SomethingExpected.new
447
+ @instance.some_value = 5
448
+ end
449
+
450
+ it "passes when attribute is changed by less than the expected amount" do
451
+ expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_most(3)
452
+ end
453
+
454
+ it "passes when attribute is changed by the expected amount" do
455
+ expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_most(2)
456
+ end
457
+
458
+ it "fails when the attribute is changed by greater than the expected amount" do
459
+ expect do
460
+ expect { @instance.some_value += 2 }.to change(@instance, :some_value).by_at_most(1)
461
+ end.to fail_with("expected #some_value to have changed by at most 1, but was changed by 2")
462
+ end
463
+
464
+ it "provides a #description" do
465
+ expect(change(@instance, :some_value).by_at_most(3).description).to eq "change #some_value by at most 3"
466
+ end
467
+ end
468
+
469
+ RSpec.describe "expect { ... }.to change { block }.by_at_most(expected)" do
470
+ before(:example) do
471
+ @instance = SomethingExpected.new
472
+ @instance.some_value = 5
473
+ end
474
+
475
+ it "passes when attribute is changed by less than expected amount" do
476
+ expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_most(3)
477
+ end
478
+
479
+ it "passes when attribute is changed by the expected amount" do
480
+ expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_most(2)
481
+ end
482
+
483
+ it "fails when the attribute is changed by greater than the unexpected amount" do
484
+ expect do
485
+ expect { @instance.some_value += 2 }.to change{@instance.some_value}.by_at_most(1)
486
+ end.to fail_with("expected result to have changed by at most 1, but was changed by 2")
487
+ end
488
+
489
+ it "provides a #description" do
490
+ expect(change { @instance.some_value }.by_at_most(3).description).to eq "change result by at most 3"
491
+ end
492
+ end
493
+
494
+ RSpec.describe "expect { ... }.to change(actual, message).from(old)" do
495
+ context "with boolean values" do
496
+ before(:example) do
497
+ @instance = SomethingExpected.new
498
+ @instance.some_value = true
499
+ end
500
+
501
+ it "passes when attribute is == to expected value before executing block" do
502
+ expect { @instance.some_value = false }.to change(@instance, :some_value).from(true)
503
+ end
504
+
505
+ it "fails when attribute is not == to expected value before executing block" do
506
+ expect do
507
+ expect { @instance.some_value = 'foo' }.to change(@instance, :some_value).from(false)
508
+ end.to fail_with("expected #some_value to have initially been false, but was true")
509
+ end
510
+ end
511
+ context "with non-boolean values" do
512
+ before(:example) do
513
+ @instance = SomethingExpected.new
514
+ @instance.some_value = 'string'
515
+ end
516
+
517
+ it "passes when attribute matches expected value before executing block" do
518
+ expect { @instance.some_value = "astring" }.to change(@instance, :some_value).from("string")
519
+ end
520
+
521
+ it "fails when attribute does not match expected value before executing block" do
522
+ expect do
523
+ expect { @instance.some_value = "knot" }.to change(@instance, :some_value).from("cat")
524
+ end.to fail_with("expected #some_value to have initially been \"cat\", but was \"string\"")
525
+ end
526
+
527
+ it "provides a #description" do
528
+ expect(change(@instance, :some_value).from(3).description).to eq "change #some_value from 3"
529
+ end
530
+ end
531
+ end
532
+
533
+ RSpec.describe "expect { ... }.to change { block }.from(old)" do
534
+ before(:example) do
535
+ @instance = SomethingExpected.new
536
+ @instance.some_value = 'string'
537
+ end
538
+
539
+ it "passes when attribute matches expected value before executing block" do
540
+ expect { @instance.some_value = "astring" }.to change{@instance.some_value}.from("string")
541
+ end
542
+
543
+ it "fails when attribute does not match expected value before executing block" do
544
+ expect do
545
+ expect { @instance.some_value = "knot" }.to change{@instance.some_value}.from("cat")
546
+ end.to fail_with("expected result to have initially been \"cat\", but was \"string\"")
547
+ end
548
+
549
+ it "fails when attribute does not change" do
550
+ expect do
551
+ expect { }.to change { @instance.some_value }.from("string")
552
+ end.to fail_with('expected result to have changed from "string", but did not change')
553
+ end
554
+
555
+ it "provides a #description" do
556
+ expect(change { }.from(3).description).to eq "change result from 3"
557
+ end
558
+ end
559
+
560
+ RSpec.describe "expect { ... }.to change(actual, message).to(new)" do
561
+ context "with boolean values" do
562
+ before(:example) do
563
+ @instance = SomethingExpected.new
564
+ @instance.some_value = true
565
+ end
566
+
567
+ it "passes when attribute is == to expected value after executing block" do
568
+ expect { @instance.some_value = false }.to change(@instance, :some_value).to(false)
569
+ end
570
+
571
+ it "fails when attribute is not == to expected value after executing block" do
572
+ expect do
573
+ expect { @instance.some_value = 1 }.to change(@instance, :some_value).from(true).to(false)
574
+ end.to fail_with("expected #some_value to have changed to false, but is now 1")
575
+ end
576
+ end
577
+
578
+ context "with non-boolean values" do
579
+ before(:example) do
580
+ @instance = SomethingExpected.new
581
+ @instance.some_value = 'string'
582
+ end
583
+
584
+ it "passes when attribute matches expected value after executing block" do
585
+ expect { @instance.some_value = "cat" }.to change(@instance, :some_value).to("cat")
586
+ end
587
+
588
+ it "fails when attribute does not match expected value after executing block" do
589
+ expect do
590
+ expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("dog")
591
+ end.to fail_with("expected #some_value to have changed to \"dog\", but is now \"cat\"")
592
+ end
593
+
594
+ it "fails with a clear message when it ends with the right value but did not change" do
595
+ expect {
596
+ expect { }.to change(@instance, :some_value).to("string")
597
+ }.to fail_with('expected #some_value to have changed to "string", but did not change')
598
+ end
599
+ end
600
+ end
601
+
602
+ RSpec.describe "expect { ... }.to change { block }.to(new)" do
603
+ before(:example) do
604
+ @instance = SomethingExpected.new
605
+ @instance.some_value = 'string'
606
+ end
607
+
608
+ it "passes when attribute matches expected value after executing block" do
609
+ expect { @instance.some_value = "cat" }.to change{@instance.some_value}.to("cat")
610
+ end
611
+
612
+ it "fails when attribute does not match expected value after executing block" do
613
+ expect do
614
+ expect { @instance.some_value = "cat" }.to change{@instance.some_value}.from("string").to("dog")
615
+ end.to fail_with("expected result to have changed to \"dog\", but is now \"cat\"")
616
+ end
617
+
618
+ it "provides a #description" do
619
+ expect(change { }.to(3).description).to eq "change result to 3"
620
+ end
621
+ end
622
+
623
+ RSpec.describe "expect { ... }.to change(actual, message).from(old).to(new)" do
624
+ before(:example) do
625
+ @instance = SomethingExpected.new
626
+ @instance.some_value = 'string'
627
+ end
628
+
629
+ it "passes when #to comes before #from" do
630
+ expect { @instance.some_value = "cat" }.to change(@instance, :some_value).to("cat").from("string")
631
+ end
632
+
633
+ it "passes when #from comes before #to" do
634
+ expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("cat")
635
+ end
636
+
637
+ it "shows the correct messaging when #after and #to are different" do
638
+ expect do
639
+ expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("string").to("dog")
640
+ end.to fail_with("expected #some_value to have changed to \"dog\", but is now \"cat\"")
641
+ end
642
+
643
+ it "shows the correct messaging when #before and #from are different" do
644
+ expect do
645
+ expect { @instance.some_value = "cat" }.to change(@instance, :some_value).from("not_string").to("cat")
646
+ end.to fail_with("expected #some_value to have initially been \"not_string\", but was \"string\"")
647
+ end
648
+ end
649
+
650
+ RSpec.describe "expect { ... }.to change { block }.from(old).to(new)" do
651
+ before(:example) do
652
+ @instance = SomethingExpected.new
653
+ @instance.some_value = 'string'
654
+ end
655
+
656
+ context "when #to comes before #from" do
657
+ it "passes" do
658
+ expect { @instance.some_value = "cat" }.to change{@instance.some_value}.to("cat").from("string")
659
+ end
660
+
661
+ it "provides a #description" do
662
+ expect(change { }.to(1).from(3).description).to eq "change result to 1 from 3"
663
+ end
664
+ end
665
+
666
+ context "when #from comes before #to" do
667
+ it "passes" do
668
+ expect { @instance.some_value = "cat" }.to change{@instance.some_value}.from("string").to("cat")
669
+ end
670
+
671
+ it "provides a #description" do
672
+ expect(change { }.from(1).to(3).description).to eq "change result from 1 to 3"
673
+ end
674
+ end
675
+ end
676
+
677
+ RSpec.describe "Composing a matcher with `change`" do
678
+ describe "expect { ... }.to change { ... }" do
679
+ context ".from(matcher).to(matcher)" do
680
+ it 'passes when the matchers match the from and to values' do
681
+ k = 0.51
682
+ expect { k += 1 }.to change { k }.
683
+ from( a_value_within(0.1).of(0.5) ).
684
+ to( a_value_within(0.1).of(1.5) )
685
+ end
686
+
687
+ it 'fails with a clear message when the `from` does not match' do
688
+ expect {
689
+ k = 0.51
690
+ expect { k += 1 }.to change { k }.
691
+ from( a_value_within(0.1).of(0.7) ).
692
+ to( a_value_within(0.1).of(1.5) )
693
+ }.to fail_with(/expected result to have initially been a value within 0.1 of 0.7, but was 0.51/)
694
+ end
695
+
696
+ it 'fails with a clear message when the `to` does not match' do
697
+ expect {
698
+ k = 0.51
699
+ expect { k += 1 }.to change { k }.
700
+ from( a_value_within(0.1).of(0.5) ).
701
+ to( a_value_within(0.1).of(2.5) )
702
+ }.to fail_with(/expected result to have changed to a value within 0.1 of 2.5, but is now 1.51/)
703
+ end
704
+
705
+ it 'provides a description' do
706
+ expect(change(nil, :foo).
707
+ from( a_value_within(0.1).of(0.5) ).
708
+ to( a_value_within(0.1).of(1.5) ).description
709
+ ).to eq("change #foo from a value within 0.1 of 0.5 to a value within 0.1 of 1.5")
710
+ end
711
+ end
712
+
713
+ context ".to(matcher).from(matcher)" do
714
+ it 'passes when the matchers match the from and to values' do
715
+ k = 0.51
716
+ expect { k += 1 }.to change { k }.
717
+ to( a_value_within(0.1).of(1.5) ).
718
+ from( a_value_within(0.1).of(0.5) )
719
+ end
720
+
721
+ it 'fails with a clear message when the `from` does not match' do
722
+ expect {
723
+ k = 0.51
724
+ expect { k += 1 }.to change { k }.
725
+ to( a_value_within(0.1).of(1.5) ).
726
+ from( a_value_within(0.1).of(0.7) )
727
+ }.to fail_with(/expected result to have initially been a value within 0.1 of 0.7, but was 0.51/)
728
+ end
729
+
730
+ it 'fails with a clear message when the `to` does not match' do
731
+ expect {
732
+ k = 0.51
733
+ expect { k += 1 }.to change { k }.
734
+ to( a_value_within(0.1).of(2.5) ).
735
+ from( a_value_within(0.1).of(0.5) )
736
+ }.to fail_with(/expected result to have changed to a value within 0.1 of 2.5, but is now 1.51/)
737
+ end
738
+
739
+ it 'provides a description' do
740
+ expect(change(nil, :foo).
741
+ to( a_value_within(0.1).of(0.5) ).
742
+ from( a_value_within(0.1).of(1.5) ).description
743
+ ).to eq("change #foo to a value within 0.1 of 0.5 from a value within 0.1 of 1.5")
744
+ end
745
+ end
746
+
747
+ context ".by(matcher)" do
748
+ it "passes when the matcher matches" do
749
+ k = 0.5
750
+ expect { k += 1.05 }.to change { k }.by( a_value_within(0.1).of(1) )
751
+ end
752
+
753
+ it 'fails with a clear message when the `by` does not match' do
754
+ expect {
755
+ k = 0.5
756
+ expect { k += 1.05 }.to change { k }.by( a_value_within(0.1).of(0.5) )
757
+ }.to fail_with(/expected result to have changed by a value within 0.1 of 0.5, but was changed by 1.05/)
758
+ end
759
+
760
+ it 'provides a description' do
761
+ expect(change(nil, :foo).
762
+ by( a_value_within(0.1).of(0.5) ).description
763
+ ).to eq("change #foo by a value within 0.1 of 0.5")
764
+ end
765
+ end
766
+ end
767
+
768
+ describe "expect { ... }.not_to change { ... }.from(matcher).to(matcher)" do
769
+ it 'passes when the matcher matches the `from` value and it does not change' do
770
+ k = 0.51
771
+ expect { }.not_to change { k }.from( a_value_within(0.1).of(0.5) )
772
+ end
773
+
774
+ it 'fails with a clear message when the `from` matcher does not match' do
775
+ expect {
776
+ k = 0.51
777
+ expect { }.not_to change { k }.from( a_value_within(0.1).of(1.5) )
778
+ }.to fail_with(/expected result to have initially been a value within 0.1 of 1.5, but was 0.51/)
779
+ end
780
+ end
781
+ end
782
+
783
+ RSpec.describe RSpec::Matchers::BuiltIn::Change do
784
+ it "works when the receiver has implemented #send" do
785
+ @instance = SomethingExpected.new
786
+ @instance.some_value = "string"
787
+ def @instance.send(*args); raise "DOH! Library developers shouldn't use #send!" end
788
+
789
+ expect {
790
+ expect { @instance.some_value = "cat" }.to change(@instance, :some_value)
791
+ }.not_to raise_error
792
+ end
793
+
794
+ k = 1
795
+ before { k = 1 }
796
+ it_behaves_like "an RSpec matcher", :valid_value => lambda { k += 1 },
797
+ :invalid_value => lambda { } do
798
+ let(:matcher) { change { k } }
799
+ end
800
+ end
801
+
802
+ RSpec.describe RSpec::Matchers::BuiltIn::ChangeRelatively do
803
+ k = 0
804
+ before { k = 0 }
805
+ it_behaves_like "an RSpec matcher", :valid_value => lambda { k += 1 },
806
+ :invalid_value => lambda { k += 2 },
807
+ :disallows_negation => true do
808
+ let(:matcher) { change { k }.by(1) }
809
+ end
810
+ end
811
+
812
+ RSpec.describe RSpec::Matchers::BuiltIn::ChangeFromValue do
813
+ k = 0
814
+ before { k = 0 }
815
+ it_behaves_like "an RSpec matcher", :valid_value => lambda { k += 1 },
816
+ :invalid_value => lambda { } do
817
+ let(:matcher) { change { k }.from(0) }
818
+ end
819
+ end
820
+
821
+ RSpec.describe RSpec::Matchers::BuiltIn::ChangeToValue do
822
+ k = 0
823
+ before { k = 0 }
824
+ it_behaves_like "an RSpec matcher", :valid_value => lambda { k = 2 },
825
+ :invalid_value => lambda { k = 3 },
826
+ :disallows_negation => true do
827
+ let(:matcher) { change { k }.to(2) }
828
+ end
829
+ end