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,4 @@
1
+ rspec_filter 'receive_message_chain' do
2
+ # throw not supported on Opal 0.8
3
+ filter('receive_message_chain with only the expect syntax enabled works with and_throw').unless { at_least_opal_0_9? }
4
+ end
@@ -0,0 +1,2 @@
1
+ # line/number backtrace
2
+ expect\(...\).to receive_messages\(:a => 1, :b => 2\) fails with the correct location
@@ -0,0 +1 @@
1
+ Using the legacy should syntax #should_receive with an options hash reports the file and line submitted with :expected_from
@@ -0,0 +1,7 @@
1
+ rspec_filter 'space' do
2
+ # no diff on Opal
3
+ filter 'RSpec::Mocks::Space can be diffed in a failure when it has references to an error generator via a proxy'
4
+
5
+ # mocking strings
6
+ filter 'RSpec::Mocks::Space#proxies_of(klass) returns proxies'
7
+ end
@@ -0,0 +1,7 @@
1
+ rspec_filter 'stub' do
2
+ # no throw in Opal 0.8
3
+ unless at_least_opal_0_9?
4
+ filter('A method stub throws with argument when told to')
5
+ filter('A method stub throws when told to')
6
+ end
7
+ end
@@ -0,0 +1,76 @@
1
+ # Copied from rspec-mocks/spec/support
2
+ class LoadedClass
3
+ extend RSpec::Support::RubyFeatures
4
+
5
+ M = :m
6
+ N = :n
7
+ INSTANCE = LoadedClass.new
8
+
9
+ class << self
10
+
11
+ def respond_to?(method_name, include_all = false)
12
+ return true if method_name == :dynamic_class_method
13
+ super
14
+ end
15
+
16
+ def defined_class_method
17
+ end
18
+
19
+ def send
20
+ # fake out!
21
+ end
22
+
23
+ protected
24
+
25
+ def defined_protected_class_method
26
+ end
27
+
28
+ private
29
+
30
+ def defined_private_class_method
31
+ end
32
+
33
+ end
34
+
35
+ def defined_instance_method
36
+ end
37
+
38
+ def instance_method_with_two_args(a, b)
39
+ end
40
+
41
+ def instance_method_with_only_defaults(a=1, b=2)
42
+ end
43
+
44
+ # no eval on opal
45
+ #if required_kw_args_supported?
46
+ # Need to eval this since it is invalid syntax on earlier rubies.
47
+ #eval <<-RUBY
48
+ def kw_args_method(foo, optional_arg:'hello', required_arg:)
49
+ end
50
+
51
+ def mixed_args_method(foo, bar, optional_arg_1:1, optional_arg_2:2)
52
+ end
53
+ #RUBY
54
+ #end
55
+
56
+ def send(*)
57
+ end
58
+
59
+ def respond_to?(method_name, include_all = false)
60
+ return true if method_name == :dynamic_instance_method
61
+ super
62
+ end
63
+
64
+ class Nested; end
65
+
66
+ protected
67
+
68
+ def defined_protected_method
69
+ end
70
+
71
+ private
72
+
73
+ def defined_private_method
74
+ "wink wink ;)"
75
+ end
76
+ end
@@ -0,0 +1,3 @@
1
+ # None of this is supported in Opal
2
+ module RSpec::Support::ShellOut
3
+ end
@@ -0,0 +1,59 @@
1
+ # https://github.com/opal/opal/issues/1110, fixed in Opal 0.9
2
+ unless Opal::RSpec::Compatibility.class_within_class_new_works?
3
+ class ExpiredInstanceInterface
4
+ def foo;
5
+ end
6
+
7
+ def bar;
8
+ end
9
+
10
+ def bazz;
11
+ end
12
+ end
13
+
14
+ class ExpiredClassInterface
15
+ def self.foo;
16
+ end
17
+
18
+ def self.bar;
19
+ end
20
+
21
+ def self.bazz;
22
+ end
23
+ end
24
+
25
+ class ExampleClass
26
+ def hello
27
+ :hello_defined_on_class
28
+ end
29
+ end
30
+
31
+ module MethodMissing
32
+ remove_method :method_missing rescue nil
33
+
34
+ def method_missing(m, *a, &b)
35
+ if m == :captured_by_method_missing
36
+ "response generated by method missing"
37
+ else
38
+ super(m, *a, &b)
39
+ end
40
+ end
41
+ end
42
+
43
+ class Foo
44
+ def self.foo
45
+ bar
46
+ rescue StandardError
47
+ end
48
+ end
49
+
50
+ class OutOfGas < StandardError
51
+ attr_reader :amount, :units
52
+
53
+ def initialize(amount, units)
54
+ @amount = amount
55
+ @units = units
56
+ end
57
+ end
58
+ end
59
+
@@ -0,0 +1,91 @@
1
+ require_relative '../opal_rspec_spec_loader'
2
+
3
+ module Opal
4
+ module RSpec
5
+ module MocksSpecLoader
6
+ extend Opal::RSpec::OpalRSpecSpecLoader
7
+
8
+ def self.expected_pending_count
9
+ 10
10
+ end
11
+
12
+ def self.base_dir
13
+ 'spec/rspec/mocks'
14
+ end
15
+
16
+ def self.files_with_line_continue
17
+ []
18
+ end
19
+
20
+ def self.default_path
21
+ 'rspec-mocks/spec'
22
+ end
23
+
24
+ def self.spec_glob
25
+ %w{rspec-mocks/spec/**/*_spec.rb}
26
+ end
27
+
28
+ def self.stubbed_requires
29
+ [
30
+ 'rubygems',
31
+ 'rspec/support/spec/shell_out', # only does stuff Opal can't support anyways,
32
+ 'spec', # we have our own version of this in spec_helper that's compatible
33
+ 'simplecov', # hooks aren't available on Opal
34
+ 'yaml', # not avail om opal yet
35
+ 'psych',
36
+ 'support/doubled_classes', # we have to create our own version of this due to eval in their code
37
+ 'spec_helper' # we include our own spec helper that's opal compatible (spec_helper_opal)
38
+ ]
39
+ end
40
+
41
+ def self.symbol_files
42
+ [
43
+ /have_received_spec.rb/,
44
+ /stubbed_message_expectations_spec.rb/,
45
+ /stub_spec.rb/,
46
+ /receive_spec.rb/,
47
+ /hash_excluding_matcher_spec.rb/,
48
+ /hash_including_matcher_spec.rb/,
49
+ /\/double_spec.rb/,
50
+ /argument_matchers_spec.rb/
51
+ ]
52
+ end
53
+
54
+ def self.symbols_replace_regexes
55
+ [
56
+ /(expect.*description\)\.to eq)\((.*)\)/,
57
+ /(expect.*description\)\.to eq) (.*)/,
58
+ /(raise_error)\((%Q.*)\)/,
59
+ /(raise_error)\((\/received (?!:two).*\/.*)\)/,
60
+ /(raise_error\(RSpec::Mocks::MockExpectationError,) (.*\))/,
61
+ /(fail_\w+)\((\/expected: \\\({\(:.*)\)/,
62
+ # "expected: (hash_not_including(:a=>1))"
63
+ /(fail_\w+) ("expected: \(hash.*)/,
64
+ # fail_matching "expected: (duck_type(:abs, :div))"
65
+ /(fail_\w+) ("expected: \(duck_type.*)/
66
+ ]
67
+ end
68
+
69
+ def self.symbol_do_not_replace_regexes
70
+ # in these cases, the symbols do come in correctly in Opal
71
+ [
72
+ # fails when args are expected but none are received
73
+ 'raise_error(RSpec::Mocks::MockExpectationError, %q|Double "test double" received unexpected message :foobar with (no args)|)',
74
+ # fails if unexpected method called
75
+ 'raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received unexpected message :something with (\"a\", \"b\", \"c\")")'
76
+ ].map { |r| Regexp.new(Regexp.escape(r)) }
77
+ end
78
+
79
+ def self.sub_in_files
80
+ files = super
81
+ symbols_in_expectations files
82
+ end
83
+
84
+ def self.additional_load_paths
85
+ [
86
+ 'rspec-mocks/spec' # a few spec support files live outside of rspec-mocks/spec/rspec and live in support
87
+ ]
88
+ end
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,15 @@
1
+ class ::RSpec::Core::Ordering::Random
2
+ # there are a lot of these in the RSpec specs that create noise
3
+ HIDE_RANDOM_WARNINGS = true
4
+ end
5
+
6
+ require 'support/before_all_shared_example_group'
7
+ require 'rspec/support/spec/with_isolated_stderr'
8
+ require 'rspec/support/spec/stderr_splitter'
9
+ require 'rspec/support/spec/formatting_support'
10
+ require 'opal/fixes/deprecation_helpers'
11
+ require 'opal/fixes/rspec_helpers'
12
+ require_relative 'spec_helper_opal'
13
+ require_relative 'fixes/doubled_classes'
14
+ require_relative 'fixes/missing_constants'
15
+ require_relative 'fixes/opal_itself'
@@ -0,0 +1,11 @@
1
+ # Do not support marshalling in Opal
2
+ **/marshal_extension_spec.rb
3
+
4
+ # No private, public, etc.
5
+ **/method_visibility_spec.rb
6
+
7
+ # class_double depends on ClassVerifyingDouble inheriting from Module to support transferring nested constants, but that doesn't work on Opal
8
+ **/class_double*_spec.rb
9
+
10
+ # YAML/marshal serialization
11
+ **/serialization_spec.rb
@@ -0,0 +1,129 @@
1
+ require 'rspec/support/spec'
2
+ require 'rspec/support/ruby_features'
3
+
4
+ require 'opal/progress_json_formatter' # verify case uses this
5
+ # Only doing this because any_instance causes the runner itself to break
6
+ CAUSES_SPECS_TO_CRASH = [
7
+ /.*allow_any_instance.*/,
8
+ /.*any_instance_of.*/
9
+ ]
10
+
11
+ RSpec::Matchers.define :include_method do |expected|
12
+ match do |actual|
13
+ actual.map { |m| m.to_s }.include?(expected.to_s)
14
+ end
15
+ end
16
+ require 'support/matchers'
17
+
18
+ module VerifyAndResetHelpers
19
+ def verify(object)
20
+ proxy = RSpec::Mocks.space.proxy_for(object)
21
+ proxy.verify
22
+ ensure
23
+ proxy.reset # so it doesn't fail the verify after the example completes
24
+ end
25
+
26
+ def reset(object)
27
+ RSpec::Mocks.space.proxy_for(object).reset
28
+ end
29
+
30
+ def verify_all
31
+ RSpec::Mocks.space.verify_all
32
+ ensure
33
+ reset_all
34
+ end
35
+
36
+ def reset_all
37
+ RSpec::Mocks.space.reset_all
38
+ end
39
+ end
40
+
41
+ module VerificationHelpers
42
+ def prevents(msg = //, &block)
43
+ expect(&block).to raise_error(RSpec::Mocks::MockExpectationError, msg)
44
+ end
45
+ end
46
+
47
+ require 'rspec/support/spec'
48
+
49
+ RSpec.configure do |config|
50
+ config.expose_dsl_globally = false
51
+ config.mock_with :rspec
52
+ config.color = true
53
+ config.order = :random
54
+
55
+ config.expect_with :rspec do |expectations|
56
+ expectations.syntax = :expect
57
+ end
58
+
59
+ config.mock_with :rspec do |mocks|
60
+ $default_rspec_mocks_syntax = mocks.syntax
61
+ mocks.syntax = :expect
62
+ end
63
+
64
+ old_verbose = nil
65
+ config.before(:each, :silence_warnings) do
66
+ old_verbose = $VERBOSE
67
+ $VERBOSE = nil
68
+ end
69
+
70
+ config.after(:each, :silence_warnings) do
71
+ $VERBOSE = old_verbose
72
+ end
73
+
74
+ config.include VerifyAndResetHelpers
75
+ config.include VerificationHelpers
76
+ config.extend RSpec::Support::RubyFeatures
77
+ config.include RSpec::Support::RubyFeatures
78
+ config.filter_run_excluding full_description: Regexp.union(CAUSES_SPECS_TO_CRASH)
79
+ #config.full_description = 'when verify_partial_doubles configuration option is set.*'
80
+ end
81
+
82
+ RSpec.shared_context "with syntax" do |syntax|
83
+ orig_syntax = nil
84
+
85
+ before(:all) do
86
+ orig_syntax = RSpec::Mocks.configuration.syntax
87
+ RSpec::Mocks.configuration.syntax = syntax
88
+ end
89
+
90
+ after(:all) do
91
+ RSpec::Mocks.configuration.syntax = orig_syntax
92
+ end
93
+ end
94
+
95
+
96
+ RSpec.shared_context "with isolated configuration" do
97
+ orig_configuration = nil
98
+ before do
99
+ orig_configuration = RSpec::Mocks.configuration
100
+ RSpec::Mocks.instance_variable_set(:@configuration, RSpec::Mocks::Configuration.new)
101
+ end
102
+
103
+ after do
104
+ RSpec::Mocks.instance_variable_set(:@configuration, orig_configuration)
105
+ end
106
+ end
107
+
108
+ RSpec.shared_context "with monkey-patched marshal" do
109
+ before do
110
+ RSpec::Mocks.configuration.patch_marshal_to_support_partial_doubles = true
111
+ end
112
+
113
+ after do
114
+ RSpec::Mocks.configuration.patch_marshal_to_support_partial_doubles = false
115
+ end
116
+ end
117
+
118
+ RSpec.shared_context "with the default mocks syntax" do
119
+ orig_syntax = nil
120
+
121
+ before(:all) do
122
+ orig_syntax = RSpec::Mocks.configuration.syntax
123
+ RSpec::Mocks.configuration.reset_syntaxes_to_default
124
+ end
125
+
126
+ after(:all) do
127
+ RSpec::Mocks.configuration.syntax = orig_syntax
128
+ end
129
+ end
@@ -0,0 +1,359 @@
1
+ require 'tmpdir'
2
+ require_relative 'filter_processor'
3
+
4
+ module Opal
5
+ module RSpec
6
+ module OpalRSpecSpecLoader
7
+ include Rake::DSL
8
+
9
+ def files_with_line_continue
10
+ []
11
+ end
12
+
13
+ def files_with_multiline_regex
14
+ []
15
+ end
16
+
17
+ def unstub_requires
18
+ []
19
+ end
20
+
21
+ def additional_load_paths
22
+ []
23
+ end
24
+
25
+ def post_requires
26
+ []
27
+ end
28
+
29
+ def get_ignored_spec_failures
30
+ text_based = FileList[File.join(base_dir, 'filter/**/*.txt')].map do |filename|
31
+ get_compact_text_expressions filename, wrap_in_regex=true
32
+ end.flatten
33
+ processor = FilterProcessor.new
34
+ FileList[File.join(base_dir, 'filter/**/*.rb')].exclude('**/sandbox/**/*').each do |filename|
35
+ processor.filename = filename
36
+ contents = File.read filename
37
+ processor.instance_eval contents
38
+ end
39
+ text_based + processor.all_filters
40
+ end
41
+
42
+ def stub_requires
43
+ stubbed_requires.each { |f| Opal::Processor.stub_file f }
44
+ unstub_requires.each do |f|
45
+ puts "Unstubbing #{f} per test request"
46
+ Opal::Processor.stubbed_files.delete f
47
+ end
48
+ end
49
+
50
+ def symbols_replace_regexes
51
+ [
52
+ /(fail_\w+)\((.*)\)/,
53
+ /(expect.*description\)\.to eq)\((.*)\)/,
54
+ /(expect.*description\)\.to eq) (.*)/
55
+ ]
56
+ end
57
+
58
+ def symbol_do_not_replace_regexes
59
+ []
60
+ end
61
+
62
+ def symbols_in_expectations(files)
63
+ matching = symbols_replace_regexes
64
+ # fail_with(/expected .* to respond to :some_method/)
65
+ replace_with_regex matching, 'fix symbols in message expectations', files, symbol_files do |match, temp_filename|
66
+ next match.to_s if symbol_do_not_replace_regexes.any? { |exp| exp.match match.to_s }
67
+ # Don't want to match #<Object:.*>
68
+ between_parens = match.captures[1]
69
+ symbol_matcher = /:([a-zA-Z]\w*)/
70
+ next match.to_s unless symbol_matcher.match(between_parens)
71
+ # Escape quotes if in a string
72
+ replace_pattern = if between_parens.start_with? '"'
73
+ "\\\"\\1\\\""
74
+ else
75
+ "\"\\1\""
76
+ end
77
+ fail_with_wo_symbols = between_parens.gsub(symbol_matcher, replace_pattern)
78
+ fail_type = match.captures[0]
79
+ new = "#{fail_type}(#{fail_with_wo_symbols})"
80
+ puts "#{temp_filename} - symbol fix -replacing #{match.to_s} with #{new} in new temp file"
81
+ new
82
+ end
83
+ end
84
+
85
+ def get_file_list
86
+ exclude_these_specs = get_compact_text_expressions File.join(base_dir, 'spec_files_exclude.txt'), wrap_in_regex=false
87
+ exclude_globs_only = exclude_these_specs.map { |f| f[:exclusion] }
88
+ files = FileList[
89
+ File.join(base_dir, 'require_specs.rb'), # need our code to go in first
90
+ *spec_glob
91
+ ].exclude(*exclude_globs_only)
92
+ missing_exclusions = exclude_these_specs.reject do |exclude|
93
+ FileList[exclude[:exclusion]].any?
94
+ end
95
+ if missing_exclusions.any?
96
+ raise "Expected to exclude #{missing_exclusions} as noted in spec_files_exclude.txt but we didn't find these files. Has RSpec been upgraded?"
97
+ end
98
+ files += post_requires.map { |r| File.join(base_dir, r) }
99
+ puts 'Running the following RSpec specs:'
100
+ files.each { |f| puts f }
101
+ files
102
+ end
103
+
104
+ def append_additional_load_paths(server)
105
+ baseline = [base_dir, 'spec/rspec/shared']
106
+ baseline += tmp_load_paths
107
+ (baseline + additional_load_paths).each { |p| server.append_path p }
108
+ end
109
+
110
+ def get_tmp_load_path_dir
111
+ dir = Dir.mktmpdir
112
+ at_exit do
113
+ FileUtils.remove_entry dir
114
+ end
115
+ # something was clearing this if it was added via Opal.append_path, so save it
116
+ tmp_load_paths << dir
117
+ dir
118
+ end
119
+
120
+ def tmp_load_paths
121
+ @tmp_load_paths ||= []
122
+ end
123
+
124
+ def replace_with_regex(regex, description, starting_file_set, files_to_replace)
125
+ fix_these_files = starting_file_set.select { |f| files_to_replace.any? { |r| r.match(f) } }
126
+ return starting_file_set unless fix_these_files.any?
127
+ dir = get_tmp_load_path_dir
128
+ missing = []
129
+ expressions = [*regex]
130
+ fixed_temp_files = fix_these_files.map do |path|
131
+ temp_filename = File.join dir, File.basename(path)
132
+ input = File.read path
133
+ matching = false
134
+ expressions.each do |r|
135
+ match = r.match input
136
+ if match
137
+ matching = true
138
+ input.gsub!(r) do |_|
139
+ yield Regexp.last_match, temp_filename
140
+ end
141
+ end
142
+ end
143
+ File.open temp_filename, 'w' do |output_file|
144
+ output_file.write input
145
+ end
146
+ missing << path unless matching
147
+ temp_filename
148
+ end
149
+ raise "Expected to #{description} in #{fix_these_files} but we didn't find any expressions in #{missing}. Check if RSpec has been upgraded" if missing.any?
150
+ files_we_left_alone = starting_file_set - fix_these_files
151
+ files_we_left_alone + fixed_temp_files
152
+ end
153
+
154
+ # https://github.com/opal/opal/issues/1125
155
+ def remove_multiline_regexes(files)
156
+ replace_with_regex /(%r%$.*%)$/m, 'fix multiline regex', files, files_with_multiline_regex do |match, temp_filename|
157
+ multi_line_regex = match
158
+ .captures[0]
159
+ .gsub("\n", '')
160
+ parsed = instance_eval multi_line_regex # can just have ruby do this for us
161
+ escaped = parsed
162
+ .source
163
+ .gsub('/', '\/')
164
+ replace = "/#{escaped}/m"
165
+ puts "Replacing multiline regex with #{replace} in new temp file #{temp_filename}"
166
+ replace
167
+ end
168
+ end
169
+
170
+ def sub_in_files
171
+ files = get_file_list
172
+ with_sub = sub_in_end_of_line files
173
+ remove_multiline_regexes with_sub
174
+ end
175
+
176
+ # https://github.com/opal/opal/issues/821
177
+ def sub_in_end_of_line(files)
178
+ bad_regex = /^(.*)\\$/
179
+ fix_these_files = files.select { |f| files_with_line_continue.any? { |regex| regex.match(f) } }
180
+ return files unless fix_these_files.any?
181
+ dir = get_tmp_load_path_dir
182
+ missing = []
183
+ fixed_temp_files = fix_these_files.map do |path|
184
+ temp_filename = File.join dir, File.basename(path)
185
+ found_blackslash = false
186
+ File.open path, 'r' do |input_file|
187
+ File.open temp_filename, 'w' do |output_file|
188
+ fixed_lines = input_file.inject do |line1, line2|
189
+ existing_lines = [*line1]
190
+ if (a_match = bad_regex.match existing_lines.last)
191
+ found_blackslash = true
192
+ line_num = existing_lines.length
193
+ puts "Replacing trailing backlash, line #{line_num} in #{path} in new temp file #{temp_filename}"
194
+ without_last_line = existing_lines[0..-2]
195
+ without_backlash = a_match.captures[0]
196
+ without_last_line << (without_backlash + ' ' + line2)
197
+ else
198
+ existing_lines << line2
199
+ end
200
+ end
201
+ fixed_lines.each { |l| output_file << l }
202
+ end
203
+ end
204
+ missing << path unless found_blackslash
205
+ temp_filename
206
+ end
207
+ raise "Expected to fix blackslash continuation in #{fix_these_files} but we didn't find any backslashes in #{missing}. Check if RSpec has been upgraded (maybe those blackslashes are gone??)" if missing.any?
208
+ files_we_left_alone = files - fix_these_files
209
+ files_we_left_alone + fixed_temp_files
210
+ end
211
+
212
+ def execute_specs(name)
213
+ command_line = "SPEC_OPTS=\"--format Opal::RSpec::ProgressJsonFormatter\" rake #{name}"
214
+ puts "Running #{command_line}"
215
+ example_info = []
216
+ state = :progress
217
+ IO.popen(command_line).each do |line|
218
+ line.force_encoding 'UTF-8'
219
+ case state
220
+ when :progress
221
+ puts line
222
+ when :example_info
223
+ example_info << line
224
+ end
225
+ state = case line
226
+ when /BEGIN JSON/
227
+ :example_info
228
+ else
229
+ state
230
+ end
231
+ end.close
232
+ {
233
+ example_info: example_info,
234
+ success: $?.success?
235
+ }
236
+ end
237
+
238
+ def parse_results(results)
239
+ JSON.parse results[:example_info].join("\n")
240
+ end
241
+
242
+ def rake_tasks_for(name)
243
+ Opal::RSpec::RakeTask.new(name) do |server, task|
244
+ # A lot of specs, can take longer on slower machines
245
+ task.timeout = 80000
246
+ stub_requires
247
+ task.files = sub_in_files
248
+ task.default_path = default_path
249
+ append_additional_load_paths server
250
+ server.debug = ENV['OPAL_DEBUG']
251
+ end
252
+
253
+ desc "Verifies that #{name} work correctly"
254
+ task "verify_#{name}" do
255
+ results = execute_specs name
256
+ parsed_results = parse_results results
257
+ summary = parsed_results['summary']
258
+ total = summary['example_count']
259
+ failed = summary['failure_count']
260
+ pending = summary['pending_count']
261
+ actual_failures = parsed_results['examples']
262
+ .select { |ex| ex['status'] == 'failed' }
263
+ expected_failures = get_ignored_spec_failures
264
+ used_exclusions = []
265
+ remaining_failures = actual_failures.reject do |actual|
266
+ expected_failures.any? do |expected|
267
+ exclusion = expected[:exclusion]
268
+ actual_descr = actual['full_description']
269
+ matches = case exclusion
270
+ when Regexp
271
+ exclusion.match actual_descr
272
+ when String
273
+ exclusion == actual_descr
274
+ else
275
+ raise "Unknown filter expression type #{exclusion.class} in #{expected}!"
276
+ end
277
+ used_exclusions << expected if matches
278
+ matches
279
+ end
280
+ end
281
+ each_header = '----------------------------------------------------'
282
+ index = 0
283
+ remaining_failures = remaining_failures.map do |example|
284
+ index += 1
285
+ [
286
+ each_header,
287
+ "Example #{index}: #{example['full_description']}",
288
+ each_header,
289
+ example['exception']['message']
290
+ ].join "\n"
291
+ end
292
+ reasons = []
293
+ unless remaining_failures.empty?
294
+ reasons << 'Unexpected failures'
295
+ end
296
+ reasons << "Expected #{expected_pending_count} pending but got #{pending}" unless pending == expected_pending_count
297
+ reasons << 'no specs found' unless total > 0
298
+ reasons << 'No failures, but Rake task did not succeed' if (failed == 0 && !results[:success])
299
+ unused_exclusions = expected_failures.uniq - used_exclusions.uniq
300
+ if unused_exclusions.any?
301
+ msg = "WARNING: The following #{unused_exclusions.length} exclusion rules did not match an actual failure. Time to update exclusions? Duplicate exclusions??\n" +
302
+ unused_exclusions.map { |e| "File: #{e[:filename]}\nLine #{e[:line_number]}\nFilter: #{e[:exclusion]}" }.join("\n---------------------\n")
303
+ reasons << msg
304
+ end
305
+ if reasons.empty?
306
+ puts 'Test successful!'
307
+ puts "#{total} total specs, #{failed} expected failures, #{pending} expected pending"
308
+ else
309
+ puts "Test FAILED for the following reasons:\n"
310
+ puts reasons.join "\n\n"
311
+ if remaining_failures.any?
312
+ puts
313
+ puts "Unexpected failures:\n\n#{remaining_failures.join("\n")}\n"
314
+ end
315
+ puts '-----------Summary-----------'
316
+ puts "Total passed count: #{total - failed - pending}"
317
+ puts "Pending count #{pending}"
318
+ puts "Total 'failure' count: #{actual_failures.length}"
319
+ puts "Unexpected failure count: #{remaining_failures.length}"
320
+ raise 'Test failed!'
321
+ end
322
+ end
323
+ end
324
+
325
+ def run_rack_server(rack)
326
+ Opal::Processor.source_map_enabled = false
327
+
328
+ files = sub_in_files
329
+ sprockets_env = Opal::RSpec::SprocketsEnvironment.new(spec_pattern=nil, spec_exclude_pattern=nil, spec_files=files)
330
+ rack.run Opal::Server.new(sprockets: sprockets_env) { |s|
331
+ s.main = 'opal/rspec/sprockets_runner'
332
+ stub_requires
333
+ append_additional_load_paths s
334
+ sprockets_env.add_spec_paths_to_sprockets
335
+ s.debug = ENV['OPAL_DEBUG']
336
+ }
337
+ end
338
+
339
+ private
340
+
341
+ def get_compact_text_expressions(filename, wrap_in_regex)
342
+ line_num = 0
343
+ File.read(filename).split("\n").map do |line|
344
+ line_num += 1
345
+ {
346
+ exclusion: line,
347
+ filename: filename,
348
+ line_number: line_num
349
+ }
350
+ end.reject do |line|
351
+ exclusion = line[:exclusion]
352
+ exclusion.empty? or exclusion.start_with? '#'
353
+ end.map do |filter|
354
+ wrap_in_regex ? filter.merge({exclusion: Regexp.new(filter[:exclusion])}) : filter
355
+ end
356
+ end
357
+ end
358
+ end
359
+ end