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,181 @@
1
+ require 'spec_helper'
2
+
3
+ module RSpec
4
+ module Core
5
+ RSpec.describe MetadataFilter do
6
+ describe ".filter_applies?" do
7
+ attr_accessor :parent_group_metadata, :group_metadata, :example_metadata
8
+
9
+ def create_metadatas
10
+ container = self
11
+
12
+ RSpec.describe "parent group", :caller => ["foo_spec.rb:#{__LINE__}"] do; container.parent_group_metadata = metadata
13
+ describe "group", :caller => ["foo_spec.rb:#{__LINE__}"] do; container.group_metadata = metadata
14
+ container.example_metadata = it("example", :caller => ["foo_spec.rb:#{__LINE__}"], :if => true).metadata
15
+ end
16
+ end
17
+ end
18
+
19
+ let(:world) { World.new }
20
+
21
+ before do
22
+ allow(RSpec).to receive(:world) { world }
23
+ create_metadatas
24
+ end
25
+
26
+ def filter_applies?(key, value, metadata)
27
+ MetadataFilter.filter_applies?(key, value, metadata)
28
+ end
29
+
30
+ context "with locations" do
31
+ let(:condition_key){ :locations }
32
+ let(:parent_group_condition) do
33
+ {File.expand_path(parent_group_metadata[:file_path]) => [parent_group_metadata[:line_number]]}
34
+ end
35
+ let(:group_condition) do
36
+ {File.expand_path(group_metadata[:file_path]) => [group_metadata[:line_number]]}
37
+ end
38
+ let(:example_condition) do
39
+ {File.expand_path(example_metadata[:file_path]) => [example_metadata[:line_number]]}
40
+ end
41
+ let(:between_examples_condition) do
42
+ {File.expand_path(group_metadata[:file_path]) => [group_metadata[:line_number] + 1]}
43
+ end
44
+ let(:next_example_condition) do
45
+ {File.expand_path(example_metadata[:file_path]) => [example_metadata[:line_number] + 2]}
46
+ end
47
+
48
+ let(:preceeding_declaration_lines) {{
49
+ parent_group_metadata[:line_number] => parent_group_metadata[:line_number],
50
+ group_metadata[:line_number] => group_metadata[:line_number],
51
+ example_metadata[:line_number] => example_metadata[:line_number],
52
+ (example_metadata[:line_number] + 1) => example_metadata[:line_number],
53
+ (example_metadata[:line_number] + 2) => example_metadata[:line_number] + 2,
54
+ }}
55
+
56
+ before do
57
+ expect(world).to receive(:preceding_declaration_line).at_least(:once) do |v|
58
+ preceeding_declaration_lines[v]
59
+ end
60
+ end
61
+
62
+ it "matches the group when the line_number is the example group line number" do
63
+ # this call doesn't really make sense since filter_applies? is only called
64
+ # for example metadata not group metadata
65
+ expect(filter_applies?(condition_key, group_condition, group_metadata)).to be_truthy
66
+ end
67
+
68
+ it "matches the example when the line_number is the grandparent example group line number" do
69
+ expect(filter_applies?(condition_key, parent_group_condition, example_metadata)).to be_truthy
70
+ end
71
+
72
+ it "matches the example when the line_number is the parent example group line number" do
73
+ expect(filter_applies?(condition_key, group_condition, example_metadata)).to be_truthy
74
+ end
75
+
76
+ it "matches the example when the line_number is the example line number" do
77
+ expect(filter_applies?(condition_key, example_condition, example_metadata)).to be_truthy
78
+ end
79
+
80
+ it "matches when the line number is between this example and the next" do
81
+ expect(filter_applies?(condition_key, between_examples_condition, example_metadata)).to be_truthy
82
+ end
83
+
84
+ it "does not match when the line number matches the next example" do
85
+ expect(filter_applies?(condition_key, next_example_condition, example_metadata)).to be_falsey
86
+ end
87
+ end
88
+
89
+ it "ignores location filters for other files" do
90
+ expect(filter_applies?(:locations, {"/path/to/other_spec.rb" => [3,5,7]}, example_metadata)).to be_truthy
91
+ end
92
+
93
+ it "matches a proc with no arguments that evaluates to true" do
94
+ expect(filter_applies?(:if, lambda { true }, example_metadata)).to be_truthy
95
+ end
96
+
97
+ it "matches a proc that evaluates to true" do
98
+ expect(filter_applies?(:if, lambda { |v| v }, example_metadata)).to be_truthy
99
+ end
100
+
101
+ it "does not match a proc that evaluates to false" do
102
+ expect(filter_applies?(:if, lambda { |v| !v }, example_metadata)).to be_falsey
103
+ end
104
+
105
+ it "matches a proc with an arity of 2" do
106
+ example_metadata[:foo] = nil
107
+ expect(filter_applies?(:foo, lambda { |v, m| m == example_metadata }, example_metadata)).to be_truthy
108
+ end
109
+
110
+ it "raises an error when the proc has an incorrect arity" do
111
+ expect {
112
+ filter_applies?(:if, lambda { |a,b,c| true }, example_metadata)
113
+ }.to raise_error(ArgumentError)
114
+ end
115
+
116
+ context "with a nested hash" do
117
+ it 'matches when the nested entry matches' do
118
+ metadata = { :foo => { :bar => "words" } }
119
+ expect(filter_applies?(:foo, { :bar => /wor/ }, metadata)).to be_truthy
120
+ end
121
+
122
+ it 'does not match when the nested entry does not match' do
123
+ metadata = { :foo => { :bar => "words" } }
124
+ expect(filter_applies?(:foo, { :bar => /sword/ }, metadata)).to be_falsey
125
+ end
126
+
127
+ it 'does not match when the metadata lacks the key' do
128
+ expect(filter_applies?(:foo, { :bar => /sword/ }, {})).to be_falsey
129
+ end
130
+
131
+ it 'does not match when the metadata does not have a hash entry for the key' do
132
+ metadata = { :foo => "words" }
133
+ expect(filter_applies?(:foo, { :bar => /word/ }, metadata)).to be_falsey
134
+ end
135
+ end
136
+
137
+ context "with an Array" do
138
+ let(:metadata_with_array) do
139
+ meta = nil
140
+ RSpec.describe("group") do
141
+ meta = example('example_with_array', :tag => [:one, 2, 'three', /four/]).metadata
142
+ end
143
+ meta
144
+ end
145
+
146
+ it "matches a symbol" do
147
+ expect(filter_applies?(:tag, 'one', metadata_with_array)).to be_truthy
148
+ expect(filter_applies?(:tag, :one, metadata_with_array)).to be_truthy
149
+ expect(filter_applies?(:tag, 'two', metadata_with_array)).to be_falsey
150
+ end
151
+
152
+ it "matches a string" do
153
+ expect(filter_applies?(:tag, 'three', metadata_with_array)).to be_truthy
154
+ expect(filter_applies?(:tag, :three, metadata_with_array)).to be_truthy
155
+ expect(filter_applies?(:tag, 'tree', metadata_with_array)).to be_falsey
156
+ end
157
+
158
+ it "matches an integer" do
159
+ expect(filter_applies?(:tag, '2', metadata_with_array)).to be_truthy
160
+ expect(filter_applies?(:tag, 2, metadata_with_array)).to be_truthy
161
+ expect(filter_applies?(:tag, 3, metadata_with_array)).to be_falsey
162
+ end
163
+
164
+ it "matches a regexp" do
165
+ expect(filter_applies?(:tag, 'four', metadata_with_array)).to be_truthy
166
+ expect(filter_applies?(:tag, 'fourtune', metadata_with_array)).to be_truthy
167
+ expect(filter_applies?(:tag, 'fortune', metadata_with_array)).to be_falsey
168
+ end
169
+
170
+ it "matches a proc that evaluates to true" do
171
+ expect(filter_applies?(:tag, lambda { |values| values.include? 'three' }, metadata_with_array)).to be_truthy
172
+ end
173
+
174
+ it "does not match a proc that evaluates to false" do
175
+ expect(filter_applies?(:tag, lambda { |values| values.include? 'nothing' }, metadata_with_array)).to be_falsey
176
+ end
177
+ end
178
+ end
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,642 @@
1
+ require 'spec_helper'
2
+
3
+ module RSpec
4
+ module Core
5
+ RSpec.describe Metadata do
6
+
7
+ describe '.relative_path' do
8
+ let(:here) { File.expand_path(".") }
9
+ it "transforms absolute paths to relative paths" do
10
+ expect(Metadata.relative_path(here)).to eq "."
11
+ end
12
+ it "transforms absolute paths to relative paths anywhere in its argument" do
13
+ expect(Metadata.relative_path("foo #{here} bar")).to eq "foo . bar"
14
+ end
15
+ it "returns nil if passed an unparseable file:line combo" do
16
+ expect(Metadata.relative_path("-e:1")).to be_nil
17
+ end
18
+ # I have no idea what line = line.sub(/\A([^:]+:\d+)$/, '\\1') is supposed to do
19
+ it "gracefully returns nil if run in a secure thread" do
20
+ safely do
21
+ value = Metadata.relative_path(".")
22
+ # on some rubies, File.expand_path is not a security error, so accept "." as well
23
+ expect([nil, "."]).to include(value)
24
+ end
25
+ end
26
+
27
+ it 'should not transform directories beginning with the same prefix' do
28
+ #E.g. /foo/bar_baz is not relative to /foo/bar !!
29
+
30
+ similar_directory = "#{File.expand_path(".")}_similar"
31
+ expect(Metadata.relative_path(similar_directory)).to eq similar_directory
32
+ end
33
+
34
+ end
35
+
36
+ context "when created" do
37
+ Metadata::RESERVED_KEYS.each do |key|
38
+ it "prohibits :#{key} as a hash key for an example group" do
39
+ expect {
40
+ RSpec.describe("group", key => {})
41
+ }.to raise_error(/:#{key} is not allowed/)
42
+ end
43
+
44
+ it "prohibits :#{key} as a hash key for an example" do
45
+ group = RSpec.describe("group")
46
+ expect {
47
+ group.example("example", key => {})
48
+ }.to raise_error(/:#{key} is not allowed/)
49
+ end
50
+ end
51
+
52
+ it "uses :caller if passed as part of the user metadata" do
53
+ m = nil
54
+
55
+ RSpec.describe('group', :caller => ['example_file:42']) do
56
+ m = metadata
57
+ end
58
+
59
+ expect(m[:location]).to eq("example_file:42")
60
+ end
61
+ end
62
+
63
+ context "for an example" do
64
+ let(:line_number) { __LINE__ + 3 }
65
+ def metadata_for(*args)
66
+ RSpec.describe("group description") do
67
+ return example(*args).metadata
68
+ end
69
+ end
70
+ alias example_metadata metadata_for
71
+
72
+ RSpec::Matchers.define :have_value do |value|
73
+ chain(:for) { |key| @key = key }
74
+
75
+ match do |metadata|
76
+ expect(metadata.fetch(@key)).to eq(value)
77
+ expect(metadata[@key]).to eq(value)
78
+ end
79
+ end
80
+
81
+ it "stores the description args" do
82
+ expect(metadata_for "example description").to have_value(["example description"]).for(:description_args)
83
+ end
84
+
85
+ it "ignores nil description args" do
86
+ expect(example_metadata).to have_value([]).for(:description_args)
87
+ end
88
+
89
+ it "stores the full_description (group description + example description)" do
90
+ expect(metadata_for "example description").to have_value("group description example description").for(:full_description)
91
+ end
92
+
93
+ it "creates an empty execution result" do
94
+ expect(example_metadata[:execution_result].to_h.reject { |_, v| v.nil? } ).to eq({})
95
+ end
96
+
97
+ it "extracts file path from caller" do
98
+ expect(example_metadata).to have_value(relative_path(__FILE__)).for(:file_path)
99
+ end
100
+
101
+ it "extracts line number from caller" do
102
+ expect(example_metadata).to have_value(line_number).for(:line_number)
103
+ end
104
+
105
+ it "extracts location from caller" do
106
+ expect(example_metadata).to have_value("#{relative_path(__FILE__)}:#{line_number}").for(:location)
107
+ end
108
+
109
+ it "uses :caller if passed as an option" do
110
+ example_metadata = metadata_for('example description', :caller => ['example_file:42'])
111
+ expect(example_metadata).to have_value("example_file:42").for(:location)
112
+ end
113
+
114
+ it "merges arbitrary options" do
115
+ expect(metadata_for("desc", :arbitrary => :options)).to have_value(:options).for(:arbitrary)
116
+ end
117
+
118
+ it "points :example_group to the same hash object as other examples in the same group" do
119
+ a = b = nil
120
+
121
+ RSpec.describe "group" do
122
+ a = example("foo").metadata[:example_group]
123
+ b = example("bar").metadata[:example_group]
124
+ end
125
+
126
+ a[:description] = "new description"
127
+
128
+ pending "Cannot maintain this and provide full `:example_group` backwards compatibility (see GH #1490):("
129
+ expect(b[:description]).to eq("new description")
130
+ end
131
+
132
+ it 'does not include example-group specific keys' do
133
+ metadata = nil
134
+
135
+ RSpec.describe "group" do
136
+ context "nested" do
137
+ metadata = example("foo").metadata
138
+ end
139
+ end
140
+
141
+ expect(metadata.keys).not_to include(:parent_example_group)
142
+ end
143
+ end
144
+
145
+ describe ":block" do
146
+ context "for example group metadata" do
147
+ it "contains the example group block" do
148
+ block = Proc.new { }
149
+ group = RSpec.describe("group", &block)
150
+ expect(group.metadata[:block]).to equal(block)
151
+ end
152
+ end
153
+
154
+ context "for example metadata" do
155
+ it "contains the example block" do
156
+ block = Proc.new { }
157
+ group = RSpec.describe("group")
158
+ example = group.example("example", &block)
159
+ expect(example.metadata[:block]).to equal(block)
160
+ end
161
+ end
162
+ end
163
+
164
+ describe ":described_class" do
165
+ value_from = lambda do |group|
166
+ group.metadata[:described_class]
167
+ end
168
+
169
+ context "in an outer group" do
170
+ define_method :value_for do |arg|
171
+ value_from[RSpec.describe(arg)]
172
+ end
173
+
174
+ context "with a String" do
175
+ it "returns nil" do
176
+ expect(value_for "group").to be_nil
177
+ end
178
+ end
179
+
180
+ context "with a Symbol" do
181
+ it "returns the symbol" do
182
+ expect(value_for :group).to be(:group)
183
+ end
184
+ end
185
+
186
+ context "with a class" do
187
+ it "returns the class" do
188
+ expect(value_for String).to be(String)
189
+ end
190
+ end
191
+ end
192
+
193
+ context "in a nested group" do
194
+ it "inherits the parent group's described class" do
195
+ value = nil
196
+
197
+ RSpec.describe(Hash) do
198
+ describe "sub context" do
199
+ value = value_from[self]
200
+ end
201
+ end
202
+
203
+ expect(value).to be(Hash)
204
+ end
205
+
206
+ it "sets the described class when passing a class" do
207
+ value = nil
208
+
209
+ RSpec.describe(String) do
210
+ describe Array do
211
+ value = value_from[self]
212
+ end
213
+ end
214
+
215
+ expect(value).to be(Array)
216
+ end
217
+
218
+ it 'does not override the :described_class when passing no describe args' do
219
+ value = nil
220
+
221
+ RSpec.describe(String) do
222
+ describe do
223
+ value = value_from[self]
224
+ end
225
+ end
226
+
227
+ expect(value).to be(String)
228
+ end
229
+
230
+ it "can override a parent group's described class using metdata" do
231
+ parent_value = child_value = grandchild_value = nil
232
+
233
+ RSpec.describe(String) do
234
+ parent_value = value_from[self]
235
+
236
+ describe "sub context" do
237
+ metadata[:described_class] = Hash
238
+ child_value = value_from[self]
239
+
240
+ describe "sub context" do
241
+ grandchild_value = value_from[self]
242
+ end
243
+ end
244
+ end
245
+
246
+ expect(grandchild_value).to be(Hash)
247
+ expect(child_value).to be(Hash)
248
+ expect(parent_value).to be(String)
249
+ end
250
+ end
251
+ end
252
+
253
+ describe ":description" do
254
+ context "on a example" do
255
+ it "just has the example description" do
256
+ value = nil
257
+
258
+ RSpec.describe "group" do
259
+ value = example("example").metadata[:description]
260
+ end
261
+
262
+ expect(value).to eq("example")
263
+ end
264
+ end
265
+
266
+ context "on a group" do
267
+ def group_value_for(*args)
268
+ value = nil
269
+
270
+ RSpec.describe(*args) do
271
+ value = metadata[:description]
272
+ end
273
+
274
+ value
275
+ end
276
+
277
+ context "with a string" do
278
+ it "provides the submitted description" do
279
+ expect(group_value_for "group").to eq("group")
280
+ end
281
+ end
282
+
283
+ context "with a non-string" do
284
+ it "provides the string form of the submitted object" do
285
+ expect(group_value_for Hash).to eq("Hash")
286
+ end
287
+ end
288
+
289
+ context "with a non-string and a string" do
290
+ it "concats the args" do
291
+ expect(group_value_for Object, 'group').to eq("Object group")
292
+ end
293
+ end
294
+
295
+ context "with a string and a non-string" do
296
+ it "concats the args" do
297
+ expect(group_value_for 'group', Object).to eq("group Object")
298
+ end
299
+ end
300
+
301
+ context "with empty args" do
302
+ it "returns empty string for [:description]" do
303
+ expect(group_value_for()).to eq("")
304
+ end
305
+ end
306
+ end
307
+ end
308
+
309
+ describe ":full_description" do
310
+ context "on an example" do
311
+ it "concats example group name and description" do
312
+ value = nil
313
+
314
+ RSpec.describe "group" do
315
+ value = example("example").metadata[:full_description]
316
+ end
317
+
318
+ expect(value).to eq("group example")
319
+ end
320
+ end
321
+
322
+ it "concats nested example group descriptions" do
323
+ group_value = example_value = nil
324
+
325
+ RSpec.describe "parent" do
326
+ describe "child" do
327
+ group_value = metadata[:full_description]
328
+ example_value = example("example").metadata[:full_description]
329
+ end
330
+ end
331
+
332
+ expect(group_value).to eq("parent child")
333
+ expect(example_value).to eq("parent child example")
334
+ end
335
+
336
+ it "concats nested example group descriptions three deep" do
337
+ grandparent_value = parent_value = child_value = example_value = nil
338
+
339
+ RSpec.describe "grandparent" do
340
+ grandparent_value = metadata[:full_description]
341
+ describe "parent" do
342
+ parent_value = metadata[:full_description]
343
+ describe "child" do
344
+ child_value = metadata[:full_description]
345
+ example_value = example("example").metadata[:full_description]
346
+ end
347
+ end
348
+ end
349
+
350
+ expect(grandparent_value).to eq("grandparent")
351
+ expect(parent_value).to eq("grandparent parent")
352
+ expect(child_value).to eq("grandparent parent child")
353
+ expect(example_value).to eq("grandparent parent child example")
354
+ end
355
+
356
+ %w[# . ::].each do |char|
357
+ context "with a 2nd arg starting with #{char}" do
358
+ it "removes the space" do
359
+ value = nil
360
+
361
+ RSpec.describe Array, "#{char}method" do
362
+ value = metadata[:full_description]
363
+ end
364
+
365
+ expect(value).to eq("Array#{char}method")
366
+ end
367
+ end
368
+
369
+ context "with a description starting with #{char} nested under a module" do
370
+ it "removes the space" do
371
+ value = nil
372
+
373
+ RSpec.describe Object do
374
+ describe "#{char}method" do
375
+ value = metadata[:full_description]
376
+ end
377
+ end
378
+
379
+ expect(value).to eq("Object#{char}method")
380
+ end
381
+ end
382
+
383
+ context "with a description starting with #{char} nested under a context string" do
384
+ it "does not remove the space" do
385
+ value = nil
386
+
387
+ RSpec.describe(Array) do
388
+ context "with 2 items" do
389
+ describe "#{char}method" do
390
+ value = metadata[:full_description]
391
+ end
392
+ end
393
+ end
394
+
395
+ expect(value).to eq("Array with 2 items #{char}method")
396
+ end
397
+ end
398
+ end
399
+ end
400
+
401
+ describe ":file_path" do
402
+ it "finds the first non-rspec lib file in the caller array" do
403
+ value = nil
404
+
405
+ RSpec.describe(:caller => ["./lib/rspec/core/foo.rb", "#{__FILE__}:#{__LINE__}"]) do
406
+ value = metadata[:file_path]
407
+ end
408
+
409
+ expect(value).to eq(relative_path(__FILE__))
410
+ end
411
+ end
412
+
413
+ describe ":line_number" do
414
+ def value_for(*args)
415
+ value = nil
416
+
417
+ @describe_line = __LINE__ + 1
418
+ RSpec.describe("group", *args) do
419
+ value = metadata[:line_number]
420
+ end
421
+
422
+ value
423
+ end
424
+
425
+ it "finds the line number with the first non-rspec lib file in the backtrace" do
426
+ expect(value_for()).to eq(@describe_line)
427
+ end
428
+
429
+ it "finds the line number with the first spec file with drive letter" do
430
+ expect(value_for(:caller => [ "C:/path/to/file_spec.rb:#{__LINE__}" ])).to eq(__LINE__)
431
+ end
432
+
433
+ it "uses the number after the first : for ruby 1.9" do
434
+ expect(value_for(:caller => [ "#{__FILE__}:#{__LINE__}:999" ])).to eq(__LINE__)
435
+ end
436
+ end
437
+
438
+ describe "child example group" do
439
+ it "nests the parent's example group metadata" do
440
+ child = parent = nil
441
+
442
+ RSpec.describe Object, "parent" do
443
+ parent = metadata
444
+ describe { child = metadata }
445
+ end
446
+
447
+ expect(child[:parent_example_group]).to eq(parent)
448
+ end
449
+ end
450
+
451
+ it 'does not have a `:parent_example_group` key for a top level group' do
452
+ meta = RSpec.describe(Object).metadata
453
+ expect(meta).not_to include(:parent_example_group)
454
+ end
455
+
456
+ describe "backwards compatibility" do
457
+ before { allow_deprecation }
458
+
459
+ describe ":example_group" do
460
+ it 'issues a deprecation warning when the `:example_group` key is accessed' do
461
+ expect_deprecation_with_call_site(__FILE__, __LINE__ + 2, /:example_group/)
462
+ RSpec.describe(Object, "group") do
463
+ metadata[:example_group]
464
+ end
465
+ end
466
+
467
+ it 'does not issue a deprecation warning when :example_group is accessed while applying configured filterings' do
468
+ RSpec.configuration.include Module.new, :example_group => { :file_path => /.*/ }
469
+ expect_no_deprecation
470
+ RSpec.describe(Object, "group")
471
+ end
472
+
473
+ it 'can still access the example group attributes via [:example_group]' do
474
+ meta = nil
475
+ RSpec.describe(Object, "group") { meta = metadata }
476
+
477
+ expect(meta[:example_group][:line_number]).to eq(__LINE__ - 2)
478
+ expect(meta[:example_group][:description]).to eq("Object group")
479
+ end
480
+
481
+ it 'can access the parent example group attributes via [:example_group][:example_group]' do
482
+ parent = child = nil
483
+ parent_line = __LINE__ + 1
484
+ RSpec.describe(Object, "group", :foo => 3) do
485
+ parent = metadata
486
+ describe("nested") { child = metadata }
487
+ end
488
+
489
+ expect(child[:example_group][:example_group].to_h).to include(
490
+ :foo => 3,
491
+ :description => "Object group",
492
+ :line_number => parent_line
493
+ )
494
+ end
495
+
496
+ it "works properly with deep nesting" do
497
+ inner_metadata = nil
498
+
499
+ RSpec.describe "Level 1" do
500
+ describe "Level 2" do
501
+ describe "Level 3" do
502
+ inner_metadata = example("Level 4").metadata
503
+ end
504
+ end
505
+ end
506
+
507
+ expect(inner_metadata[:description]).to eq("Level 4")
508
+ expect(inner_metadata[:example_group][:description]).to eq("Level 3")
509
+ expect(inner_metadata[:example_group][:example_group][:description]).to eq("Level 2")
510
+ expect(inner_metadata[:example_group][:example_group][:example_group][:description]).to eq("Level 1")
511
+ expect(inner_metadata[:example_group][:example_group][:example_group][:example_group]).to be_nil
512
+ end
513
+
514
+ it "works properly with shallow nesting" do
515
+ inner_metadata = nil
516
+
517
+ RSpec.describe "Level 1" do
518
+ inner_metadata = example("Level 2").metadata
519
+ end
520
+
521
+ expect(inner_metadata[:description]).to eq("Level 2")
522
+ expect(inner_metadata[:example_group][:description]).to eq("Level 1")
523
+ expect(inner_metadata[:example_group][:example_group]).to be_nil
524
+ end
525
+
526
+ it 'allows integration libraries like VCR to infer a fixture name from the example description by walking up nesting structure' do
527
+ fixture_name_for = lambda do |metadata|
528
+ description = metadata[:description]
529
+
530
+ if example_group = metadata[:example_group]
531
+ [fixture_name_for[example_group], description].join('/')
532
+ else
533
+ description
534
+ end
535
+ end
536
+
537
+ ex = inferred_fixture_name = nil
538
+
539
+ RSpec.configure do |config|
540
+ config.before(:example, :infer_fixture) { |e| inferred_fixture_name = fixture_name_for[e.metadata] }
541
+ end
542
+
543
+ RSpec.describe "Group", :infer_fixture do
544
+ ex = example("ex") { }
545
+ end.run
546
+
547
+ raise ex.execution_result.exception if ex.execution_result.exception
548
+
549
+ expect(inferred_fixture_name).to eq("Group/ex")
550
+ end
551
+
552
+ it 'can mutate attributes when accessing them via [:example_group]' do
553
+ meta = nil
554
+
555
+ RSpec.describe(String) do
556
+ describe "sub context" do
557
+ meta = metadata
558
+ end
559
+ end
560
+
561
+ expect {
562
+ meta[:example_group][:described_class] = Hash
563
+ }.to change { meta[:described_class] }.from(String).to(Hash)
564
+ end
565
+
566
+ it 'can still be filtered via a nested key under [:example_group] as before' do
567
+ meta = nil
568
+
569
+ line = __LINE__ + 1
570
+ RSpec.describe("group") { meta = metadata }
571
+
572
+ applies = MetadataFilter.any_apply?(
573
+ { :example_group => { :line_number => line } },
574
+ meta
575
+ )
576
+
577
+ expect(applies).to be true
578
+ end
579
+ end
580
+
581
+ describe ":example_group_block" do
582
+ it 'returns the block' do
583
+ meta = nil
584
+
585
+ RSpec.describe "group" do
586
+ meta = metadata
587
+ end
588
+
589
+ expect(meta[:example_group_block]).to be_a(Proc).and eq(meta[:block])
590
+ end
591
+
592
+ it 'issues a deprecation warning' do
593
+ expect_deprecation_with_call_site(__FILE__, __LINE__ + 2, /:example_group_block/)
594
+ RSpec.describe "group" do
595
+ metadata[:example_group_block]
596
+ end
597
+ end
598
+ end
599
+
600
+ describe ":describes" do
601
+ context "on an example group metadata hash" do
602
+ it 'returns the described_class' do
603
+ meta = nil
604
+
605
+ RSpec.describe Hash do
606
+ meta = metadata
607
+ end
608
+
609
+ expect(meta[:describes]).to be(Hash).and eq(meta[:described_class])
610
+ end
611
+
612
+ it 'issues a deprecation warning' do
613
+ expect_deprecation_with_call_site(__FILE__, __LINE__ + 2, /:describes/)
614
+ RSpec.describe "group" do
615
+ metadata[:describes]
616
+ end
617
+ end
618
+ end
619
+
620
+ context "an an example metadata hash" do
621
+ it 'returns the described_class' do
622
+ meta = nil
623
+
624
+ RSpec.describe Hash do
625
+ meta = example("ex").metadata
626
+ end
627
+
628
+ expect(meta[:describes]).to be(Hash).and eq(meta[:described_class])
629
+ end
630
+
631
+ it 'issues a deprecation warning' do
632
+ expect_deprecation_with_call_site(__FILE__, __LINE__ + 2, /:describes/)
633
+ RSpec.describe "group" do
634
+ example("ex").metadata[:describes]
635
+ end
636
+ end
637
+ end
638
+ end
639
+ end
640
+ end
641
+ end
642
+ end