opal-rspec 0.8.0.alpha3 → 1.0.0.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- 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,106 @@
|
|
1
|
+
Feature: Running specs multiple times with different runner options in the same process
|
2
|
+
|
3
|
+
Use `clear_examples` command to clear all example groups between different
|
4
|
+
runs in the same process. It:
|
5
|
+
|
6
|
+
- clears all example groups
|
7
|
+
- restores inclusion and exclusion filters set by configuration
|
8
|
+
- clears inclusion and exclusion filters set by previous spec run (via runner)
|
9
|
+
- resets all time counters (start time, load time, duration, etc.)
|
10
|
+
- resets different counts of examples (all examples, pending and failed)
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
require "spec_helper"
|
14
|
+
|
15
|
+
RSpec::Core::Runner.run([... some parameters ...])
|
16
|
+
|
17
|
+
RSpec.clear_examples
|
18
|
+
|
19
|
+
RSpec::Core::Runner.run([... different parameters ...])
|
20
|
+
```
|
21
|
+
|
22
|
+
Background:
|
23
|
+
Given a file named "spec/spec_helper.rb" with:
|
24
|
+
"""ruby
|
25
|
+
RSpec.configure do |config|
|
26
|
+
config.filter_run_when_matching :focus => true
|
27
|
+
config.filter_run_excluding :slow => true
|
28
|
+
end
|
29
|
+
"""
|
30
|
+
Given a file named "spec/truth_spec.rb" with:
|
31
|
+
"""ruby
|
32
|
+
require 'spec_helper'
|
33
|
+
|
34
|
+
RSpec.describe "truth" do
|
35
|
+
describe true do
|
36
|
+
it "is truthy" do
|
37
|
+
expect(true).to be_truthy
|
38
|
+
end
|
39
|
+
|
40
|
+
it "is not falsy" do
|
41
|
+
expect(true).not_to be_falsy
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe false do
|
46
|
+
it "is falsy" do
|
47
|
+
expect(false).to be_falsy
|
48
|
+
end
|
49
|
+
|
50
|
+
it "is truthy" do
|
51
|
+
expect(false).not_to be_truthy
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
"""
|
56
|
+
|
57
|
+
Scenario: Running specs multiple times in the same process
|
58
|
+
Given a file named "scripts/multiple_runs.rb" with:
|
59
|
+
"""ruby
|
60
|
+
require 'rspec/core'
|
61
|
+
|
62
|
+
RSpec::Core::Runner.run(['spec'])
|
63
|
+
RSpec.clear_examples
|
64
|
+
RSpec::Core::Runner.run(['spec'])
|
65
|
+
"""
|
66
|
+
When I run `ruby scripts/multiple_runs.rb`
|
67
|
+
Then the output should match:
|
68
|
+
"""
|
69
|
+
4 examples, 0 failures
|
70
|
+
.*
|
71
|
+
4 examples, 0 failures
|
72
|
+
"""
|
73
|
+
|
74
|
+
Scenario: Running specs multiple times in the same process with different parameters
|
75
|
+
Given a file named "spec/bar_spec.rb" with:
|
76
|
+
"""ruby
|
77
|
+
require 'spec_helper'
|
78
|
+
|
79
|
+
RSpec.describe 'bar' do
|
80
|
+
subject(:bar) { :focused }
|
81
|
+
|
82
|
+
it 'is focused', :focus do
|
83
|
+
expect(bar).to be(:focused)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
"""
|
87
|
+
Given a file named "scripts/different_parameters.rb" with:
|
88
|
+
"""ruby
|
89
|
+
require 'rspec/core'
|
90
|
+
|
91
|
+
RSpec::Core::Runner.run(['spec'])
|
92
|
+
RSpec.clear_examples
|
93
|
+
RSpec::Core::Runner.run(['spec/truth_spec.rb:4'])
|
94
|
+
RSpec.clear_examples
|
95
|
+
RSpec::Core::Runner.run(['spec', '-e', 'fals'])
|
96
|
+
"""
|
97
|
+
When I run `ruby scripts/different_parameters.rb`
|
98
|
+
Then the output should match:
|
99
|
+
"""
|
100
|
+
1 example, 0 failures
|
101
|
+
.*
|
102
|
+
2 examples, 0 failures
|
103
|
+
.*
|
104
|
+
3 examples, 0 failures
|
105
|
+
"""
|
106
|
+
|
@@ -0,0 +1,178 @@
|
|
1
|
+
@with-clean-spec-opts
|
2
|
+
Feature: Bisect
|
3
|
+
|
4
|
+
RSpec's `--order random` and `--seed` options help surface flickering examples that only fail when one or more other examples are executed first. It can be very difficult to isolate the exact combination of examples that triggers the failure. The `--bisect` flag helps solve that problem.
|
5
|
+
|
6
|
+
Pass the `--bisect` option (in addition to `--seed` and any other options) and RSpec will repeatedly run subsets of your suite in order to isolate the minimal set of examples that reproduce the same failures.
|
7
|
+
|
8
|
+
At any point during the bisect run, you can hit ctrl-c to abort and it will provide you with the most minimal reproduction command it has discovered so far.
|
9
|
+
|
10
|
+
To get more detailed output (particularly useful if you want to report a bug with bisect), use `--bisect=verbose`.
|
11
|
+
|
12
|
+
Background:
|
13
|
+
Given a file named "lib/calculator.rb" with:
|
14
|
+
"""ruby
|
15
|
+
class Calculator
|
16
|
+
def self.add(x, y)
|
17
|
+
x + y
|
18
|
+
end
|
19
|
+
end
|
20
|
+
"""
|
21
|
+
And a file named "spec/calculator_1_spec.rb" with:
|
22
|
+
"""ruby
|
23
|
+
require 'calculator'
|
24
|
+
|
25
|
+
RSpec.describe "Calculator" do
|
26
|
+
it 'adds numbers' do
|
27
|
+
expect(Calculator.add(1, 2)).to eq(3)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
"""
|
31
|
+
And files "spec/calculator_2_spec.rb" through "spec/calculator_9_spec.rb" with an unrelated passing spec in each file
|
32
|
+
And a file named "spec/calculator_10_spec.rb" with:
|
33
|
+
"""ruby
|
34
|
+
require 'calculator'
|
35
|
+
|
36
|
+
RSpec.describe "Monkey patched Calculator" do
|
37
|
+
it 'does screwy math' do
|
38
|
+
# monkey patching `Calculator` affects examples that are
|
39
|
+
# executed after this one!
|
40
|
+
def Calculator.add(x, y)
|
41
|
+
x - y
|
42
|
+
end
|
43
|
+
|
44
|
+
expect(Calculator.add(5, 10)).to eq(-5)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
"""
|
48
|
+
|
49
|
+
Scenario: Use `--bisect` flag to create a minimal repro case for the ordering dependency
|
50
|
+
When I run `rspec --seed 1234`
|
51
|
+
Then the output should contain "10 examples, 1 failure"
|
52
|
+
When I run `rspec --seed 1234 --bisect`
|
53
|
+
Then bisect should succeed with output like:
|
54
|
+
"""
|
55
|
+
Bisect started using options: "--seed 1234"
|
56
|
+
Running suite to find failures... (0.16755 seconds)
|
57
|
+
Starting bisect with 1 failing example and 9 non-failing examples.
|
58
|
+
Checking that failure(s) are order-dependent... failure appears to be order-dependent
|
59
|
+
|
60
|
+
Round 1: bisecting over non-failing examples 1-9 .. ignoring examples 6-9 (0.30166 seconds)
|
61
|
+
Round 2: bisecting over non-failing examples 1-5 .. ignoring examples 4-5 (0.30306 seconds)
|
62
|
+
Round 3: bisecting over non-failing examples 1-3 .. ignoring example 3 (0.33292 seconds)
|
63
|
+
Round 4: bisecting over non-failing examples 1-2 . ignoring example 1 (0.16476 seconds)
|
64
|
+
Bisect complete! Reduced necessary non-failing examples from 9 to 1 in 1.26 seconds.
|
65
|
+
|
66
|
+
The minimal reproduction command is:
|
67
|
+
rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] --seed 1234
|
68
|
+
"""
|
69
|
+
When I run `rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] --seed 1234`
|
70
|
+
Then the output should contain "2 examples, 1 failure"
|
71
|
+
|
72
|
+
Scenario: Ctrl-C can be used to abort the bisect early and get the most minimal command it has discovered so far
|
73
|
+
When I run `rspec --seed 1234 --bisect` and abort in the middle with ctrl-c
|
74
|
+
Then bisect should fail with output like:
|
75
|
+
"""
|
76
|
+
Bisect started using options: "--seed 1234"
|
77
|
+
Running suite to find failures... (0.17102 seconds)
|
78
|
+
Starting bisect with 1 failing example and 9 non-failing examples.
|
79
|
+
Checking that failure(s) are order-dependent... failure appears to be order-dependent
|
80
|
+
|
81
|
+
Round 1: bisecting over non-failing examples 1-9 .. ignoring examples 6-9 (0.32943 seconds)
|
82
|
+
Round 2: bisecting over non-failing examples 1-5 .. ignoring examples 4-5 (0.3154 seconds)
|
83
|
+
Round 3: bisecting over non-failing examples 1-3 .. ignoring example 3 (0.2175 seconds)
|
84
|
+
|
85
|
+
Bisect aborted!
|
86
|
+
|
87
|
+
The most minimal reproduction command discovered so far is:
|
88
|
+
rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] ./spec/calculator_3_spec.rb[1:1] --seed 1234
|
89
|
+
"""
|
90
|
+
When I run `rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] ./spec/calculator_3_spec.rb[1:1] --seed 1234`
|
91
|
+
Then the output should contain "3 examples, 1 failure"
|
92
|
+
|
93
|
+
Scenario: Use `--bisect=verbose` to enable verbose debug mode for more detail
|
94
|
+
When I run `rspec --seed 1234 --bisect=verbose`
|
95
|
+
Then bisect should succeed with output like:
|
96
|
+
"""
|
97
|
+
Bisect started using options: "--seed 1234" and bisect runner: :fork
|
98
|
+
Running suite to find failures... (0.16528 seconds)
|
99
|
+
- Failing examples (1):
|
100
|
+
- ./spec/calculator_1_spec.rb[1:1]
|
101
|
+
- Non-failing examples (9):
|
102
|
+
- ./spec/calculator_10_spec.rb[1:1]
|
103
|
+
- ./spec/calculator_2_spec.rb[1:1]
|
104
|
+
- ./spec/calculator_3_spec.rb[1:1]
|
105
|
+
- ./spec/calculator_4_spec.rb[1:1]
|
106
|
+
- ./spec/calculator_5_spec.rb[1:1]
|
107
|
+
- ./spec/calculator_6_spec.rb[1:1]
|
108
|
+
- ./spec/calculator_7_spec.rb[1:1]
|
109
|
+
- ./spec/calculator_8_spec.rb[1:1]
|
110
|
+
- ./spec/calculator_9_spec.rb[1:1]
|
111
|
+
Checking that failure(s) are order-dependent..
|
112
|
+
- Running: rspec ./spec/calculator_1_spec.rb[1:1] --seed 1234 (n.nnnn seconds)
|
113
|
+
- Failure appears to be order-dependent
|
114
|
+
Round 1: bisecting over non-failing examples 1-9
|
115
|
+
- Running: rspec ./spec/calculator_1_spec.rb[1:1] ./spec/calculator_6_spec.rb[1:1] ./spec/calculator_7_spec.rb[1:1] ./spec/calculator_8_spec.rb[1:1] ./spec/calculator_9_spec.rb[1:1] --seed 1234 (0.15302 seconds)
|
116
|
+
- Running: rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] ./spec/calculator_2_spec.rb[1:1] ./spec/calculator_3_spec.rb[1:1] ./spec/calculator_4_spec.rb[1:1] ./spec/calculator_5_spec.rb[1:1] --seed 1234 (0.19708 seconds)
|
117
|
+
- Examples we can safely ignore (4):
|
118
|
+
- ./spec/calculator_6_spec.rb[1:1]
|
119
|
+
- ./spec/calculator_7_spec.rb[1:1]
|
120
|
+
- ./spec/calculator_8_spec.rb[1:1]
|
121
|
+
- ./spec/calculator_9_spec.rb[1:1]
|
122
|
+
- Remaining non-failing examples (5):
|
123
|
+
- ./spec/calculator_10_spec.rb[1:1]
|
124
|
+
- ./spec/calculator_2_spec.rb[1:1]
|
125
|
+
- ./spec/calculator_3_spec.rb[1:1]
|
126
|
+
- ./spec/calculator_4_spec.rb[1:1]
|
127
|
+
- ./spec/calculator_5_spec.rb[1:1]
|
128
|
+
Round 2: bisecting over non-failing examples 1-5
|
129
|
+
- Running: rspec ./spec/calculator_1_spec.rb[1:1] ./spec/calculator_4_spec.rb[1:1] ./spec/calculator_5_spec.rb[1:1] --seed 1234 (0.15836 seconds)
|
130
|
+
- Running: rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] ./spec/calculator_2_spec.rb[1:1] ./spec/calculator_3_spec.rb[1:1] --seed 1234 (0.19065 seconds)
|
131
|
+
- Examples we can safely ignore (2):
|
132
|
+
- ./spec/calculator_4_spec.rb[1:1]
|
133
|
+
- ./spec/calculator_5_spec.rb[1:1]
|
134
|
+
- Remaining non-failing examples (3):
|
135
|
+
- ./spec/calculator_10_spec.rb[1:1]
|
136
|
+
- ./spec/calculator_2_spec.rb[1:1]
|
137
|
+
- ./spec/calculator_3_spec.rb[1:1]
|
138
|
+
Round 3: bisecting over non-failing examples 1-3
|
139
|
+
- Running: rspec ./spec/calculator_1_spec.rb[1:1] ./spec/calculator_2_spec.rb[1:1] --seed 1234 (0.21028 seconds)
|
140
|
+
- Running: rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] ./spec/calculator_3_spec.rb[1:1] --seed 1234 (0.1975 seconds)
|
141
|
+
- Examples we can safely ignore (1):
|
142
|
+
- ./spec/calculator_2_spec.rb[1:1]
|
143
|
+
- Remaining non-failing examples (2):
|
144
|
+
- ./spec/calculator_10_spec.rb[1:1]
|
145
|
+
- ./spec/calculator_3_spec.rb[1:1]
|
146
|
+
Round 4: bisecting over non-failing examples 1-2
|
147
|
+
- Running: rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] --seed 1234 (0.17173 seconds)
|
148
|
+
- Examples we can safely ignore (1):
|
149
|
+
- ./spec/calculator_3_spec.rb[1:1]
|
150
|
+
- Remaining non-failing examples (1):
|
151
|
+
- ./spec/calculator_10_spec.rb[1:1]
|
152
|
+
Bisect complete! Reduced necessary non-failing examples from 9 to 1 in 1.47 seconds.
|
153
|
+
|
154
|
+
The minimal reproduction command is:
|
155
|
+
rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] --seed 1234
|
156
|
+
"""
|
157
|
+
When I run `rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] --seed 1234`
|
158
|
+
Then the output should contain "2 examples, 1 failure"
|
159
|
+
|
160
|
+
Scenario: Pick a bisect runner via a config option
|
161
|
+
Given a file named "spec/spec_helper.rb" with:
|
162
|
+
"""
|
163
|
+
RSpec.configure do |c|
|
164
|
+
c.bisect_runner = :shell
|
165
|
+
end
|
166
|
+
"""
|
167
|
+
And a file named ".rspec" with:
|
168
|
+
"""
|
169
|
+
--require spec_helper
|
170
|
+
"""
|
171
|
+
When I run `rspec --seed 1234 --bisect=verbose`
|
172
|
+
Then bisect should succeed with output like:
|
173
|
+
"""
|
174
|
+
Bisect started using options: "--seed 1234" and bisect runner: :shell
|
175
|
+
# ...
|
176
|
+
The minimal reproduction command is:
|
177
|
+
rspec ./spec/calculator_10_spec.rb[1:1] ./spec/calculator_1_spec.rb[1:1] --seed 1234
|
178
|
+
"""
|
@@ -0,0 +1,131 @@
|
|
1
|
+
Feature: `--example-matches` option
|
2
|
+
|
3
|
+
Use the `--example-matches` (or `-E`) option to filter examples by name using REGEX.
|
4
|
+
|
5
|
+
The argument is matched against the full description of the example, which is
|
6
|
+
the concatenation of descriptions of the group (including any nested groups)
|
7
|
+
and the example.
|
8
|
+
|
9
|
+
This allows you to run a single uniquely named example, all examples with
|
10
|
+
similar names, all the examples in a uniquely named group, etc, etc.
|
11
|
+
|
12
|
+
You can also use the option more than once to specify multiple example
|
13
|
+
matches.
|
14
|
+
|
15
|
+
Note: description-less examples that have generated descriptions (typical when using the [one-liner syntax](../subject/one-liner-syntax)) cannot be directly filtered with this option, because it is necessary to execute the example to generate the description, so RSpec is unable to use the not-yet-generated description to decide whether or not to execute an example. You can, of course, pass part of a group's description to select all examples defined in the group (including those that have no description).
|
16
|
+
|
17
|
+
Background:
|
18
|
+
Given a file named "first_spec.rb" with:
|
19
|
+
"""ruby
|
20
|
+
RSpec.describe "first group" do
|
21
|
+
it "first" do; end
|
22
|
+
it "first example in first group" do; end
|
23
|
+
it "second example in first group" do; end
|
24
|
+
end
|
25
|
+
"""
|
26
|
+
And a file named "second_spec.rb" with:
|
27
|
+
"""ruby
|
28
|
+
RSpec.describe "second group" do
|
29
|
+
it "first example in second group" do; end
|
30
|
+
it "second example in second group" do; end
|
31
|
+
end
|
32
|
+
"""
|
33
|
+
And a file named "third_spec.rb" with:
|
34
|
+
"""ruby
|
35
|
+
RSpec.describe "third group" do
|
36
|
+
it "first example in third group" do; end
|
37
|
+
context "group of nest" do
|
38
|
+
it "first example in nested group" do; end
|
39
|
+
it "second example in nested group" do; end
|
40
|
+
it "third example in nested_group with underscore" do; end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
"""
|
44
|
+
And a file named "fourth_spec.rb" with:
|
45
|
+
"""ruby
|
46
|
+
RSpec.describe Array do
|
47
|
+
describe "#length" do
|
48
|
+
it "is the number of items" do
|
49
|
+
expect(Array.new([1,2,3]).length).to eq 3
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
"""
|
54
|
+
|
55
|
+
Scenario: No matches
|
56
|
+
When I run `rspec . --example-matches nothing_like_this`
|
57
|
+
Then the process should succeed even though no examples were run
|
58
|
+
|
59
|
+
Scenario: Match on one word
|
60
|
+
When I run `rspec . --example-matches example`
|
61
|
+
Then the examples should all pass
|
62
|
+
|
63
|
+
Scenario: One match in each context
|
64
|
+
When I run `rspec . --example-matches 'first example'`
|
65
|
+
Then the examples should all pass
|
66
|
+
|
67
|
+
Scenario: One match in one file using just the example name
|
68
|
+
When I run `rspec . --example-matches 'first example in first group'`
|
69
|
+
Then the examples should all pass
|
70
|
+
|
71
|
+
Scenario: One match in one file using the example name and the group name
|
72
|
+
When I run `rspec . --example-matches 'first group first example in first group'`
|
73
|
+
Then the examples should all pass
|
74
|
+
|
75
|
+
Scenario: All examples in one group
|
76
|
+
When I run `rspec . --example-matches 'first group'`
|
77
|
+
Then the examples should all pass
|
78
|
+
|
79
|
+
Scenario: One match in one file with group name
|
80
|
+
When I run `rspec . --example-matches 'second group first example'`
|
81
|
+
Then the examples should all pass
|
82
|
+
|
83
|
+
Scenario: All examples in one group including examples in nested groups
|
84
|
+
When I run `rspec . --example-matches 'third group'`
|
85
|
+
Then the examples should all pass
|
86
|
+
|
87
|
+
Scenario: Match using `ClassName#method_name` form
|
88
|
+
When I run `rspec . --example-matches 'Array#length'`
|
89
|
+
Then the examples should all pass
|
90
|
+
|
91
|
+
Scenario: Match only matching regex
|
92
|
+
When I run `rspec . --example-matches "first$" --format d`
|
93
|
+
Then the examples should all pass
|
94
|
+
And the output should contain all of these:
|
95
|
+
| first |
|
96
|
+
And the output should not contain any of these:
|
97
|
+
| first example in first group |
|
98
|
+
| second example in first group |
|
99
|
+
| first example in second group |
|
100
|
+
| second example in second group |
|
101
|
+
| first example in third group |
|
102
|
+
| nested group first example in nested group |
|
103
|
+
| nested group second example in nested group |
|
104
|
+
|
105
|
+
# https://regex101.com/r/RABd8Q/2
|
106
|
+
Scenario: Match only matching regex with word boundarries
|
107
|
+
When I run `rspec . --example-matches "nested[^_]" --format d`
|
108
|
+
Then the examples should all pass
|
109
|
+
And the output should contain all of these:
|
110
|
+
| first example in nested group |
|
111
|
+
| second example in nested group |
|
112
|
+
And the output should not contain any of these:
|
113
|
+
| first example in first group |
|
114
|
+
| second example in first group |
|
115
|
+
| first example in second group |
|
116
|
+
| second example in second group |
|
117
|
+
| first example in third group |
|
118
|
+
| third example in nested_group |
|
119
|
+
|
120
|
+
Scenario: Multiple applications of example name option
|
121
|
+
When I run `rspec . --example-matches 'first group' --example-matches 'second group' --format d`
|
122
|
+
Then the examples should all pass
|
123
|
+
And the output should contain all of these:
|
124
|
+
| first example in first group |
|
125
|
+
| second example in first group |
|
126
|
+
| first example in second group |
|
127
|
+
| second example in second group |
|
128
|
+
And the output should not contain any of these:
|
129
|
+
| first example in third group |
|
130
|
+
| nested group first example in nested group |
|
131
|
+
| nested group second example in nested group |
|
@@ -12,6 +12,8 @@ Feature: `--example` option
|
|
12
12
|
You can also use the option more than once to specify multiple example
|
13
13
|
matches.
|
14
14
|
|
15
|
+
Note: description-less examples that have generated descriptions (typical when using the [one-liner syntax](../subject/one-liner-syntax)) cannot be directly filtered with this option, because it is necessary to execute the example to generate the description, so RSpec is unable to use the not-yet-generated description to decide whether or not to execute an example. You can, of course, pass part of a group's description to select all examples defined in the group (including those that have no description).
|
16
|
+
|
15
17
|
Background:
|
16
18
|
Given a file named "first_spec.rb" with:
|
17
19
|
"""ruby
|
@@ -3,17 +3,29 @@ Feature: `--fail-fast` option
|
|
3
3
|
Use the `--fail-fast` option to tell RSpec to stop running the test suite on
|
4
4
|
the first failed test.
|
5
5
|
|
6
|
-
You may
|
6
|
+
You may add a parameter to tell RSpec to stop running the test suite after N
|
7
|
+
failed tests, for example: `--fail-fast=3`.
|
8
|
+
|
9
|
+
You can also specify `--no-fail-fast` to turn it off (default behaviour).
|
7
10
|
|
8
11
|
Background:
|
9
12
|
Given a file named "fail_fast_spec.rb" with:
|
10
13
|
"""ruby
|
11
14
|
RSpec.describe "fail fast" do
|
12
15
|
it "passing test" do; end
|
13
|
-
it "failing test" do
|
16
|
+
it "1st failing test" do
|
17
|
+
fail
|
18
|
+
end
|
19
|
+
it "2nd failing test" do
|
20
|
+
fail
|
21
|
+
end
|
22
|
+
it "3rd failing test" do
|
14
23
|
fail
|
15
24
|
end
|
16
|
-
it "
|
25
|
+
it "4th failing test" do
|
26
|
+
fail
|
27
|
+
end
|
28
|
+
it "passing test" do; end
|
17
29
|
end
|
18
30
|
"""
|
19
31
|
|
@@ -22,6 +34,11 @@ Feature: `--fail-fast` option
|
|
22
34
|
Then the output should contain ".F"
|
23
35
|
Then the output should not contain ".F."
|
24
36
|
|
37
|
+
Scenario: Using `--fail-fast=3`
|
38
|
+
When I run `rspec . --fail-fast=3`
|
39
|
+
Then the output should contain ".FFF"
|
40
|
+
Then the output should not contain ".FFFF."
|
41
|
+
|
25
42
|
Scenario: Using `--no-fail-fast`
|
26
43
|
When I run `rspec . --no-fail-fast`
|
27
|
-
Then the output should contain ".
|
44
|
+
Then the output should contain ".FFFF."
|
@@ -17,7 +17,7 @@ Feature: `--init` option
|
|
17
17
|
Scenario: `.rspec` file already exists
|
18
18
|
Given a file named ".rspec" with:
|
19
19
|
"""
|
20
|
-
--color
|
20
|
+
--force-color
|
21
21
|
"""
|
22
22
|
When I run `rspec --init`
|
23
23
|
Then the output should contain "exist .rspec"
|
@@ -25,7 +25,7 @@ Feature: `--init` option
|
|
25
25
|
Scenario: Accept and use the recommended settings in `spec_helper` (which are initially commented out)
|
26
26
|
Given I have a brand new project with no files
|
27
27
|
And I have run `rspec --init`
|
28
|
-
When I accept the recommended settings by removing `=begin` and `=end` from `
|
28
|
+
When I accept the recommended settings by removing `=begin` and `=end` from `spec_helper.rb`
|
29
29
|
And I create "spec/addition_spec.rb" with the following content:
|
30
30
|
"""ruby
|
31
31
|
RSpec.describe "Addition" do
|
@@ -155,5 +155,5 @@ Feature: line number appended to file path
|
|
155
155
|
Scenario: Matching one-liners
|
156
156
|
When I run `rspec one_liner_spec.rb:3 --format doc`
|
157
157
|
Then the examples should all pass
|
158
|
-
Then the output should contain "
|
159
|
-
But the output should not contain "
|
158
|
+
Then the output should contain "is expected to be > 8"
|
159
|
+
But the output should not contain "is expected to be < 10"
|
@@ -0,0 +1,113 @@
|
|
1
|
+
Feature: Only Failures
|
2
|
+
|
3
|
+
The `--only-failures` option filters what examples are run so that only those that failed the last time they ran are executed. To use this option, you first have to configure `config.example_status_persistence_file_path`, which RSpec will use to store the status of each example the last time it ran.
|
4
|
+
|
5
|
+
There's also a `--next-failure` option, which is shorthand for `--only-failures --fail-fast --order defined`. It allows you to repeatedly focus on just one of the currently failing examples, then move on to the next failure, etc.
|
6
|
+
|
7
|
+
Either of these options can be combined with another a directory or file name; RSpec will run just the failures from the set of loaded examples.
|
8
|
+
|
9
|
+
Background:
|
10
|
+
Given a file named "spec/spec_helper.rb" with:
|
11
|
+
"""ruby
|
12
|
+
RSpec.configure do |c|
|
13
|
+
c.example_status_persistence_file_path = "examples.txt"
|
14
|
+
end
|
15
|
+
"""
|
16
|
+
And a file named ".rspec" with:
|
17
|
+
"""
|
18
|
+
--require spec_helper
|
19
|
+
--order random
|
20
|
+
--format documentation
|
21
|
+
"""
|
22
|
+
And a file named "spec/array_spec.rb" with:
|
23
|
+
"""ruby
|
24
|
+
RSpec.describe 'Array' do
|
25
|
+
it "checks for inclusion of 1" do
|
26
|
+
expect([1, 2]).to include(1)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "checks for inclusion of 2" do
|
30
|
+
expect([1, 2]).to include(2)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "checks for inclusion of 3" do
|
34
|
+
expect([1, 2]).to include(3) # failure
|
35
|
+
end
|
36
|
+
end
|
37
|
+
"""
|
38
|
+
And a file named "spec/string_spec.rb" with:
|
39
|
+
"""ruby
|
40
|
+
RSpec.describe 'String' do
|
41
|
+
it "checks for inclusion of 'foo'" do
|
42
|
+
expect("food").to include('foo')
|
43
|
+
end
|
44
|
+
|
45
|
+
it "checks for inclusion of 'bar'" do
|
46
|
+
expect("food").to include('bar') # failure
|
47
|
+
end
|
48
|
+
|
49
|
+
it "checks for inclusion of 'baz'" do
|
50
|
+
expect("bazzy").to include('baz')
|
51
|
+
end
|
52
|
+
|
53
|
+
it "checks for inclusion of 'foobar'" do
|
54
|
+
expect("food").to include('foobar') # failure
|
55
|
+
end
|
56
|
+
end
|
57
|
+
"""
|
58
|
+
And a file named "spec/passing_spec.rb" with:
|
59
|
+
"""ruby
|
60
|
+
puts "Loading passing_spec.rb"
|
61
|
+
|
62
|
+
RSpec.describe "A passing spec" do
|
63
|
+
it "passes" do
|
64
|
+
expect(1).to eq(1)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
"""
|
68
|
+
And I have run `rspec` once, resulting in "8 examples, 3 failures"
|
69
|
+
|
70
|
+
Scenario: Running `rspec --only-failures` loads only spec files with failures and runs only the failures
|
71
|
+
When I run `rspec --only-failures`
|
72
|
+
Then the output from "rspec --only-failures" should contain "3 examples, 3 failures"
|
73
|
+
And the output from "rspec --only-failures" should not contain "Loading passing_spec.rb"
|
74
|
+
|
75
|
+
Scenario: Combine `--only-failures` with a file name
|
76
|
+
When I run `rspec spec/array_spec.rb --only-failures`
|
77
|
+
Then the output should contain "1 example, 1 failure"
|
78
|
+
When I run `rspec spec/string_spec.rb --only-failures`
|
79
|
+
Then the output should contain "2 examples, 2 failures"
|
80
|
+
|
81
|
+
Scenario: Use `--next-failure` to repeatedly run a single failure
|
82
|
+
When I run `rspec --next-failure`
|
83
|
+
Then the output should contain "1 example, 1 failure"
|
84
|
+
And the output should contain "checks for inclusion of 3"
|
85
|
+
|
86
|
+
When I fix "spec/array_spec.rb" by replacing "to include(3)" with "not_to include(3)"
|
87
|
+
And I run `rspec --next-failure`
|
88
|
+
Then the output should contain "2 examples, 1 failure"
|
89
|
+
And the output should contain "checks for inclusion of 3"
|
90
|
+
And the output should contain "checks for inclusion of 'bar'"
|
91
|
+
|
92
|
+
When I fix "spec/string_spec.rb" by replacing "to include('bar')" with "not_to include('bar')"
|
93
|
+
And I run `rspec --next-failure`
|
94
|
+
Then the output should contain "2 examples, 1 failure"
|
95
|
+
And the output should contain "checks for inclusion of 'bar'"
|
96
|
+
And the output should contain "checks for inclusion of 'foobar'"
|
97
|
+
|
98
|
+
When I fix "spec/string_spec.rb" by replacing "to include('foobar')" with "not_to include('foobar')"
|
99
|
+
And I run `rspec --next-failure`
|
100
|
+
Then the output should contain "1 example, 0 failures"
|
101
|
+
And the output should contain "checks for inclusion of 'foobar'"
|
102
|
+
|
103
|
+
When I run `rspec --next-failure`
|
104
|
+
Then the output should contain "All examples were filtered out"
|
105
|
+
|
106
|
+
Scenario: Running `rspec --only-failures` with spec files that pass doesn't run anything
|
107
|
+
When I run `rspec spec/passing_spec.rb --only-failures`
|
108
|
+
Then it should pass with "0 examples, 0 failures"
|
109
|
+
|
110
|
+
Scenario: Clear error given when using `--only-failures` without configuring `example_status_persistence_file_path`
|
111
|
+
Given I have not configured `example_status_persistence_file_path`
|
112
|
+
When I run `rspec --only-failures`
|
113
|
+
Then it should fail with "To use `--only-failures`, you must first set `config.example_status_persistence_file_path`."
|
@@ -2,7 +2,9 @@ Use the `--order` option to tell RSpec how to order the files, groups, and
|
|
2
2
|
examples. The available ordering schemes are `defined` and `rand`.
|
3
3
|
|
4
4
|
`defined` is the default, which executes groups and examples in the order they
|
5
|
-
are defined as the spec files are loaded
|
5
|
+
are defined as the spec files are loaded, with the caveat that each group
|
6
|
+
runs its examples before running its nested example groups, even if the
|
7
|
+
nested groups are defined before the examples.
|
6
8
|
|
7
9
|
Use `rand` to randomize the order of groups and examples within the groups.
|
8
10
|
Nested groups are always run from top-level to bottom-level in order to avoid
|
@@ -11,6 +13,10 @@ order of groups at each level is randomized.
|
|
11
13
|
|
12
14
|
With `rand` you can also specify a seed.
|
13
15
|
|
16
|
+
Use `recently-modified` to run the most recently modified files first. You can
|
17
|
+
combine it with `--only-failures` to find the most recent failing specs. Note
|
18
|
+
that `recently-modified` and `rand` are mutually exclusive.
|
19
|
+
|
14
20
|
## Example usage
|
15
21
|
|
16
22
|
The `defined` option is only necessary when you have `--order rand` stored in a
|
@@ -20,4 +26,5 @@ config file (e.g. `.rspec`) and you want to override it from the command line.
|
|
20
26
|
--order rand
|
21
27
|
--order rand:123
|
22
28
|
--seed 123 # same as --order rand:123
|
29
|
+
--order recently-modified
|
23
30
|
</code></pre>
|
@@ -1,8 +1,11 @@
|
|
1
1
|
Feature: `--pattern` option
|
2
2
|
|
3
|
-
|
3
|
+
When you run RSpec without giving it specific file names, it determines which
|
4
|
+
files to load by applying a pattern to the provided directory arguments or
|
5
|
+
`spec` (if no directories are provided). By default, RSpec uses the following
|
6
|
+
pattern:
|
4
7
|
|
5
|
-
"
|
8
|
+
"**{,/*/**}/*_spec.rb"
|
6
9
|
|
7
10
|
Use the `--pattern` option to declare a different pattern.
|
8
11
|
|
@@ -25,7 +28,7 @@ Feature: `--pattern` option
|
|
25
28
|
end
|
26
29
|
"""
|
27
30
|
|
28
|
-
Scenario: By default, RSpec runs
|
31
|
+
Scenario: By default, RSpec runs matching spec files
|
29
32
|
When I run `rspec`
|
30
33
|
Then the output should contain "2 examples, 0 failures"
|
31
34
|
|