opal-rspec 0.8.0.alpha3 → 1.0.0.alpha1

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 (683) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +7 -7
  3. data/.gitmodules +6 -0
  4. data/CHANGELOG.md +16 -1
  5. data/Gemfile +13 -0
  6. data/README.md +63 -59
  7. data/diff-lcs/spec/files_to_exclude.txt +1 -0
  8. data/diff-lcs/spec/requires.rb +4 -0
  9. data/diff-lcs/upstream/.autotest +5 -0
  10. data/diff-lcs/upstream/.fasterer.yml +3 -0
  11. data/{stubs/diff/lcs.rb → diff-lcs/upstream/.gemtest} +0 -0
  12. data/diff-lcs/upstream/.github/workflows/ci.yml +64 -0
  13. data/diff-lcs/upstream/.github/workflows/codeql-analysis.yml +70 -0
  14. data/diff-lcs/upstream/.gitignore +20 -0
  15. data/diff-lcs/upstream/.hoerc +52 -0
  16. data/diff-lcs/upstream/.rspec +1 -0
  17. data/diff-lcs/upstream/.standard.yml +6 -0
  18. data/diff-lcs/upstream/Code-of-Conduct.md +74 -0
  19. data/diff-lcs/upstream/Contributing.md +119 -0
  20. data/diff-lcs/upstream/Gemfile +28 -0
  21. data/diff-lcs/upstream/History.md +407 -0
  22. data/diff-lcs/upstream/License.md +41 -0
  23. data/diff-lcs/upstream/Manifest.txt +59 -0
  24. data/diff-lcs/upstream/README.rdoc +84 -0
  25. data/diff-lcs/upstream/Rakefile +127 -0
  26. data/diff-lcs/upstream/bin/htmldiff +35 -0
  27. data/diff-lcs/upstream/bin/ldiff +9 -0
  28. data/diff-lcs/upstream/diff-lcs.gemspec +48 -0
  29. data/diff-lcs/upstream/docs/COPYING.txt +339 -0
  30. data/diff-lcs/upstream/docs/artistic.txt +127 -0
  31. data/diff-lcs/upstream/lib/diff/lcs/array.rb +7 -0
  32. data/diff-lcs/upstream/lib/diff/lcs/backports.rb +9 -0
  33. data/diff-lcs/upstream/lib/diff/lcs/block.rb +37 -0
  34. data/diff-lcs/upstream/lib/diff/lcs/callbacks.rb +327 -0
  35. data/diff-lcs/upstream/lib/diff/lcs/change.rb +174 -0
  36. data/diff-lcs/upstream/lib/diff/lcs/htmldiff.rb +158 -0
  37. data/diff-lcs/upstream/lib/diff/lcs/hunk.rb +363 -0
  38. data/diff-lcs/upstream/lib/diff/lcs/internals.rb +308 -0
  39. data/diff-lcs/upstream/lib/diff/lcs/ldiff.rb +173 -0
  40. data/diff-lcs/upstream/lib/diff/lcs/string.rb +5 -0
  41. data/diff-lcs/upstream/lib/diff/lcs.rb +741 -0
  42. data/diff-lcs/upstream/lib/diff-lcs.rb +3 -0
  43. data/diff-lcs/upstream/spec/change_spec.rb +89 -0
  44. data/diff-lcs/upstream/spec/diff_spec.rb +51 -0
  45. data/diff-lcs/upstream/spec/fixtures/aX +1 -0
  46. data/diff-lcs/upstream/spec/fixtures/bXaX +1 -0
  47. data/diff-lcs/upstream/spec/fixtures/ds1.csv +50 -0
  48. data/diff-lcs/upstream/spec/fixtures/ds2.csv +51 -0
  49. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff +4 -0
  50. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff-c +7 -0
  51. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff-e +3 -0
  52. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff-f +3 -0
  53. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff-u +5 -0
  54. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef +4 -0
  55. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef-c +15 -0
  56. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef-e +3 -0
  57. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef-f +3 -0
  58. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef-u +9 -0
  59. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2 +7 -0
  60. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2-c +20 -0
  61. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2-d +7 -0
  62. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2-e +7 -0
  63. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2-f +7 -0
  64. data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2-u +16 -0
  65. data/diff-lcs/upstream/spec/fixtures/new-chef +4 -0
  66. data/diff-lcs/upstream/spec/fixtures/new-chef2 +17 -0
  67. data/diff-lcs/upstream/spec/fixtures/old-chef +4 -0
  68. data/diff-lcs/upstream/spec/fixtures/old-chef2 +14 -0
  69. data/diff-lcs/upstream/spec/hunk_spec.rb +83 -0
  70. data/diff-lcs/upstream/spec/issues_spec.rb +160 -0
  71. data/diff-lcs/upstream/spec/lcs_spec.rb +56 -0
  72. data/diff-lcs/upstream/spec/ldiff_spec.rb +89 -0
  73. data/diff-lcs/upstream/spec/patch_spec.rb +416 -0
  74. data/diff-lcs/upstream/spec/sdiff_spec.rb +216 -0
  75. data/diff-lcs/upstream/spec/spec_helper.rb +376 -0
  76. data/diff-lcs/upstream/spec/traverse_balanced_spec.rb +312 -0
  77. data/diff-lcs/upstream/spec/traverse_sequences_spec.rb +137 -0
  78. data/lib/opal/rspec/runner.rb +11 -0
  79. data/lib/opal/rspec/sprockets.rb +6 -0
  80. data/lib/opal/rspec/version.rb +1 -1
  81. data/lib/opal/rspec.rb +1 -2
  82. data/lib-opal/opal/rspec/async/configuration.rb +39 -0
  83. data/lib-opal/opal/rspec/async/example.rb +80 -168
  84. data/lib-opal/opal/rspec/async/example_group.rb +71 -81
  85. data/lib-opal/opal/rspec/async/hooks.rb +98 -8
  86. data/lib-opal/opal/rspec/async/memoized_helpers.rb +32 -0
  87. data/lib-opal/opal/rspec/async/reporter.rb +6 -3
  88. data/lib-opal/opal/rspec/async/runner.rb +33 -24
  89. data/lib-opal/opal/rspec/async.rb +4 -1
  90. data/lib-opal/opal/rspec/browser.rb +0 -8
  91. data/lib-opal/opal/rspec/browser_early.rb +5 -0
  92. data/lib-opal/opal/rspec/fixes/diff-lcs/hunk.rb +164 -0
  93. data/lib-opal/opal/rspec/fixes/diff-lcs/lcs.rb +112 -0
  94. data/lib-opal/opal/rspec/fixes/diff-lcs.rb +2 -0
  95. data/lib-opal/opal/rspec/fixes/opal.rb +4 -17
  96. data/lib-opal/opal/rspec/fixes/rspec/core/example_status_persister.rb +11 -0
  97. data/lib-opal/opal/rspec/fixes/rspec/core/formatters/deprecation_formatter.rb +3 -12
  98. data/lib-opal/opal/rspec/fixes/rspec/core/formatters/exception_presenter.rb +28 -0
  99. data/lib-opal/opal/rspec/fixes/rspec/core/formatters/loader.rb +0 -32
  100. data/lib-opal/opal/rspec/fixes/rspec/core/formatters/snippet_extractor.rb +17 -0
  101. data/lib-opal/opal/rspec/fixes/rspec/core/formatters/syntax_highlighter.rb +17 -0
  102. data/lib-opal/opal/rspec/fixes/rspec/core/formatters.rb +3 -4
  103. data/lib-opal/opal/rspec/fixes/rspec/core/metadata.rb +24 -8
  104. data/lib-opal/opal/rspec/fixes/rspec/core/notifications/examples_notification.rb +3 -20
  105. data/lib-opal/opal/rspec/fixes/rspec/core/notifications.rb +0 -2
  106. data/lib-opal/opal/rspec/fixes/rspec/core.rb +1 -2
  107. data/lib-opal/opal/rspec/fixes/rspec/expectations.rb +0 -1
  108. data/lib-opal/opal/rspec/fixes/rspec/matchers/built_in/base_matcher.rb +26 -0
  109. data/lib-opal/opal/rspec/fixes/rspec/matchers/built_in.rb +1 -3
  110. data/lib-opal/opal/rspec/fixes/rspec/matchers/expecteds_for_multiple_diffs.rb +13 -0
  111. data/lib-opal/opal/rspec/fixes/rspec/matchers.rb +1 -1
  112. data/lib-opal/opal/rspec/fixes/rspec/mocks/error_generator.rb +26 -10
  113. data/lib-opal/opal/rspec/fixes/rspec/mocks/proxy.rb +19 -0
  114. data/lib-opal/opal/rspec/fixes/rspec/mocks.rb +1 -3
  115. data/lib-opal/opal/rspec/fixes/rspec/support/differ.rb +29 -0
  116. data/lib-opal/opal/rspec/fixes/rspec/support/encoded_string.rb +9 -5
  117. data/lib-opal/opal/rspec/fixes/rspec/support/ruby_features.rb +22 -0
  118. data/lib-opal/opal/rspec/fixes/rspec/support/source.rb +15 -0
  119. data/lib-opal/opal/rspec/fixes/rspec/support.rb +3 -3
  120. data/lib-opal/opal/rspec/fixes/rspec.rb +0 -1
  121. data/lib-opal/opal/rspec/fixes.rb +1 -0
  122. data/lib-opal/opal/rspec/formatter/document_io.rb +1 -1
  123. data/lib-opal/opal/rspec/formatter/html_printer.rb +1 -1
  124. data/lib-opal/opal/rspec/pre_require_fixes.rb +1 -5
  125. data/lib-opal/opal/rspec/requires.rb +32 -19
  126. data/lib-opal/opal/rspec/sprockets_runner.rb.erb +1 -0
  127. data/lib-opal/opal/rspec.rb +3 -0
  128. data/opal-rspec.gemspec +1 -1
  129. data/rspec/upstream/.document +1 -1
  130. data/rspec/upstream/.github/FUNDING.yml +5 -0
  131. data/rspec/upstream/.gitignore +1 -0
  132. data/rspec/upstream/LICENSE.md +27 -0
  133. data/rspec/upstream/README.md +26 -26
  134. data/rspec/upstream/Rakefile +1 -1
  135. data/rspec/upstream/certs/rspec.pem +32 -20
  136. data/rspec/upstream/certs/samphippen.asc +18 -0
  137. data/rspec/upstream/code_of_conduct.md +59 -0
  138. data/rspec/upstream/lib/rspec/version.rb +1 -1
  139. data/rspec/upstream/rspec.gemspec +7 -2
  140. data/rspec-core/upstream/.document +1 -1
  141. data/rspec-core/upstream/.github/FUNDING.yml +5 -0
  142. data/rspec-core/upstream/.github/workflows/ci.yml +150 -0
  143. data/rspec-core/upstream/.gitignore +2 -0
  144. data/rspec-core/upstream/.rspec +1 -0
  145. data/rspec-core/upstream/.rubocop.yml +64 -12
  146. data/rspec-core/upstream/.rubocop_rspec_base.yml +224 -38
  147. data/rspec-core/upstream/.rubocop_todo.yml +1031 -0
  148. data/rspec-core/upstream/.yardopts +2 -1
  149. data/rspec-core/upstream/BUILD_DETAIL.md +149 -0
  150. data/rspec-core/upstream/CODE_OF_CONDUCT.md +59 -0
  151. data/rspec-core/upstream/CONTRIBUTING.md +86 -0
  152. data/rspec-core/upstream/Changelog.md +721 -2
  153. data/rspec-core/upstream/DEV-README.md +2 -2
  154. data/rspec-core/upstream/DEVELOPMENT.md +131 -0
  155. data/rspec-core/upstream/Filtering.md +173 -0
  156. data/rspec-core/upstream/Gemfile +78 -9
  157. data/rspec-core/upstream/ISSUE_TEMPLATE.md +24 -0
  158. data/rspec-core/upstream/{License.txt → LICENSE.md} +6 -5
  159. data/rspec-core/upstream/README.md +165 -24
  160. data/rspec-core/upstream/REPORT_TEMPLATE.md +43 -0
  161. data/rspec-core/upstream/Rakefile +1 -1
  162. data/rspec-core/upstream/benchmarks/allocations/1000_groups_1_example.rb +124 -0
  163. data/rspec-core/upstream/benchmarks/allocations/1_group_1000_examples.rb +63 -0
  164. data/rspec-core/upstream/benchmarks/allocations/helper.rb +30 -0
  165. data/rspec-core/upstream/benchmarks/allocations/running_1000_groups_1_example.rb +100 -0
  166. data/rspec-core/upstream/benchmarks/allocations/running_1_group_1000_examples.rb +60 -0
  167. data/rspec-core/upstream/benchmarks/capture_block_vs_yield.rb +208 -0
  168. data/rspec-core/upstream/benchmarks/flat_map_vs_inject.rb +55 -0
  169. data/rspec-core/upstream/benchmarks/hash_functions.rb +74 -0
  170. data/rspec-core/upstream/benchmarks/keys_each_vs_each_key.rb +43 -0
  171. data/rspec-core/upstream/benchmarks/module_inclusion_filtering.rb +89 -0
  172. data/rspec-core/upstream/benchmarks/precalculate_absolute_file_path_or_not.rb +29 -0
  173. data/rspec-core/upstream/benchmarks/shuffle_vs_sort_by_for_random_ordering.rb +131 -0
  174. data/rspec-core/upstream/benchmarks/singleton_example_groups/helper.rb +122 -0
  175. data/rspec-core/upstream/benchmarks/singleton_example_groups/with_config_hooks.rb +28 -0
  176. data/rspec-core/upstream/benchmarks/singleton_example_groups/with_config_hooks_module_inclusions_and_shared_context_inclusions.rb +35 -0
  177. data/rspec-core/upstream/benchmarks/singleton_example_groups/with_module_inclusions.rb +28 -0
  178. data/rspec-core/upstream/benchmarks/singleton_example_groups/with_no_config_hooks_or_inclusions.rb +22 -0
  179. data/rspec-core/upstream/benchmarks/singleton_example_groups/with_shared_context_inclusions.rb +28 -0
  180. data/rspec-core/upstream/benchmarks/threadsafe_let_block.rb +312 -0
  181. data/rspec-core/upstream/cucumber.yml +7 -2
  182. data/rspec-core/upstream/features/.nav +5 -1
  183. data/rspec-core/upstream/features/README.md +2 -2
  184. data/rspec-core/upstream/features/clear_examples.feature +106 -0
  185. data/rspec-core/upstream/features/command_line/bisect.feature +178 -0
  186. data/rspec-core/upstream/features/command_line/example_matches_name_option.feature +131 -0
  187. data/rspec-core/upstream/features/command_line/example_name_option.feature +2 -0
  188. data/rspec-core/upstream/features/command_line/fail_fast.feature +21 -4
  189. data/rspec-core/upstream/features/command_line/init.feature +2 -2
  190. data/rspec-core/upstream/features/command_line/line_number_appended_to_path.feature +2 -2
  191. data/rspec-core/upstream/features/command_line/only_failures.feature +113 -0
  192. data/rspec-core/upstream/features/command_line/order.md +8 -1
  193. data/rspec-core/upstream/features/command_line/pattern_option.feature +6 -3
  194. data/rspec-core/upstream/features/command_line/rake_task.feature +3 -3
  195. data/rspec-core/upstream/features/command_line/randomization.feature +5 -2
  196. data/rspec-core/upstream/features/command_line/ruby.feature +6 -2
  197. data/rspec-core/upstream/features/command_line/tag.feature +13 -11
  198. data/rspec-core/upstream/features/command_line/warnings_option.feature +20 -3
  199. data/rspec-core/upstream/features/configuration/backtrace_exclusion_patterns.feature +45 -29
  200. data/rspec-core/upstream/features/configuration/color.feature +22 -0
  201. data/rspec-core/upstream/features/configuration/custom_settings.feature +9 -13
  202. data/rspec-core/upstream/features/configuration/default_path.feature +1 -1
  203. data/rspec-core/upstream/features/configuration/enable_global_dsl.feature +15 -1
  204. data/rspec-core/upstream/features/configuration/error_exit_code.feature +52 -0
  205. data/rspec-core/upstream/features/configuration/fail_fast.feature +42 -12
  206. data/rspec-core/upstream/features/configuration/fail_if_no_examples.feature +31 -0
  207. data/rspec-core/upstream/features/configuration/failure_exit_code.feature +26 -0
  208. data/rspec-core/upstream/features/configuration/overriding_global_ordering.feature +1 -1
  209. data/rspec-core/upstream/features/configuration/pattern.feature +1 -1
  210. data/rspec-core/upstream/features/configuration/profile.feature +25 -0
  211. data/rspec-core/upstream/features/configuration/read_options_from_file.feature +25 -19
  212. data/rspec-core/upstream/features/configuration/run_all_when_everything_filtered.feature +4 -0
  213. data/rspec-core/upstream/features/core_standalone.feature +2 -0
  214. data/rspec-core/upstream/features/example_groups/basic_structure.feature +1 -0
  215. data/rspec-core/upstream/features/example_groups/shared_context.feature +55 -5
  216. data/rspec-core/upstream/features/example_groups/shared_examples.feature +59 -15
  217. data/rspec-core/upstream/features/expectation_framework_integration/aggregating_failures.feature +602 -0
  218. data/rspec-core/upstream/features/expectation_framework_integration/configure_expectation_framework.feature +13 -5
  219. data/rspec-core/upstream/features/filtering/filter_run_when_matching.feature +75 -0
  220. data/rspec-core/upstream/features/formatters/configurable_colors.feature +23 -4
  221. data/rspec-core/upstream/features/helper_methods/let.feature +3 -0
  222. data/rspec-core/upstream/features/helper_methods/modules.feature +6 -0
  223. data/rspec-core/upstream/features/hooks/around_hooks.feature +36 -6
  224. data/rspec-core/upstream/features/hooks/before_and_after_hooks.feature +47 -5
  225. data/rspec-core/upstream/features/hooks/filtering.feature +199 -4
  226. data/rspec-core/upstream/features/hooks/when_first_matching_example_defined.feature +70 -0
  227. data/rspec-core/upstream/features/metadata/current_scope.feature +87 -0
  228. data/rspec-core/upstream/features/metadata/described_class.feature +12 -5
  229. data/rspec-core/upstream/features/metadata/user_defined.feature +3 -3
  230. data/rspec-core/upstream/features/mock_framework_integration/use_any_framework.feature +1 -1
  231. data/rspec-core/upstream/features/mock_framework_integration/use_flexmock.feature +5 -5
  232. data/rspec-core/upstream/features/mock_framework_integration/use_mocha.feature +5 -5
  233. data/rspec-core/upstream/features/mock_framework_integration/use_rr.feature +5 -5
  234. data/rspec-core/upstream/features/mock_framework_integration/use_rspec.feature +6 -6
  235. data/rspec-core/upstream/features/pending_and_skipped_examples/pending_examples.feature +8 -7
  236. data/rspec-core/upstream/features/pending_and_skipped_examples/skipped_examples.feature +49 -22
  237. data/rspec-core/upstream/features/step_definitions/additional_cli_steps.rb +142 -12
  238. data/rspec-core/upstream/features/step_definitions/core_standalone_steps.rb +6 -2
  239. data/rspec-core/upstream/features/subject/implicit_subject.feature +3 -2
  240. data/rspec-core/upstream/features/subject/one_liner_syntax.feature +9 -5
  241. data/rspec-core/upstream/features/support/diff_lcs_versions.rb +17 -0
  242. data/rspec-core/upstream/features/support/env.rb +20 -7
  243. data/rspec-core/upstream/features/support/jruby.rb +8 -0
  244. data/rspec-core/upstream/features/support/require_expect_syntax_in_aruba_specs.rb +6 -3
  245. data/rspec-core/upstream/features/support/rubinius.rb +5 -1
  246. data/rspec-core/upstream/features/support/ruby_27_support.rb +7 -0
  247. data/rspec-core/upstream/features/support/send_sigint_during_bisect.rb +21 -0
  248. data/rspec-core/upstream/lib/rspec/autorun.rb +1 -0
  249. data/rspec-core/upstream/lib/rspec/core/backtrace_formatter.rb +3 -4
  250. data/rspec-core/upstream/lib/rspec/core/bisect/coordinator.rb +62 -0
  251. data/rspec-core/upstream/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  252. data/rspec-core/upstream/lib/rspec/core/bisect/fork_runner.rb +138 -0
  253. data/rspec-core/upstream/lib/rspec/core/bisect/server.rb +61 -0
  254. data/rspec-core/upstream/lib/rspec/core/bisect/shell_command.rb +126 -0
  255. data/rspec-core/upstream/lib/rspec/core/bisect/shell_runner.rb +73 -0
  256. data/rspec-core/upstream/lib/rspec/core/bisect/utilities.rb +69 -0
  257. data/rspec-core/upstream/lib/rspec/core/configuration.rb +1157 -212
  258. data/rspec-core/upstream/lib/rspec/core/configuration_options.rb +82 -22
  259. data/rspec-core/upstream/lib/rspec/core/did_you_mean.rb +46 -0
  260. data/rspec-core/upstream/lib/rspec/core/drb.rb +10 -1
  261. data/rspec-core/upstream/lib/rspec/core/dsl.rb +10 -5
  262. data/rspec-core/upstream/lib/rspec/core/example.rb +271 -107
  263. data/rspec-core/upstream/lib/rspec/core/example_group.rb +426 -127
  264. data/rspec-core/upstream/lib/rspec/core/example_status_persister.rb +235 -0
  265. data/rspec-core/upstream/lib/rspec/core/filter_manager.rb +76 -104
  266. data/rspec-core/upstream/lib/rspec/core/flat_map.rb +6 -4
  267. data/rspec-core/upstream/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  268. data/rspec-core/upstream/lib/rspec/core/formatters/base_formatter.rb +7 -4
  269. data/rspec-core/upstream/lib/rspec/core/formatters/base_text_formatter.rb +15 -16
  270. data/rspec-core/upstream/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  271. data/rspec-core/upstream/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  272. data/rspec-core/upstream/lib/rspec/core/formatters/console_codes.rb +28 -16
  273. data/rspec-core/upstream/lib/rspec/core/formatters/deprecation_formatter.rb +14 -13
  274. data/rspec-core/upstream/lib/rspec/core/formatters/documentation_formatter.rb +47 -13
  275. data/rspec-core/upstream/lib/rspec/core/formatters/exception_presenter.rb +525 -0
  276. data/rspec-core/upstream/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
  277. data/rspec-core/upstream/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  278. data/rspec-core/upstream/lib/rspec/core/formatters/helpers.rb +40 -9
  279. data/rspec-core/upstream/lib/rspec/core/formatters/html_formatter.rb +20 -16
  280. data/rspec-core/upstream/lib/rspec/core/formatters/html_printer.rb +27 -18
  281. data/rspec-core/upstream/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  282. data/rspec-core/upstream/lib/rspec/core/formatters/json_formatter.rb +15 -7
  283. data/rspec-core/upstream/lib/rspec/core/formatters/profile_formatter.rb +10 -7
  284. data/rspec-core/upstream/lib/rspec/core/formatters/progress_formatter.rb +1 -0
  285. data/rspec-core/upstream/lib/rspec/core/formatters/protocol.rb +62 -43
  286. data/rspec-core/upstream/lib/rspec/core/formatters/snippet_extractor.rb +115 -85
  287. data/rspec-core/upstream/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  288. data/rspec-core/upstream/lib/rspec/core/formatters.rb +71 -32
  289. data/rspec-core/upstream/lib/rspec/core/hooks.rb +303 -248
  290. data/rspec-core/upstream/lib/rspec/core/invocations.rb +87 -0
  291. data/rspec-core/upstream/lib/rspec/core/memoized_helpers.rb +155 -47
  292. data/rspec-core/upstream/lib/rspec/core/metadata.rb +102 -41
  293. data/rspec-core/upstream/lib/rspec/core/metadata_filter.rb +209 -49
  294. data/rspec-core/upstream/lib/rspec/core/minitest_assertions_adapter.rb +5 -2
  295. data/rspec-core/upstream/lib/rspec/core/mocking_adapters/flexmock.rb +1 -1
  296. data/rspec-core/upstream/lib/rspec/core/mocking_adapters/mocha.rb +8 -8
  297. data/rspec-core/upstream/lib/rspec/core/notifications.rb +180 -201
  298. data/rspec-core/upstream/lib/rspec/core/option_parser.rb +159 -58
  299. data/rspec-core/upstream/lib/rspec/core/ordering.rb +40 -26
  300. data/rspec-core/upstream/lib/rspec/core/output_wrapper.rb +29 -0
  301. data/rspec-core/upstream/lib/rspec/core/pending.rb +19 -25
  302. data/rspec-core/upstream/lib/rspec/core/profiler.rb +34 -0
  303. data/rspec-core/upstream/lib/rspec/core/project_initializer/.rspec +0 -1
  304. data/rspec-core/upstream/lib/rspec/core/project_initializer/spec/spec_helper.rb +31 -22
  305. data/rspec-core/upstream/lib/rspec/core/project_initializer.rb +1 -1
  306. data/rspec-core/upstream/lib/rspec/core/rake_task.rb +73 -72
  307. data/rspec-core/upstream/lib/rspec/core/reporter.rb +134 -18
  308. data/rspec-core/upstream/lib/rspec/core/ruby_project.rb +13 -5
  309. data/rspec-core/upstream/lib/rspec/core/runner.rb +99 -45
  310. data/rspec-core/upstream/lib/rspec/core/sandbox.rb +37 -0
  311. data/rspec-core/upstream/lib/rspec/core/set.rb +54 -0
  312. data/rspec-core/upstream/lib/rspec/core/shared_example_group.rb +126 -37
  313. data/rspec-core/upstream/lib/rspec/core/shell_escape.rb +49 -0
  314. data/rspec-core/upstream/lib/rspec/core/test_unit_assertions_adapter.rb +3 -3
  315. data/rspec-core/upstream/lib/rspec/core/version.rb +1 -1
  316. data/rspec-core/upstream/lib/rspec/core/warnings.rb +2 -2
  317. data/rspec-core/upstream/lib/rspec/core/world.rb +164 -60
  318. data/rspec-core/upstream/lib/rspec/core.rb +64 -21
  319. data/rspec-core/upstream/maintenance-branch +1 -1
  320. data/rspec-core/upstream/rspec-core.gemspec +16 -11
  321. data/rspec-core/upstream/script/ci_functions.sh +73 -0
  322. data/rspec-core/upstream/script/clone_all_rspec_repos +2 -2
  323. data/rspec-core/upstream/script/cucumber.sh +8 -0
  324. data/rspec-core/upstream/script/custom_build_functions.sh +22 -0
  325. data/rspec-core/upstream/script/functions.sh +125 -89
  326. data/rspec-core/upstream/script/legacy_setup.sh +20 -0
  327. data/rspec-core/upstream/script/predicate_functions.sh +162 -0
  328. data/rspec-core/upstream/script/rspec_with_simplecov +6 -6
  329. data/rspec-core/upstream/script/run_build +14 -9
  330. data/rspec-core/upstream/script/run_rubocop +14 -0
  331. data/rspec-core/upstream/script/update_rubygems_and_install_bundler +20 -0
  332. data/rspec-expectations/upstream/.document +1 -1
  333. data/rspec-expectations/upstream/.github/FUNDING.yml +5 -0
  334. data/rspec-expectations/upstream/.github/workflows/ci.yml +150 -0
  335. data/rspec-expectations/upstream/.gitignore +2 -0
  336. data/rspec-expectations/upstream/.rubocop.yml +126 -2
  337. data/rspec-expectations/upstream/.rubocop_rspec_base.yml +224 -38
  338. data/rspec-expectations/upstream/.rubocop_todo.yml +335 -0
  339. data/rspec-expectations/upstream/.yardopts +1 -1
  340. data/rspec-expectations/upstream/BUILD_DETAIL.md +149 -0
  341. data/rspec-expectations/upstream/CODE_OF_CONDUCT.md +59 -0
  342. data/rspec-expectations/upstream/CONTRIBUTING.md +86 -0
  343. data/rspec-expectations/upstream/Changelog.md +454 -4
  344. data/rspec-expectations/upstream/DEV-README.md +3 -3
  345. data/rspec-expectations/upstream/DEVELOPMENT.md +131 -0
  346. data/rspec-expectations/upstream/Gemfile +77 -9
  347. data/rspec-expectations/upstream/ISSUE_TEMPLATE.md +24 -0
  348. data/{rspec-mocks/upstream/License.txt → rspec-expectations/upstream/LICENSE.md} +5 -4
  349. data/rspec-expectations/upstream/README.md +73 -31
  350. data/rspec-expectations/upstream/REPORT_TEMPLATE.md +43 -0
  351. data/rspec-expectations/upstream/Rakefile +13 -10
  352. data/rspec-expectations/upstream/Should.md +13 -5
  353. data/rspec-expectations/upstream/benchmarks/2.x_vs_3.x_matcher_dsl_implementation.rb +1 -2
  354. data/rspec-expectations/upstream/benchmarks/caller_vs_raise_for_backtrace.rb +77 -0
  355. data/rspec-expectations/upstream/benchmarks/count_vs_select_size.rb +68 -0
  356. data/rspec-expectations/upstream/benchmarks/default_messages_as_methods_v_blocks.rb +1 -1
  357. data/rspec-expectations/upstream/benchmarks/gsub_vs_tr_single_character.rb +28 -0
  358. data/rspec-expectations/upstream/benchmarks/include_matcher.rb +249 -0
  359. data/rspec-expectations/upstream/benchmarks/include_v_superclass.rb +0 -1
  360. data/rspec-expectations/upstream/benchmarks/match_array/failing_with_duplicate_items.rb +1 -1
  361. data/rspec-expectations/upstream/benchmarks/output_stringio_vs_tempfile.rb +31 -0
  362. data/rspec-expectations/upstream/benchmarks/set_vs_array_include.rb +1 -3
  363. data/rspec-expectations/upstream/cucumber.yml +9 -4
  364. data/rspec-expectations/upstream/features/.nav +1 -0
  365. data/rspec-expectations/upstream/features/aggregating_failures.feature +56 -0
  366. data/rspec-expectations/upstream/features/built_in_matchers/README.md +3 -3
  367. data/rspec-expectations/upstream/features/built_in_matchers/all.feature +3 -2
  368. data/rspec-expectations/upstream/features/built_in_matchers/be_within.feature +1 -1
  369. data/rspec-expectations/upstream/features/built_in_matchers/change.feature +8 -6
  370. data/rspec-expectations/upstream/features/built_in_matchers/comparisons.feature +33 -1
  371. data/rspec-expectations/upstream/features/built_in_matchers/contain_exactly.feature +1 -0
  372. data/rspec-expectations/upstream/features/built_in_matchers/cover.feature +3 -3
  373. data/rspec-expectations/upstream/features/built_in_matchers/exist.feature +1 -1
  374. data/rspec-expectations/upstream/features/built_in_matchers/have_attributes.feature +1 -2
  375. data/rspec-expectations/upstream/features/built_in_matchers/include.feature +74 -17
  376. data/rspec-expectations/upstream/features/built_in_matchers/match.feature +2 -2
  377. data/rspec-expectations/upstream/features/built_in_matchers/output.feature +67 -4
  378. data/rspec-expectations/upstream/features/built_in_matchers/predicates.feature +56 -19
  379. data/rspec-expectations/upstream/features/built_in_matchers/raise_error.feature +16 -2
  380. data/rspec-expectations/upstream/features/built_in_matchers/respond_to.feature +191 -3
  381. data/rspec-expectations/upstream/features/built_in_matchers/satisfy.feature +17 -8
  382. data/rspec-expectations/upstream/features/built_in_matchers/throw_symbol.feature +1 -1
  383. data/rspec-expectations/upstream/features/built_in_matchers/types.feature +34 -34
  384. data/rspec-expectations/upstream/features/built_in_matchers/yield.feature +2 -2
  385. data/rspec-expectations/upstream/features/composing_matchers.feature +4 -4
  386. data/rspec-expectations/upstream/features/custom_matchers/define_block_matcher.feature +78 -0
  387. data/rspec-expectations/upstream/features/custom_matchers/define_diffable_matcher.feature +115 -3
  388. data/rspec-expectations/upstream/features/custom_matchers/define_matcher.feature +173 -21
  389. data/rspec-expectations/upstream/features/custom_matchers/define_matcher_with_fluent_interface.feature +21 -2
  390. data/rspec-expectations/upstream/features/define_negated_matcher.feature +2 -1
  391. data/rspec-expectations/upstream/features/diffing.feature +29 -1
  392. data/rspec-expectations/upstream/features/implicit_docstrings.feature +8 -8
  393. data/rspec-expectations/upstream/features/step_definitions/additional_cli_steps.rb +11 -7
  394. data/rspec-expectations/upstream/features/support/diff_lcs_versions.rb +25 -0
  395. data/rspec-expectations/upstream/features/support/disallow_certain_apis.rb +3 -3
  396. data/rspec-expectations/upstream/features/support/env.rb +11 -11
  397. data/rspec-expectations/upstream/features/support/rubinius.rb +1 -1
  398. data/rspec-expectations/upstream/features/support/ruby_features.rb +39 -0
  399. data/rspec-expectations/upstream/features/syntax_configuration.feature +9 -9
  400. data/rspec-expectations/upstream/features/test_frameworks/minitest.feature +69 -2
  401. data/rspec-expectations/upstream/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  402. data/rspec-expectations/upstream/lib/rspec/expectations/configuration.rb +84 -1
  403. data/rspec-expectations/upstream/lib/rspec/expectations/expectation_target.rb +82 -38
  404. data/rspec-expectations/upstream/lib/rspec/expectations/fail_with.rb +11 -6
  405. data/rspec-expectations/upstream/lib/rspec/expectations/failure_aggregator.rb +212 -0
  406. data/rspec-expectations/upstream/lib/rspec/expectations/handler.rb +27 -12
  407. data/rspec-expectations/upstream/lib/rspec/expectations/minitest_integration.rb +43 -2
  408. data/rspec-expectations/upstream/lib/rspec/expectations/syntax.rb +5 -5
  409. data/rspec-expectations/upstream/lib/rspec/expectations/version.rb +1 -1
  410. data/rspec-expectations/upstream/lib/rspec/expectations.rb +15 -1
  411. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/all.rb +1 -0
  412. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/base_matcher.rb +77 -11
  413. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/be.rb +28 -114
  414. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/be_between.rb +1 -1
  415. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/be_instance_of.rb +5 -1
  416. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/be_kind_of.rb +5 -1
  417. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/be_within.rb +4 -4
  418. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/change.rb +168 -55
  419. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/compound.rb +61 -29
  420. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/contain_exactly.rb +73 -12
  421. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/count_expectation.rb +169 -0
  422. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/eq.rb +3 -38
  423. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/eql.rb +2 -2
  424. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/equal.rb +3 -3
  425. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/exist.rb +7 -3
  426. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/has.rb +90 -24
  427. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/have_attributes.rb +37 -7
  428. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/include.rb +124 -23
  429. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/match.rb +79 -2
  430. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/operators.rb +14 -5
  431. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/output.rb +56 -1
  432. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/raise_error.rb +126 -29
  433. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/respond_to.rb +118 -9
  434. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/satisfy.rb +28 -7
  435. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/{start_and_end_with.rb → start_or_end_with.rb} +20 -8
  436. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/throw_symbol.rb +11 -5
  437. data/rspec-expectations/upstream/lib/rspec/matchers/built_in/yield.rb +110 -155
  438. data/rspec-expectations/upstream/lib/rspec/matchers/built_in.rb +4 -3
  439. data/rspec-expectations/upstream/lib/rspec/matchers/composable.rb +23 -35
  440. data/rspec-expectations/upstream/lib/rspec/matchers/dsl.rb +179 -26
  441. data/rspec-expectations/upstream/lib/rspec/matchers/english_phrasing.rb +58 -0
  442. data/rspec-expectations/upstream/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
  443. data/rspec-expectations/upstream/lib/rspec/matchers/fail_matchers.rb +42 -0
  444. data/rspec-expectations/upstream/lib/rspec/matchers/generated_descriptions.rb +1 -2
  445. data/rspec-expectations/upstream/lib/rspec/matchers/matcher_delegator.rb +2 -0
  446. data/rspec-expectations/upstream/lib/rspec/matchers/matcher_protocol.rb +72 -66
  447. data/rspec-expectations/upstream/lib/rspec/matchers.rb +227 -150
  448. data/rspec-expectations/upstream/maintenance-branch +1 -1
  449. data/rspec-expectations/upstream/rspec-expectations.gemspec +13 -8
  450. data/rspec-expectations/upstream/script/ci_functions.sh +73 -0
  451. data/rspec-expectations/upstream/script/clone_all_rspec_repos +2 -2
  452. data/rspec-expectations/upstream/script/cucumber.sh +8 -0
  453. data/rspec-expectations/upstream/script/functions.sh +125 -89
  454. data/rspec-expectations/upstream/script/legacy_setup.sh +20 -0
  455. data/rspec-expectations/upstream/script/predicate_functions.sh +162 -0
  456. data/rspec-expectations/upstream/script/run_build +14 -9
  457. data/rspec-expectations/upstream/script/run_rubocop +14 -0
  458. data/rspec-expectations/upstream/script/update_rubygems_and_install_bundler +20 -0
  459. data/rspec-mocks/upstream/.document +1 -1
  460. data/rspec-mocks/upstream/.github/FUNDING.yml +5 -0
  461. data/rspec-mocks/upstream/.github/workflows/ci.yml +150 -0
  462. data/rspec-mocks/upstream/.gitignore +2 -0
  463. data/rspec-mocks/upstream/.rubocop.yml +28 -9
  464. data/rspec-mocks/upstream/.rubocop_rspec_base.yml +224 -38
  465. data/rspec-mocks/upstream/.rubocop_todo.yml +573 -0
  466. data/rspec-mocks/upstream/.yardopts +1 -1
  467. data/rspec-mocks/upstream/BUILD_DETAIL.md +149 -0
  468. data/rspec-mocks/upstream/CODE_OF_CONDUCT.md +59 -0
  469. data/rspec-mocks/upstream/CONTRIBUTING.md +86 -0
  470. data/rspec-mocks/upstream/Changelog.md +398 -3
  471. data/rspec-mocks/upstream/DEV-README.md +3 -3
  472. data/rspec-mocks/upstream/DEVELOPMENT.md +131 -0
  473. data/rspec-mocks/upstream/Gemfile +77 -10
  474. data/rspec-mocks/upstream/ISSUE_TEMPLATE.md +24 -0
  475. data/{rspec-expectations/upstream/License.txt → rspec-mocks/upstream/LICENSE.md} +5 -4
  476. data/rspec-mocks/upstream/README.md +83 -17
  477. data/rspec-mocks/upstream/REPORT_TEMPLATE.md +43 -0
  478. data/rspec-mocks/upstream/Rakefile +3 -3
  479. data/rspec-mocks/upstream/benchmarks/accessing_configuration_via_method_vs_cache.rb +52 -0
  480. data/rspec-mocks/upstream/benchmarks/allocations/1_object_1000_mocks.rb +76 -0
  481. data/rspec-mocks/upstream/benchmarks/allocations/helper.rb +17 -0
  482. data/rspec-mocks/upstream/benchmarks/each_value_v_values_each.rb +4 -5
  483. data/rspec-mocks/upstream/benchmarks/find_original_method_early.rb +1 -1
  484. data/rspec-mocks/upstream/benchmarks/method_defined_at_any_visibility.rb +3 -3
  485. data/rspec-mocks/upstream/benchmarks/thread_safety.rb +1 -1
  486. data/rspec-mocks/upstream/benchmarks/transfer_nested_constants.rb +1 -1
  487. data/rspec-mocks/upstream/cucumber.yml +8 -1
  488. data/rspec-mocks/upstream/features/.nav +2 -0
  489. data/rspec-mocks/upstream/features/basics/allowing_messages.feature +1 -1
  490. data/rspec-mocks/upstream/features/basics/expecting_messages.feature +40 -1
  491. data/rspec-mocks/upstream/features/basics/null_object_doubles.feature +1 -1
  492. data/rspec-mocks/upstream/features/basics/partial_test_doubles.feature +1 -1
  493. data/rspec-mocks/upstream/features/basics/scope.feature +5 -5
  494. data/rspec-mocks/upstream/features/basics/spies.feature +17 -30
  495. data/rspec-mocks/upstream/features/basics/test_doubles.feature +4 -4
  496. data/rspec-mocks/upstream/features/configuring_responses/README.md +2 -0
  497. data/rspec-mocks/upstream/features/configuring_responses/calling_the_original_implementation.feature +2 -2
  498. data/rspec-mocks/upstream/features/configuring_responses/mixed_responses.feature +25 -0
  499. data/rspec-mocks/upstream/features/configuring_responses/raising_an_error.feature +1 -0
  500. data/rspec-mocks/upstream/features/configuring_responses/wrapping_the_original_implementation.feature +3 -3
  501. data/rspec-mocks/upstream/features/configuring_responses/yielding.feature +2 -2
  502. data/rspec-mocks/upstream/features/mutating_constants/README.md +1 -1
  503. data/rspec-mocks/upstream/features/old_syntax/any_instance.feature +3 -3
  504. data/rspec-mocks/upstream/features/old_syntax/should_receive.feature +3 -1
  505. data/rspec-mocks/upstream/features/outside_rspec/any_test_framework.feature +116 -0
  506. data/rspec-mocks/upstream/features/outside_rspec/minitest.feature +202 -46
  507. data/rspec-mocks/upstream/features/outside_rspec/standalone.feature +5 -5
  508. data/rspec-mocks/upstream/features/setting_constraints/matching_arguments.feature +54 -27
  509. data/rspec-mocks/upstream/features/setting_constraints/message_order.feature +2 -2
  510. data/rspec-mocks/upstream/features/setting_constraints/receive_counts.feature +18 -0
  511. data/rspec-mocks/upstream/features/step_definitions/additional_cli_steps.rb +4 -4
  512. data/rspec-mocks/upstream/features/support/disallow_certain_apis.rb +3 -2
  513. data/rspec-mocks/upstream/features/support/env.rb +12 -12
  514. data/rspec-mocks/upstream/features/support/rubinius.rb +1 -1
  515. data/rspec-mocks/upstream/features/verifying_doubles/README.md +2 -2
  516. data/rspec-mocks/upstream/features/verifying_doubles/class_doubles.feature +1 -1
  517. data/rspec-mocks/upstream/features/verifying_doubles/dynamic_classes.feature +41 -5
  518. data/rspec-mocks/upstream/features/verifying_doubles/instance_doubles.feature +5 -3
  519. data/rspec-mocks/upstream/features/working_with_legacy_code/any_instance.feature +8 -6
  520. data/rspec-mocks/upstream/features/working_with_legacy_code/message_chains.feature +16 -1
  521. data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/chain.rb +3 -1
  522. data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  523. data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/expect_chain_chain.rb +1 -5
  524. data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/expectation_chain.rb +7 -5
  525. data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/message_chains.rb +1 -3
  526. data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/recorder.rb +42 -14
  527. data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/stub_chain.rb +13 -7
  528. data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/stub_chain_chain.rb +1 -5
  529. data/rspec-mocks/upstream/lib/rspec/mocks/any_instance.rb +1 -0
  530. data/rspec-mocks/upstream/lib/rspec/mocks/argument_list_matcher.rb +53 -10
  531. data/rspec-mocks/upstream/lib/rspec/mocks/argument_matchers.rb +66 -26
  532. data/rspec-mocks/upstream/lib/rspec/mocks/configuration.rb +59 -4
  533. data/rspec-mocks/upstream/lib/rspec/mocks/error_generator.rb +235 -108
  534. data/rspec-mocks/upstream/lib/rspec/mocks/example_methods.rb +82 -27
  535. data/rspec-mocks/upstream/lib/rspec/mocks/instance_method_stasher.rb +12 -1
  536. data/rspec-mocks/upstream/lib/rspec/mocks/matchers/have_received.rb +30 -17
  537. data/rspec-mocks/upstream/lib/rspec/mocks/matchers/receive.rb +28 -1
  538. data/rspec-mocks/upstream/lib/rspec/mocks/matchers/receive_message_chain.rb +17 -1
  539. data/rspec-mocks/upstream/lib/rspec/mocks/matchers/receive_messages.rb +6 -0
  540. data/rspec-mocks/upstream/lib/rspec/mocks/message_chain.rb +0 -4
  541. data/rspec-mocks/upstream/lib/rspec/mocks/message_expectation.rb +430 -304
  542. data/rspec-mocks/upstream/lib/rspec/mocks/method_double.rb +46 -15
  543. data/rspec-mocks/upstream/lib/rspec/mocks/method_reference.rb +78 -19
  544. data/rspec-mocks/upstream/lib/rspec/mocks/minitest_integration.rb +68 -0
  545. data/rspec-mocks/upstream/lib/rspec/mocks/mutate_const.rb +23 -8
  546. data/rspec-mocks/upstream/lib/rspec/mocks/object_reference.rb +81 -23
  547. data/rspec-mocks/upstream/lib/rspec/mocks/proxy.rb +135 -41
  548. data/rspec-mocks/upstream/lib/rspec/mocks/space.rb +33 -16
  549. data/rspec-mocks/upstream/lib/rspec/mocks/standalone.rb +1 -1
  550. data/rspec-mocks/upstream/lib/rspec/mocks/syntax.rb +18 -22
  551. data/rspec-mocks/upstream/lib/rspec/mocks/targets.rb +51 -24
  552. data/rspec-mocks/upstream/lib/rspec/mocks/test_double.rb +42 -6
  553. data/rspec-mocks/upstream/lib/rspec/mocks/verifying_double.rb +15 -21
  554. data/rspec-mocks/upstream/lib/rspec/mocks/{verifying_message_expecation.rb → verifying_message_expectation.rb} +11 -18
  555. data/rspec-mocks/upstream/lib/rspec/mocks/verifying_proxy.rb +60 -11
  556. data/rspec-mocks/upstream/lib/rspec/mocks/version.rb +1 -1
  557. data/rspec-mocks/upstream/lib/rspec/mocks.rb +8 -1
  558. data/rspec-mocks/upstream/maintenance-branch +1 -1
  559. data/rspec-mocks/upstream/rspec-mocks.gemspec +14 -6
  560. data/rspec-mocks/upstream/script/ci_functions.sh +73 -0
  561. data/rspec-mocks/upstream/script/clone_all_rspec_repos +2 -2
  562. data/rspec-mocks/upstream/script/cucumber.sh +8 -0
  563. data/rspec-mocks/upstream/script/functions.sh +125 -89
  564. data/rspec-mocks/upstream/script/legacy_setup.sh +20 -0
  565. data/rspec-mocks/upstream/script/predicate_functions.sh +162 -0
  566. data/rspec-mocks/upstream/script/run_build +14 -9
  567. data/rspec-mocks/upstream/script/run_rubocop +14 -0
  568. data/rspec-mocks/upstream/script/update_rubygems_and_install_bundler +20 -0
  569. data/{stubs/diff/lcs/assertions.rb → rspec-mocks/upstream/tmp/.gitkeep} +0 -0
  570. data/rspec-support/upstream/.github/FUNDING.yml +5 -0
  571. data/rspec-support/upstream/.github/workflows/ci.yml +150 -0
  572. data/rspec-support/upstream/.gitignore +4 -0
  573. data/rspec-support/upstream/.rubocop.yml +33 -1
  574. data/rspec-support/upstream/.rubocop_rspec_base.yml +224 -38
  575. data/rspec-support/upstream/.rubocop_todo.yml +424 -0
  576. data/rspec-support/upstream/BUILD_DETAIL.md +149 -0
  577. data/rspec-support/upstream/CODE_OF_CONDUCT.md +59 -0
  578. data/rspec-support/upstream/CONTRIBUTING.md +86 -0
  579. data/rspec-support/upstream/Changelog.md +287 -0
  580. data/rspec-support/upstream/DEVELOPMENT.md +131 -0
  581. data/rspec-support/upstream/Gemfile +52 -4
  582. data/rspec-support/upstream/ISSUE_TEMPLATE.md +24 -0
  583. data/rspec-support/upstream/{LICENSE.txt → LICENSE.md} +3 -2
  584. data/rspec-support/upstream/README.md +29 -6
  585. data/rspec-support/upstream/REPORT_TEMPLATE.md +43 -0
  586. data/rspec-support/upstream/Rakefile +9 -5
  587. data/rspec-support/upstream/benchmarks/caller_vs_caller_locations.rb +19 -0
  588. data/rspec-support/upstream/benchmarks/caller_vs_caller_locations_vs_raise.rb +153 -0
  589. data/rspec-support/upstream/benchmarks/class_exec_vs_klass_exec.rb +43 -0
  590. data/rspec-support/upstream/benchmarks/map_hash.rb +70 -0
  591. data/rspec-support/upstream/benchmarks/ripper.rb +44 -0
  592. data/rspec-support/upstream/benchmarks/skip_frames_for_caller_filter.rb +27 -0
  593. data/rspec-support/upstream/lib/rspec/support/caller_filter.rb +35 -15
  594. data/rspec-support/upstream/lib/rspec/support/comparable_version.rb +46 -0
  595. data/rspec-support/upstream/lib/rspec/support/differ.rb +35 -34
  596. data/rspec-support/upstream/lib/rspec/support/directory_maker.rb +3 -1
  597. data/rspec-support/upstream/lib/rspec/support/encoded_string.rb +103 -11
  598. data/rspec-support/upstream/lib/rspec/support/fuzzy_matcher.rb +5 -5
  599. data/rspec-support/upstream/lib/rspec/support/matcher_definition.rb +11 -0
  600. data/rspec-support/upstream/lib/rspec/support/method_signature_verifier.rb +192 -26
  601. data/rspec-support/upstream/lib/rspec/support/mutex.rb +73 -0
  602. data/rspec-support/upstream/lib/rspec/support/object_formatter.rb +275 -0
  603. data/rspec-support/upstream/lib/rspec/support/recursive_const_methods.rb +1 -1
  604. data/rspec-support/upstream/lib/rspec/support/reentrant_mutex.rb +78 -0
  605. data/rspec-support/upstream/lib/rspec/support/ruby_features.rb +168 -15
  606. data/rspec-support/upstream/lib/rspec/support/source/location.rb +21 -0
  607. data/rspec-support/upstream/lib/rspec/support/source/node.rb +110 -0
  608. data/rspec-support/upstream/lib/rspec/support/source/token.rb +94 -0
  609. data/rspec-support/upstream/lib/rspec/support/source.rb +85 -0
  610. data/rspec-support/upstream/lib/rspec/support/spec/deprecation_helpers.rb +17 -29
  611. data/rspec-support/upstream/lib/rspec/support/spec/diff_helpers.rb +31 -0
  612. data/rspec-support/upstream/lib/rspec/support/spec/in_sub_process.rb +41 -17
  613. data/rspec-support/upstream/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  614. data/rspec-support/upstream/lib/rspec/support/spec/shell_out.rb +39 -3
  615. data/rspec-support/upstream/lib/rspec/support/spec/stderr_splitter.rb +27 -4
  616. data/rspec-support/upstream/lib/rspec/support/spec/string_matcher.rb +45 -0
  617. data/rspec-support/upstream/lib/rspec/support/spec/with_isolated_directory.rb +5 -1
  618. data/rspec-support/upstream/lib/rspec/support/spec.rb +17 -7
  619. data/rspec-support/upstream/lib/rspec/support/version.rb +1 -1
  620. data/rspec-support/upstream/lib/rspec/support/warnings.rb +3 -3
  621. data/rspec-support/upstream/lib/rspec/support/with_keywords_when_needed.rb +33 -0
  622. data/rspec-support/upstream/lib/rspec/support.rb +81 -3
  623. data/rspec-support/upstream/maintenance-branch +1 -1
  624. data/rspec-support/upstream/rspec-support.gemspec +10 -4
  625. data/rspec-support/upstream/script/ci_functions.sh +73 -0
  626. data/rspec-support/upstream/script/clone_all_rspec_repos +2 -2
  627. data/rspec-support/upstream/script/cucumber.sh +8 -0
  628. data/rspec-support/upstream/script/functions.sh +125 -89
  629. data/rspec-support/upstream/script/legacy_setup.sh +20 -0
  630. data/rspec-support/upstream/script/predicate_functions.sh +162 -0
  631. data/rspec-support/upstream/script/run_build +14 -9
  632. data/rspec-support/upstream/script/run_rubocop +14 -0
  633. data/rspec-support/upstream/script/update_rubygems_and_install_bundler +20 -0
  634. data/stubs/{diff/lcs/block.rb → coderay.rb} +0 -0
  635. data/stubs/{diff/lcs/callbacks.rb → drb/acl.rb} +0 -0
  636. data/stubs/{diff/lcs/change.rb → erb/version.rb} +0 -0
  637. data/stubs/{diff/lcs/hunk.rb → open3.rb} +0 -0
  638. data/stubs/{diff/lcs/internals.rb → psych.rb} +0 -0
  639. data/stubs/{optparse.rb → ripper.rb} +0 -0
  640. data/stubs/{prettyprint.rb → thread_order.rb} +0 -0
  641. data/tasks/testing.rake +7 -3
  642. metadata +270 -61
  643. data/gemfiles/.bundle/config +0 -2
  644. data/gemfiles/opal_0.11.gemfile +0 -14
  645. data/gemfiles/opal_master.gemfile +0 -14
  646. data/lib-opal/opal/rspec/async/core_ext.rb +0 -23
  647. data/lib-opal/opal/rspec/async/legacy.rb +0 -49
  648. data/lib-opal/opal/rspec/fixes/rspec/caller_filter.rb +0 -6
  649. data/lib-opal/opal/rspec/fixes/rspec/core/example.rb +0 -20
  650. data/lib-opal/opal/rspec/fixes/rspec/core/formatters/backtrace_formatter.rb +0 -20
  651. data/lib-opal/opal/rspec/fixes/rspec/core/formatters/console_codes.rb +0 -11
  652. data/lib-opal/opal/rspec/fixes/rspec/core/formatters/generated_deprecation_message.rb +0 -15
  653. data/lib-opal/opal/rspec/fixes/rspec/core/formatters/json_formatter.rb +0 -15
  654. data/lib-opal/opal/rspec/fixes/rspec/core/notifications/failed_example_notification.rb +0 -20
  655. data/lib-opal/opal/rspec/fixes/rspec/core/notifications/summary_notification.rb +0 -21
  656. data/lib-opal/opal/rspec/fixes/rspec/core/warnings.rb +0 -27
  657. data/lib-opal/opal/rspec/fixes/rspec/expectations/fail_with.rb +0 -21
  658. data/lib-opal/opal/rspec/fixes/rspec/matchers/built_in/all.rb +0 -10
  659. data/lib-opal/opal/rspec/fixes/rspec/matchers/built_in/compound.rb +0 -15
  660. data/lib-opal/opal/rspec/fixes/rspec/matchers/built_in/yield.rb +0 -21
  661. data/lib-opal/opal/rspec/fixes/rspec/matchers/pretty.rb +0 -15
  662. data/lib-opal/opal/rspec/fixes/rspec/mocks/space.rb +0 -41
  663. data/lib-opal/opal/rspec/fixes/rspec/mocks/test_double.rb +0 -39
  664. data/lib-opal/opal/rspec/fixes/rspec/mocks/verifying_double.rb +0 -29
  665. data/lib-opal/opal/rspec/fixes/rspec/support/recursive_const_methods.rb +0 -7
  666. data/lib-opal/opal/rspec/fixes/rspec/support/spec/stderr_splitter.rb +0 -13
  667. data/lib-opal/opal/rspec/fixes/rspec/support/spec.rb +0 -1
  668. data/lib-opal/opal/rspec/fixes/rspec/support/warnings.rb +0 -16
  669. data/rspec/upstream/License.txt +0 -24
  670. data/rspec-core/upstream/.travis.yml +0 -35
  671. data/rspec-core/upstream/benchmarks/sort_by_v_shuffle.rb +0 -83
  672. data/rspec-core/upstream/features/Upgrade.md +0 -352
  673. data/rspec-core/upstream/lib/rspec/core/backport_random.rb +0 -336
  674. data/rspec-expectations/upstream/.travis.yml +0 -35
  675. data/rspec-expectations/upstream/lib/rspec/matchers/pretty.rb +0 -77
  676. data/rspec-mocks/upstream/.travis.yml +0 -35
  677. data/rspec-support/upstream/.travis.yml +0 -35
  678. data/rspec-support/upstream/lib/rspec/support/os.rb +0 -18
  679. data/rspec-support/upstream/lib/rspec/support/spec/prevent_load_time_warnings.rb +0 -44
  680. data/rspec-support/upstream/lib/rspec/support/version_checker.rb +0 -53
  681. data/stubs/shellwords.rb +0 -0
  682. data/stubs/uri.rb +0 -0
  683. data/vendor/spec_runner.js +0 -64
