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,26 @@
1
+ require 'spec_helper'
2
+ require 'rspec/core/formatters/snippet_extractor'
3
+
4
+ module RSpec
5
+ module Core
6
+ module Formatters
7
+ RSpec.describe SnippetExtractor do
8
+ it "falls back on a default message when it doesn't understand a line" do
9
+ expect(RSpec::Core::Formatters::SnippetExtractor.new.snippet_for("blech")).to eq(["# Couldn't get snippet for blech", 1])
10
+ end
11
+
12
+ it "falls back on a default message when it doesn't find the file" do
13
+ expect(RSpec::Core::Formatters::SnippetExtractor.new.lines_around("blech", 8)).to eq("# Couldn't get snippet for blech")
14
+ end
15
+
16
+ it "falls back on a default message when it gets a security error" do
17
+ message = nil
18
+ safely do
19
+ message = RSpec::Core::Formatters::SnippetExtractor.new.lines_around("blech", 8)
20
+ end
21
+ expect(message).to eq("# Couldn't get snippet for blech")
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,160 @@
1
+ require 'spec_helper'
2
+ require 'pathname'
3
+
4
+ module RSpec::Core::Formatters
5
+ describe Loader do
6
+
7
+ let(:output) { StringIO.new }
8
+ let(:reporter) { instance_double "Reporter", :register_listener => nil }
9
+ let(:loader) { Loader.new reporter }
10
+
11
+ describe "#add(formatter)" do
12
+ let(:path) { File.join(Dir.tmpdir, 'output.txt') }
13
+
14
+ it "adds to the list of formatters" do
15
+ loader.add :documentation, output
16
+ expect(loader.formatters.first).to be_an_instance_of(DocumentationFormatter)
17
+ end
18
+
19
+ it "finds a formatter by name (w/ Symbol)" do
20
+ loader.add :documentation, output
21
+ expect(loader.formatters.first).to be_an_instance_of(DocumentationFormatter)
22
+ end
23
+
24
+ it "finds a formatter by name (w/ String)" do
25
+ loader.add 'documentation', output
26
+ expect(loader.formatters.first).to be_an_instance_of(DocumentationFormatter)
27
+ end
28
+
29
+ it "finds a formatter by class" do
30
+ formatter_class = Class.new(BaseTextFormatter)
31
+ Loader.formatters[formatter_class] = []
32
+ loader.add formatter_class, output
33
+ expect(loader.formatters.first).to be_an_instance_of(formatter_class)
34
+ end
35
+
36
+ it "finds a formatter by class name" do
37
+ stub_const("CustomFormatter", Class.new(BaseFormatter))
38
+ Loader.formatters[CustomFormatter] = []
39
+ loader.add "CustomFormatter", output
40
+ expect(loader.formatters.first).to be_an_instance_of(CustomFormatter)
41
+ end
42
+
43
+ context "when a legacy formatter is added with RSpec::LegacyFormatters" do
44
+ formatter_class = Struct.new(:output)
45
+ let(:formatter) { double "formatter", :notifications => notifications }
46
+ let(:notifications) { [:a, :b, :c] }
47
+
48
+ before do
49
+ class_double("RSpec::LegacyFormatters", :load_formatter => formatter).as_stubbed_const
50
+ end
51
+
52
+ it "loads formatters from the external gem" do
53
+ loader.add formatter_class, output
54
+ expect(loader.formatters).to eq [formatter]
55
+ end
56
+
57
+ it "subscribes the formatter to the notifications the adaptor implements" do
58
+ expect(reporter).to receive(:register_listener).with(formatter, *notifications)
59
+ loader.add formatter_class, output
60
+ end
61
+ end
62
+
63
+ context "when a legacy formatter is added without RSpec::LegacyFormatters" do
64
+ formatter_class = Struct.new(:output)
65
+
66
+ before do
67
+ allow_deprecation
68
+ end
69
+
70
+ it "issues a deprecation" do
71
+ expect_warn_deprecation_with_call_site(__FILE__, __LINE__ + 2,
72
+ /The #{formatter_class} formatter uses the deprecated formatter interface/)
73
+ loader.add formatter_class, output
74
+ end
75
+ end
76
+
77
+ it "finds a formatter by class fully qualified name" do
78
+ stub_const("RSpec::CustomFormatter", (Class.new(BaseFormatter)))
79
+ Loader.formatters[RSpec::CustomFormatter] = []
80
+ loader.add "RSpec::CustomFormatter", output
81
+ expect(loader.formatters.first).to be_an_instance_of(RSpec::CustomFormatter)
82
+ end
83
+
84
+ it "requires a formatter file based on its fully qualified name" do
85
+ expect(loader).to receive(:require).with('rspec/custom_formatter') do
86
+ stub_const("RSpec::CustomFormatter", (Class.new(BaseFormatter)))
87
+ Loader.formatters[RSpec::CustomFormatter] = []
88
+ end
89
+ loader.add "RSpec::CustomFormatter", output
90
+ expect(loader.formatters.first).to be_an_instance_of(RSpec::CustomFormatter)
91
+ end
92
+
93
+ it "raises NameError if class is unresolvable" do
94
+ expect(loader).to receive(:require).with('rspec/custom_formatter3')
95
+ expect { loader.add "RSpec::CustomFormatter3", output }.to raise_error(NameError)
96
+ end
97
+
98
+ it "raises ArgumentError if formatter is unknown" do
99
+ expect { loader.add :progresss, output }.to raise_error(ArgumentError)
100
+ end
101
+
102
+ context "with a 2nd arg defining the output" do
103
+ it "creates a file at that path and sets it as the output" do
104
+ loader.add('doc', path)
105
+ expect(loader.formatters.first.output).to be_a(File)
106
+ expect(loader.formatters.first.output.path).to eq(path)
107
+ end
108
+
109
+ it "accepts Pathname objects for file paths" do
110
+ pathname = Pathname.new(path)
111
+ loader.add('doc', pathname)
112
+ expect(loader.formatters.first.output).to be_a(File)
113
+ expect(loader.formatters.first.output.path).to eq(path)
114
+ end
115
+ end
116
+
117
+ context "when a duplicate formatter exists" do
118
+ before { loader.add :documentation, output }
119
+
120
+ it "doesn't add the formatter for the same output target" do
121
+ expect {
122
+ loader.add :documentation, output
123
+ }.not_to change { loader.formatters.length }
124
+ end
125
+
126
+ it "adds the formatter for different output targets" do
127
+ expect {
128
+ loader.add :documentation, path
129
+ }.to change { loader.formatters.length }
130
+ end
131
+ end
132
+ end
133
+
134
+ describe "#setup_default", "with profiling enabled" do
135
+ let(:setup_default) { loader.setup_default output, output }
136
+
137
+ before do
138
+ allow(RSpec.configuration).to receive(:profile_examples?) { true }
139
+ end
140
+
141
+ context "without an existing profile formatter" do
142
+ it "will add the profile formatter" do
143
+ allow(reporter).to receive(:registered_listeners).with(:dump_profile) { [] }
144
+ setup_default
145
+ expect(loader.formatters.last).to be_a ::RSpec::Core::Formatters::ProfileFormatter
146
+ end
147
+ end
148
+
149
+ context "when a formatter that implement #dump_profile is added" do
150
+ it "wont add the profile formatter" do
151
+ allow(reporter).to receive(:registered_listeners).with(:dump_profile) { [:json] }
152
+ setup_default
153
+ expect(
154
+ loader.formatters.map(&:class)
155
+ ).to_not include ::RSpec::Core::Formatters::ProfileFormatter
156
+ end
157
+ end
158
+ end
159
+ end
160
+ end
@@ -0,0 +1,227 @@
1
+ require "spec_helper"
2
+
3
+ module RSpec::Core
4
+ RSpec.describe "config block hook filtering" do
5
+ describe "unfiltered hooks" do
6
+ it "is run" do
7
+ filters = []
8
+ RSpec.configure do |c|
9
+ c.before(:all) { filters << "before all in config"}
10
+ c.around(:each) {|example| filters << "around each in config"; example.run}
11
+ c.before(:each) { filters << "before each in config"}
12
+ c.after(:each) { filters << "after each in config"}
13
+ c.after(:all) { filters << "after all in config"}
14
+ end
15
+ group = ExampleGroup.describe
16
+ group.example("example") {}
17
+ group.run
18
+ expect(filters).to eq([
19
+ "before all in config",
20
+ "around each in config",
21
+ "before each in config",
22
+ "after each in config",
23
+ "after all in config"
24
+ ])
25
+ end
26
+ end
27
+
28
+ describe "hooks with single filters" do
29
+
30
+ context "with no scope specified" do
31
+ it "is run around|before|after :each if the filter matches the example group's filter" do
32
+ filters = []
33
+ RSpec.configure do |c|
34
+ c.around(:match => true) {|example| filters << "around each in config"; example.run}
35
+ c.before(:match => true) { filters << "before each in config"}
36
+ c.after(:match => true) { filters << "after each in config"}
37
+ end
38
+ group = ExampleGroup.describe("group", :match => true)
39
+ group.example("example") {}
40
+ group.run
41
+ expect(filters).to eq([
42
+ "around each in config",
43
+ "before each in config",
44
+ "after each in config"
45
+ ])
46
+ end
47
+ end
48
+
49
+ it "is run if the filter matches the example group's filter" do
50
+ filters = []
51
+ RSpec.configure do |c|
52
+ c.before(:all, :match => true) { filters << "before all in config"}
53
+ c.around(:each, :match => true) {|example| filters << "around each in config"; example.run}
54
+ c.before(:each, :match => true) { filters << "before each in config"}
55
+ c.after(:each, :match => true) { filters << "after each in config"}
56
+ c.after(:all, :match => true) { filters << "after all in config"}
57
+ end
58
+ group = ExampleGroup.describe("group", :match => true)
59
+ group.example("example") {}
60
+ group.run
61
+ expect(filters).to eq([
62
+ "before all in config",
63
+ "around each in config",
64
+ "before each in config",
65
+ "after each in config",
66
+ "after all in config"
67
+ ])
68
+ end
69
+
70
+ it "runs before|after :all hooks on matching nested example groups" do
71
+ filters = []
72
+ RSpec.configure do |c|
73
+ c.before(:all, :match => true) { filters << :before_all }
74
+ c.after(:all, :match => true) { filters << :after_all }
75
+ end
76
+
77
+ example_1_filters = example_2_filters = nil
78
+
79
+ group = ExampleGroup.describe "group" do
80
+ it("example 1") { example_1_filters = filters.dup }
81
+ describe "subgroup", :match => true do
82
+ it("example 2") { example_2_filters = filters.dup }
83
+ end
84
+ end
85
+ group.run
86
+
87
+ expect(example_1_filters).to be_empty
88
+ expect(example_2_filters).to eq([:before_all])
89
+ expect(filters).to eq([:before_all, :after_all])
90
+ end
91
+
92
+ it "runs before|after :all hooks only on the highest level group that matches the filter" do
93
+ filters = []
94
+ RSpec.configure do |c|
95
+ c.before(:all, :match => true) { filters << :before_all }
96
+ c.after(:all, :match => true) { filters << :after_all }
97
+ end
98
+
99
+ example_1_filters = example_2_filters = example_3_filters = nil
100
+
101
+ group = ExampleGroup.describe "group", :match => true do
102
+ it("example 1") { example_1_filters = filters.dup }
103
+ describe "subgroup", :match => true do
104
+ it("example 2") { example_2_filters = filters.dup }
105
+ describe "sub-subgroup", :match => true do
106
+ it("example 3") { example_3_filters = filters.dup }
107
+ end
108
+ end
109
+ end
110
+ group.run
111
+
112
+ expect(example_1_filters).to eq([:before_all])
113
+ expect(example_2_filters).to eq([:before_all])
114
+ expect(example_3_filters).to eq([:before_all])
115
+
116
+ expect(filters).to eq([:before_all, :after_all])
117
+ end
118
+
119
+ it "does not run if the filter doesn't match the example group's filter" do
120
+ filters = []
121
+ RSpec.configure do |c|
122
+ c.before(:all, :match => false) { filters << "before all in config"}
123
+ c.around(:each, :match => false) {|example| filters << "around each in config"; example.run}
124
+ c.before(:each, :match => false) { filters << "before each in config"}
125
+ c.after(:each, :match => false) { filters << "after each in config"}
126
+ c.after(:all, :match => false) { filters << "after all in config"}
127
+ end
128
+ group = ExampleGroup.describe(:match => true)
129
+ group.example("example") {}
130
+ group.run
131
+ expect(filters).to eq([])
132
+ end
133
+
134
+ context "when the hook filters apply to individual examples instead of example groups" do
135
+ let(:each_filters) { [] }
136
+ let(:all_filters) { [] }
137
+
138
+ let(:group) do
139
+ md = example_metadata
140
+ ExampleGroup.describe do
141
+ it("example", md) { }
142
+ end
143
+ end
144
+
145
+ def filters
146
+ each_filters + all_filters
147
+ end
148
+
149
+ before(:each) do
150
+ af, ef = all_filters, each_filters
151
+
152
+ RSpec.configure do |c|
153
+ c.before(:all, :foo => :bar) { af << "before all in config"}
154
+ c.around(:each, :foo => :bar) {|example| ef << "around each in config"; example.run}
155
+ c.before(:each, :foo => :bar) { ef << "before each in config"}
156
+ c.after(:each, :foo => :bar) { ef << "after each in config"}
157
+ c.after(:all, :foo => :bar) { af << "after all in config"}
158
+ end
159
+
160
+ group.run
161
+ end
162
+
163
+ describe 'an example with matching metadata' do
164
+ let(:example_metadata) { { :foo => :bar } }
165
+
166
+ it "runs the `:each` hooks" do
167
+ expect(each_filters).to eq([
168
+ 'around each in config',
169
+ 'before each in config',
170
+ 'after each in config'
171
+ ])
172
+ end
173
+
174
+ it "does not run the `:all` hooks" do
175
+ expect(all_filters).to be_empty
176
+ end
177
+ end
178
+
179
+ describe 'an example without matching metadata' do
180
+ let(:example_metadata) { { :foo => :bazz } }
181
+
182
+ it "does not run any of the hooks" do
183
+ expect(filters).to be_empty
184
+ end
185
+ end
186
+ end
187
+ end
188
+
189
+ describe "hooks with multiple filters" do
190
+ it "is run if all hook filters match the group's filters" do
191
+ filters = []
192
+ RSpec.configure do |c|
193
+ c.before(:all, :one => 1) { filters << "before all in config"}
194
+ c.around(:each, :two => 2, :one => 1) {|example| filters << "around each in config"; example.run}
195
+ c.before(:each, :one => 1, :two => 2) { filters << "before each in config"}
196
+ c.after(:each, :one => 1, :two => 2, :three => 3) { filters << "after each in config"}
197
+ c.after(:all, :one => 1, :three => 3) { filters << "after all in config"}
198
+ end
199
+ group = ExampleGroup.describe("group", :one => 1, :two => 2, :three => 3)
200
+ group.example("example") {}
201
+ group.run
202
+ expect(filters).to eq([
203
+ "before all in config",
204
+ "around each in config",
205
+ "before each in config",
206
+ "after each in config",
207
+ "after all in config"
208
+ ])
209
+ end
210
+
211
+ it "does not run if some hook filters don't match the group's filters" do
212
+ filters = []
213
+ RSpec.configure do |c|
214
+ c.before(:all, :one => 1, :four => 4) { filters << "before all in config"}
215
+ c.around(:each, :two => 2, :four => 4) {|example| filters << "around each in config"; example.run}
216
+ c.before(:each, :one => 1, :two => 2, :four => 4) { filters << "before each in config"}
217
+ c.after(:each, :one => 1, :two => 2, :three => 3, :four => 4) { filters << "after each in config"}
218
+ c.after(:all, :one => 1, :three => 3, :four => 4) { filters << "after all in config"}
219
+ end
220
+ group = ExampleGroup.describe(:one => 1, :two => 2, :three => 3)
221
+ group.example("example") {}
222
+ group.run
223
+ expect(filters).to eq([])
224
+ end
225
+ end
226
+ end
227
+ end
@@ -0,0 +1,447 @@
1
+ require "spec_helper"
2
+
3
+ module RSpec::Core
4
+ RSpec.describe Hooks do
5
+ class HooksHost
6
+ include Hooks
7
+
8
+ def parent_groups
9
+ []
10
+ end
11
+ end
12
+
13
+ [:before, :after, :around].each do |type|
14
+ [:example, :context].each do |scope|
15
+ next if type == :around && scope == :context
16
+
17
+ describe "##{type}(#{scope})" do
18
+ it_behaves_like "metadata hash builder" do
19
+ define_method :metadata_hash do |*args|
20
+ instance = HooksHost.new
21
+ args.unshift scope if scope
22
+ hooks = instance.send(type, *args) {}
23
+ hooks.first.options
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ describe "##{type}(no scope)" do
30
+ let(:instance) { HooksHost.new }
31
+
32
+ it "defaults to :example scope if no arguments are given" do
33
+ hooks = instance.send(type) {}
34
+ hook = hooks.first
35
+ expect(instance.hooks[type][:example]).to include(hook)
36
+ end
37
+
38
+ it "defaults to :example scope if the only argument is a metadata hash" do
39
+ hooks = instance.send(type, :foo => :bar) {}
40
+ hook = hooks.first
41
+ expect(instance.hooks[type][:example]).to include(hook)
42
+ end
43
+
44
+ it "raises an error if only metadata symbols are given as arguments" do
45
+ expect { instance.send(type, :foo, :bar) {} }.to raise_error(ArgumentError)
46
+ end
47
+ end
48
+ end
49
+
50
+ [:before, :after].each do |type|
51
+ [:example, :context, :suite].each do |scope|
52
+ describe "##{type}(#{scope.inspect})" do
53
+ let(:instance) { HooksHost.new }
54
+ let!(:hook) do
55
+ hooks = instance.send(type, scope) {}
56
+ hooks.first
57
+ end
58
+
59
+ it "does not make #{scope.inspect} a metadata key" do
60
+ expect(hook.options).to be_empty
61
+ end
62
+
63
+ it "is scoped to #{scope.inspect}" do
64
+ expect(instance.hooks[type][scope]).to include(hook)
65
+ end
66
+
67
+ it 'does not run when in dry run mode' do
68
+ RSpec.configuration.dry_run = true
69
+
70
+ expect { |b|
71
+ instance.send(type, scope, &b)
72
+ instance.hooks.run(type, scope, double("Example").as_null_object)
73
+ }.not_to yield_control
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ context "when an error happens in `after(:suite)`" do
80
+ it 'allows the error to propagate to the user' do
81
+ RSpec.configuration.after(:suite) { 1 / 0 }
82
+
83
+ expect {
84
+ RSpec.configuration.hooks.run(:after, :suite, SuiteHookContext.new)
85
+ }.to raise_error(ZeroDivisionError)
86
+ end
87
+ end
88
+
89
+ context "when an error happens in `before(:suite)`" do
90
+ it 'allows the error to propagate to the user' do
91
+ RSpec.configuration.before(:suite) { 1 / 0 }
92
+
93
+ expect {
94
+ RSpec.configuration.hooks.run(:before, :suite, SuiteHookContext.new)
95
+ }.to raise_error(ZeroDivisionError)
96
+ end
97
+ end
98
+
99
+ describe "#around" do
100
+ context "when it does not run the example" do
101
+ context "for a hook declared in the group" do
102
+ it 'converts the example to a skipped example so the user is made aware of it' do
103
+ ex = nil
104
+ group = RSpec.describe do
105
+ around { }
106
+ ex = example("not run") { }
107
+ end
108
+
109
+ group.run
110
+ expect(ex.execution_result.status).to eq(:pending)
111
+ end
112
+ end
113
+
114
+ context "for a hook declared in config" do
115
+ it 'converts the example to a skipped example so the user is made aware of it' do
116
+ RSpec.configuration.around { }
117
+
118
+ ex = nil
119
+ group = RSpec.describe do
120
+ ex = example("not run") { }
121
+ end
122
+
123
+ group.run
124
+ expect(ex.execution_result.status).to eq(:pending)
125
+ end
126
+ end
127
+
128
+ if RUBY_VERSION.to_f < 1.9
129
+ def hook_desc(_)
130
+ "around hook"
131
+ end
132
+ else
133
+ def hook_desc(line)
134
+ "around hook at #{Metadata.relative_path(__FILE__)}:#{line}"
135
+ end
136
+ end
137
+
138
+ it 'indicates which around hook did not run the example in the pending message' do
139
+ ex = nil
140
+ line = __LINE__ + 3
141
+ group = RSpec.describe do
142
+ around { |e| e.run }
143
+ around { }
144
+ around { |e| e.run }
145
+
146
+ ex = example("not run") { }
147
+ end
148
+
149
+ group.run
150
+ expect(ex.execution_result.pending_message).to eq("#{hook_desc(line)} did not execute the example")
151
+ end
152
+ end
153
+
154
+ it 'considers the hook to have run when passed as a block to a method that yields' do
155
+ ex = nil
156
+ group = RSpec.describe do
157
+ def transactionally
158
+ yield
159
+ end
160
+
161
+ around { |e| transactionally(&e) }
162
+ ex = example("run") { }
163
+ end
164
+
165
+ group.run
166
+ expect(ex.execution_result.status).to eq(:passed)
167
+ end
168
+
169
+ it 'does not consider the hook to have run when passed as a block to a method that does not yield' do
170
+ ex = nil
171
+ group = RSpec.describe do
172
+ def transactionally; end
173
+
174
+ around { |e| transactionally(&e) }
175
+ ex = example("not run") { }
176
+ end
177
+
178
+ group.run
179
+ expect(ex.execution_result.status).to eq(:pending)
180
+ end
181
+
182
+ context "when not running the example within the around block" do
183
+ it "does not run the example" do
184
+ examples = []
185
+ group = ExampleGroup.describe do
186
+ around do
187
+ end
188
+ it "foo" do
189
+ examples << self
190
+ end
191
+ end
192
+ group.run
193
+ expect(examples).to eq([])
194
+ end
195
+ end
196
+
197
+ context "when running the example within the around block" do
198
+ it "runs the example" do
199
+ examples = []
200
+ group = ExampleGroup.describe do
201
+ around do |example|
202
+ example.run
203
+ end
204
+ it "foo" do
205
+ examples << self
206
+ end
207
+ end
208
+ group.run
209
+ expect(examples.count).to eq(1)
210
+ end
211
+
212
+ it "exposes example metadata to each around hook" do
213
+ foos = {}
214
+ group = ExampleGroup.describe do
215
+ around do |ex|
216
+ foos[:first] = ex.metadata[:foo]
217
+ ex.run
218
+ end
219
+ around do |ex|
220
+ foos[:second] = ex.metadata[:foo]
221
+ ex.run
222
+ end
223
+ it "does something", :foo => :bar do
224
+ end
225
+ end
226
+
227
+ group.run
228
+ expect(foos).to eq({:first => :bar, :second => :bar})
229
+ end
230
+
231
+ it "exposes the full example interface to each around hook" do
232
+ data_1 = {}
233
+ data_2 = {}
234
+ ex = nil
235
+
236
+ group = ExampleGroup.describe do
237
+ def self.data_from(ex)
238
+ {
239
+ :description => ex.description,
240
+ :full_description => ex.full_description,
241
+ :example_group => ex.example_group,
242
+ :file_path => ex.file_path,
243
+ :location => ex.location
244
+ }
245
+ end
246
+
247
+ around do |example|
248
+ data_1.update(self.class.data_from example)
249
+ example.run
250
+ end
251
+
252
+ around do |example|
253
+ data_2.update(self.class.data_from example)
254
+ example.run
255
+ end
256
+
257
+ ex = example("the example") { }
258
+ end
259
+
260
+ group.run
261
+
262
+ expected_data = group.data_from(ex)
263
+ expect(data_1).to eq(expected_data)
264
+ expect(data_2).to eq(expected_data)
265
+ end
266
+
267
+ it "exposes a sensible inspect value" do
268
+ inspect_value = nil
269
+ group = ExampleGroup.describe do
270
+ around do |ex|
271
+ inspect_value = ex.inspect
272
+ end
273
+
274
+ it "does something" do
275
+ end
276
+ end
277
+
278
+ group.run
279
+ expect(inspect_value).to match(/ExampleProcsy/)
280
+ end
281
+ end
282
+
283
+ context "when running the example within a block passed to a method" do
284
+ it "runs the example" do
285
+ examples = []
286
+ group = ExampleGroup.describe do
287
+ def yielder
288
+ yield
289
+ end
290
+
291
+ around do |example|
292
+ yielder { example.run }
293
+ end
294
+
295
+ it "foo" do
296
+ examples << self
297
+ end
298
+ end
299
+ group.run
300
+ expect(examples.count).to eq(1)
301
+ end
302
+ end
303
+ end
304
+
305
+ [:all, :each].each do |scope|
306
+ describe "prepend_before(#{scope})" do
307
+ it "adds to the front of the list of before(:#{scope}) hooks" do
308
+ messages = []
309
+
310
+ RSpec.configure { |config| config.before(scope) { messages << "config 3" } }
311
+ RSpec.configure { |config| config.prepend_before(scope) { messages << "config 2" } }
312
+ RSpec.configure { |config| config.before(scope) { messages << "config 4" } }
313
+ RSpec.configure { |config| config.prepend_before(scope) { messages << "config 1" } }
314
+
315
+ group = ExampleGroup.describe { example {} }
316
+ group.before(scope) { messages << "group 3" }
317
+ group.prepend_before(scope) { messages << "group 2" }
318
+ group.before(scope) { messages << "group 4" }
319
+ group.prepend_before(scope) { messages << "group 1" }
320
+
321
+ group.run
322
+
323
+ expect(messages).to eq([
324
+ 'group 1',
325
+ 'group 2',
326
+ 'config 1',
327
+ 'config 2',
328
+ 'config 3',
329
+ 'config 4',
330
+ 'group 3',
331
+ 'group 4'
332
+ ])
333
+ end
334
+ end
335
+
336
+ describe "append_before(#{scope})" do
337
+ it "adds to the back of the list of before(:#{scope}) hooks (same as `before`)" do
338
+ messages = []
339
+
340
+ RSpec.configure { |config| config.before(scope) { messages << "config 1" } }
341
+ RSpec.configure { |config| config.append_before(scope) { messages << "config 2" } }
342
+ RSpec.configure { |config| config.before(scope) { messages << "config 3" } }
343
+
344
+ group = ExampleGroup.describe { example {} }
345
+ group.before(scope) { messages << "group 1" }
346
+ group.append_before(scope) { messages << "group 2" }
347
+ group.before(scope) { messages << "group 3" }
348
+
349
+ group.run
350
+
351
+ expect(messages).to eq([
352
+ 'config 1',
353
+ 'config 2',
354
+ 'config 3',
355
+ 'group 1',
356
+ 'group 2',
357
+ 'group 3'
358
+ ])
359
+ end
360
+ end
361
+
362
+ describe "prepend_after(#{scope})" do
363
+ it "adds to the front of the list of after(:#{scope}) hooks (same as `after`)" do
364
+ messages = []
365
+
366
+ RSpec.configure { |config| config.after(scope) { messages << "config 3" } }
367
+ RSpec.configure { |config| config.prepend_after(scope) { messages << "config 2" } }
368
+ RSpec.configure { |config| config.after(scope) { messages << "config 1" } }
369
+
370
+ group = ExampleGroup.describe { example {} }
371
+ group.after(scope) { messages << "group 3" }
372
+ group.prepend_after(scope) { messages << "group 2" }
373
+ group.after(scope) { messages << "group 1" }
374
+
375
+ group.run
376
+
377
+ expect(messages).to eq([
378
+ 'group 1',
379
+ 'group 2',
380
+ 'group 3',
381
+ 'config 1',
382
+ 'config 2',
383
+ 'config 3'
384
+ ])
385
+ end
386
+ end
387
+
388
+ describe "append_after(#{scope})" do
389
+ it "adds to the back of the list of after(:#{scope}) hooks" do
390
+ messages = []
391
+
392
+ RSpec.configure { |config| config.after(scope) { messages << "config 2" } }
393
+ RSpec.configure { |config| config.append_after(scope) { messages << "config 3" } }
394
+ RSpec.configure { |config| config.after(scope) { messages << "config 1" } }
395
+ RSpec.configure { |config| config.append_after(scope) { messages << "config 4" } }
396
+
397
+ group = ExampleGroup.describe { example {} }
398
+ group.after(scope) { messages << "group 2" }
399
+ group.append_after(scope) { messages << "group 3" }
400
+ group.after(scope) { messages << "group 1" }
401
+ group.append_after(scope) { messages << "group 4" }
402
+
403
+ group.run
404
+
405
+ expect(messages).to eq([
406
+ 'group 1',
407
+ 'group 2',
408
+ 'config 1',
409
+ 'config 2',
410
+ 'config 3',
411
+ 'config 4',
412
+ 'group 3',
413
+ 'group 4'
414
+ ])
415
+ end
416
+ end
417
+ end
418
+
419
+ describe "lambda" do
420
+ it "can be used as a hook" do
421
+ messages = []
422
+ count = 0
423
+ hook = lambda {|e| messages << "hook #{count = count + 1}"; e.run }
424
+
425
+ RSpec.configure do |c|
426
+ c.around(:each, &hook)
427
+ c.around(:each, &hook)
428
+ end
429
+
430
+ group = ExampleGroup.describe { example { messages << "example" } }
431
+ group.run
432
+ expect(messages).to eq ["hook 1", "hook 2", "example"]
433
+ end
434
+ end
435
+
436
+ it "only defines methods that are intended to be part of RSpec's public API (+ `hooks`)" do
437
+ expect(Hooks.private_instance_methods).to eq([])
438
+
439
+ expect(Hooks.instance_methods.map(&:to_sym)).to match_array([
440
+ :before, :after, :around,
441
+ :append_before, :append_after,
442
+ :prepend_before, :prepend_after,
443
+ :hooks
444
+ ])
445
+ end
446
+ end
447
+ end