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
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
Feature: filter_run_when_matching
|
|
2
|
+
|
|
3
|
+
You can configure a _conditional_ filter that only applies if there are any matching
|
|
4
|
+
examples using `config.filter_run_when_matching`. This is commonly used for focus
|
|
5
|
+
filtering:
|
|
6
|
+
|
|
7
|
+
```ruby
|
|
8
|
+
RSpec.configure do |c|
|
|
9
|
+
c.filter_run_when_matching :focus
|
|
10
|
+
end
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
This configuration allows you to filter to specific examples or groups by tagging
|
|
14
|
+
them with `:focus` metadata. When no example or groups are focused (which should be
|
|
15
|
+
the norm since it's intended to be a temporary change), the filter will be ignored.
|
|
16
|
+
|
|
17
|
+
RSpec also provides aliases--`fit`, `fdescribe` and `fcontext`--as a shorthand for
|
|
18
|
+
`it`, `describe` and `context` with `:focus` metadata, making it easy to temporarily
|
|
19
|
+
focus an example or group by prefixing an `f`.
|
|
20
|
+
|
|
21
|
+
Background:
|
|
22
|
+
Given a file named "spec/spec_helper.rb" with:
|
|
23
|
+
"""ruby
|
|
24
|
+
RSpec.configure do |c|
|
|
25
|
+
c.filter_run_when_matching :focus
|
|
26
|
+
end
|
|
27
|
+
"""
|
|
28
|
+
And a file named ".rspec" with:
|
|
29
|
+
"""
|
|
30
|
+
--require spec_helper
|
|
31
|
+
"""
|
|
32
|
+
And a file named "spec/example_spec.rb" with:
|
|
33
|
+
"""ruby
|
|
34
|
+
RSpec.describe "A group" do
|
|
35
|
+
it "has a passing example" do
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
context "a nested group" do
|
|
39
|
+
it "also has a passing example" do
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
Scenario: The filter is ignored when nothing is focused
|
|
46
|
+
When I run `rspec --format doc`
|
|
47
|
+
Then it should pass with "2 examples, 0 failures"
|
|
48
|
+
And the output should contain:
|
|
49
|
+
"""
|
|
50
|
+
A group
|
|
51
|
+
has a passing example
|
|
52
|
+
a nested group
|
|
53
|
+
also has a passing example
|
|
54
|
+
"""
|
|
55
|
+
|
|
56
|
+
Scenario: Examples can be focused with `fit`
|
|
57
|
+
Given I have changed `it "has a passing example"` to `fit "has a passing example"` in "spec/example_spec.rb"
|
|
58
|
+
When I run `rspec --format doc`
|
|
59
|
+
Then it should pass with "1 example, 0 failures"
|
|
60
|
+
And the output should contain:
|
|
61
|
+
"""
|
|
62
|
+
A group
|
|
63
|
+
has a passing example
|
|
64
|
+
"""
|
|
65
|
+
|
|
66
|
+
Scenario: Groups can be focused with `fdescribe` or `fcontext`
|
|
67
|
+
Given I have changed `context` to `fcontext` in "spec/example_spec.rb"
|
|
68
|
+
When I run `rspec --format doc`
|
|
69
|
+
Then it should pass with "1 example, 0 failures"
|
|
70
|
+
And the output should contain:
|
|
71
|
+
"""
|
|
72
|
+
A group
|
|
73
|
+
a nested group
|
|
74
|
+
also has a passing example
|
|
75
|
+
"""
|
|
@@ -10,16 +10,17 @@ Feature: Configurable colors
|
|
|
10
10
|
* `detail_color`: Color used for miscellaneous test details (default: `:cyan`)
|
|
11
11
|
|
|
12
12
|
Colors are specified as symbols. Options are `:black`, `:red`, `:green`,
|
|
13
|
-
`:yellow`, `:blue`, `:magenta`, `:cyan`,
|
|
13
|
+
`:yellow`, `:blue`, `:magenta`, `:cyan`, `:white`, `:bold_black`, `:bold_red`,
|
|
14
|
+
`:bold_green`, `:bold_yellow`, `:bold_blue`, `:bold_magenta`, `:bold_cyan`,
|
|
15
|
+
and `:bold_white`,
|
|
14
16
|
|
|
15
|
-
@ansi
|
|
17
|
+
@keep-ansi-escape-sequences
|
|
16
18
|
Scenario: Customizing the failure color
|
|
17
19
|
Given a file named "custom_failure_color_spec.rb" with:
|
|
18
20
|
"""ruby
|
|
19
21
|
RSpec.configure do |config|
|
|
20
22
|
config.failure_color = :magenta
|
|
21
|
-
config.
|
|
22
|
-
config.color = true
|
|
23
|
+
config.color_mode = :on
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
RSpec.describe "failure" do
|
|
@@ -30,3 +31,21 @@ Feature: Configurable colors
|
|
|
30
31
|
"""
|
|
31
32
|
When I run `rspec custom_failure_color_spec.rb --format progress`
|
|
32
33
|
Then the failing example is printed in magenta
|
|
34
|
+
|
|
35
|
+
@keep-ansi-escape-sequences
|
|
36
|
+
Scenario: Customizing the failure color with a custom console code
|
|
37
|
+
Given a file named "custom_failure_color_spec.rb" with:
|
|
38
|
+
"""ruby
|
|
39
|
+
RSpec.configure do |config|
|
|
40
|
+
config.failure_color = "1;32"
|
|
41
|
+
config.color_mode = :on
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
RSpec.describe "failure" do
|
|
45
|
+
it "fails and uses the custom color" do
|
|
46
|
+
expect(2).to eq(4)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
"""
|
|
50
|
+
When I run `rspec custom_failure_color_spec.rb --format progress`
|
|
51
|
+
Then the failing example is printed wrapped in "1;32"
|
|
@@ -7,6 +7,9 @@ Feature: let and let!
|
|
|
7
7
|
the method it defines is invoked. You can use `let!` to force the method's
|
|
8
8
|
invocation before each example.
|
|
9
9
|
|
|
10
|
+
By default, `let` is threadsafe, but you can configure it not to be
|
|
11
|
+
by disabling `config.threadsafe`, which makes `let` perform a bit faster.
|
|
12
|
+
|
|
10
13
|
Scenario: Use `let` to define memoized helper method
|
|
11
14
|
Given a file named "let_spec.rb" with:
|
|
12
15
|
"""ruby
|
|
@@ -11,6 +11,8 @@ Feature: Define helper methods in a module
|
|
|
11
11
|
given metadata will `include` or `extend` the module. You can also specify
|
|
12
12
|
metadata using only symbols.
|
|
13
13
|
|
|
14
|
+
Note that examples that match a `config.include` module's metadata will also have the module included. RSpec treats every example as having a singleton example group (analogous to Ruby's singleton classes) containing just the one example.
|
|
15
|
+
|
|
14
16
|
Background:
|
|
15
17
|
Given a file named "helpers.rb" with:
|
|
16
18
|
"""ruby
|
|
@@ -79,6 +81,10 @@ Feature: Define helper methods in a module
|
|
|
79
81
|
it "does not have access to the helper methods defined in the module" do
|
|
80
82
|
expect { help }.to raise_error(NameError)
|
|
81
83
|
end
|
|
84
|
+
|
|
85
|
+
it "does have access when the example has matching metadata", :foo => :bar do
|
|
86
|
+
expect(help).to be(:available)
|
|
87
|
+
end
|
|
82
88
|
end
|
|
83
89
|
"""
|
|
84
90
|
When I run `rspec include_module_in_some_groups_spec.rb`
|
|
@@ -17,6 +17,9 @@ Feature: `around` hooks
|
|
|
17
17
|
**WARNING:** Mock frameworks are set up and torn down within the context of
|
|
18
18
|
running the example. You cannot interact with them directly in `around` hooks.
|
|
19
19
|
|
|
20
|
+
**WARNING:** `around` hooks will execute *before* any `before` hooks, and *after*
|
|
21
|
+
any `after` hooks regardless of the context they were defined in.
|
|
22
|
+
|
|
20
23
|
Scenario: Use the example as a proc within the block passed to `around()`
|
|
21
24
|
Given a file named "example_spec.rb" with:
|
|
22
25
|
"""ruby
|
|
@@ -85,6 +88,29 @@ Feature: `around` hooks
|
|
|
85
88
|
When I run `rspec example_spec.rb`
|
|
86
89
|
Then the output should contain "this should show up in the output"
|
|
87
90
|
|
|
91
|
+
Scenario: An around hook continues to run even if the example throws an exception
|
|
92
|
+
Given a file named "example_spec.rb" with:
|
|
93
|
+
"""ruby
|
|
94
|
+
RSpec.describe "something" do
|
|
95
|
+
around(:example) do |example|
|
|
96
|
+
puts "around example setup"
|
|
97
|
+
example.run
|
|
98
|
+
puts "around example cleanup"
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it "still executes the entire around hook" do
|
|
102
|
+
fail "the example blows up"
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
"""
|
|
106
|
+
When I run `rspec example_spec.rb`
|
|
107
|
+
Then the output should contain "1 example, 1 failure"
|
|
108
|
+
And the output should contain:
|
|
109
|
+
"""
|
|
110
|
+
around example setup
|
|
111
|
+
around example cleanup
|
|
112
|
+
"""
|
|
113
|
+
|
|
88
114
|
Scenario: Define a global `around` hook
|
|
89
115
|
Given a file named "example_spec.rb" with:
|
|
90
116
|
"""ruby
|
|
@@ -193,7 +219,7 @@ Feature: `around` hooks
|
|
|
193
219
|
end
|
|
194
220
|
|
|
195
221
|
it "runs the example in the correct context" do
|
|
196
|
-
expect(included_in_configure_block).to
|
|
222
|
+
expect(included_in_configure_block).to be(true)
|
|
197
223
|
end
|
|
198
224
|
end
|
|
199
225
|
"""
|
|
@@ -215,9 +241,11 @@ Feature: `around` hooks
|
|
|
215
241
|
Then the output should contain "1 example, 0 failures, 1 pending"
|
|
216
242
|
And the output should contain:
|
|
217
243
|
"""
|
|
218
|
-
Pending:
|
|
219
|
-
|
|
220
|
-
|
|
244
|
+
Pending: (Failures listed here are expected and do not affect your suite's status)
|
|
245
|
+
|
|
246
|
+
1) implicit pending example should be detected as Not yet implemented
|
|
247
|
+
# Not yet implemented
|
|
248
|
+
# ./example_spec.rb:6
|
|
221
249
|
"""
|
|
222
250
|
|
|
223
251
|
|
|
@@ -239,8 +267,10 @@ Feature: `around` hooks
|
|
|
239
267
|
Then the output should contain "1 example, 0 failures, 1 pending"
|
|
240
268
|
And the output should contain:
|
|
241
269
|
"""
|
|
242
|
-
|
|
243
|
-
|
|
270
|
+
Pending: (Failures listed here are expected and do not affect your suite's status)
|
|
271
|
+
|
|
272
|
+
1) explicit pending example should be detected as pending
|
|
273
|
+
# No reason given
|
|
244
274
|
"""
|
|
245
275
|
|
|
246
276
|
Scenario: Multiple `around` hooks in the same scope
|
|
@@ -22,13 +22,19 @@ Feature: `before` and `after` hooks
|
|
|
22
22
|
after :suite
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
A bare `before` or `after` hook defaults to the `:example` scope.
|
|
26
|
+
|
|
25
27
|
`before` and `after` hooks can be defined directly in the example groups they
|
|
26
|
-
should run in, or in a global `RSpec.configure` block.
|
|
28
|
+
should run in, or in a global `RSpec.configure` block. Note that the status of
|
|
29
|
+
the example does not affect the hooks.
|
|
27
30
|
|
|
28
31
|
**WARNING:** Setting instance variables are not supported in `before(:suite)`.
|
|
29
32
|
|
|
30
33
|
**WARNING:** Mocks are only supported in `before(:example)`.
|
|
31
34
|
|
|
35
|
+
**WARNING:** `around` hooks will execute *before* any `before` hooks, and *after*
|
|
36
|
+
any `after` hooks regardless of the context they were defined in.
|
|
37
|
+
|
|
32
38
|
Note: the `:example` and `:context` scopes are also available as `:each` and
|
|
33
39
|
`:all`, respectively. Use whichever you prefer.
|
|
34
40
|
|
|
@@ -174,11 +180,37 @@ Feature: `before` and `after` hooks
|
|
|
174
180
|
end
|
|
175
181
|
"""
|
|
176
182
|
When I run `rspec after_context_spec.rb`
|
|
177
|
-
Then
|
|
178
|
-
And the output should contain:
|
|
183
|
+
Then it should fail with:
|
|
179
184
|
"""
|
|
180
185
|
An error occurred in an `after(:context)` hook.
|
|
181
|
-
|
|
186
|
+
Failure/Error: raise StandardError.new("Boom!")
|
|
187
|
+
|
|
188
|
+
StandardError:
|
|
189
|
+
Boom!
|
|
190
|
+
# ./after_context_spec.rb:3
|
|
191
|
+
"""
|
|
192
|
+
|
|
193
|
+
Scenario: A failure in an example does not affect hooks
|
|
194
|
+
Given a file named "failure_in_example_spec.rb" with:
|
|
195
|
+
"""ruby
|
|
196
|
+
RSpec.describe "a failing example does not affect hooks" do
|
|
197
|
+
before(:context) { puts "before context runs" }
|
|
198
|
+
before(:example) { puts "before example runs" }
|
|
199
|
+
after(:example) { puts "after example runs" }
|
|
200
|
+
after(:context) { puts "after context runs" }
|
|
201
|
+
|
|
202
|
+
it "fails the example but runs the hooks" do
|
|
203
|
+
raise "An Error"
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
"""
|
|
207
|
+
When I run `rspec failure_in_example_spec.rb`
|
|
208
|
+
Then it should fail with:
|
|
209
|
+
"""
|
|
210
|
+
before context runs
|
|
211
|
+
before example runs
|
|
212
|
+
after example runs
|
|
213
|
+
Fafter context runs
|
|
182
214
|
"""
|
|
183
215
|
|
|
184
216
|
Scenario: Define `before` and `after` blocks in configuration
|
|
@@ -225,10 +257,18 @@ Feature: `before` and `after` hooks
|
|
|
225
257
|
puts "before example"
|
|
226
258
|
end
|
|
227
259
|
|
|
260
|
+
before do
|
|
261
|
+
puts "also before example but by default"
|
|
262
|
+
end
|
|
263
|
+
|
|
228
264
|
after(:example) do
|
|
229
265
|
puts "after example"
|
|
230
266
|
end
|
|
231
267
|
|
|
268
|
+
after do
|
|
269
|
+
puts "also after example but by default"
|
|
270
|
+
end
|
|
271
|
+
|
|
232
272
|
after(:context) do
|
|
233
273
|
puts "after context"
|
|
234
274
|
end
|
|
@@ -243,11 +283,13 @@ Feature: `before` and `after` hooks
|
|
|
243
283
|
"""
|
|
244
284
|
before context
|
|
245
285
|
before example
|
|
286
|
+
also before example but by default
|
|
287
|
+
also after example but by default
|
|
246
288
|
after example
|
|
247
289
|
.after context
|
|
248
290
|
"""
|
|
249
291
|
|
|
250
|
-
Scenario: `before
|
|
292
|
+
Scenario: `before`/`after` blocks defined in configuration are run in order
|
|
251
293
|
Given a file named "configuration_spec.rb" with:
|
|
252
294
|
"""ruby
|
|
253
295
|
require "rspec/expectations"
|
|
@@ -14,6 +14,8 @@ Feature: filters
|
|
|
14
14
|
end
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
Note that filtered `:context` hooks will still be applied to individual examples with matching metadata -- in effect, every example has a singleton example group containing just the one example (analogous to Ruby's singleton classes).
|
|
18
|
+
|
|
17
19
|
You can also specify metadata using only symbols.
|
|
18
20
|
|
|
19
21
|
Scenario: Filter `before(:example)` hooks using arbitrary metadata
|
|
@@ -127,6 +129,10 @@ Feature: filters
|
|
|
127
129
|
expect(@hook).to be_nil
|
|
128
130
|
end
|
|
129
131
|
|
|
132
|
+
it "runs the hook for a single example with matching metadata", :foo => :bar do
|
|
133
|
+
expect(@hook).to eq(:before_context_foo_bar)
|
|
134
|
+
end
|
|
135
|
+
|
|
130
136
|
describe "a nested subgroup with matching metadata", :foo => :bar do
|
|
131
137
|
it "runs the hook" do
|
|
132
138
|
expect(@hook).to eq(:before_context_foo_bar)
|
|
@@ -166,31 +172,37 @@ Feature: filters
|
|
|
166
172
|
it "does not run the hook" do
|
|
167
173
|
puts "unfiltered"
|
|
168
174
|
end
|
|
175
|
+
|
|
176
|
+
it "runs the hook for a single example with matching metadata", :foo => :bar do
|
|
177
|
+
puts "filtered 1"
|
|
178
|
+
end
|
|
169
179
|
end
|
|
170
180
|
|
|
171
181
|
describe "a group with matching metadata", :foo => :bar do
|
|
172
182
|
it "runs the hook" do
|
|
173
|
-
puts "filtered
|
|
183
|
+
puts "filtered 2"
|
|
174
184
|
end
|
|
175
185
|
end
|
|
176
186
|
|
|
177
187
|
describe "another group without matching metadata" do
|
|
178
188
|
describe "a nested subgroup with matching metadata", :foo => :bar do
|
|
179
189
|
it "runs the hook" do
|
|
180
|
-
puts "filtered
|
|
190
|
+
puts "filtered 3"
|
|
181
191
|
end
|
|
182
192
|
end
|
|
183
193
|
end
|
|
184
194
|
end
|
|
185
195
|
"""
|
|
186
|
-
When I run `rspec --format progress filter_after_context_hooks_spec.rb`
|
|
196
|
+
When I run `rspec --format progress filter_after_context_hooks_spec.rb --order defined`
|
|
187
197
|
Then the examples should all pass
|
|
188
198
|
And the output should contain:
|
|
189
199
|
"""
|
|
190
200
|
unfiltered
|
|
191
201
|
.filtered 1
|
|
202
|
+
after :context
|
|
203
|
+
.filtered 2
|
|
192
204
|
.after :context
|
|
193
|
-
filtered
|
|
205
|
+
filtered 3
|
|
194
206
|
.after :context
|
|
195
207
|
"""
|
|
196
208
|
|
|
@@ -232,3 +244,186 @@ Feature: filters
|
|
|
232
244
|
.after context
|
|
233
245
|
"""
|
|
234
246
|
|
|
247
|
+
Scenario: Filtering hooks using symbols
|
|
248
|
+
Given a file named "filter_example_hooks_with_symbol_spec.rb" with:
|
|
249
|
+
"""ruby
|
|
250
|
+
RSpec.configure do |config|
|
|
251
|
+
config.before(:example, :foo) do
|
|
252
|
+
invoked_hooks << :before_example_foo_bar
|
|
253
|
+
end
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
RSpec.describe "a filtered before :example hook" do
|
|
257
|
+
let(:invoked_hooks) { [] }
|
|
258
|
+
|
|
259
|
+
describe "group without a matching metadata key" do
|
|
260
|
+
it "does not run the hook" do
|
|
261
|
+
expect(invoked_hooks).to be_empty
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
it "does not run the hook for an example with metadata hash containing the key with a falsey value", :foo => nil do
|
|
265
|
+
expect(invoked_hooks).to be_empty
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
it "runs the hook for an example with metadata hash containing the key with a truthy value", :foo => :bar do
|
|
269
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
it "runs the hook for an example with only the key defined", :foo do
|
|
273
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
274
|
+
end
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
describe "group with matching metadata key", :foo do
|
|
278
|
+
it "runs the hook" do
|
|
279
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
"""
|
|
284
|
+
When I run `rspec filter_example_hooks_with_symbol_spec.rb`
|
|
285
|
+
Then the examples should all pass
|
|
286
|
+
|
|
287
|
+
Scenario: Filtering hooks using a hash
|
|
288
|
+
Given a file named "filter_example_hooks_with_hash_spec.rb" with:
|
|
289
|
+
"""ruby
|
|
290
|
+
RSpec.configure do |config|
|
|
291
|
+
config.before(:example, :foo => { :bar => :baz, :slow => true }) do
|
|
292
|
+
invoked_hooks << :before_example_foo_bar
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
RSpec.describe "a filtered before :example hook" do
|
|
297
|
+
let(:invoked_hooks) { [] }
|
|
298
|
+
|
|
299
|
+
describe "group without matching metadata" do
|
|
300
|
+
it "does not run the hook" do
|
|
301
|
+
expect(invoked_hooks).to be_empty
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
it "does not run the hook for an example if only part of the filter matches", :foo => { :bar => :baz } do
|
|
305
|
+
expect(invoked_hooks).to be_empty
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
it "runs the hook for an example if the metadata contains all key value pairs from the filter", :foo => { :bar => :baz, :slow => true, :extra => :pair } do
|
|
309
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
310
|
+
end
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
describe "group with matching metadata", :foo => { :bar => :baz, :slow => true } do
|
|
314
|
+
it "runs the hook" do
|
|
315
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
"""
|
|
320
|
+
When I run `rspec filter_example_hooks_with_hash_spec.rb`
|
|
321
|
+
Then the examples should all pass
|
|
322
|
+
|
|
323
|
+
Scenario: Filtering hooks using a Proc
|
|
324
|
+
Given a file named "filter_example_hooks_with_proc_spec.rb" with:
|
|
325
|
+
"""ruby
|
|
326
|
+
RSpec.configure do |config|
|
|
327
|
+
config.before(:example, :foo => Proc.new { |value| value.is_a?(String) } ) do
|
|
328
|
+
invoked_hooks << :before_example_foo_bar
|
|
329
|
+
end
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
RSpec.describe "a filtered before :example hook" do
|
|
333
|
+
let(:invoked_hooks) { [] }
|
|
334
|
+
|
|
335
|
+
describe "group without matching metadata" do
|
|
336
|
+
it "does not run the hook" do
|
|
337
|
+
expect(invoked_hooks).to be_empty
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
it "does not run the hook if the proc returns false", :foo => :bar do
|
|
341
|
+
expect(invoked_hooks).to be_empty
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
it "runs the hook if the proc returns true", :foo => 'bar' do
|
|
345
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
describe "group with matching metadata", :foo => 'bar' do
|
|
350
|
+
it "runs the hook" do
|
|
351
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
352
|
+
end
|
|
353
|
+
end
|
|
354
|
+
end
|
|
355
|
+
"""
|
|
356
|
+
When I run `rspec filter_example_hooks_with_proc_spec.rb`
|
|
357
|
+
Then the examples should all pass
|
|
358
|
+
|
|
359
|
+
Scenario: Filtering hooks using a regular expression
|
|
360
|
+
Given a file named "filter_example_hooks_with_regexp_spec.rb" with:
|
|
361
|
+
"""ruby
|
|
362
|
+
RSpec.configure do |config|
|
|
363
|
+
config.before(:example, :foo => /bar/ ) do
|
|
364
|
+
invoked_hooks << :before_example_foo_bar
|
|
365
|
+
end
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
RSpec.describe "a filtered before :example hook" do
|
|
369
|
+
let(:invoked_hooks) { [] }
|
|
370
|
+
|
|
371
|
+
describe "group without matching metadata" do
|
|
372
|
+
it "does not run the hook" do
|
|
373
|
+
expect(invoked_hooks).to be_empty
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
it "does not run the hook if the value does not match", :foo => 'baz' do
|
|
377
|
+
expect(invoked_hooks).to be_empty
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
it "runs the hook if the value matches", :foo => 'bar' do
|
|
381
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
382
|
+
end
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
describe "group with matching metadata", :foo => 'bar' do
|
|
386
|
+
it "runs the hook" do
|
|
387
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
388
|
+
end
|
|
389
|
+
end
|
|
390
|
+
end
|
|
391
|
+
"""
|
|
392
|
+
When I run `rspec filter_example_hooks_with_regexp_spec.rb`
|
|
393
|
+
Then the examples should all pass
|
|
394
|
+
|
|
395
|
+
Scenario: Filtering hooks using string comparison
|
|
396
|
+
Given a file named "filter_example_hooks_with_strcmp_spec.rb" with:
|
|
397
|
+
"""ruby
|
|
398
|
+
RSpec.configure do |config|
|
|
399
|
+
config.before(:example, :foo => :bar ) do
|
|
400
|
+
invoked_hooks << :before_example_foo_bar
|
|
401
|
+
end
|
|
402
|
+
end
|
|
403
|
+
|
|
404
|
+
RSpec.describe "a filtered before :example hook" do
|
|
405
|
+
let(:invoked_hooks) { [] }
|
|
406
|
+
|
|
407
|
+
describe "group without matching metadata" do
|
|
408
|
+
it "does not run the hook" do
|
|
409
|
+
expect(invoked_hooks).to be_empty
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
it "does not run the hook if the coerced values do not match", :foo => 'baz' do
|
|
413
|
+
expect(invoked_hooks).to be_empty
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
it "runs the hook if the coerced values match", :foo => 'bar' do
|
|
417
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
418
|
+
end
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
describe "group with matching metadata", :foo => 'bar' do
|
|
422
|
+
it "runs the hook" do
|
|
423
|
+
expect(invoked_hooks).to eq([:before_example_foo_bar])
|
|
424
|
+
end
|
|
425
|
+
end
|
|
426
|
+
end
|
|
427
|
+
"""
|
|
428
|
+
When I run `rspec filter_example_hooks_with_strcmp_spec.rb`
|
|
429
|
+
Then the examples should all pass
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
Feature: `when_first_matching_example_defined` hook
|
|
2
|
+
|
|
3
|
+
In large projects that use RSpec, it's common to have some expensive setup logic
|
|
4
|
+
that is only needed when certain kinds of specs have been loaded. If that kind of
|
|
5
|
+
spec has not been loaded, you'd prefer to avoid the cost of doing the setup.
|
|
6
|
+
|
|
7
|
+
The `when_first_matching_example_defined` hook makes it easy to conditionally
|
|
8
|
+
perform some logic when the first example is defined with matching metadata,
|
|
9
|
+
allowing you to ensure the necessary setup is performed only when needed.
|
|
10
|
+
|
|
11
|
+
Background:
|
|
12
|
+
Given a file named "spec/spec_helper.rb" with:
|
|
13
|
+
"""ruby
|
|
14
|
+
RSpec.configure do |config|
|
|
15
|
+
config.when_first_matching_example_defined(:db) do
|
|
16
|
+
require "support/db"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
"""
|
|
20
|
+
And a file named "spec/support/db.rb" with:
|
|
21
|
+
"""ruby
|
|
22
|
+
RSpec.configure do |config|
|
|
23
|
+
config.before(:suite) do
|
|
24
|
+
puts "Bootstrapped the DB."
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
config.around(:example, :db) do |example|
|
|
28
|
+
puts "Starting a DB transaction."
|
|
29
|
+
example.run
|
|
30
|
+
puts "Rolling back a DB transaction."
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
"""
|
|
34
|
+
And a file named ".rspec" with:
|
|
35
|
+
"""
|
|
36
|
+
--require spec_helper
|
|
37
|
+
"""
|
|
38
|
+
And a file named "spec/unit_spec.rb" with:
|
|
39
|
+
"""
|
|
40
|
+
RSpec.describe "A unit spec" do
|
|
41
|
+
it "does not require a database" do
|
|
42
|
+
puts "in unit example"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
"""
|
|
46
|
+
And a file named "spec/integration_spec.rb" with:
|
|
47
|
+
"""
|
|
48
|
+
RSpec.describe "An integration spec", :db do
|
|
49
|
+
it "requires a database" do
|
|
50
|
+
puts "in integration example"
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
Scenario: Running the entire suite loads the DB setup
|
|
56
|
+
When I run `rspec`
|
|
57
|
+
Then it should pass with:
|
|
58
|
+
"""
|
|
59
|
+
Bootstrapped the DB.
|
|
60
|
+
Starting a DB transaction.
|
|
61
|
+
in integration example
|
|
62
|
+
Rolling back a DB transaction.
|
|
63
|
+
.in unit example
|
|
64
|
+
.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
Scenario: Running just the unit spec does not load the DB setup
|
|
68
|
+
When I run `rspec spec/unit_spec.rb`
|
|
69
|
+
Then the examples should all pass
|
|
70
|
+
And the output should not contain "DB"
|