@@ -1,5 +1,7 @@
1
+ RSpec::Support.require_rspec_core "formatters/console_codes"
2
+ RSpec::Support.require_rspec_core "formatters/exception_presenter"
1
3
  RSpec::Support.require_rspec_core "formatters/helpers"
2
- RSpec::Support.require_rspec_support "encoded_string"
4
+ RSpec::Support.require_rspec_core "shell_escape"
3
5
 
4
6
  module RSpec::Core
5
7
  # Notifications are value objects passed to formatters to provide them
@@ -8,6 +10,7 @@ module RSpec::Core
8
10
  # @private
9
11
  module NullColorizer
10
12
  module_function
13
+
11
14
  def wrap(line, _code_or_symbol)
12
15
  line
13
16
  end
@@ -32,17 +35,26 @@ module RSpec::Core
32
35
  # end
33
36
  #
34
37
  # @attr example [RSpec::Core::Example] the current example
35
- ExampleNotification = Struct.new(:example) do
38
+ ExampleNotification = Struct.new(:example)
39
+ class ExampleNotification
36
40
  # @private
37
41
  def self.for(example)
38
- if example.execution_result.pending_fixed?
39
- PendingExampleFixedNotification.new(example)
40
- elsif example.execution_result.status == :failed
41
- FailedExampleNotification.new(example)
42
- else
43
- new(example)
44
- end
42
+ execution_result = example.execution_result
43
+
44
+ return SkippedExampleNotification.new(example) if execution_result.example_skipped?
45
+ return new(example) unless execution_result.status == :pending || execution_result.status == :failed
46
+
47
+ klass = if execution_result.pending_fixed?
48
+ PendingExampleFixedNotification
49
+ elsif execution_result.status == :pending
50
+ PendingExampleFailedAsExpectedNotification
51
+ else
52
+ FailedExampleNotification
53
+ end
54
+
55
+ klass.new(example)
45
56
  end
