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
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
Feature:
|
|
1
|
+
Feature: Define a custom matcher
|
|
2
2
|
|
|
3
|
-
rspec-expectations provides a DSL for defining custom matchers. These are often useful for
|
|
4
|
-
expressing expectations in the domain of your application.
|
|
3
|
+
rspec-expectations provides a DSL for defining custom matchers. These are often useful for expressing expectations in the domain of your application.
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
Behind the scenes `RSpec::Matchers.define` evaluates the `define` block in the context of a singleton class. If you need to write a more complex matcher and would like to use the `Class`-approach yourself, please head over to our `API`-documentation and read [the docs](http://rspec.info/documentation/latest/rspec-expectations/RSpec/Matchers/MatcherProtocol.html) about the `MatcherProtocol`.
|
|
6
|
+
|
|
7
|
+
Scenario: Define a matcher with default messages
|
|
7
8
|
Given a file named "matcher_with_default_message_spec.rb" with:
|
|
8
9
|
"""ruby
|
|
9
10
|
require 'rspec/expectations'
|
|
@@ -35,8 +36,8 @@ Feature: define matcher
|
|
|
35
36
|
When I run `rspec ./matcher_with_default_message_spec.rb --format documentation`
|
|
36
37
|
Then the exit status should not be 0
|
|
37
38
|
|
|
38
|
-
And the output should contain "
|
|
39
|
-
And the output should contain "
|
|
39
|
+
And the output should contain "is expected to be a multiple of 3"
|
|
40
|
+
And the output should contain "is expected not to be a multiple of 4"
|
|
40
41
|
And the output should contain "Failure/Error: it { is_expected.to be_a_multiple_of(4) }"
|
|
41
42
|
And the output should contain "Failure/Error: it { is_expected.not_to be_a_multiple_of(3) }"
|
|
42
43
|
|
|
@@ -44,7 +45,7 @@ Feature: define matcher
|
|
|
44
45
|
And the output should contain "expected 9 to be a multiple of 4"
|
|
45
46
|
And the output should contain "expected 9 not to be a multiple of 3"
|
|
46
47
|
|
|
47
|
-
Scenario:
|
|
48
|
+
Scenario: Overriding the failure_message
|
|
48
49
|
Given a file named "matcher_with_failure_message_spec.rb" with:
|
|
49
50
|
"""ruby
|
|
50
51
|
require 'rspec/expectations'
|
|
@@ -68,7 +69,7 @@ Feature: define matcher
|
|
|
68
69
|
And the stdout should contain "1 example, 1 failure"
|
|
69
70
|
And the stdout should contain "expected that 9 would be a multiple of 4"
|
|
70
71
|
|
|
71
|
-
Scenario:
|
|
72
|
+
Scenario: Overriding the failure_message_when_negated
|
|
72
73
|
Given a file named "matcher_with_failure_for_message_spec.rb" with:
|
|
73
74
|
"""ruby
|
|
74
75
|
require 'rspec/expectations'
|
|
@@ -92,7 +93,7 @@ Feature: define matcher
|
|
|
92
93
|
And the stdout should contain "1 example, 1 failure"
|
|
93
94
|
And the stdout should contain "expected that 9 would not be a multiple of 3"
|
|
94
95
|
|
|
95
|
-
Scenario:
|
|
96
|
+
Scenario: Overriding the description
|
|
96
97
|
Given a file named "matcher_overriding_description_spec.rb" with:
|
|
97
98
|
"""ruby
|
|
98
99
|
require 'rspec/expectations'
|
|
@@ -117,10 +118,10 @@ Feature: define matcher
|
|
|
117
118
|
When I run `rspec ./matcher_overriding_description_spec.rb --format documentation`
|
|
118
119
|
Then the exit status should be 0
|
|
119
120
|
And the stdout should contain "2 examples, 0 failures"
|
|
120
|
-
And the stdout should contain "
|
|
121
|
-
And the stdout should contain "
|
|
121
|
+
And the stdout should contain "is expected to be multiple of 3"
|
|
122
|
+
And the stdout should contain "is expected not to be multiple of 4"
|
|
122
123
|
|
|
123
|
-
Scenario:
|
|
124
|
+
Scenario: With no args
|
|
124
125
|
Given a file named "matcher_with_no_args_spec.rb" with:
|
|
125
126
|
"""ruby
|
|
126
127
|
require 'rspec/expectations'
|
|
@@ -142,9 +143,9 @@ Feature: define matcher
|
|
|
142
143
|
When I run `rspec ./matcher_with_no_args_spec.rb --format documentation`
|
|
143
144
|
Then the exit status should be 0
|
|
144
145
|
And the stdout should contain "1 example, 0 failures"
|
|
145
|
-
And the stdout should contain "
|
|
146
|
+
And the stdout should contain "is expected to have 7 fingers"
|
|
146
147
|
|
|
147
|
-
Scenario:
|
|
148
|
+
Scenario: With multiple args
|
|
148
149
|
Given a file named "matcher_with_multiple_args_spec.rb" with:
|
|
149
150
|
"""ruby
|
|
150
151
|
require 'rspec/expectations'
|
|
@@ -162,9 +163,31 @@ Feature: define matcher
|
|
|
162
163
|
When I run `rspec ./matcher_with_multiple_args_spec.rb --format documentation`
|
|
163
164
|
Then the exit status should be 0
|
|
164
165
|
And the stdout should contain "1 example, 0 failures"
|
|
165
|
-
And the stdout should contain "
|
|
166
|
+
And the stdout should contain "is expected to be the sum of 1, 2, 3, and 4"
|
|
167
|
+
|
|
168
|
+
Scenario: With a block arg
|
|
169
|
+
Given a file named "matcher_with_block_arg_spec.rb" with:
|
|
170
|
+
"""ruby
|
|
171
|
+
require 'rspec/expectations'
|
|
172
|
+
|
|
173
|
+
RSpec::Matchers.define :be_lazily_equal_to do
|
|
174
|
+
match do |obj|
|
|
175
|
+
obj == block_arg.call
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
description { "be lazily equal to #{block_arg.call}" }
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
RSpec.describe 10 do
|
|
182
|
+
it { is_expected.to be_lazily_equal_to { 10 } }
|
|
183
|
+
end
|
|
184
|
+
"""
|
|
185
|
+
When I run `rspec ./matcher_with_block_arg_spec.rb --format documentation`
|
|
186
|
+
Then the exit status should be 0
|
|
187
|
+
And the stdout should contain "1 example, 0 failures"
|
|
188
|
+
And the stdout should contain "is expected to be lazily equal to 10"
|
|
166
189
|
|
|
167
|
-
Scenario:
|
|
190
|
+
Scenario: With helper methods
|
|
168
191
|
Given a file named "matcher_with_internal_helper_spec.rb" with:
|
|
169
192
|
"""ruby
|
|
170
193
|
require 'rspec/expectations'
|
|
@@ -189,7 +212,7 @@ Feature: define matcher
|
|
|
189
212
|
Then the exit status should be 0
|
|
190
213
|
And the stdout should contain "1 example, 0 failures"
|
|
191
214
|
|
|
192
|
-
Scenario:
|
|
215
|
+
Scenario: Scoped in a module
|
|
193
216
|
Given a file named "scoped_matcher_spec.rb" with:
|
|
194
217
|
"""ruby
|
|
195
218
|
require 'rspec/expectations'
|
|
@@ -221,7 +244,7 @@ Feature: define matcher
|
|
|
221
244
|
When I run `rspec ./scoped_matcher_spec.rb`
|
|
222
245
|
Then the stdout should contain "2 examples, 0 failures"
|
|
223
246
|
|
|
224
|
-
Scenario:
|
|
247
|
+
Scenario: Scoped in an example group
|
|
225
248
|
Given a file named "scoped_matcher_spec.rb" with:
|
|
226
249
|
"""ruby
|
|
227
250
|
require 'rspec/expectations'
|
|
@@ -254,7 +277,7 @@ Feature: define matcher
|
|
|
254
277
|
When I run `rspec scoped_matcher_spec.rb`
|
|
255
278
|
Then the output should contain "3 examples, 0 failures"
|
|
256
279
|
|
|
257
|
-
Scenario:
|
|
280
|
+
Scenario: Matcher with separate logic for expect().to and expect().not_to
|
|
258
281
|
Given a file named "matcher_with_separate_should_not_logic_spec.rb" with:
|
|
259
282
|
"""ruby
|
|
260
283
|
RSpec::Matchers.define :contain do |*expected|
|
|
@@ -282,7 +305,7 @@ Feature: define matcher
|
|
|
282
305
|
| expected [1, 2, 3] to contain 1 and 4 |
|
|
283
306
|
| expected [1, 2, 3] not to contain 1 and 4 |
|
|
284
307
|
|
|
285
|
-
Scenario:
|
|
308
|
+
Scenario: Use define_method to create a helper method with access to matcher params
|
|
286
309
|
Given a file named "define_method_spec.rb" with:
|
|
287
310
|
"""ruby
|
|
288
311
|
RSpec::Matchers.define :be_a_multiple_of do |expected|
|
|
@@ -307,7 +330,7 @@ Feature: define matcher
|
|
|
307
330
|
| expected 9 to be a multiple of 2 |
|
|
308
331
|
| expected 9 not to be a multiple of 3 |
|
|
309
332
|
|
|
310
|
-
Scenario:
|
|
333
|
+
Scenario: Include a module with helper methods in the matcher
|
|
311
334
|
Given a file named "include_module_spec.rb" with:
|
|
312
335
|
"""ruby
|
|
313
336
|
module MatcherHelpers
|
|
@@ -335,3 +358,132 @@ Feature: define matcher
|
|
|
335
358
|
| 4 examples, 2 failures |
|
|
336
359
|
| expected 9 to be a multiple of 2 |
|
|
337
360
|
| expected 9 not to be a multiple of 3 |
|
|
361
|
+
|
|
362
|
+
Scenario: Using values_match? to compare values and/or compound matchers.
|
|
363
|
+
|
|
364
|
+
Given a file named "compare_values_spec.rb" with:
|
|
365
|
+
"""ruby
|
|
366
|
+
RSpec::Matchers.define :have_content do |expected|
|
|
367
|
+
match do |actual|
|
|
368
|
+
# The order of arguments is important for `values_match?`, e.g.
|
|
369
|
+
# especially if your matcher should handle `Regexp`-objects
|
|
370
|
+
# (`/regex/`): First comes the `expected` value, second the `actual`
|
|
371
|
+
# one.
|
|
372
|
+
values_match? expected, actual
|
|
373
|
+
end
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
RSpec.describe 'a' do
|
|
377
|
+
it { is_expected.to have_content 'a' }
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
RSpec.describe 'a' do
|
|
381
|
+
it { is_expected.to have_content /a/ }
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
RSpec.describe 'a' do
|
|
385
|
+
it { is_expected.to have_content a_string_starting_with('a') }
|
|
386
|
+
end
|
|
387
|
+
"""
|
|
388
|
+
When I run `rspec ./compare_values_spec.rb --format documentation`
|
|
389
|
+
Then the exit status should be 0
|
|
390
|
+
|
|
391
|
+
Scenario: Error handling
|
|
392
|
+
|
|
393
|
+
Make sure your matcher returns either `true` or `false`. Take care to handle exceptions appropriately in your matcher, e.g. most cases you might want your matcher to return `false` if an exception - e.g. ArgumentError - occures, but there might be edge cases where you want to pass the exception to the user.
|
|
394
|
+
|
|
395
|
+
You should handle each `StandardError` with care! Do not handle them all in one.
|
|
396
|
+
|
|
397
|
+
```ruby
|
|
398
|
+
match do |actual|
|
|
399
|
+
begin
|
|
400
|
+
'[...] Some code'
|
|
401
|
+
rescue ArgumentError
|
|
402
|
+
false
|
|
403
|
+
end
|
|
404
|
+
end
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
Given a file named "error_handling_spec.rb" with:
|
|
408
|
+
"""ruby
|
|
409
|
+
class CustomClass; end
|
|
410
|
+
|
|
411
|
+
RSpec::Matchers.define :is_lower_than do |expected|
|
|
412
|
+
match do |actual|
|
|
413
|
+
begin
|
|
414
|
+
actual < expected
|
|
415
|
+
rescue ArgumentError
|
|
416
|
+
false
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
RSpec.describe 1 do
|
|
422
|
+
it { is_expected.to is_lower_than 2 }
|
|
423
|
+
end
|
|
424
|
+
|
|
425
|
+
RSpec.describe 1 do
|
|
426
|
+
it { is_expected.not_to is_lower_than 'a' }
|
|
427
|
+
end
|
|
428
|
+
|
|
429
|
+
RSpec.describe CustomClass do
|
|
430
|
+
it { expect { is_expected.not_to is_lower_than 2 }.to raise_error NoMethodError }
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
"""
|
|
434
|
+
When I run `rspec ./error_handling_spec.rb --format documentation`
|
|
435
|
+
Then the exit status should be 0
|
|
436
|
+
|
|
437
|
+
Scenario: Define aliases for your matcher
|
|
438
|
+
|
|
439
|
+
If you want your matcher to be readable in different contexts, you can use the `.alias_matcher`-method to provide an alias for your matcher.
|
|
440
|
+
|
|
441
|
+
Given a file named "alias_spec.rb" with:
|
|
442
|
+
"""ruby
|
|
443
|
+
RSpec::Matchers.define :be_a_multiple_of do |expected|
|
|
444
|
+
match do |actual|
|
|
445
|
+
actual % expected == 0
|
|
446
|
+
end
|
|
447
|
+
end
|
|
448
|
+
|
|
449
|
+
RSpec::Matchers.alias_matcher :be_n_of , :be_a_multiple_of
|
|
450
|
+
|
|
451
|
+
RSpec.describe 9 do
|
|
452
|
+
it { is_expected.to be_n_of(3) }
|
|
453
|
+
end
|
|
454
|
+
"""
|
|
455
|
+
When I run `rspec ./alias_spec.rb --format documentation`
|
|
456
|
+
Then the exit status should be 0
|
|
457
|
+
|
|
458
|
+
Scenario: With expectation errors that bubble up
|
|
459
|
+
|
|
460
|
+
By default the match block will swallow expectation errors (e.g. caused by using an expectation such as `expect(1).to eq 2`), if you wish to allow these to bubble up, pass in the option `:notify_expectation_failures => true`.
|
|
461
|
+
|
|
462
|
+
Given a file named "bubbling_expectation_errors_spec.rb" with:
|
|
463
|
+
"""ruby
|
|
464
|
+
RSpec::Matchers.define :be_a_palindrome do
|
|
465
|
+
match(:notify_expectation_failures => true) do |actual|
|
|
466
|
+
expect(actual).to be_a(String)
|
|
467
|
+
expect(actual.reverse).to eq(actual)
|
|
468
|
+
end
|
|
469
|
+
end
|
|
470
|
+
|
|
471
|
+
RSpec.describe "a custom matcher that bubbles up expectation errors" do
|
|
472
|
+
it "bubbles expectation errors" do
|
|
473
|
+
expect("carriage").to be_a_palindrome
|
|
474
|
+
end
|
|
475
|
+
end
|
|
476
|
+
"""
|
|
477
|
+
When I run `rspec bubbling_expectation_errors_spec.rb`
|
|
478
|
+
Then the output should contain all of these:
|
|
479
|
+
| Failures: |
|
|
480
|
+
|
|
481
|
+
| 1) a custom matcher that bubbles up expectation errors bubbles expectation errors |
|
|
482
|
+
| Failure/Error: expect(actual.reverse).to eq(actual) |
|
|
483
|
+
|
|
484
|
+
| expected: "carriage" |
|
|
485
|
+
| got: "egairrac" |
|
|
486
|
+
|
|
487
|
+
| (compared using ==) |
|
|
488
|
+
| # ./bubbling_expectation_errors_spec.rb:4 |
|
|
489
|
+
| # ./bubbling_expectation_errors_spec.rb:10 |
|
|
@@ -21,7 +21,26 @@ Feature: define matcher with fluent interface
|
|
|
21
21
|
"""
|
|
22
22
|
When I run `rspec between_spec.rb --format documentation`
|
|
23
23
|
Then the output should contain "1 example, 0 failures"
|
|
24
|
-
And the output should contain "
|
|
24
|
+
And the output should contain "is expected to be bigger than 4"
|
|
25
|
+
|
|
26
|
+
Scenario: chained setter
|
|
27
|
+
Given a file named "between_spec.rb" with:
|
|
28
|
+
"""ruby
|
|
29
|
+
RSpec::Matchers.define :be_bigger_than do |first|
|
|
30
|
+
match do |actual|
|
|
31
|
+
(actual > first) && (actual < second)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
chain :and_smaller_than, :second
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
RSpec.describe 5 do
|
|
38
|
+
it { is_expected.to be_bigger_than(4).and_smaller_than(6) }
|
|
39
|
+
end
|
|
40
|
+
"""
|
|
41
|
+
When I run `rspec between_spec.rb --format documentation`
|
|
42
|
+
Then the output should contain "1 example, 0 failures"
|
|
43
|
+
And the output should contain "is expected to be bigger than 4"
|
|
25
44
|
|
|
26
45
|
Scenario: include_chain_clauses_in_custom_matcher_descriptions configured to true, and chained method with argument
|
|
27
46
|
Given a file named "between_spec.rb" with:
|
|
@@ -48,4 +67,4 @@ Feature: define matcher with fluent interface
|
|
|
48
67
|
"""
|
|
49
68
|
When I run `rspec between_spec.rb --format documentation`
|
|
50
69
|
Then the output should contain "1 example, 0 failures"
|
|
51
|
-
And the output should contain "
|
|
70
|
+
And the output should contain "is expected to be bigger than 4 and smaller than 6"
|
|
@@ -3,6 +3,7 @@ Feature: Define negated matcher
|
|
|
3
3
|
You can use `RSpec::Matchers.define_negated_matcher` to define a negated version of
|
|
4
4
|
an existing matcher. This is particularly useful in composed matcher expressions.
|
|
5
5
|
|
|
6
|
+
@skip-when-ripper-unsupported
|
|
6
7
|
Scenario: Composed negated matcher expression
|
|
7
8
|
Given a file named "composed_negated_expression_spec.rb" with:
|
|
8
9
|
"""ruby
|
|
@@ -26,4 +27,4 @@ Feature: Define negated matcher
|
|
|
26
27
|
| 2 examples, 1 failure |
|
|
27
28
|
| 1) A negated matcher provides a good failure message based on the name |
|
|
28
29
|
| Failure/Error: expect { list.delete(1) }.to change { list }.to(an_array_excluding 5) |
|
|
29
|
-
| expected
|
|
30
|
+
| expected `list` to have changed to an array excluding 5, but is now [2, 3, 4, 5, 6, 7, 8, 9, 10] |
|
|
@@ -32,7 +32,35 @@ Feature: diffing
|
|
|
32
32
|
string
|
|
33
33
|
"""
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
@skip-when-diff-lcs-1.3
|
|
36
|
+
Scenario: diff for a multiline string and a regexp on diff-lcs 1.4
|
|
37
|
+
Given a file named "example_spec.rb" with:
|
|
38
|
+
"""ruby
|
|
39
|
+
RSpec.describe "a multiline string" do
|
|
40
|
+
it "is like another string" do
|
|
41
|
+
expected = /expected/m
|
|
42
|
+
actual = <<-ACTUAL
|
|
43
|
+
this is the
|
|
44
|
+
actual
|
|
45
|
+
string
|
|
46
|
+
ACTUAL
|
|
47
|
+
expect(actual).to match expected
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
"""
|
|
51
|
+
When I run `rspec example_spec.rb`
|
|
52
|
+
Then the output should contain:
|
|
53
|
+
"""
|
|
54
|
+
Diff:
|
|
55
|
+
@@ -1,3 +1,5 @@
|
|
56
|
+
-/expected/m
|
|
57
|
+
+this is the
|
|
58
|
+
+ actual
|
|
59
|
+
+ string
|
|
60
|
+
"""
|
|
61
|
+
|
|
62
|
+
@skip-when-diff-lcs-1.4
|
|
63
|
+
Scenario: diff for a multiline string and a regexp on diff-lcs 1.3
|
|
36
64
|
Given a file named "example_spec.rb" with:
|
|
37
65
|
"""ruby
|
|
38
66
|
RSpec.describe "a multiline string" do
|
|
@@ -23,15 +23,15 @@ Feature: implicit docstrings
|
|
|
23
23
|
|
|
24
24
|
When I run `rspec ./implicit_docstrings_spec.rb -fdoc`
|
|
25
25
|
|
|
26
|
-
Then the output should contain "
|
|
27
|
-
And the output should contain "
|
|
28
|
-
And the output should contain "
|
|
26
|
+
Then the output should contain "is expected to be < 5"
|
|
27
|
+
And the output should contain "is expected to include 2"
|
|
28
|
+
And the output should contain "is expected to respond to #size"
|
|
29
29
|
|
|
30
30
|
Scenario: run failing examples
|
|
31
31
|
Given a file named "failing_implicit_docstrings_spec.rb" with:
|
|
32
32
|
"""ruby
|
|
33
33
|
RSpec.describe "Failing examples with no descriptions" do
|
|
34
|
-
# description is auto-generated
|
|
34
|
+
# description is auto-generated per the last executed expectation
|
|
35
35
|
specify do
|
|
36
36
|
expect(3).to equal(2)
|
|
37
37
|
expect(5).to equal(5)
|
|
@@ -45,7 +45,7 @@ Feature: implicit docstrings
|
|
|
45
45
|
|
|
46
46
|
When I run `rspec ./failing_implicit_docstrings_spec.rb -fdoc`
|
|
47
47
|
|
|
48
|
-
Then the output should contain "
|
|
49
|
-
And the output should contain "
|
|
50
|
-
And the output should contain "
|
|
51
|
-
And the output should contain "
|
|
48
|
+
Then the output should contain "is expected to equal 2"
|
|
49
|
+
And the output should contain "is expected to be > 5"
|
|
50
|
+
And the output should contain "is expected to include 4"
|
|
51
|
+
And the output should contain "is expected not to respond to #size"
|
|
@@ -1,22 +1,26 @@
|
|
|
1
1
|
# Useful for when the output is slightly different on different versions of ruby
|
|
2
2
|
Then /^the output should contain "([^"]*)" or "([^"]*)"$/ do |string1, string2|
|
|
3
|
-
unless [string1, string2].any? { |s| all_output
|
|
4
|
-
fail %
|
|
3
|
+
unless [string1, string2].any? { |s| all_output.include?(s) }
|
|
4
|
+
fail %(Neither "#{string1}" or "#{string2}" were found in:\n#{all_output})
|
|
5
5
|
end
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
Then /^the output should contain all of these:$/ do |table|
|
|
9
9
|
table.raw.flatten.each do |string|
|
|
10
|
-
|
|
10
|
+
if RUBY_VERSION == '1.8.7' && string =~ /\{.+=>.+\}/
|
|
11
|
+
warn "Skipping checking #{string} on 1.8.7 because hash ordering is not consistent"
|
|
12
|
+
else
|
|
13
|
+
expect(all_output).to include_output_string string
|
|
14
|
+
end
|
|
11
15
|
end
|
|
12
16
|
end
|
|
13
17
|
|
|
14
18
|
Then /^the example(?:s)? should(?: all)? pass$/ do
|
|
15
|
-
step
|
|
16
|
-
step
|
|
19
|
+
step 'the output should contain "0 failures"'
|
|
20
|
+
step 'the exit status should be 0'
|
|
17
21
|
end
|
|
18
22
|
|
|
19
23
|
Then /^the example should fail$/ do
|
|
20
|
-
step
|
|
21
|
-
step
|
|
24
|
+
step 'the output should contain "1 failure"'
|
|
25
|
+
step 'the exit status should not be 0'
|
|
22
26
|
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'diff-lcs'
|
|
2
|
+
|
|
3
|
+
Around "@skip-when-diff-lcs-1.4" do |scenario, block|
|
|
4
|
+
if Diff::LCS::VERSION >= '1.4'
|
|
5
|
+
skip_this_scenario "Skipping scenario #{scenario.name} on `diff-lcs` v#{Diff::LCS::VERSION}"
|
|
6
|
+
else
|
|
7
|
+
block.call
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
Around "@skip-when-diff-lcs-1.4.3" do |scenario, block|
|
|
12
|
+
if Diff::LCS::VERSION =~ /1\.4\.3/
|
|
13
|
+
skip_this_scenario "Skipping scenario #{scenario.name} on `diff-lcs` v#{Diff::LCS::VERSION}"
|
|
14
|
+
else
|
|
15
|
+
block.call
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
Around "@skip-when-diff-lcs-1.3" do |scenario, block|
|
|
20
|
+
if Diff::LCS::VERSION < '1.4'
|
|
21
|
+
skip_this_scenario "Skipping scenario #{scenario.name} on `diff-lcs` v#{Diff::LCS::VERSION}"
|
|
22
|
+
else
|
|
23
|
+
block.call
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
|
|
4
4
|
if defined?(Cucumber)
|
|
5
5
|
require 'shellwords'
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
tag = !defined?(::RUBY_ENGINE_VERSION) || (::RUBY_ENGINE_VERSION < '2.0.0') ? '~@allow-disallowed-api': 'not @allow-disallowed-api'
|
|
7
|
+
Before(tag) do
|
|
8
|
+
set_environment_variable('SPEC_OPTS', "-r#{Shellwords.escape(__FILE__)}")
|
|
8
9
|
end
|
|
9
10
|
else
|
|
10
11
|
module DisallowOneLinerShould
|
|
@@ -31,4 +32,3 @@ else
|
|
|
31
32
|
rspec.include DisallowOneLinerShould
|
|
32
33
|
end
|
|
33
34
|
end
|
|
34
|
-
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
require 'aruba/cucumber'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Aruba.configure do |config|
|
|
4
4
|
if RUBY_PLATFORM =~ /java/ || defined?(Rubinius)
|
|
5
|
-
|
|
5
|
+
config.exit_timeout = 60
|
|
6
6
|
else
|
|
7
|
-
|
|
7
|
+
config.exit_timeout = 10
|
|
8
8
|
end
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
Before do
|
|
12
|
+
if RUBY_PLATFORM == 'java'
|
|
13
|
+
# disable JIT since these processes are so short lived
|
|
14
|
+
set_environment_variable('JRUBY_OPTS', "-X-C #{ENV['JRUBY_OPTS']}")
|
|
14
15
|
end
|
|
15
|
-
end if RUBY_PLATFORM == 'java'
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
if defined?(Rubinius)
|
|
18
|
+
# disable JIT since these processes are so short lived
|
|
19
|
+
set_environment_variable('RBXOPT', "-Xint=true #{ENV['RBXOPT']}")
|
|
20
20
|
end
|
|
21
|
-
end
|
|
21
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Required until https://github.com/rubinius/rubinius/issues/2430 is resolved
|
|
2
2
|
ENV['RBXOPT'] = "#{ENV["RBXOPT"]} -Xcompiler.no_rbc"
|
|
3
3
|
|
|
4
|
-
Around "@unsupported-on-rbx" do |
|
|
4
|
+
Around "@unsupported-on-rbx" do |_scenario, block|
|
|
5
5
|
block.call unless defined?(Rubinius)
|
|
6
6
|
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Around "@skip-when-splat-args-unsupported" do |scenario, block|
|
|
2
|
+
require 'rspec/support/ruby_features'
|
|
3
|
+
|
|
4
|
+
if ::RSpec::Support::RubyFeatures.optional_and_splat_args_supported?
|
|
5
|
+
block.call
|
|
6
|
+
else
|
|
7
|
+
skip_this_scenario "Skipping scenario #{scenario.name} because splat arguments are not supported"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
Around "@skip-when-keyword-args-unsupported" do |scenario, block|
|
|
12
|
+
require 'rspec/support/ruby_features'
|
|
13
|
+
|
|
14
|
+
if ::RSpec::Support::RubyFeatures.kw_args_supported?
|
|
15
|
+
block.call
|
|
16
|
+
else
|
|
17
|
+
skip_this_scenario "Skipping scenario #{scenario.name} because keyword arguments are not supported"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
Around "@skip-when-required-keyword-args-unsupported" do |scenario, block|
|
|
22
|
+
require 'rspec/support/ruby_features'
|
|
23
|
+
|
|
24
|
+
if ::RSpec::Support::RubyFeatures.required_kw_args_supported?
|
|
25
|
+
block.call
|
|
26
|
+
else
|
|
27
|
+
skip_this_scenario "Skipping scenario #{scenario.name} because required keyword arguments are not supported"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
Around "@skip-when-ripper-unsupported" do |scenario, block|
|
|
32
|
+
require 'rspec/support/ruby_features'
|
|
33
|
+
|
|
34
|
+
if ::RSpec::Support::RubyFeatures.ripper_supported?
|
|
35
|
+
block.call
|
|
36
|
+
else
|
|
37
|
+
skip_this_scenario "Skipping scenario #{scenario.name} because Ripper is not supported"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -6,7 +6,7 @@ Feature: Syntax Configuration
|
|
|
6
6
|
of code in order to set an expectation on it.
|
|
7
7
|
|
|
8
8
|
There's also an older `should`-based syntax, which relies upon `should` being
|
|
9
|
-
monkey-patched onto every object in the system.However, this syntax can at times lead to
|
|
9
|
+
monkey-patched onto every object in the system. However, this syntax can at times lead to
|
|
10
10
|
some surprising failures, since RSpec does not own every object in the system and cannot
|
|
11
11
|
guarantee that it will always work consistently.
|
|
12
12
|
|
|
@@ -50,8 +50,8 @@ Feature: Syntax Configuration
|
|
|
50
50
|
Given a file named "spec/spec_helper.rb" with:
|
|
51
51
|
"""ruby
|
|
52
52
|
RSpec.configure do |config|
|
|
53
|
-
config.expect_with :rspec do |
|
|
54
|
-
|
|
53
|
+
config.expect_with :rspec do |expectations|
|
|
54
|
+
expectations.syntax = :expect
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
"""
|
|
@@ -64,11 +64,11 @@ Feature: Syntax Configuration
|
|
|
64
64
|
Given a file named "spec/spec_helper.rb" with:
|
|
65
65
|
"""ruby
|
|
66
66
|
RSpec.configure do |config|
|
|
67
|
-
config.expect_with :rspec do |
|
|
68
|
-
|
|
67
|
+
config.expect_with :rspec do |expectations|
|
|
68
|
+
expectations.syntax = :should
|
|
69
69
|
end
|
|
70
|
-
config.mock_with :rspec do |
|
|
71
|
-
|
|
70
|
+
config.mock_with :rspec do |mocks|
|
|
71
|
+
mocks.syntax = :should
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
"""
|
|
@@ -81,8 +81,8 @@ Feature: Syntax Configuration
|
|
|
81
81
|
Given a file named "spec/spec_helper.rb" with:
|
|
82
82
|
"""ruby
|
|
83
83
|
RSpec.configure do |config|
|
|
84
|
-
config.expect_with :rspec do |
|
|
85
|
-
|
|
84
|
+
config.expect_with :rspec do |expectations|
|
|
85
|
+
expectations.syntax = [:should, :expect]
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
88
|
"""
|