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.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +7 -7
- data/.gitmodules +6 -0
- data/CHANGELOG.md +16 -1
- data/Gemfile +13 -0
- data/README.md +63 -59
- data/diff-lcs/spec/files_to_exclude.txt +1 -0
- data/diff-lcs/spec/requires.rb +4 -0
- data/diff-lcs/upstream/.autotest +5 -0
- data/diff-lcs/upstream/.fasterer.yml +3 -0
- data/{stubs/diff/lcs.rb → diff-lcs/upstream/.gemtest} +0 -0
- data/diff-lcs/upstream/.github/workflows/ci.yml +64 -0
- data/diff-lcs/upstream/.github/workflows/codeql-analysis.yml +70 -0
- data/diff-lcs/upstream/.gitignore +20 -0
- data/diff-lcs/upstream/.hoerc +52 -0
- data/diff-lcs/upstream/.rspec +1 -0
- data/diff-lcs/upstream/.standard.yml +6 -0
- data/diff-lcs/upstream/Code-of-Conduct.md +74 -0
- data/diff-lcs/upstream/Contributing.md +119 -0
- data/diff-lcs/upstream/Gemfile +28 -0
- data/diff-lcs/upstream/History.md +407 -0
- data/diff-lcs/upstream/License.md +41 -0
- data/diff-lcs/upstream/Manifest.txt +59 -0
- data/diff-lcs/upstream/README.rdoc +84 -0
- data/diff-lcs/upstream/Rakefile +127 -0
- data/diff-lcs/upstream/bin/htmldiff +35 -0
- data/diff-lcs/upstream/bin/ldiff +9 -0
- data/diff-lcs/upstream/diff-lcs.gemspec +48 -0
- data/diff-lcs/upstream/docs/COPYING.txt +339 -0
- data/diff-lcs/upstream/docs/artistic.txt +127 -0
- data/diff-lcs/upstream/lib/diff/lcs/array.rb +7 -0
- data/diff-lcs/upstream/lib/diff/lcs/backports.rb +9 -0
- data/diff-lcs/upstream/lib/diff/lcs/block.rb +37 -0
- data/diff-lcs/upstream/lib/diff/lcs/callbacks.rb +327 -0
- data/diff-lcs/upstream/lib/diff/lcs/change.rb +174 -0
- data/diff-lcs/upstream/lib/diff/lcs/htmldiff.rb +158 -0
- data/diff-lcs/upstream/lib/diff/lcs/hunk.rb +363 -0
- data/diff-lcs/upstream/lib/diff/lcs/internals.rb +308 -0
- data/diff-lcs/upstream/lib/diff/lcs/ldiff.rb +173 -0
- data/diff-lcs/upstream/lib/diff/lcs/string.rb +5 -0
- data/diff-lcs/upstream/lib/diff/lcs.rb +741 -0
- data/diff-lcs/upstream/lib/diff-lcs.rb +3 -0
- data/diff-lcs/upstream/spec/change_spec.rb +89 -0
- data/diff-lcs/upstream/spec/diff_spec.rb +51 -0
- data/diff-lcs/upstream/spec/fixtures/aX +1 -0
- data/diff-lcs/upstream/spec/fixtures/bXaX +1 -0
- data/diff-lcs/upstream/spec/fixtures/ds1.csv +50 -0
- data/diff-lcs/upstream/spec/fixtures/ds2.csv +51 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff +4 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff-c +7 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff-e +3 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff-f +3 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff-u +5 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef +4 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef-c +15 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef-e +3 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef-f +3 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef-u +9 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2 +7 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2-c +20 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2-d +7 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2-e +7 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2-f +7 -0
- data/diff-lcs/upstream/spec/fixtures/ldiff/output.diff.chef2-u +16 -0
- data/diff-lcs/upstream/spec/fixtures/new-chef +4 -0
- data/diff-lcs/upstream/spec/fixtures/new-chef2 +17 -0
- data/diff-lcs/upstream/spec/fixtures/old-chef +4 -0
- data/diff-lcs/upstream/spec/fixtures/old-chef2 +14 -0
- data/diff-lcs/upstream/spec/hunk_spec.rb +83 -0
- data/diff-lcs/upstream/spec/issues_spec.rb +160 -0
- data/diff-lcs/upstream/spec/lcs_spec.rb +56 -0
- data/diff-lcs/upstream/spec/ldiff_spec.rb +89 -0
- data/diff-lcs/upstream/spec/patch_spec.rb +416 -0
- data/diff-lcs/upstream/spec/sdiff_spec.rb +216 -0
- data/diff-lcs/upstream/spec/spec_helper.rb +376 -0
- data/diff-lcs/upstream/spec/traverse_balanced_spec.rb +312 -0
- data/diff-lcs/upstream/spec/traverse_sequences_spec.rb +137 -0
- data/lib/opal/rspec/runner.rb +11 -0
- data/lib/opal/rspec/sprockets.rb +6 -0
- data/lib/opal/rspec/version.rb +1 -1
- data/lib/opal/rspec.rb +1 -2
- data/lib-opal/opal/rspec/async/configuration.rb +39 -0
- data/lib-opal/opal/rspec/async/example.rb +80 -168
- data/lib-opal/opal/rspec/async/example_group.rb +71 -81
- data/lib-opal/opal/rspec/async/hooks.rb +98 -8
- data/lib-opal/opal/rspec/async/memoized_helpers.rb +32 -0
- data/lib-opal/opal/rspec/async/reporter.rb +6 -3
- data/lib-opal/opal/rspec/async/runner.rb +33 -24
- data/lib-opal/opal/rspec/async.rb +4 -1
- data/lib-opal/opal/rspec/browser.rb +0 -8
- data/lib-opal/opal/rspec/browser_early.rb +5 -0
- data/lib-opal/opal/rspec/fixes/diff-lcs/hunk.rb +164 -0
- data/lib-opal/opal/rspec/fixes/diff-lcs/lcs.rb +112 -0
- data/lib-opal/opal/rspec/fixes/diff-lcs.rb +2 -0
- data/lib-opal/opal/rspec/fixes/opal.rb +4 -17
- data/lib-opal/opal/rspec/fixes/rspec/core/example_status_persister.rb +11 -0
- data/lib-opal/opal/rspec/fixes/rspec/core/formatters/deprecation_formatter.rb +3 -12
- data/lib-opal/opal/rspec/fixes/rspec/core/formatters/exception_presenter.rb +28 -0
- data/lib-opal/opal/rspec/fixes/rspec/core/formatters/loader.rb +0 -32
- data/lib-opal/opal/rspec/fixes/rspec/core/formatters/snippet_extractor.rb +17 -0
- data/lib-opal/opal/rspec/fixes/rspec/core/formatters/syntax_highlighter.rb +17 -0
- data/lib-opal/opal/rspec/fixes/rspec/core/formatters.rb +3 -4
- data/lib-opal/opal/rspec/fixes/rspec/core/metadata.rb +24 -8
- data/lib-opal/opal/rspec/fixes/rspec/core/notifications/examples_notification.rb +3 -20
- data/lib-opal/opal/rspec/fixes/rspec/core/notifications.rb +0 -2
- data/lib-opal/opal/rspec/fixes/rspec/core.rb +1 -2
- data/lib-opal/opal/rspec/fixes/rspec/expectations.rb +0 -1
- data/lib-opal/opal/rspec/fixes/rspec/matchers/built_in/base_matcher.rb +26 -0
- data/lib-opal/opal/rspec/fixes/rspec/matchers/built_in.rb +1 -3
- data/lib-opal/opal/rspec/fixes/rspec/matchers/expecteds_for_multiple_diffs.rb +13 -0
- data/lib-opal/opal/rspec/fixes/rspec/matchers.rb +1 -1
- data/lib-opal/opal/rspec/fixes/rspec/mocks/error_generator.rb +26 -10
- data/lib-opal/opal/rspec/fixes/rspec/mocks/proxy.rb +19 -0
- data/lib-opal/opal/rspec/fixes/rspec/mocks.rb +1 -3
- data/lib-opal/opal/rspec/fixes/rspec/support/differ.rb +29 -0
- data/lib-opal/opal/rspec/fixes/rspec/support/encoded_string.rb +9 -5
- data/lib-opal/opal/rspec/fixes/rspec/support/ruby_features.rb +22 -0
- data/lib-opal/opal/rspec/fixes/rspec/support/source.rb +15 -0
- data/lib-opal/opal/rspec/fixes/rspec/support.rb +3 -3
- data/lib-opal/opal/rspec/fixes/rspec.rb +0 -1
- data/lib-opal/opal/rspec/fixes.rb +1 -0
- data/lib-opal/opal/rspec/formatter/document_io.rb +1 -1
- data/lib-opal/opal/rspec/formatter/html_printer.rb +1 -1
- data/lib-opal/opal/rspec/pre_require_fixes.rb +1 -5
- data/lib-opal/opal/rspec/requires.rb +32 -19
- data/lib-opal/opal/rspec/sprockets_runner.rb.erb +1 -0
- data/lib-opal/opal/rspec.rb +3 -0
- data/opal-rspec.gemspec +1 -1
- data/rspec/upstream/.document +1 -1
- data/rspec/upstream/.github/FUNDING.yml +5 -0
- data/rspec/upstream/.gitignore +1 -0
- data/rspec/upstream/LICENSE.md +27 -0
- data/rspec/upstream/README.md +26 -26
- data/rspec/upstream/Rakefile +1 -1
- data/rspec/upstream/certs/rspec.pem +32 -20
- data/rspec/upstream/certs/samphippen.asc +18 -0
- data/rspec/upstream/code_of_conduct.md +59 -0
- data/rspec/upstream/lib/rspec/version.rb +1 -1
- data/rspec/upstream/rspec.gemspec +7 -2
- data/rspec-core/upstream/.document +1 -1
- data/rspec-core/upstream/.github/FUNDING.yml +5 -0
- data/rspec-core/upstream/.github/workflows/ci.yml +150 -0
- data/rspec-core/upstream/.gitignore +2 -0
- data/rspec-core/upstream/.rspec +1 -0
- data/rspec-core/upstream/.rubocop.yml +64 -12
- data/rspec-core/upstream/.rubocop_rspec_base.yml +224 -38
- data/rspec-core/upstream/.rubocop_todo.yml +1031 -0
- data/rspec-core/upstream/.yardopts +2 -1
- data/rspec-core/upstream/BUILD_DETAIL.md +149 -0
- data/rspec-core/upstream/CODE_OF_CONDUCT.md +59 -0
- data/rspec-core/upstream/CONTRIBUTING.md +86 -0
- data/rspec-core/upstream/Changelog.md +721 -2
- data/rspec-core/upstream/DEV-README.md +2 -2
- data/rspec-core/upstream/DEVELOPMENT.md +131 -0
- data/rspec-core/upstream/Filtering.md +173 -0
- data/rspec-core/upstream/Gemfile +78 -9
- data/rspec-core/upstream/ISSUE_TEMPLATE.md +24 -0
- data/rspec-core/upstream/{License.txt → LICENSE.md} +6 -5
- data/rspec-core/upstream/README.md +165 -24
- data/rspec-core/upstream/REPORT_TEMPLATE.md +43 -0
- data/rspec-core/upstream/Rakefile +1 -1
- data/rspec-core/upstream/benchmarks/allocations/1000_groups_1_example.rb +124 -0
- data/rspec-core/upstream/benchmarks/allocations/1_group_1000_examples.rb +63 -0
- data/rspec-core/upstream/benchmarks/allocations/helper.rb +30 -0
- data/rspec-core/upstream/benchmarks/allocations/running_1000_groups_1_example.rb +100 -0
- data/rspec-core/upstream/benchmarks/allocations/running_1_group_1000_examples.rb +60 -0
- data/rspec-core/upstream/benchmarks/capture_block_vs_yield.rb +208 -0
- data/rspec-core/upstream/benchmarks/flat_map_vs_inject.rb +55 -0
- data/rspec-core/upstream/benchmarks/hash_functions.rb +74 -0
- data/rspec-core/upstream/benchmarks/keys_each_vs_each_key.rb +43 -0
- data/rspec-core/upstream/benchmarks/module_inclusion_filtering.rb +89 -0
- data/rspec-core/upstream/benchmarks/precalculate_absolute_file_path_or_not.rb +29 -0
- data/rspec-core/upstream/benchmarks/shuffle_vs_sort_by_for_random_ordering.rb +131 -0
- data/rspec-core/upstream/benchmarks/singleton_example_groups/helper.rb +122 -0
- data/rspec-core/upstream/benchmarks/singleton_example_groups/with_config_hooks.rb +28 -0
- data/rspec-core/upstream/benchmarks/singleton_example_groups/with_config_hooks_module_inclusions_and_shared_context_inclusions.rb +35 -0
- data/rspec-core/upstream/benchmarks/singleton_example_groups/with_module_inclusions.rb +28 -0
- data/rspec-core/upstream/benchmarks/singleton_example_groups/with_no_config_hooks_or_inclusions.rb +22 -0
- data/rspec-core/upstream/benchmarks/singleton_example_groups/with_shared_context_inclusions.rb +28 -0
- data/rspec-core/upstream/benchmarks/threadsafe_let_block.rb +312 -0
- data/rspec-core/upstream/cucumber.yml +7 -2
- data/rspec-core/upstream/features/.nav +5 -1
- data/rspec-core/upstream/features/README.md +2 -2
- data/rspec-core/upstream/features/clear_examples.feature +106 -0
- data/rspec-core/upstream/features/command_line/bisect.feature +178 -0
- data/rspec-core/upstream/features/command_line/example_matches_name_option.feature +131 -0
- data/rspec-core/upstream/features/command_line/example_name_option.feature +2 -0
- data/rspec-core/upstream/features/command_line/fail_fast.feature +21 -4
- data/rspec-core/upstream/features/command_line/init.feature +2 -2
- data/rspec-core/upstream/features/command_line/line_number_appended_to_path.feature +2 -2
- data/rspec-core/upstream/features/command_line/only_failures.feature +113 -0
- data/rspec-core/upstream/features/command_line/order.md +8 -1
- data/rspec-core/upstream/features/command_line/pattern_option.feature +6 -3
- data/rspec-core/upstream/features/command_line/rake_task.feature +3 -3
- data/rspec-core/upstream/features/command_line/randomization.feature +5 -2
- data/rspec-core/upstream/features/command_line/ruby.feature +6 -2
- data/rspec-core/upstream/features/command_line/tag.feature +13 -11
- data/rspec-core/upstream/features/command_line/warnings_option.feature +20 -3
- data/rspec-core/upstream/features/configuration/backtrace_exclusion_patterns.feature +45 -29
- data/rspec-core/upstream/features/configuration/color.feature +22 -0
- data/rspec-core/upstream/features/configuration/custom_settings.feature +9 -13
- data/rspec-core/upstream/features/configuration/default_path.feature +1 -1
- data/rspec-core/upstream/features/configuration/enable_global_dsl.feature +15 -1
- data/rspec-core/upstream/features/configuration/error_exit_code.feature +52 -0
- data/rspec-core/upstream/features/configuration/fail_fast.feature +42 -12
- data/rspec-core/upstream/features/configuration/fail_if_no_examples.feature +31 -0
- data/rspec-core/upstream/features/configuration/failure_exit_code.feature +26 -0
- data/rspec-core/upstream/features/configuration/overriding_global_ordering.feature +1 -1
- data/rspec-core/upstream/features/configuration/pattern.feature +1 -1
- data/rspec-core/upstream/features/configuration/profile.feature +25 -0
- data/rspec-core/upstream/features/configuration/read_options_from_file.feature +25 -19
- data/rspec-core/upstream/features/configuration/run_all_when_everything_filtered.feature +4 -0
- data/rspec-core/upstream/features/core_standalone.feature +2 -0
- data/rspec-core/upstream/features/example_groups/basic_structure.feature +1 -0
- data/rspec-core/upstream/features/example_groups/shared_context.feature +55 -5
- data/rspec-core/upstream/features/example_groups/shared_examples.feature +59 -15
- data/rspec-core/upstream/features/expectation_framework_integration/aggregating_failures.feature +602 -0
- data/rspec-core/upstream/features/expectation_framework_integration/configure_expectation_framework.feature +13 -5
- data/rspec-core/upstream/features/filtering/filter_run_when_matching.feature +75 -0
- data/rspec-core/upstream/features/formatters/configurable_colors.feature +23 -4
- data/rspec-core/upstream/features/helper_methods/let.feature +3 -0
- data/rspec-core/upstream/features/helper_methods/modules.feature +6 -0
- data/rspec-core/upstream/features/hooks/around_hooks.feature +36 -6
- data/rspec-core/upstream/features/hooks/before_and_after_hooks.feature +47 -5
- data/rspec-core/upstream/features/hooks/filtering.feature +199 -4
- data/rspec-core/upstream/features/hooks/when_first_matching_example_defined.feature +70 -0
- data/rspec-core/upstream/features/metadata/current_scope.feature +87 -0
- data/rspec-core/upstream/features/metadata/described_class.feature +12 -5
- data/rspec-core/upstream/features/metadata/user_defined.feature +3 -3
- data/rspec-core/upstream/features/mock_framework_integration/use_any_framework.feature +1 -1
- data/rspec-core/upstream/features/mock_framework_integration/use_flexmock.feature +5 -5
- data/rspec-core/upstream/features/mock_framework_integration/use_mocha.feature +5 -5
- data/rspec-core/upstream/features/mock_framework_integration/use_rr.feature +5 -5
- data/rspec-core/upstream/features/mock_framework_integration/use_rspec.feature +6 -6
- data/rspec-core/upstream/features/pending_and_skipped_examples/pending_examples.feature +8 -7
- data/rspec-core/upstream/features/pending_and_skipped_examples/skipped_examples.feature +49 -22
- data/rspec-core/upstream/features/step_definitions/additional_cli_steps.rb +142 -12
- data/rspec-core/upstream/features/step_definitions/core_standalone_steps.rb +6 -2
- data/rspec-core/upstream/features/subject/implicit_subject.feature +3 -2
- data/rspec-core/upstream/features/subject/one_liner_syntax.feature +9 -5
- data/rspec-core/upstream/features/support/diff_lcs_versions.rb +17 -0
- data/rspec-core/upstream/features/support/env.rb +20 -7
- data/rspec-core/upstream/features/support/jruby.rb +8 -0
- data/rspec-core/upstream/features/support/require_expect_syntax_in_aruba_specs.rb +6 -3
- data/rspec-core/upstream/features/support/rubinius.rb +5 -1
- data/rspec-core/upstream/features/support/ruby_27_support.rb +7 -0
- data/rspec-core/upstream/features/support/send_sigint_during_bisect.rb +21 -0
- data/rspec-core/upstream/lib/rspec/autorun.rb +1 -0
- data/rspec-core/upstream/lib/rspec/core/backtrace_formatter.rb +3 -4
- data/rspec-core/upstream/lib/rspec/core/bisect/coordinator.rb +62 -0
- data/rspec-core/upstream/lib/rspec/core/bisect/example_minimizer.rb +173 -0
- data/rspec-core/upstream/lib/rspec/core/bisect/fork_runner.rb +138 -0
- data/rspec-core/upstream/lib/rspec/core/bisect/server.rb +61 -0
- data/rspec-core/upstream/lib/rspec/core/bisect/shell_command.rb +126 -0
- data/rspec-core/upstream/lib/rspec/core/bisect/shell_runner.rb +73 -0
- data/rspec-core/upstream/lib/rspec/core/bisect/utilities.rb +69 -0
- data/rspec-core/upstream/lib/rspec/core/configuration.rb +1157 -212
- data/rspec-core/upstream/lib/rspec/core/configuration_options.rb +82 -22
- data/rspec-core/upstream/lib/rspec/core/did_you_mean.rb +46 -0
- data/rspec-core/upstream/lib/rspec/core/drb.rb +10 -1
- data/rspec-core/upstream/lib/rspec/core/dsl.rb +10 -5
- data/rspec-core/upstream/lib/rspec/core/example.rb +271 -107
- data/rspec-core/upstream/lib/rspec/core/example_group.rb +426 -127
- data/rspec-core/upstream/lib/rspec/core/example_status_persister.rb +235 -0
- data/rspec-core/upstream/lib/rspec/core/filter_manager.rb +76 -104
- data/rspec-core/upstream/lib/rspec/core/flat_map.rb +6 -4
- data/rspec-core/upstream/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
- data/rspec-core/upstream/lib/rspec/core/formatters/base_formatter.rb +7 -4
- data/rspec-core/upstream/lib/rspec/core/formatters/base_text_formatter.rb +15 -16
- data/rspec-core/upstream/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
- data/rspec-core/upstream/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
- data/rspec-core/upstream/lib/rspec/core/formatters/console_codes.rb +28 -16
- data/rspec-core/upstream/lib/rspec/core/formatters/deprecation_formatter.rb +14 -13
- data/rspec-core/upstream/lib/rspec/core/formatters/documentation_formatter.rb +47 -13
- data/rspec-core/upstream/lib/rspec/core/formatters/exception_presenter.rb +525 -0
- data/rspec-core/upstream/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
- data/rspec-core/upstream/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
- data/rspec-core/upstream/lib/rspec/core/formatters/helpers.rb +40 -9
- data/rspec-core/upstream/lib/rspec/core/formatters/html_formatter.rb +20 -16
- data/rspec-core/upstream/lib/rspec/core/formatters/html_printer.rb +27 -18
- data/rspec-core/upstream/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
- data/rspec-core/upstream/lib/rspec/core/formatters/json_formatter.rb +15 -7
- data/rspec-core/upstream/lib/rspec/core/formatters/profile_formatter.rb +10 -7
- data/rspec-core/upstream/lib/rspec/core/formatters/progress_formatter.rb +1 -0
- data/rspec-core/upstream/lib/rspec/core/formatters/protocol.rb +62 -43
- data/rspec-core/upstream/lib/rspec/core/formatters/snippet_extractor.rb +115 -85
- data/rspec-core/upstream/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
- data/rspec-core/upstream/lib/rspec/core/formatters.rb +71 -32
- data/rspec-core/upstream/lib/rspec/core/hooks.rb +303 -248
- data/rspec-core/upstream/lib/rspec/core/invocations.rb +87 -0
- data/rspec-core/upstream/lib/rspec/core/memoized_helpers.rb +155 -47
- data/rspec-core/upstream/lib/rspec/core/metadata.rb +102 -41
- data/rspec-core/upstream/lib/rspec/core/metadata_filter.rb +209 -49
- data/rspec-core/upstream/lib/rspec/core/minitest_assertions_adapter.rb +5 -2
- data/rspec-core/upstream/lib/rspec/core/mocking_adapters/flexmock.rb +1 -1
- data/rspec-core/upstream/lib/rspec/core/mocking_adapters/mocha.rb +8 -8
- data/rspec-core/upstream/lib/rspec/core/notifications.rb +180 -201
- data/rspec-core/upstream/lib/rspec/core/option_parser.rb +159 -58
- data/rspec-core/upstream/lib/rspec/core/ordering.rb +40 -26
- data/rspec-core/upstream/lib/rspec/core/output_wrapper.rb +29 -0
- data/rspec-core/upstream/lib/rspec/core/pending.rb +19 -25
- data/rspec-core/upstream/lib/rspec/core/profiler.rb +34 -0
- data/rspec-core/upstream/lib/rspec/core/project_initializer/.rspec +0 -1
- data/rspec-core/upstream/lib/rspec/core/project_initializer/spec/spec_helper.rb +31 -22
- data/rspec-core/upstream/lib/rspec/core/project_initializer.rb +1 -1
- data/rspec-core/upstream/lib/rspec/core/rake_task.rb +73 -72
- data/rspec-core/upstream/lib/rspec/core/reporter.rb +134 -18
- data/rspec-core/upstream/lib/rspec/core/ruby_project.rb +13 -5
- data/rspec-core/upstream/lib/rspec/core/runner.rb +99 -45
- data/rspec-core/upstream/lib/rspec/core/sandbox.rb +37 -0
- data/rspec-core/upstream/lib/rspec/core/set.rb +54 -0
- data/rspec-core/upstream/lib/rspec/core/shared_example_group.rb +126 -37
- data/rspec-core/upstream/lib/rspec/core/shell_escape.rb +49 -0
- data/rspec-core/upstream/lib/rspec/core/test_unit_assertions_adapter.rb +3 -3
- data/rspec-core/upstream/lib/rspec/core/version.rb +1 -1
- data/rspec-core/upstream/lib/rspec/core/warnings.rb +2 -2
- data/rspec-core/upstream/lib/rspec/core/world.rb +164 -60
- data/rspec-core/upstream/lib/rspec/core.rb +64 -21
- data/rspec-core/upstream/maintenance-branch +1 -1
- data/rspec-core/upstream/rspec-core.gemspec +16 -11
- data/rspec-core/upstream/script/ci_functions.sh +73 -0
- data/rspec-core/upstream/script/clone_all_rspec_repos +2 -2
- data/rspec-core/upstream/script/cucumber.sh +8 -0
- data/rspec-core/upstream/script/custom_build_functions.sh +22 -0
- data/rspec-core/upstream/script/functions.sh +125 -89
- data/rspec-core/upstream/script/legacy_setup.sh +20 -0
- data/rspec-core/upstream/script/predicate_functions.sh +162 -0
- data/rspec-core/upstream/script/rspec_with_simplecov +6 -6
- data/rspec-core/upstream/script/run_build +14 -9
- data/rspec-core/upstream/script/run_rubocop +14 -0
- data/rspec-core/upstream/script/update_rubygems_and_install_bundler +20 -0
- data/rspec-expectations/upstream/.document +1 -1
- data/rspec-expectations/upstream/.github/FUNDING.yml +5 -0
- data/rspec-expectations/upstream/.github/workflows/ci.yml +150 -0
- data/rspec-expectations/upstream/.gitignore +2 -0
- data/rspec-expectations/upstream/.rubocop.yml +126 -2
- data/rspec-expectations/upstream/.rubocop_rspec_base.yml +224 -38
- data/rspec-expectations/upstream/.rubocop_todo.yml +335 -0
- data/rspec-expectations/upstream/.yardopts +1 -1
- data/rspec-expectations/upstream/BUILD_DETAIL.md +149 -0
- data/rspec-expectations/upstream/CODE_OF_CONDUCT.md +59 -0
- data/rspec-expectations/upstream/CONTRIBUTING.md +86 -0
- data/rspec-expectations/upstream/Changelog.md +454 -4
- data/rspec-expectations/upstream/DEV-README.md +3 -3
- data/rspec-expectations/upstream/DEVELOPMENT.md +131 -0
- data/rspec-expectations/upstream/Gemfile +77 -9
- data/rspec-expectations/upstream/ISSUE_TEMPLATE.md +24 -0
- data/{rspec-mocks/upstream/License.txt → rspec-expectations/upstream/LICENSE.md} +5 -4
- data/rspec-expectations/upstream/README.md +73 -31
- data/rspec-expectations/upstream/REPORT_TEMPLATE.md +43 -0
- data/rspec-expectations/upstream/Rakefile +13 -10
- data/rspec-expectations/upstream/Should.md +13 -5
- data/rspec-expectations/upstream/benchmarks/2.x_vs_3.x_matcher_dsl_implementation.rb +1 -2
- data/rspec-expectations/upstream/benchmarks/caller_vs_raise_for_backtrace.rb +77 -0
- data/rspec-expectations/upstream/benchmarks/count_vs_select_size.rb +68 -0
- data/rspec-expectations/upstream/benchmarks/default_messages_as_methods_v_blocks.rb +1 -1
- data/rspec-expectations/upstream/benchmarks/gsub_vs_tr_single_character.rb +28 -0
- data/rspec-expectations/upstream/benchmarks/include_matcher.rb +249 -0
- data/rspec-expectations/upstream/benchmarks/include_v_superclass.rb +0 -1
- data/rspec-expectations/upstream/benchmarks/match_array/failing_with_duplicate_items.rb +1 -1
- data/rspec-expectations/upstream/benchmarks/output_stringio_vs_tempfile.rb +31 -0
- data/rspec-expectations/upstream/benchmarks/set_vs_array_include.rb +1 -3
- data/rspec-expectations/upstream/cucumber.yml +9 -4
- data/rspec-expectations/upstream/features/.nav +1 -0
- data/rspec-expectations/upstream/features/aggregating_failures.feature +56 -0
- data/rspec-expectations/upstream/features/built_in_matchers/README.md +3 -3
- data/rspec-expectations/upstream/features/built_in_matchers/all.feature +3 -2
- data/rspec-expectations/upstream/features/built_in_matchers/be_within.feature +1 -1
- data/rspec-expectations/upstream/features/built_in_matchers/change.feature +8 -6
- data/rspec-expectations/upstream/features/built_in_matchers/comparisons.feature +33 -1
- data/rspec-expectations/upstream/features/built_in_matchers/contain_exactly.feature +1 -0
- data/rspec-expectations/upstream/features/built_in_matchers/cover.feature +3 -3
- data/rspec-expectations/upstream/features/built_in_matchers/exist.feature +1 -1
- data/rspec-expectations/upstream/features/built_in_matchers/have_attributes.feature +1 -2
- data/rspec-expectations/upstream/features/built_in_matchers/include.feature +74 -17
- data/rspec-expectations/upstream/features/built_in_matchers/match.feature +2 -2
- data/rspec-expectations/upstream/features/built_in_matchers/output.feature +67 -4
- data/rspec-expectations/upstream/features/built_in_matchers/predicates.feature +56 -19
- data/rspec-expectations/upstream/features/built_in_matchers/raise_error.feature +16 -2
- data/rspec-expectations/upstream/features/built_in_matchers/respond_to.feature +191 -3
- data/rspec-expectations/upstream/features/built_in_matchers/satisfy.feature +17 -8
- data/rspec-expectations/upstream/features/built_in_matchers/throw_symbol.feature +1 -1
- data/rspec-expectations/upstream/features/built_in_matchers/types.feature +34 -34
- data/rspec-expectations/upstream/features/built_in_matchers/yield.feature +2 -2
- data/rspec-expectations/upstream/features/composing_matchers.feature +4 -4
- data/rspec-expectations/upstream/features/custom_matchers/define_block_matcher.feature +78 -0
- data/rspec-expectations/upstream/features/custom_matchers/define_diffable_matcher.feature +115 -3
- data/rspec-expectations/upstream/features/custom_matchers/define_matcher.feature +173 -21
- data/rspec-expectations/upstream/features/custom_matchers/define_matcher_with_fluent_interface.feature +21 -2
- data/rspec-expectations/upstream/features/define_negated_matcher.feature +2 -1
- data/rspec-expectations/upstream/features/diffing.feature +29 -1
- data/rspec-expectations/upstream/features/implicit_docstrings.feature +8 -8
- data/rspec-expectations/upstream/features/step_definitions/additional_cli_steps.rb +11 -7
- data/rspec-expectations/upstream/features/support/diff_lcs_versions.rb +25 -0
- data/rspec-expectations/upstream/features/support/disallow_certain_apis.rb +3 -3
- data/rspec-expectations/upstream/features/support/env.rb +11 -11
- data/rspec-expectations/upstream/features/support/rubinius.rb +1 -1
- data/rspec-expectations/upstream/features/support/ruby_features.rb +39 -0
- data/rspec-expectations/upstream/features/syntax_configuration.feature +9 -9
- data/rspec-expectations/upstream/features/test_frameworks/minitest.feature +69 -2
- data/rspec-expectations/upstream/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
- data/rspec-expectations/upstream/lib/rspec/expectations/configuration.rb +84 -1
- data/rspec-expectations/upstream/lib/rspec/expectations/expectation_target.rb +82 -38
- data/rspec-expectations/upstream/lib/rspec/expectations/fail_with.rb +11 -6
- data/rspec-expectations/upstream/lib/rspec/expectations/failure_aggregator.rb +212 -0
- data/rspec-expectations/upstream/lib/rspec/expectations/handler.rb +27 -12
- data/rspec-expectations/upstream/lib/rspec/expectations/minitest_integration.rb +43 -2
- data/rspec-expectations/upstream/lib/rspec/expectations/syntax.rb +5 -5
- data/rspec-expectations/upstream/lib/rspec/expectations/version.rb +1 -1
- data/rspec-expectations/upstream/lib/rspec/expectations.rb +15 -1
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/all.rb +1 -0
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/base_matcher.rb +77 -11
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/be.rb +28 -114
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/be_between.rb +1 -1
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/be_instance_of.rb +5 -1
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/be_kind_of.rb +5 -1
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/be_within.rb +4 -4
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/change.rb +168 -55
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/compound.rb +61 -29
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/contain_exactly.rb +73 -12
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/count_expectation.rb +169 -0
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/eq.rb +3 -38
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/eql.rb +2 -2
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/equal.rb +3 -3
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/exist.rb +7 -3
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/has.rb +90 -24
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/have_attributes.rb +37 -7
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/include.rb +124 -23
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/match.rb +79 -2
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/operators.rb +14 -5
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/output.rb +56 -1
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/raise_error.rb +126 -29
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/respond_to.rb +118 -9
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/satisfy.rb +28 -7
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/{start_and_end_with.rb → start_or_end_with.rb} +20 -8
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/throw_symbol.rb +11 -5
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in/yield.rb +110 -155
- data/rspec-expectations/upstream/lib/rspec/matchers/built_in.rb +4 -3
- data/rspec-expectations/upstream/lib/rspec/matchers/composable.rb +23 -35
- data/rspec-expectations/upstream/lib/rspec/matchers/dsl.rb +179 -26
- data/rspec-expectations/upstream/lib/rspec/matchers/english_phrasing.rb +58 -0
- data/rspec-expectations/upstream/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
- data/rspec-expectations/upstream/lib/rspec/matchers/fail_matchers.rb +42 -0
- data/rspec-expectations/upstream/lib/rspec/matchers/generated_descriptions.rb +1 -2
- data/rspec-expectations/upstream/lib/rspec/matchers/matcher_delegator.rb +2 -0
- data/rspec-expectations/upstream/lib/rspec/matchers/matcher_protocol.rb +72 -66
- data/rspec-expectations/upstream/lib/rspec/matchers.rb +227 -150
- data/rspec-expectations/upstream/maintenance-branch +1 -1
- data/rspec-expectations/upstream/rspec-expectations.gemspec +13 -8
- data/rspec-expectations/upstream/script/ci_functions.sh +73 -0
- data/rspec-expectations/upstream/script/clone_all_rspec_repos +2 -2
- data/rspec-expectations/upstream/script/cucumber.sh +8 -0
- data/rspec-expectations/upstream/script/functions.sh +125 -89
- data/rspec-expectations/upstream/script/legacy_setup.sh +20 -0
- data/rspec-expectations/upstream/script/predicate_functions.sh +162 -0
- data/rspec-expectations/upstream/script/run_build +14 -9
- data/rspec-expectations/upstream/script/run_rubocop +14 -0
- data/rspec-expectations/upstream/script/update_rubygems_and_install_bundler +20 -0
- data/rspec-mocks/upstream/.document +1 -1
- data/rspec-mocks/upstream/.github/FUNDING.yml +5 -0
- data/rspec-mocks/upstream/.github/workflows/ci.yml +150 -0
- data/rspec-mocks/upstream/.gitignore +2 -0
- data/rspec-mocks/upstream/.rubocop.yml +28 -9
- data/rspec-mocks/upstream/.rubocop_rspec_base.yml +224 -38
- data/rspec-mocks/upstream/.rubocop_todo.yml +573 -0
- data/rspec-mocks/upstream/.yardopts +1 -1
- data/rspec-mocks/upstream/BUILD_DETAIL.md +149 -0
- data/rspec-mocks/upstream/CODE_OF_CONDUCT.md +59 -0
- data/rspec-mocks/upstream/CONTRIBUTING.md +86 -0
- data/rspec-mocks/upstream/Changelog.md +398 -3
- data/rspec-mocks/upstream/DEV-README.md +3 -3
- data/rspec-mocks/upstream/DEVELOPMENT.md +131 -0
- data/rspec-mocks/upstream/Gemfile +77 -10
- data/rspec-mocks/upstream/ISSUE_TEMPLATE.md +24 -0
- data/{rspec-expectations/upstream/License.txt → rspec-mocks/upstream/LICENSE.md} +5 -4
- data/rspec-mocks/upstream/README.md +83 -17
- data/rspec-mocks/upstream/REPORT_TEMPLATE.md +43 -0
- data/rspec-mocks/upstream/Rakefile +3 -3
- data/rspec-mocks/upstream/benchmarks/accessing_configuration_via_method_vs_cache.rb +52 -0
- data/rspec-mocks/upstream/benchmarks/allocations/1_object_1000_mocks.rb +76 -0
- data/rspec-mocks/upstream/benchmarks/allocations/helper.rb +17 -0
- data/rspec-mocks/upstream/benchmarks/each_value_v_values_each.rb +4 -5
- data/rspec-mocks/upstream/benchmarks/find_original_method_early.rb +1 -1
- data/rspec-mocks/upstream/benchmarks/method_defined_at_any_visibility.rb +3 -3
- data/rspec-mocks/upstream/benchmarks/thread_safety.rb +1 -1
- data/rspec-mocks/upstream/benchmarks/transfer_nested_constants.rb +1 -1
- data/rspec-mocks/upstream/cucumber.yml +8 -1
- data/rspec-mocks/upstream/features/.nav +2 -0
- data/rspec-mocks/upstream/features/basics/allowing_messages.feature +1 -1
- data/rspec-mocks/upstream/features/basics/expecting_messages.feature +40 -1
- data/rspec-mocks/upstream/features/basics/null_object_doubles.feature +1 -1
- data/rspec-mocks/upstream/features/basics/partial_test_doubles.feature +1 -1
- data/rspec-mocks/upstream/features/basics/scope.feature +5 -5
- data/rspec-mocks/upstream/features/basics/spies.feature +17 -30
- data/rspec-mocks/upstream/features/basics/test_doubles.feature +4 -4
- data/rspec-mocks/upstream/features/configuring_responses/README.md +2 -0
- data/rspec-mocks/upstream/features/configuring_responses/calling_the_original_implementation.feature +2 -2
- data/rspec-mocks/upstream/features/configuring_responses/mixed_responses.feature +25 -0
- data/rspec-mocks/upstream/features/configuring_responses/raising_an_error.feature +1 -0
- data/rspec-mocks/upstream/features/configuring_responses/wrapping_the_original_implementation.feature +3 -3
- data/rspec-mocks/upstream/features/configuring_responses/yielding.feature +2 -2
- data/rspec-mocks/upstream/features/mutating_constants/README.md +1 -1
- data/rspec-mocks/upstream/features/old_syntax/any_instance.feature +3 -3
- data/rspec-mocks/upstream/features/old_syntax/should_receive.feature +3 -1
- data/rspec-mocks/upstream/features/outside_rspec/any_test_framework.feature +116 -0
- data/rspec-mocks/upstream/features/outside_rspec/minitest.feature +202 -46
- data/rspec-mocks/upstream/features/outside_rspec/standalone.feature +5 -5
- data/rspec-mocks/upstream/features/setting_constraints/matching_arguments.feature +54 -27
- data/rspec-mocks/upstream/features/setting_constraints/message_order.feature +2 -2
- data/rspec-mocks/upstream/features/setting_constraints/receive_counts.feature +18 -0
- data/rspec-mocks/upstream/features/step_definitions/additional_cli_steps.rb +4 -4
- data/rspec-mocks/upstream/features/support/disallow_certain_apis.rb +3 -2
- data/rspec-mocks/upstream/features/support/env.rb +12 -12
- data/rspec-mocks/upstream/features/support/rubinius.rb +1 -1
- data/rspec-mocks/upstream/features/verifying_doubles/README.md +2 -2
- data/rspec-mocks/upstream/features/verifying_doubles/class_doubles.feature +1 -1
- data/rspec-mocks/upstream/features/verifying_doubles/dynamic_classes.feature +41 -5
- data/rspec-mocks/upstream/features/verifying_doubles/instance_doubles.feature +5 -3
- data/rspec-mocks/upstream/features/working_with_legacy_code/any_instance.feature +8 -6
- data/rspec-mocks/upstream/features/working_with_legacy_code/message_chains.feature +16 -1
- data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/chain.rb +3 -1
- data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
- data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/expect_chain_chain.rb +1 -5
- data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/expectation_chain.rb +7 -5
- data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/message_chains.rb +1 -3
- data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/recorder.rb +42 -14
- data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/stub_chain.rb +13 -7
- data/rspec-mocks/upstream/lib/rspec/mocks/any_instance/stub_chain_chain.rb +1 -5
- data/rspec-mocks/upstream/lib/rspec/mocks/any_instance.rb +1 -0
- data/rspec-mocks/upstream/lib/rspec/mocks/argument_list_matcher.rb +53 -10
- data/rspec-mocks/upstream/lib/rspec/mocks/argument_matchers.rb +66 -26
- data/rspec-mocks/upstream/lib/rspec/mocks/configuration.rb +59 -4
- data/rspec-mocks/upstream/lib/rspec/mocks/error_generator.rb +235 -108
- data/rspec-mocks/upstream/lib/rspec/mocks/example_methods.rb +82 -27
- data/rspec-mocks/upstream/lib/rspec/mocks/instance_method_stasher.rb +12 -1
- data/rspec-mocks/upstream/lib/rspec/mocks/matchers/have_received.rb +30 -17
- data/rspec-mocks/upstream/lib/rspec/mocks/matchers/receive.rb +28 -1
- data/rspec-mocks/upstream/lib/rspec/mocks/matchers/receive_message_chain.rb +17 -1
- data/rspec-mocks/upstream/lib/rspec/mocks/matchers/receive_messages.rb +6 -0
- data/rspec-mocks/upstream/lib/rspec/mocks/message_chain.rb +0 -4
- data/rspec-mocks/upstream/lib/rspec/mocks/message_expectation.rb +430 -304
- data/rspec-mocks/upstream/lib/rspec/mocks/method_double.rb +46 -15
- data/rspec-mocks/upstream/lib/rspec/mocks/method_reference.rb +78 -19
- data/rspec-mocks/upstream/lib/rspec/mocks/minitest_integration.rb +68 -0
- data/rspec-mocks/upstream/lib/rspec/mocks/mutate_const.rb +23 -8
- data/rspec-mocks/upstream/lib/rspec/mocks/object_reference.rb +81 -23
- data/rspec-mocks/upstream/lib/rspec/mocks/proxy.rb +135 -41
- data/rspec-mocks/upstream/lib/rspec/mocks/space.rb +33 -16
- data/rspec-mocks/upstream/lib/rspec/mocks/standalone.rb +1 -1
- data/rspec-mocks/upstream/lib/rspec/mocks/syntax.rb +18 -22
- data/rspec-mocks/upstream/lib/rspec/mocks/targets.rb +51 -24
- data/rspec-mocks/upstream/lib/rspec/mocks/test_double.rb +42 -6
- data/rspec-mocks/upstream/lib/rspec/mocks/verifying_double.rb +15 -21
- data/rspec-mocks/upstream/lib/rspec/mocks/{verifying_message_expecation.rb → verifying_message_expectation.rb} +11 -18
- data/rspec-mocks/upstream/lib/rspec/mocks/verifying_proxy.rb +60 -11
- data/rspec-mocks/upstream/lib/rspec/mocks/version.rb +1 -1
- data/rspec-mocks/upstream/lib/rspec/mocks.rb +8 -1
- data/rspec-mocks/upstream/maintenance-branch +1 -1
- data/rspec-mocks/upstream/rspec-mocks.gemspec +14 -6
- data/rspec-mocks/upstream/script/ci_functions.sh +73 -0
- data/rspec-mocks/upstream/script/clone_all_rspec_repos +2 -2
- data/rspec-mocks/upstream/script/cucumber.sh +8 -0
- data/rspec-mocks/upstream/script/functions.sh +125 -89
- data/rspec-mocks/upstream/script/legacy_setup.sh +20 -0
- data/rspec-mocks/upstream/script/predicate_functions.sh +162 -0
- data/rspec-mocks/upstream/script/run_build +14 -9
- data/rspec-mocks/upstream/script/run_rubocop +14 -0
- data/rspec-mocks/upstream/script/update_rubygems_and_install_bundler +20 -0
- data/{stubs/diff/lcs/assertions.rb → rspec-mocks/upstream/tmp/.gitkeep} +0 -0
- data/rspec-support/upstream/.github/FUNDING.yml +5 -0
- data/rspec-support/upstream/.github/workflows/ci.yml +150 -0
- data/rspec-support/upstream/.gitignore +4 -0
- data/rspec-support/upstream/.rubocop.yml +33 -1
- data/rspec-support/upstream/.rubocop_rspec_base.yml +224 -38
- data/rspec-support/upstream/.rubocop_todo.yml +424 -0
- data/rspec-support/upstream/BUILD_DETAIL.md +149 -0
- data/rspec-support/upstream/CODE_OF_CONDUCT.md +59 -0
- data/rspec-support/upstream/CONTRIBUTING.md +86 -0
- data/rspec-support/upstream/Changelog.md +287 -0
- data/rspec-support/upstream/DEVELOPMENT.md +131 -0
- data/rspec-support/upstream/Gemfile +52 -4
- data/rspec-support/upstream/ISSUE_TEMPLATE.md +24 -0
- data/rspec-support/upstream/{LICENSE.txt → LICENSE.md} +3 -2
- data/rspec-support/upstream/README.md +29 -6
- data/rspec-support/upstream/REPORT_TEMPLATE.md +43 -0
- data/rspec-support/upstream/Rakefile +9 -5
- data/rspec-support/upstream/benchmarks/caller_vs_caller_locations.rb +19 -0
- data/rspec-support/upstream/benchmarks/caller_vs_caller_locations_vs_raise.rb +153 -0
- data/rspec-support/upstream/benchmarks/class_exec_vs_klass_exec.rb +43 -0
- data/rspec-support/upstream/benchmarks/map_hash.rb +70 -0
- data/rspec-support/upstream/benchmarks/ripper.rb +44 -0
- data/rspec-support/upstream/benchmarks/skip_frames_for_caller_filter.rb +27 -0
- data/rspec-support/upstream/lib/rspec/support/caller_filter.rb +35 -15
- data/rspec-support/upstream/lib/rspec/support/comparable_version.rb +46 -0
- data/rspec-support/upstream/lib/rspec/support/differ.rb +35 -34
- data/rspec-support/upstream/lib/rspec/support/directory_maker.rb +3 -1
- data/rspec-support/upstream/lib/rspec/support/encoded_string.rb +103 -11
- data/rspec-support/upstream/lib/rspec/support/fuzzy_matcher.rb +5 -5
- data/rspec-support/upstream/lib/rspec/support/matcher_definition.rb +11 -0
- data/rspec-support/upstream/lib/rspec/support/method_signature_verifier.rb +192 -26
- data/rspec-support/upstream/lib/rspec/support/mutex.rb +73 -0
- data/rspec-support/upstream/lib/rspec/support/object_formatter.rb +275 -0
- data/rspec-support/upstream/lib/rspec/support/recursive_const_methods.rb +1 -1
- data/rspec-support/upstream/lib/rspec/support/reentrant_mutex.rb +78 -0
- data/rspec-support/upstream/lib/rspec/support/ruby_features.rb +168 -15
- data/rspec-support/upstream/lib/rspec/support/source/location.rb +21 -0
- data/rspec-support/upstream/lib/rspec/support/source/node.rb +110 -0
- data/rspec-support/upstream/lib/rspec/support/source/token.rb +94 -0
- data/rspec-support/upstream/lib/rspec/support/source.rb +85 -0
- data/rspec-support/upstream/lib/rspec/support/spec/deprecation_helpers.rb +17 -29
- data/rspec-support/upstream/lib/rspec/support/spec/diff_helpers.rb +31 -0
- data/rspec-support/upstream/lib/rspec/support/spec/in_sub_process.rb +41 -17
- data/rspec-support/upstream/lib/rspec/support/spec/library_wide_checks.rb +150 -0
- data/rspec-support/upstream/lib/rspec/support/spec/shell_out.rb +39 -3
- data/rspec-support/upstream/lib/rspec/support/spec/stderr_splitter.rb +27 -4
- data/rspec-support/upstream/lib/rspec/support/spec/string_matcher.rb +45 -0
- data/rspec-support/upstream/lib/rspec/support/spec/with_isolated_directory.rb +5 -1
- data/rspec-support/upstream/lib/rspec/support/spec.rb +17 -7
- data/rspec-support/upstream/lib/rspec/support/version.rb +1 -1
- data/rspec-support/upstream/lib/rspec/support/warnings.rb +3 -3
- data/rspec-support/upstream/lib/rspec/support/with_keywords_when_needed.rb +33 -0
- data/rspec-support/upstream/lib/rspec/support.rb +81 -3
- data/rspec-support/upstream/maintenance-branch +1 -1
- data/rspec-support/upstream/rspec-support.gemspec +10 -4
- data/rspec-support/upstream/script/ci_functions.sh +73 -0
- data/rspec-support/upstream/script/clone_all_rspec_repos +2 -2
- data/rspec-support/upstream/script/cucumber.sh +8 -0
- data/rspec-support/upstream/script/functions.sh +125 -89
- data/rspec-support/upstream/script/legacy_setup.sh +20 -0
- data/rspec-support/upstream/script/predicate_functions.sh +162 -0
- data/rspec-support/upstream/script/run_build +14 -9
- data/rspec-support/upstream/script/run_rubocop +14 -0
- data/rspec-support/upstream/script/update_rubygems_and_install_bundler +20 -0
- data/stubs/{diff/lcs/block.rb → coderay.rb} +0 -0
- data/stubs/{diff/lcs/callbacks.rb → drb/acl.rb} +0 -0
- data/stubs/{diff/lcs/change.rb → erb/version.rb} +0 -0
- data/stubs/{diff/lcs/hunk.rb → open3.rb} +0 -0
- data/stubs/{diff/lcs/internals.rb → psych.rb} +0 -0
- data/stubs/{optparse.rb → ripper.rb} +0 -0
- data/stubs/{prettyprint.rb → thread_order.rb} +0 -0
- data/tasks/testing.rake +7 -3
- metadata +270 -61
- data/gemfiles/.bundle/config +0 -2
- data/gemfiles/opal_0.11.gemfile +0 -14
- data/gemfiles/opal_master.gemfile +0 -14
- data/lib-opal/opal/rspec/async/core_ext.rb +0 -23
- data/lib-opal/opal/rspec/async/legacy.rb +0 -49
- data/lib-opal/opal/rspec/fixes/rspec/caller_filter.rb +0 -6
- data/lib-opal/opal/rspec/fixes/rspec/core/example.rb +0 -20
- data/lib-opal/opal/rspec/fixes/rspec/core/formatters/backtrace_formatter.rb +0 -20
- data/lib-opal/opal/rspec/fixes/rspec/core/formatters/console_codes.rb +0 -11
- data/lib-opal/opal/rspec/fixes/rspec/core/formatters/generated_deprecation_message.rb +0 -15
- data/lib-opal/opal/rspec/fixes/rspec/core/formatters/json_formatter.rb +0 -15
- data/lib-opal/opal/rspec/fixes/rspec/core/notifications/failed_example_notification.rb +0 -20
- data/lib-opal/opal/rspec/fixes/rspec/core/notifications/summary_notification.rb +0 -21
- data/lib-opal/opal/rspec/fixes/rspec/core/warnings.rb +0 -27
- data/lib-opal/opal/rspec/fixes/rspec/expectations/fail_with.rb +0 -21
- data/lib-opal/opal/rspec/fixes/rspec/matchers/built_in/all.rb +0 -10
- data/lib-opal/opal/rspec/fixes/rspec/matchers/built_in/compound.rb +0 -15
- data/lib-opal/opal/rspec/fixes/rspec/matchers/built_in/yield.rb +0 -21
- data/lib-opal/opal/rspec/fixes/rspec/matchers/pretty.rb +0 -15
- data/lib-opal/opal/rspec/fixes/rspec/mocks/space.rb +0 -41
- data/lib-opal/opal/rspec/fixes/rspec/mocks/test_double.rb +0 -39
- data/lib-opal/opal/rspec/fixes/rspec/mocks/verifying_double.rb +0 -29
- data/lib-opal/opal/rspec/fixes/rspec/support/recursive_const_methods.rb +0 -7
- data/lib-opal/opal/rspec/fixes/rspec/support/spec/stderr_splitter.rb +0 -13
- data/lib-opal/opal/rspec/fixes/rspec/support/spec.rb +0 -1
- data/lib-opal/opal/rspec/fixes/rspec/support/warnings.rb +0 -16
- data/rspec/upstream/License.txt +0 -24
- data/rspec-core/upstream/.travis.yml +0 -35
- data/rspec-core/upstream/benchmarks/sort_by_v_shuffle.rb +0 -83
- data/rspec-core/upstream/features/Upgrade.md +0 -352
- data/rspec-core/upstream/lib/rspec/core/backport_random.rb +0 -336
- data/rspec-expectations/upstream/.travis.yml +0 -35
- data/rspec-expectations/upstream/lib/rspec/matchers/pretty.rb +0 -77
- data/rspec-mocks/upstream/.travis.yml +0 -35
- data/rspec-support/upstream/.travis.yml +0 -35
- data/rspec-support/upstream/lib/rspec/support/os.rb +0 -18
- data/rspec-support/upstream/lib/rspec/support/spec/prevent_load_time_warnings.rb +0 -44
- data/rspec-support/upstream/lib/rspec/support/version_checker.rb +0 -53
- data/stubs/shellwords.rb +0 -0
- data/stubs/uri.rb +0 -0
- data/vendor/spec_runner.js +0 -64
|
@@ -9,7 +9,7 @@ module RSpec
|
|
|
9
9
|
#
|
|
10
10
|
# This allows us to provide rich metadata about each individual
|
|
11
11
|
# example without adding tons of methods directly to the ExampleGroup
|
|
12
|
-
# that users may
|
|
12
|
+
# that users may inadvertently redefine.
|
|
13
13
|
#
|
|
14
14
|
# Useful for configuring logging and/or taking some action based
|
|
15
15
|
# on the state of an example's metadata.
|
|
@@ -44,14 +44,15 @@ module RSpec
|
|
|
44
44
|
class Example
|
|
45
45
|
# @private
|
|
46
46
|
#
|
|
47
|
-
# Used to define methods that delegate to this example's metadata
|
|
47
|
+
# Used to define methods that delegate to this example's metadata.
|
|
48
48
|
def self.delegate_to_metadata(key)
|
|
49
49
|
define_method(key) { @metadata[key] }
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
# @return [ExecutionResult] represents the result of running this example.
|
|
53
53
|
delegate_to_metadata :execution_result
|
|
54
|
-
# @return [String] the relative path to the file where this example was
|
|
54
|
+
# @return [String] the relative path to the file where this example was
|
|
55
|
+
# defined.
|
|
55
56
|
delegate_to_metadata :file_path
|
|
56
57
|
# @return [String] the full description (including the docstrings of
|
|
57
58
|
# all parent example groups).
|
|
@@ -59,22 +60,22 @@ module RSpec
|
|
|
59
60
|
# @return [String] the exact source location of this example in a form
|
|
60
61
|
# like `./path/to/spec.rb:17`
|
|
61
62
|
delegate_to_metadata :location
|
|
62
|
-
# @return [Boolean] flag that indicates that the example is not expected
|
|
63
|
-
# It will be run and will either have a pending result (if a
|
|
64
|
-
# or a failed result (if no failure occurs).
|
|
63
|
+
# @return [Boolean] flag that indicates that the example is not expected
|
|
64
|
+
# to pass. It will be run and will either have a pending result (if a
|
|
65
|
+
# failure occurs) or a failed result (if no failure occurs).
|
|
65
66
|
delegate_to_metadata :pending
|
|
66
67
|
# @return [Boolean] flag that will cause the example to not run.
|
|
67
68
|
# The {ExecutionResult} status will be `:pending`.
|
|
68
69
|
delegate_to_metadata :skip
|
|
69
70
|
|
|
70
71
|
# Returns the string submitted to `example` or its aliases (e.g.
|
|
71
|
-
# `specify`, `it`, etc).
|
|
72
|
-
# do_something }`) it returns the message generated
|
|
73
|
-
# there is one, otherwise returns a message including
|
|
74
|
-
# example.
|
|
72
|
+
# `specify`, `it`, etc). If no string is submitted (e.g.
|
|
73
|
+
# `it { is_expected.to do_something }`) it returns the message generated
|
|
74
|
+
# by the matcher if there is one, otherwise returns a message including
|
|
75
|
+
# the location of the example.
|
|
75
76
|
def description
|
|
76
77
|
description = if metadata[:description].to_s.empty?
|
|
77
|
-
|
|
78
|
+
location_description
|
|
78
79
|
else
|
|
79
80
|
metadata[:description]
|
|
80
81
|
end
|
|
@@ -82,10 +83,78 @@ module RSpec
|
|
|
82
83
|
RSpec.configuration.format_docstrings_block.call(description)
|
|
83
84
|
end
|
|
84
85
|
|
|
86
|
+
# Returns a description of the example that always includes the location.
|
|
87
|
+
def inspect_output
|
|
88
|
+
inspect_output = "\"#{description}\""
|
|
89
|
+
unless metadata[:description].to_s.empty?
|
|
90
|
+
inspect_output += " (#{location})"
|
|
91
|
+
end
|
|
92
|
+
inspect_output
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# Returns the location-based argument that can be passed to the `rspec` command to rerun this example.
|
|
96
|
+
def location_rerun_argument
|
|
97
|
+
@location_rerun_argument ||= begin
|
|
98
|
+
loaded_spec_files = RSpec.configuration.loaded_spec_files
|
|
99
|
+
|
|
100
|
+
Metadata.ascending(metadata) do |meta|
|
|
101
|
+
return meta[:location] if loaded_spec_files.include?(meta[:absolute_file_path])
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Returns the location-based argument that can be passed to the `rspec` command to rerun this example.
|
|
107
|
+
#
|
|
108
|
+
# @deprecated Use {#location_rerun_argument} instead.
|
|
109
|
+
# @note If there are multiple examples identified by this location, they will use {#id}
|
|
110
|
+
# to rerun instead, but this method will still return the location (that's why it is deprecated!).
|
|
111
|
+
def rerun_argument
|
|
112
|
+
location_rerun_argument
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# @return [String] the unique id of this example. Pass
|
|
116
|
+
# this at the command line to re-run this exact example.
|
|
117
|
+
def id
|
|
118
|
+
@id ||= Metadata.id_from(metadata)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# @private
|
|
122
|
+
def self.parse_id(id)
|
|
123
|
+
# http://rubular.com/r/OMZSAPcAfn
|
|
124
|
+
id.match(/\A(.*?)(?:\[([\d\s:,]+)\])?\z/).captures
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Duplicates the example and overrides metadata with the provided
|
|
128
|
+
# hash.
|
|
129
|
+
#
|
|
130
|
+
# @param metadata_overrides [Hash] the hash to override the example metadata
|
|
131
|
+
# @return [Example] a duplicate of the example with modified metadata
|
|
132
|
+
def duplicate_with(metadata_overrides={})
|
|
133
|
+
new_metadata = metadata.clone.merge(metadata_overrides)
|
|
134
|
+
|
|
135
|
+
RSpec::Core::Metadata::RESERVED_KEYS.each do |reserved_key|
|
|
136
|
+
new_metadata.delete reserved_key
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# don't clone the example group because the new example
|
|
140
|
+
# must belong to the same example group (not a clone).
|
|
141
|
+
#
|
|
142
|
+
# block is nil in new_metadata so we have to get it from metadata.
|
|
143
|
+
Example.new(example_group, description.clone,
|
|
144
|
+
new_metadata, metadata[:block])
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
# @private
|
|
148
|
+
def update_inherited_metadata(updates)
|
|
149
|
+
metadata.update(updates) do |_key, existing_example_value, _new_inherited_value|
|
|
150
|
+
existing_example_value
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
85
154
|
# @attr_reader
|
|
86
155
|
#
|
|
87
156
|
# Returns the first exception raised in the context of running this
|
|
88
|
-
# example (nil if no exception is raised)
|
|
157
|
+
# example (nil if no exception is raised).
|
|
89
158
|
attr_reader :exception
|
|
90
159
|
|
|
91
160
|
# @attr_reader
|
|
@@ -105,22 +174,56 @@ module RSpec
|
|
|
105
174
|
attr_accessor :clock
|
|
106
175
|
|
|
107
176
|
# Creates a new instance of Example.
|
|
108
|
-
# @param example_group_class [Class] the subclass of ExampleGroup in which
|
|
109
|
-
#
|
|
110
|
-
# @param
|
|
111
|
-
#
|
|
177
|
+
# @param example_group_class [Class] the subclass of ExampleGroup in which
|
|
178
|
+
# this Example is declared
|
|
179
|
+
# @param description [String] the String passed to the `it` method (or
|
|
180
|
+
# alias)
|
|
181
|
+
# @param user_metadata [Hash] additional args passed to `it` to be used as
|
|
182
|
+
# metadata
|
|
183
|
+
# @param example_block [Proc] the block of code that represents the
|
|
184
|
+
# example
|
|
112
185
|
# @api private
|
|
113
186
|
def initialize(example_group_class, description, user_metadata, example_block=nil)
|
|
114
187
|
@example_group_class = example_group_class
|
|
115
188
|
@example_block = example_block
|
|
116
189
|
|
|
190
|
+
# Register the example with the group before creating the metadata hash.
|
|
191
|
+
# This is necessary since creating the metadata hash triggers
|
|
192
|
+
# `when_first_matching_example_defined` callbacks, in which users can
|
|
193
|
+
# load RSpec support code which defines hooks. For that to work, the
|
|
194
|
+
# examples and example groups must be registered at the time the
|
|
195
|
+
# support code is called or be defined afterwards.
|
|
196
|
+
# Begin defined beforehand but registered afterwards causes hooks to
|
|
197
|
+
# not be applied where they should.
|
|
198
|
+
example_group_class.examples << self
|
|
199
|
+
|
|
117
200
|
@metadata = Metadata::ExampleHash.create(
|
|
118
|
-
@example_group_class.metadata, user_metadata,
|
|
201
|
+
@example_group_class.metadata, user_metadata,
|
|
202
|
+
example_group_class.method(:next_runnable_index_for),
|
|
203
|
+
description, example_block
|
|
119
204
|
)
|
|
120
205
|
|
|
206
|
+
config = RSpec.configuration
|
|
207
|
+
config.apply_derived_metadata_to(@metadata)
|
|
208
|
+
|
|
209
|
+
# This should perhaps be done in `Metadata::ExampleHash.create`,
|
|
210
|
+
# but the logic there has no knowledge of `RSpec.world` and we
|
|
211
|
+
# want to keep it that way. It's easier to just assign it here.
|
|
212
|
+
@metadata[:last_run_status] = config.last_run_statuses[id]
|
|
213
|
+
|
|
121
214
|
@example_group_instance = @exception = nil
|
|
122
215
|
@clock = RSpec::Core::Time
|
|
216
|
+
@reporter = RSpec::Core::NullReporter
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Provide a human-readable representation of this class
|
|
220
|
+
def inspect
|
|
221
|
+
"#<#{self.class.name} #{description.inspect}>"
|
|
123
222
|
end
|
|
223
|
+
alias to_s inspect
|
|
224
|
+
|
|
225
|
+
# @return [RSpec::Core::Reporter] the current reporter for the example
|
|
226
|
+
attr_reader :reporter
|
|
124
227
|
|
|
125
228
|
# Returns the example group class that provides the context for running
|
|
126
229
|
# this example.
|
|
@@ -128,8 +231,13 @@ module RSpec
|
|
|
128
231
|
@example_group_class
|
|
129
232
|
end
|
|
130
233
|
|
|
131
|
-
|
|
132
|
-
|
|
234
|
+
def pending?
|
|
235
|
+
!!pending
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
def skipped?
|
|
239
|
+
!!skip
|
|
240
|
+
end
|
|
133
241
|
|
|
134
242
|
# @api private
|
|
135
243
|
# instance_execs the block passed to the constructor in the context of
|
|
@@ -137,6 +245,8 @@ module RSpec
|
|
|
137
245
|
# @param example_group_instance the instance of an ExampleGroup subclass
|
|
138
246
|
def run(example_group_instance, reporter)
|
|
139
247
|
@example_group_instance = example_group_instance
|
|
248
|
+
@reporter = reporter
|
|
249
|
+
RSpec.configuration.configure_example(self, hooks)
|
|
140
250
|
RSpec.current_example = self
|
|
141
251
|
|
|
142
252
|
start(reporter)
|
|
@@ -146,9 +256,10 @@ module RSpec
|
|
|
146
256
|
if skipped?
|
|
147
257
|
Pending.mark_pending! self, skip
|
|
148
258
|
elsif !RSpec.configuration.dry_run?
|
|
149
|
-
|
|
259
|
+
with_around_and_singleton_context_hooks do
|
|
150
260
|
begin
|
|
151
261
|
run_before_example
|
|
262
|
+
RSpec.current_scope = :example
|
|
152
263
|
@example_group_instance.instance_exec(self, &@example_block)
|
|
153
264
|
|
|
154
265
|
if pending?
|
|
@@ -158,30 +269,47 @@ module RSpec
|
|
|
158
269
|
'Expected example to fail since it is pending, but it passed.',
|
|
159
270
|
[location]
|
|
160
271
|
end
|
|
161
|
-
rescue Pending::SkipDeclaredInExample
|
|
272
|
+
rescue Pending::SkipDeclaredInExample => _
|
|
273
|
+
# The "=> _" is normally useless but on JRuby it is a workaround
|
|
274
|
+
# for a bug that prevents us from getting backtraces:
|
|
275
|
+
# https://github.com/jruby/jruby/issues/4467
|
|
276
|
+
#
|
|
162
277
|
# no-op, required metadata has already been set by the `skip`
|
|
163
278
|
# method.
|
|
164
|
-
rescue
|
|
279
|
+
rescue AllExceptionsExcludingDangerousOnesOnRubiesThatAllowIt => e
|
|
165
280
|
set_exception(e)
|
|
166
281
|
ensure
|
|
282
|
+
RSpec.current_scope = :after_example_hook
|
|
167
283
|
run_after_example
|
|
168
284
|
end
|
|
169
285
|
end
|
|
170
286
|
end
|
|
171
|
-
rescue
|
|
287
|
+
rescue Support::AllExceptionsExceptOnesWeMustNotRescue => e
|
|
172
288
|
set_exception(e)
|
|
173
289
|
ensure
|
|
174
|
-
@example_group_instance
|
|
175
|
-
@example_group_instance.instance_variable_set(ivar, nil)
|
|
176
|
-
end
|
|
177
|
-
@example_group_instance = nil
|
|
290
|
+
@example_group_instance = nil # if you love something... let it go
|
|
178
291
|
end
|
|
179
292
|
|
|
180
293
|
finish(reporter)
|
|
181
294
|
ensure
|
|
295
|
+
execution_result.ensure_timing_set(clock)
|
|
182
296
|
RSpec.current_example = nil
|
|
183
297
|
end
|
|
184
298
|
|
|
299
|
+
if RSpec::Support::Ruby.jruby? || RUBY_VERSION.to_f < 1.9
|
|
300
|
+
# :nocov:
|
|
301
|
+
# For some reason, rescuing `Support::AllExceptionsExceptOnesWeMustNotRescue`
|
|
302
|
+
# in place of `Exception` above can cause the exit status to be the wrong
|
|
303
|
+
# thing. I have no idea why. See:
|
|
304
|
+
# https://github.com/rspec/rspec-core/pull/2063#discussion_r38284978
|
|
305
|
+
# @private
|
|
306
|
+
AllExceptionsExcludingDangerousOnesOnRubiesThatAllowIt = Exception
|
|
307
|
+
# :nocov:
|
|
308
|
+
else
|
|
309
|
+
# @private
|
|
310
|
+
AllExceptionsExcludingDangerousOnesOnRubiesThatAllowIt = Support::AllExceptionsExceptOnesWeMustNotRescue
|
|
311
|
+
end
|
|
312
|
+
|
|
185
313
|
# Wraps both a `Proc` and an {Example} for use in {Hooks#around
|
|
186
314
|
# around} hooks. In around hooks we need to yield this special
|
|
187
315
|
# kind of object (rather than the raw {Example}) because when
|
|
@@ -194,7 +322,7 @@ module RSpec
|
|
|
194
322
|
# if ex.metadata[:key] == :some_value && some_global_condition
|
|
195
323
|
# raise "some message"
|
|
196
324
|
# end
|
|
197
|
-
# ex.run # run delegates to ex.call
|
|
325
|
+
# ex.run # run delegates to ex.call.
|
|
198
326
|
# end
|
|
199
327
|
# end
|
|
200
328
|
#
|
|
@@ -205,13 +333,15 @@ module RSpec
|
|
|
205
333
|
attr_reader :example
|
|
206
334
|
|
|
207
335
|
Example.public_instance_methods(false).each do |name|
|
|
208
|
-
|
|
336
|
+
name_sym = name.to_sym
|
|
337
|
+
next if name_sym == :run || name_sym == :inspect || name_sym == :to_s
|
|
209
338
|
|
|
210
339
|
define_method(name) { |*a, &b| @example.__send__(name, *a, &b) }
|
|
211
340
|
end
|
|
212
341
|
|
|
213
342
|
Proc.public_instance_methods(false).each do |name|
|
|
214
|
-
|
|
343
|
+
name_sym = name.to_sym
|
|
344
|
+
next if name_sym == :call || name_sym == :inspect || name_sym == :to_s || name_sym == :to_proc
|
|
215
345
|
|
|
216
346
|
define_method(name) { |*a, &b| @proc.__send__(name, *a, &b) }
|
|
217
347
|
end
|
|
@@ -223,7 +353,8 @@ module RSpec
|
|
|
223
353
|
end
|
|
224
354
|
alias run call
|
|
225
355
|
|
|
226
|
-
# Provides a wrapped proc that will update our `executed?` state when
|
|
356
|
+
# Provides a wrapped proc that will update our `executed?` state when
|
|
357
|
+
# executed.
|
|
227
358
|
def to_proc
|
|
228
359
|
method(:call).to_proc
|
|
229
360
|
end
|
|
@@ -246,50 +377,61 @@ module RSpec
|
|
|
246
377
|
|
|
247
378
|
# @private
|
|
248
379
|
def inspect
|
|
249
|
-
@example.inspect.gsub('Example', '
|
|
380
|
+
@example.inspect.gsub('Example', 'Example::Procsy')
|
|
250
381
|
end
|
|
251
382
|
end
|
|
252
383
|
|
|
253
384
|
# @private
|
|
254
|
-
|
|
255
|
-
|
|
385
|
+
#
|
|
386
|
+
# The exception that will be displayed to the user -- either the failure of
|
|
387
|
+
# the example or the `pending_exception` if the example is pending.
|
|
388
|
+
def display_exception
|
|
389
|
+
@exception || execution_result.pending_exception
|
|
256
390
|
end
|
|
257
391
|
|
|
258
392
|
# @private
|
|
259
|
-
|
|
260
|
-
|
|
393
|
+
#
|
|
394
|
+
# Assigns the exception that will be displayed to the user -- either the failure of
|
|
395
|
+
# the example or the `pending_exception` if the example is pending.
|
|
396
|
+
def display_exception=(ex)
|
|
397
|
+
if pending? && !(Pending::PendingExampleFixedError === ex)
|
|
398
|
+
@exception = nil
|
|
399
|
+
execution_result.pending_fixed = false
|
|
400
|
+
execution_result.pending_exception = ex
|
|
401
|
+
else
|
|
402
|
+
@exception = ex
|
|
403
|
+
end
|
|
261
404
|
end
|
|
262
405
|
|
|
263
|
-
#
|
|
264
|
-
def around_example_hooks
|
|
265
|
-
@around_example_hooks ||= example_group.hooks.around_example_hooks_for(self)
|
|
266
|
-
end
|
|
406
|
+
# rubocop:disable Naming/AccessorMethodName
|
|
267
407
|
|
|
268
408
|
# @private
|
|
269
409
|
#
|
|
270
410
|
# Used internally to set an exception in an after hook, which
|
|
271
411
|
# captures the exception but doesn't raise it.
|
|
272
|
-
def set_exception(exception
|
|
273
|
-
|
|
274
|
-
execution_result.pending_exception = exception
|
|
275
|
-
else
|
|
276
|
-
if @exception
|
|
277
|
-
# An error has already been set; we don't want to override it,
|
|
278
|
-
# but we also don't want silence the error, so let's print it.
|
|
279
|
-
msg = <<-EOS
|
|
412
|
+
def set_exception(exception)
|
|
413
|
+
return self.display_exception = exception unless display_exception
|
|
280
414
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
415
|
+
unless RSpec::Core::MultipleExceptionError === display_exception
|
|
416
|
+
self.display_exception = RSpec::Core::MultipleExceptionError.new(display_exception)
|
|
417
|
+
end
|
|
284
418
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
end
|
|
419
|
+
display_exception.add exception
|
|
420
|
+
end
|
|
288
421
|
|
|
289
|
-
|
|
290
|
-
|
|
422
|
+
# @private
|
|
423
|
+
#
|
|
424
|
+
# Used to set the exception when `aggregate_failures` fails.
|
|
425
|
+
def set_aggregate_failures_exception(exception)
|
|
426
|
+
return set_exception(exception) unless display_exception
|
|
427
|
+
|
|
428
|
+
exception = RSpec::Core::MultipleExceptionError::InterfaceTag.for(exception)
|
|
429
|
+
exception.add display_exception
|
|
430
|
+
self.display_exception = exception
|
|
291
431
|
end
|
|
292
432
|
|
|
433
|
+
# rubocop:enable Naming/AccessorMethodName
|
|
434
|
+
|
|
293
435
|
# @private
|
|
294
436
|
#
|
|
295
437
|
# Used internally to set an exception and fail without actually executing
|
|
@@ -303,20 +445,13 @@ module RSpec
|
|
|
303
445
|
# @private
|
|
304
446
|
#
|
|
305
447
|
# Used internally to skip without actually executing the example when
|
|
306
|
-
# skip is used in before(:context)
|
|
448
|
+
# skip is used in before(:context).
|
|
307
449
|
def skip_with_exception(reporter, exception)
|
|
308
450
|
start(reporter)
|
|
309
451
|
Pending.mark_skipped! self, exception.argument
|
|
310
452
|
finish(reporter)
|
|
311
453
|
end
|
|
312
454
|
|
|
313
|
-
# @private
|
|
314
|
-
def instance_exec_with_rescue(context, &block)
|
|
315
|
-
@example_group_instance.instance_exec(self, &block)
|
|
316
|
-
rescue Exception => e
|
|
317
|
-
set_exception(e, context)
|
|
318
|
-
end
|
|
319
|
-
|
|
320
455
|
# @private
|
|
321
456
|
def instance_exec(*args, &block)
|
|
322
457
|
@example_group_instance.instance_exec(*args, &block)
|
|
@@ -324,14 +459,15 @@ module RSpec
|
|
|
324
459
|
|
|
325
460
|
private
|
|
326
461
|
|
|
327
|
-
def
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
462
|
+
def hooks
|
|
463
|
+
example_group_instance.singleton_class.hooks
|
|
464
|
+
end
|
|
465
|
+
|
|
466
|
+
def with_around_example_hooks
|
|
467
|
+
RSpec.current_scope = :before_example_hook
|
|
468
|
+
hooks.run(:around, :example, self) { yield }
|
|
469
|
+
rescue Support::AllExceptionsExceptOnesWeMustNotRescue => e
|
|
470
|
+
set_exception(e)
|
|
335
471
|
end
|
|
336
472
|
|
|
337
473
|
def start(reporter)
|
|
@@ -343,50 +479,52 @@ module RSpec
|
|
|
343
479
|
pending_message = execution_result.pending_message
|
|
344
480
|
|
|
345
481
|
if @exception
|
|
346
|
-
record_finished :failed
|
|
347
482
|
execution_result.exception = @exception
|
|
483
|
+
record_finished :failed, reporter
|
|
348
484
|
reporter.example_failed self
|
|
349
485
|
false
|
|
350
486
|
elsif pending_message
|
|
351
|
-
record_finished :pending
|
|
352
487
|
execution_result.pending_message = pending_message
|
|
488
|
+
record_finished :pending, reporter
|
|
353
489
|
reporter.example_pending self
|
|
354
490
|
true
|
|
355
491
|
else
|
|
356
|
-
record_finished :passed
|
|
492
|
+
record_finished :passed, reporter
|
|
357
493
|
reporter.example_passed self
|
|
358
494
|
true
|
|
359
495
|
end
|
|
360
496
|
end
|
|
361
497
|
|
|
362
|
-
def record_finished(status)
|
|
498
|
+
def record_finished(status, reporter)
|
|
363
499
|
execution_result.record_finished(status, clock.now)
|
|
500
|
+
reporter.example_finished(self)
|
|
364
501
|
end
|
|
365
502
|
|
|
366
503
|
def run_before_example
|
|
367
504
|
@example_group_instance.setup_mocks_for_rspec
|
|
368
|
-
|
|
505
|
+
hooks.run(:before, :example, self)
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
def with_around_and_singleton_context_hooks
|
|
509
|
+
singleton_context_hooks_host = example_group_instance.singleton_class
|
|
510
|
+
singleton_context_hooks_host.run_before_context_hooks(example_group_instance)
|
|
511
|
+
with_around_example_hooks { yield }
|
|
512
|
+
ensure
|
|
513
|
+
singleton_context_hooks_host.run_after_context_hooks(example_group_instance)
|
|
369
514
|
end
|
|
370
515
|
|
|
371
516
|
def run_after_example
|
|
372
|
-
|
|
517
|
+
assign_generated_description if defined?(::RSpec::Matchers)
|
|
518
|
+
hooks.run(:after, :example, self)
|
|
373
519
|
verify_mocks
|
|
374
|
-
assign_generated_description if RSpec.configuration.expecting_with_rspec?
|
|
375
|
-
rescue Exception => e
|
|
376
|
-
set_exception(e, "in an `after(:example)` hook")
|
|
377
520
|
ensure
|
|
378
521
|
@example_group_instance.teardown_mocks_for_rspec
|
|
379
522
|
end
|
|
380
523
|
|
|
381
524
|
def verify_mocks
|
|
382
525
|
@example_group_instance.verify_mocks_for_rspec if mocks_need_verification?
|
|
383
|
-
rescue
|
|
384
|
-
|
|
385
|
-
execution_result.pending_fixed = false
|
|
386
|
-
@exception = nil
|
|
387
|
-
else
|
|
388
|
-
set_exception(e)
|
|
389
|
-
end
|
|
526
|
+
rescue Support::AllExceptionsExceptOnesWeMustNotRescue => e
|
|
527
|
+
set_exception(e)
|
|
390
528
|
end
|
|
391
529
|
|
|
392
530
|
def mocks_need_verification?
|
|
@@ -394,22 +532,23 @@ module RSpec
|
|
|
394
532
|
end
|
|
395
533
|
|
|
396
534
|
def assign_generated_description
|
|
397
|
-
if metadata[:description].empty? && (description =
|
|
535
|
+
if metadata[:description].empty? && (description = generate_description)
|
|
398
536
|
metadata[:description] = description
|
|
399
|
-
metadata[:full_description]
|
|
537
|
+
metadata[:full_description] += description
|
|
400
538
|
end
|
|
401
|
-
rescue Exception => e
|
|
402
|
-
set_exception(e, "while assigning the example description")
|
|
403
539
|
ensure
|
|
404
540
|
RSpec::Matchers.clear_generated_description
|
|
405
541
|
end
|
|
406
542
|
|
|
407
|
-
def
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
543
|
+
def generate_description
|
|
544
|
+
RSpec::Matchers.generated_description
|
|
545
|
+
rescue Support::AllExceptionsExceptOnesWeMustNotRescue => e
|
|
546
|
+
location_description + " (Got an error when generating description " \
|
|
547
|
+
"from matcher: #{e.class}: #{e.message} -- #{e.backtrace.first})"
|
|
548
|
+
end
|
|
549
|
+
|
|
550
|
+
def location_description
|
|
551
|
+
"example at #{location}"
|
|
413
552
|
end
|
|
414
553
|
|
|
415
554
|
# Represents the result of executing an example.
|
|
@@ -446,18 +585,39 @@ module RSpec
|
|
|
446
585
|
# this indicates whether or not it now passes.
|
|
447
586
|
attr_accessor :pending_fixed
|
|
448
587
|
|
|
449
|
-
|
|
588
|
+
def pending_fixed?
|
|
589
|
+
!!pending_fixed
|
|
590
|
+
end
|
|
591
|
+
|
|
592
|
+
# @return [Boolean] Indicates if the example was completely skipped
|
|
593
|
+
# (typically done via `:skip` metadata or the `skip` method). Skipped examples
|
|
594
|
+
# will have a `:pending` result. A `:pending` result can also come from examples
|
|
595
|
+
# that were marked as `:pending`, which causes them to be run, and produces a
|
|
596
|
+
# `:failed` result if the example passes.
|
|
597
|
+
def example_skipped?
|
|
598
|
+
status == :pending && !pending_exception
|
|
599
|
+
end
|
|
450
600
|
|
|
451
601
|
# @api private
|
|
452
602
|
# Records the finished status of the example.
|
|
453
603
|
def record_finished(status, finished_at)
|
|
454
|
-
self.status
|
|
455
|
-
|
|
456
|
-
|
|
604
|
+
self.status = status
|
|
605
|
+
calculate_run_time(finished_at)
|
|
606
|
+
end
|
|
607
|
+
|
|
608
|
+
# @api private
|
|
609
|
+
# Populates finished_at and run_time if it has not yet been set
|
|
610
|
+
def ensure_timing_set(clock)
|
|
611
|
+
calculate_run_time(clock.now) unless finished_at
|
|
457
612
|
end
|
|
458
613
|
|
|
459
614
|
private
|
|
460
615
|
|
|
616
|
+
def calculate_run_time(finished_at)
|
|
617
|
+
self.finished_at = finished_at
|
|
618
|
+
self.run_time = (finished_at - started_at).to_f
|
|
619
|
+
end
|
|
620
|
+
|
|
461
621
|
# For backwards compatibility we present `status` as a string
|
|
462
622
|
# when presenting the legacy hash interface.
|
|
463
623
|
def hash_for_delegation
|
|
@@ -489,14 +649,18 @@ module RSpec
|
|
|
489
649
|
# @private
|
|
490
650
|
# Provides an execution context for before/after :suite hooks.
|
|
491
651
|
class SuiteHookContext < Example
|
|
492
|
-
def initialize
|
|
493
|
-
super(AnonymousExampleGroup,
|
|
652
|
+
def initialize(hook_description, reporter)
|
|
653
|
+
super(AnonymousExampleGroup, hook_description, {})
|
|
654
|
+
@example_group_instance = AnonymousExampleGroup.new
|
|
655
|
+
@reporter = reporter
|
|
494
656
|
end
|
|
495
657
|
|
|
496
|
-
#
|
|
497
|
-
def set_exception(exception
|
|
498
|
-
|
|
658
|
+
# rubocop:disable Naming/AccessorMethodName
|
|
659
|
+
def set_exception(exception)
|
|
660
|
+
reporter.notify_non_example_exception(exception, "An error occurred in #{description}.")
|
|
661
|
+
RSpec.world.wants_to_quit = true
|
|
499
662
|
end
|
|
663
|
+
# rubocop:enable Naming/AccessorMethodName
|
|
500
664
|
end
|
|
501
665
|
end
|
|
502
666
|
end
|