57
+
46
58
  private_class_method :new
47
59
  end
48
60
 
@@ -59,57 +71,59 @@ module RSpec::Core
59
71
  @reporter = reporter
60
72
  end
61
73
 
62
- # @return [Array(RSpec::Core::Example)] list of examples
74
+ # @return [Array<RSpec::Core::Example>] list of examples
63
75
  def examples
64
76
  @reporter.examples
65
77
  end
66
78
 
67
- # @return [Array(RSpec::Core::Example)] list of failed examples
79
+ # @return [Array<RSpec::Core::Example>] list of failed examples
68
80
  def failed_examples
69
81
  @reporter.failed_examples
70
82
  end
71
83
 
72
- # @return [Array(RSpec::Core::Example)] list of pending examples
84
+ # @return [Array<RSpec::Core::Example>] list of pending examples
73
85
  def pending_examples
74
86
  @reporter.pending_examples
75
87
  end
76
88
 
77
- # @return [Array(Rspec::Core::Notifications::ExampleNotification]
89
+ # @return [Array<RSpec::Core::Notifications::ExampleNotification>]
78
90
  # returns examples as notifications
79
91
  def notifications
80
92
  @notifications ||= format_examples(examples)
81
93
  end
82
94
 
83
- # @return [Array(Rspec::Core::Notifications::FailedExampleNotification]
95
+ # @return [Array<RSpec::Core::Notifications::FailedExampleNotification>]
84
96
  # returns failed examples as notifications
85
97
  def failure_notifications
86
98
  @failed_notifications ||= format_examples(failed_examples)
87
99
  end
88
100
 
89
- # @return [String] The list of failed examples, fully formatted in the way that
90
- # RSpec's built-in formatters emit.
101
+ # @return [Array<RSpec::Core::Notifications::SkippedExampleNotification,
102
+ # RSpec::Core::Notifications::PendingExampleFailedAsExpectedNotification>]
103
+ # returns pending examples as notifications
104
+ def pending_notifications
105
+ @pending_notifications ||= format_examples(pending_examples)
106
+ end
107
+
108
+ # @return [String] The list of failed examples, fully formatted in the way
109
+ # that RSpec's built-in formatters emit.
91
110
  def fully_formatted_failed_examples(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
92
111
  formatted = "\nFailures:\n"
93
112
 
94
113
  failure_notifications.each_with_index do |failure, index|
95
- formatted << failure.fully_formatted(index.next, colorizer)
114
+ formatted += failure.fully_formatted(index.next, colorizer)
96
115
  end
97
116
 
98
117
  formatted
99
118
  end
100
119
 
101
- # @return [String] The list of pending examples, fully formatted in the way that
102
- # RSpec's built-in formatters emit.
120
+ # @return [String] The list of pending examples, fully formatted in the
121
+ # way that RSpec's built-in formatters emit.
103
122
  def fully_formatted_pending_examples(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
104
- formatted = "\nPending:\n"
123
+ formatted = "\nPending: (Failures listed here are expected and do not affect your suite's status)\n".dup
105
124
 
106
- pending_examples.each do |example|
107
- formatted_caller = RSpec.configuration.backtrace_formatter.backtrace_line(example.location)
108
-
109
- formatted <<
110
- " #{colorizer.wrap(example.full_description, :pending)}\n" \
111
- " # #{colorizer.wrap(example.execution_result.pending_message, :detail)}\n" \
112
- " # #{colorizer.wrap(formatted_caller, :detail)}\n"
125
+ pending_notifications.each_with_index do |notification, index|
126
+ formatted << notification.fully_formatted(index.next, colorizer)
113
127
  end
114
128
 
115
129
  formatted
@@ -125,7 +139,8 @@ module RSpec::Core
125
139
  end
126
140
 
127
141
  # The `FailedExampleNotification` extends `ExampleNotification` with
128
- # things useful for failed specs.
142
+ # things useful for examples that have failure info -- typically a
143
+ # failed or pending spec.
129
144
  #
130
145
  # @example
131
146
  # def example_failed(notification)
@@ -141,183 +156,97 @@ module RSpec::Core
141
156
 
142
157
  # @return [Exception] The example failure
143
158
  def exception
144
- example.execution_result.exception
159
+ @exception_presenter.exception
145
160
  end
146
161
 
147
162
  # @return [String] The example description
148
163
  def description
149
- example.full_description
164
+ @exception_presenter.description
150
165
  end
151
166
 
152
167
  # Returns the message generated for this failure line by line.
153
168
  #
154
- # @return [Array(String)] The example failure message
169
+ # @return [Array<String>] The example failure message
155
170
  def message_lines
156
- add_shared_group_line(failure_lines, NullColorizer)
171
+ @exception_presenter.message_lines
157
172
  end
158
173
 
159
174
  # Returns the message generated for this failure colorized line by line.
160
175
  #
161
176
  # @param colorizer [#wrap] An object to colorize the message_lines by
162
- # @return [Array(String)] The example failure message colorized
177
+ # @return [Array<String>] The example failure message colorized
163
178
  def colorized_message_lines(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
164
- add_shared_group_line(failure_lines, colorizer).map do |line|
165
- colorizer.wrap line, RSpec.configuration.failure_color
166
- end
179
+ @exception_presenter.colorized_message_lines(colorizer)
167
180
  end
168
181
 
169
182
  # Returns the failures formatted backtrace.
170
183
  #
171
- # @return [Array(String)] the examples backtrace lines
184
+ # @return [Array<String>] the examples backtrace lines
172
185
  def formatted_backtrace
173
- backtrace_formatter.format_backtrace(exception.backtrace, example.metadata)
186
+ @exception_presenter.formatted_backtrace
174
187
  end
175
188
 
176
189
  # Returns the failures colorized formatted backtrace.
177
190
  #
178
191
  # @param colorizer [#wrap] An object to colorize the message_lines by
179
- # @return [Array(String)] the examples colorized backtrace lines
192
+ # @return [Array<String>] the examples colorized backtrace lines
180
193
  def colorized_formatted_backtrace(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
181
- formatted_backtrace.map do |backtrace_info|
182
- colorizer.wrap "# #{backtrace_info}", RSpec.configuration.detail_color
183
- end
194
+ @exception_presenter.colorized_formatted_backtrace(colorizer)
184
195
  end
185
196
 
186
197
  # @return [String] The failure information fully formatted in the way that
187
198
  # RSpec's built-in formatters emit.
188
199
  def fully_formatted(failure_number, colorizer=::RSpec::Core::Formatters::ConsoleCodes)
189
- formatted = "\n #{failure_number}) #{description}\n"
190
-
191
- colorized_message_lines(colorizer).each do |line|
192
- formatted << RSpec::Support::EncodedString.new(" #{line}\n", encoding_of(formatted))
193
- end
194
-
195
- colorized_formatted_backtrace(colorizer).each do |line|
196
- formatted << RSpec::Support::EncodedString.new(" #{line}\n", encoding_of(formatted))
197
- end
198
-
199
- formatted
200
- end
201
-
202
- private
203
-
204
- if String.method_defined?(:encoding)
205
- def encoding_of(string)
206
- string.encoding
207
- end
208
- else
209
- def encoding_of(_string)
210
- end
211
- end
212
-
213
- def backtrace_formatter
214
- RSpec.configuration.backtrace_formatter
215
- end
216
-
217
- def exception_class_name
218
- name = exception.class.name.to_s
219
- name = "(anonymous error class)" if name == ''
220
- name
221
- end
222
-
223
- def failure_lines
224
- @failure_lines ||=
225
- begin
226
- lines = ["Failure/Error: #{read_failed_line.strip}"]
227
- lines << "#{exception_class_name}:" unless exception_class_name =~ /RSpec/
228
- exception.message.to_s.split("\n").each do |line|
229
- lines << " #{line}" if exception.message
230
- end
231
- lines
232
- end
233
- end
234
-
235
- def add_shared_group_line(lines, colorizer)
236
- unless shared_group_line == ""
237
- lines << colorizer.wrap(shared_group_line, RSpec.configuration.default_color)
238
- end
239
- lines
200
+ @exception_presenter.fully_formatted(failure_number, colorizer)
240
201
  end
241
202
 
242
- def shared_group
243
- @shared_group ||= group_and_parent_groups.find { |group| group.metadata[:shared_group_name] }
203
+ # @return [Array<string>] The failure information fully formatted in the way that
204
+ # RSpec's built-in formatters emit, split by line.
205
+ def fully_formatted_lines(failure_number, colorizer=::RSpec::Core::Formatters::ConsoleCodes)
206
+ @exception_presenter.fully_formatted_lines(failure_number, colorizer)
244
207
  end
245
208
 
246
- def shared_group_line
247
- @shared_group_line ||=
248
- if shared_group
249
- "Shared Example Group: \"#{shared_group.metadata[:shared_group_name]}\"" \
250
- " called from #{backtrace_formatter.backtrace_line(shared_group.location)}"
251
- else
252
- ""
253
- end
254
- end
209
+ private
255
210
 
256
- def group_and_parent_groups
257
- example.example_group.parent_groups + [example.example_group]
211
+ def initialize(example, exception_presenter=Formatters::ExceptionPresenter::Factory.new(example).build)
212
+ @exception_presenter = exception_presenter
213
+ super(example)
258
214
  end
215
+ end
259
216
 
260
- def read_failed_line
261
- matching_line = find_failed_line
262
- unless matching_line
263
- return "Unable to find matching line from backtrace"
264
- end
265
-
266
- file_path, line_number = matching_line.match(/(.+?):(\d+)(|:\d+)/)[1..2]
267
-
268
- if File.exist?(file_path)
269
- File.readlines(file_path)[line_number.to_i - 1] ||
270
- "Unable to find matching line in #{file_path}"
271
- else
272
- "Unable to find #{file_path} to read failed line"
273
- end
274
- rescue SecurityError
275
- "Unable to read failed line"
276
- end
217
+ # @deprecated Use {FailedExampleNotification} instead.
218
+ class PendingExampleFixedNotification < FailedExampleNotification; end
277
219
 
278
- def find_failed_line
279
- path = File.expand_path(example.file_path)
280
- exception.backtrace.find do |line|
281
- match = line.match(/(.+?):(\d+)(|:\d+)/)
282
- match && match[1].downcase == path.downcase
283
- end
284
- end
285
- end
220
+ # @deprecated Use {FailedExampleNotification} instead.
221
+ class PendingExampleFailedAsExpectedNotification < FailedExampleNotification; end
286
222
 
287
- # The `PendingExampleFixedNotification` extends `ExampleNotification` with
288
- # things useful for specs that pass when they are expected to fail.
223
+ # The `SkippedExampleNotification` extends `ExampleNotification` with
224
+ # things useful for specs that are skipped.
289
225
  #
290
226
  # @attr [RSpec::Core::Example] example the current example
291
227
  # @see ExampleNotification
292
- class PendingExampleFixedNotification < FailedExampleNotification
228
+ class SkippedExampleNotification < ExampleNotification
293
229
  public_class_method :new
294
230
 
295
- # Returns the examples description
296
- #
297
- # @return [String] The example description
298
- def description
299
- "#{example.full_description} FIXED"
300
- end
301
-
302
- # Returns the message generated for this failure line by line.
303
- #
304
- # @return [Array(String)] The example failure message
305
- def message_lines
306
- ["Expected pending '#{example.execution_result.pending_message}' to fail. No Error was raised."]
307
- end
231
+ # @return [String] The pending detail fully formatted in the way that
232
+ # RSpec's built-in formatters emit.
233
+ def fully_formatted(pending_number, colorizer=::RSpec::Core::Formatters::ConsoleCodes)
234
+ formatted_caller = RSpec.configuration.backtrace_formatter.backtrace_line(example.location)
308
235
 
309
- # Returns the message generated for this failure colorized line by line.
310
- #
311
- # @param colorizer [#wrap] An object to colorize the message_lines by
312
- # @return [Array(String)] The example failure message colorized
313
- def colorized_message_lines(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
314
- message_lines.map { |line| colorizer.wrap(line, RSpec.configuration.fixed_color) }
236
+ [
237
+ colorizer.wrap("\n #{pending_number}) #{example.full_description}", :pending),
238
+ "\n ",
239
+ Formatters::ExceptionPresenter::PENDING_DETAIL_FORMATTER.call(example, colorizer),
240
+ "\n",
241
+ colorizer.wrap(" # #{formatted_caller}\n", :detail)
242
+ ].join("")
315
243
  end
316
244
  end
317
245
 
318
- # The `GroupNotification` represents notifications sent by the reporter which
319
- # contain information about the currently running (or soon to be) example group
320
- # It is used by formatters to access information about that group.
246
+ # The `GroupNotification` represents notifications sent by the reporter
247
+ # which contain information about the currently running (or soon to be)
248
+ # example group. It is used by formatters to access information about that
249
+ # group.
321
250
  #
322
251
  # @example
323
252
  # def example_group_started(notification)
@@ -333,11 +262,12 @@ module RSpec::Core
333
262
  MessageNotification = Struct.new(:message)
334
263
 
335
264
  # The `SeedNotification` holds the seed used to randomize examples and
336
- # wether that seed has been used or not.
265
+ # whether that seed has been used or not.
337
266
  #
338
267
  # @attr seed [Fixnum] the seed used to randomize ordering
339
- # @attr used [Boolean] wether the seed has been used or not
340
- SeedNotification = Struct.new(:seed, :used) do
268
+ # @attr used [Boolean] whether the seed has been used or not
269
+ SeedNotification = Struct.new(:seed, :used)
270
+ class SeedNotification
341
271
  # @api
342
272
  # @return [Boolean] has the seed been used?
343
273
  def seed_used?
@@ -348,7 +278,7 @@ module RSpec::Core
348
278
  # @return [String] The seed information fully formatted in the way that
349
279
  # RSpec's built-in formatters emit.
350
280
  def fully_formatted
351
- "\nRandomized with seed #{seed}\n\n"
281
+ "\nRandomized with seed #{seed}\n"
352
282
  end
353
283
  end
354
284
 
@@ -357,13 +287,18 @@ module RSpec::Core
357
287
  # of the test run.
358
288
  #
359
289
  # @attr duration [Float] the time taken (in seconds) to run the suite
360
- # @attr examples [Array(RSpec::Core::Example)] the examples run
361
- # @attr failed_examples [Array(RSpec::Core::Example)] the failed examples
362
- # @attr pending_examples [Array(RSpec::Core::Example)] the pending examples
290
+ # @attr examples [Array<RSpec::Core::Example>] the examples run
291
+ # @attr failed_examples [Array<RSpec::Core::Example>] the failed examples
292
+ # @attr pending_examples [Array<RSpec::Core::Example>] the pending examples
363
293
  # @attr load_time [Float] the number of seconds taken to boot RSpec
364
294
  # and load the spec files
365
- SummaryNotification = Struct.new(:duration, :examples, :failed_examples, :pending_examples, :load_time) do
366
-
295
+ # @attr errors_outside_of_examples_count [Integer] the number of errors that
296
+ # have occurred processing
297
+ # the spec suite
298
+ SummaryNotification = Struct.new(:duration, :examples, :failed_examples,
299
+ :pending_examples, :load_time,
300
+ :errors_outside_of_examples_count)
301
+ class SummaryNotification
367
302
  # @api
368
303
  # @return [Fixnum] the number of examples run
369
304
  def example_count
@@ -385,9 +320,16 @@ module RSpec::Core
385
320
  # @api
386
321
  # @return [String] A line summarising the result totals of the spec run.
387
322
  def totals_line
388
- summary = Formatters::Helpers.pluralize(example_count, "example")
389
- summary << ", " << Formatters::Helpers.pluralize(failure_count, "failure")
390
- summary << ", #{pending_count} pending" if pending_count > 0
323
+ summary = Formatters::Helpers.pluralize(example_count, "example") +
324
+ ", " + Formatters::Helpers.pluralize(failure_count, "failure")
325
+ summary += ", #{pending_count} pending" if pending_count > 0
326
+ if errors_outside_of_examples_count > 0
327
+ summary += (
328
+ ", " +
329
+ Formatters::Helpers.pluralize(errors_outside_of_examples_count, "error") +
330
+ " occurred outside of examples"
331
+ )
332
+ end
391
333
  summary
392
334
  end
393
335
 
@@ -401,7 +343,7 @@ module RSpec::Core
401
343
  # specific colors.
402
344
  # @return [String] A colorized results line.
403
345
  def colorized_totals_line(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
404
- if failure_count > 0
346
+ if failure_count > 0 || errors_outside_of_examples_count > 0
405
347
  colorizer.wrap(totals_line, RSpec.configuration.failure_color)
406
348
  elsif pending_count > 0
407
349
  colorizer.wrap(totals_line, RSpec.configuration.pending_color)
@@ -420,18 +362,19 @@ module RSpec::Core
420
362
  def colorized_rerun_commands(colorizer=::RSpec::Core::Formatters::ConsoleCodes)
421
363
  "\nFailed examples:\n\n" +
422
364
  failed_examples.map do |example|
423
- colorizer.wrap("rspec #{example.location}", RSpec.configuration.failure_color) + " " +
424
- colorizer.wrap("# #{example.full_description}", RSpec.configuration.detail_color)
365
+ colorizer.wrap("rspec #{rerun_argument_for(example)}", RSpec.configuration.failure_color) + " " +
366
+ colorizer.wrap("# #{example.full_description}", RSpec.configuration.detail_color)
425
367
  end.join("\n")
426
368
  end
427
369
 
428
- # @return [String] a formatted version of the time it took to run the suite
370
+ # @return [String] a formatted version of the time it took to run the
371
+ # suite
429
372
  def formatted_duration
430
373
  Formatters::Helpers.format_duration(duration)
431
374
  end
432
375
 
433
- # @return [String] a formatted version of the time it took to boot RSpec and
434
- # load the spec files
376
+ # @return [String] a formatted version of the time it took to boot RSpec
377
+ # and load the spec files
435
378
  def formatted_load_time
436
379
  Formatters::Helpers.format_duration(load_time)
437
380
  end
@@ -444,23 +387,53 @@ module RSpec::Core
444
387
  "#{colorized_totals_line(colorizer)}\n"
445
388
 
446
389
  unless failed_examples.empty?
447
- formatted << colorized_rerun_commands(colorizer) << "\n"
390
+ formatted += (colorized_rerun_commands(colorizer) + "\n")
448
391
  end
449
392
 
450
393
  formatted
451
394
  end
395
+
396
+ private
397
+
398
+ include RSpec::Core::ShellEscape
399
+
400
+ def rerun_argument_for(example)
401
+ location = example.location_rerun_argument
402
+ return location unless duplicate_rerun_locations.include?(location)
403
+ conditionally_quote(example.id)
404
+ end
405
+
406
+ def duplicate_rerun_locations
407
+ @duplicate_rerun_locations ||= begin
408
+ locations = RSpec.world.all_examples.map(&:location_rerun_argument)
409
+
410
+ Set.new.tap do |s|
411
+ locations.group_by { |l| l }.each do |l, ls|
412
+ s << l if ls.count > 1
413
+ end
414
+ end
415
+ end
416
+ end
452
417
  end
453
418
 
454
- # The `ProfileNotification` holds information about the results of running
455
- # a test suite when profiling is enabled. It is used by formatters to provide
419
+ # The `ProfileNotification` holds information about the results of running a
420
+ # test suite when profiling is enabled. It is used by formatters to provide
456
421
  # information at the end of the test run for profiling information.
457
422
  #
458
423
  # @attr duration [Float] the time taken (in seconds) to run the suite
459
- # @attr examples [Array(RSpec::Core::Example)] the examples run
424
+ # @attr examples [Array<RSpec::Core::Example>] the examples run
460
425
  # @attr number_of_examples [Fixnum] the number of examples to profile
461
- ProfileNotification = Struct.new(:duration, :examples, :number_of_examples) do
426
+ # @attr example_groups [Array<RSpec::Core::Profiler>] example groups run
427
+ class ProfileNotification
428
+ def initialize(duration, examples, number_of_examples, example_groups)
429
+ @duration = duration
430
+ @examples = examples
431
+ @number_of_examples = number_of_examples
432
+ @example_groups = example_groups
433
+ end
434
+ attr_reader :duration, :examples, :number_of_examples
462
435
 
463
- # @return [Array(RSpec::Core::Example)] the slowest examples
436
+ # @return [Array<RSpec::Core::Example>] the slowest examples
464
437
  def slowest_examples
465
438
  @slowest_examples ||=
466
439
  examples.sort_by do |example|
@@ -485,7 +458,7 @@ module RSpec::Core
485
458
  end
486
459
  end
487
460
 
488
- # @return [Array(RSpec::Core::Example)] the slowest example groups
461
+ # @return [Array<RSpec::Core::Example>] the slowest example groups
489
462
  def slowest_groups
490
463
  @slowest_groups ||= calculate_slowest_groups
491
464
  end
@@ -493,38 +466,30 @@ module RSpec::Core
493
466
  private
494
467
 
495
468
  def calculate_slowest_groups
496
- example_groups = {}
497
-
498
- examples.each do |example|
499
- location = example.example_group.parent_groups.last.metadata[:location]
500
-
501
- location_hash = example_groups[location] ||= Hash.new(0)
502
- location_hash[:total_time] += example.execution_result.run_time
503
- location_hash[:count] += 1
504
- next if location_hash.key?(:description)
505
- location_hash[:description] = example.example_group.top_level_description
506
- end
507
-
508
469
  # stop if we've only one example group
509
- return {} if example_groups.keys.length <= 1
470
+ return {} if @example_groups.keys.length <= 1
510
471
 
511
- example_groups.each_value do |hash|
472
+ @example_groups.each_value do |hash|
512
473
  hash[:average] = hash[:total_time].to_f / hash[:count]
513
474
  end
514
475
 
515
- example_groups.sort_by { |_, hash| -hash[:average] }.first(number_of_examples)
476
+ groups = @example_groups.sort_by { |_, hash| -hash[:average] }.first(number_of_examples)
477
+ groups.map { |group, data| [group.location, data] }
516
478
  end
517
479
  end
518
480
 
519
481
  # The `DeprecationNotification` is issued by the reporter when a deprecated
520
- # part of RSpec is encountered. It represents information about the deprecated
521
- # call site.
482
+ # part of RSpec is encountered. It represents information about the
483
+ # deprecated call site.
522
484
  #
523
485
  # @attr message [String] A custom message about the deprecation
524
- # @attr deprecated [String] A custom message about the deprecation (alias of message)
486
+ # @attr deprecated [String] A custom message about the deprecation (alias of
487
+ # message)
525
488
  # @attr replacement [String] An optional replacement for the deprecation
526
- # @attr call_site [String] An optional call site from which the deprecation was issued
527
- DeprecationNotification = Struct.new(:deprecated, :message, :replacement, :call_site) do
489
+ # @attr call_site [String] An optional call site from which the deprecation
490
+ # was issued
491
+ DeprecationNotification = Struct.new(:deprecated, :message, :replacement, :call_site)
492
+ class DeprecationNotification
528
493
  private_class_method :new
529
494
 
530
495
  # @api
@@ -538,5 +503,19 @@ module RSpec::Core
538
503
  # currently require no information, but we may wish to extend in future.
539
504
  class NullNotification
540
505
  end
506
+
507
+ # `CustomNotification` is used when sending custom events to formatters /
508
+ # other registered listeners, it creates attributes based on supplied hash
509
+ # of options.
510
+ class CustomNotification < Struct
511
+ # @param options [Hash] A hash of method / value pairs to create on this notification
512
+ # @return [CustomNotification]
513
+ #
514
+ # Build a custom notification based on the supplied option key / values.
515
+ def self.for(options={})
516
+ return NullNotification if options.keys.empty?
517
+ new(*options.keys).new(*options.values)
518
+ end
519
+ end
541
520
  end
542
521
  end