opal-connect-rspec 0.5.0
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 +7 -0
- data/.gitignore +5 -0
- data/.gitmodules +15 -0
- data/.travis.yml +51 -0
- data/.yardopts +5 -0
- data/CHANGELOG.md +54 -0
- data/Gemfile +19 -0
- data/README.md +325 -0
- data/Rakefile +169 -0
- data/config.ru +15 -0
- data/example/Gemfile +4 -0
- data/example/README.md +13 -0
- data/example/Rakefile +8 -0
- data/example/opal/user.rb +11 -0
- data/example/spec/user_spec.rb +15 -0
- data/gemfiles/opal_master.gemfile +18 -0
- data/lib/opal-rspec.rb +2 -0
- data/lib/opal/rspec.rb +39 -0
- data/lib/opal/rspec/cached_environment.rb +25 -0
- data/lib/opal/rspec/post_rack_locator.rb +20 -0
- data/lib/opal/rspec/pre_rack_locator.rb +32 -0
- data/lib/opal/rspec/rake_task.rb +132 -0
- data/lib/opal/rspec/sprockets_environment.rb +37 -0
- data/lib/opal/rspec/version.rb +5 -0
- data/opal-rspec.gemspec +21 -0
- data/opal/opal-rspec.rb +1 -0
- data/opal/opal/rspec.rb +23 -0
- data/opal/opal/rspec/async.rb +5 -0
- data/opal/opal/rspec/async/async_example.rb +96 -0
- data/opal/opal/rspec/async/example_group.rb +96 -0
- data/opal/opal/rspec/async/hooks.rb +10 -0
- data/opal/opal/rspec/async/legacy.rb +50 -0
- data/opal/opal/rspec/async/reporter.rb +9 -0
- data/opal/opal/rspec/fixes.rb +5 -0
- data/opal/opal/rspec/fixes/opal.rb +5 -0
- data/opal/opal/rspec/fixes/opal/class.rb +8 -0
- data/opal/opal/rspec/fixes/opal/compatibility.rb +228 -0
- data/opal/opal/rspec/fixes/opal/corelib.rb +3 -0
- data/opal/opal/rspec/fixes/opal/corelib/error.rb +61 -0
- data/opal/opal/rspec/fixes/opal/corelib/regexp.rb +92 -0
- data/opal/opal/rspec/fixes/opal/corelib/struct.rb +260 -0
- data/opal/opal/rspec/fixes/opal/kernel.rb +80 -0
- data/opal/opal/rspec/fixes/opal/stdlib.rb +2 -0
- data/opal/opal/rspec/fixes/opal/stdlib/pp.rb +23 -0
- data/opal/opal/rspec/fixes/opal/stdlib/set.rb +36 -0
- data/opal/opal/rspec/fixes/rspec.rb +7 -0
- data/opal/opal/rspec/fixes/rspec/caller_filter.rb +6 -0
- data/opal/opal/rspec/fixes/rspec/core.rb +9 -0
- data/opal/opal/rspec/fixes/rspec/core/configuration.rb +11 -0
- data/opal/opal/rspec/fixes/rspec/core/example.rb +20 -0
- data/opal/opal/rspec/fixes/rspec/core/example_group.rb +9 -0
- data/opal/opal/rspec/fixes/rspec/core/formatters.rb +6 -0
- data/opal/opal/rspec/fixes/rspec/core/formatters/backtrace_formatter.rb +20 -0
- data/opal/opal/rspec/fixes/rspec/core/formatters/console_codes.rb +11 -0
- data/opal/opal/rspec/fixes/rspec/core/formatters/deprecation_formatter.rb +20 -0
- data/opal/opal/rspec/fixes/rspec/core/formatters/generated_deprecation_message.rb +15 -0
- data/opal/opal/rspec/fixes/rspec/core/formatters/json_formatter.rb +10 -0
- data/opal/opal/rspec/fixes/rspec/core/formatters/loader.rb +38 -0
- data/opal/opal/rspec/fixes/rspec/core/metadata.rb +39 -0
- data/opal/opal/rspec/fixes/rspec/core/notifications.rb +3 -0
- data/opal/opal/rspec/fixes/rspec/core/notifications/examples_notification.rb +30 -0
- data/opal/opal/rspec/fixes/rspec/core/notifications/failed_example_notification.rb +20 -0
- data/opal/opal/rspec/fixes/rspec/core/notifications/summary_notification.rb +26 -0
- data/opal/opal/rspec/fixes/rspec/core/ordering.rb +1 -0
- data/opal/opal/rspec/fixes/rspec/core/ordering/random.rb +13 -0
- data/opal/opal/rspec/fixes/rspec/core/reporter.rb +14 -0
- data/opal/opal/rspec/fixes/rspec/core/warnings.rb +18 -0
- data/opal/opal/rspec/fixes/rspec/example_groups.rb +49 -0
- data/opal/opal/rspec/fixes/rspec/expectations.rb +2 -0
- data/opal/opal/rspec/fixes/rspec/expectations/fail_with.rb +21 -0
- data/opal/opal/rspec/fixes/rspec/expectations/syntax.rb +25 -0
- data/opal/opal/rspec/fixes/rspec/matchers.rb +2 -0
- data/opal/opal/rspec/fixes/rspec/matchers/built_in.rb +4 -0
- data/opal/opal/rspec/fixes/rspec/matchers/built_in/all.rb +10 -0
- data/opal/opal/rspec/fixes/rspec/matchers/built_in/compound.rb +15 -0
- data/opal/opal/rspec/fixes/rspec/matchers/built_in/start_and_end_with.rb +42 -0
- data/opal/opal/rspec/fixes/rspec/matchers/built_in/yield.rb +21 -0
- data/opal/opal/rspec/fixes/rspec/matchers/pretty.rb +15 -0
- data/opal/opal/rspec/fixes/rspec/mocks.rb +4 -0
- data/opal/opal/rspec/fixes/rspec/mocks/error_generator.rb +40 -0
- data/opal/opal/rspec/fixes/rspec/mocks/space.rb +37 -0
- data/opal/opal/rspec/fixes/rspec/mocks/test_double.rb +39 -0
- data/opal/opal/rspec/fixes/rspec/mocks/verifying_double.rb +29 -0
- data/opal/opal/rspec/fixes/rspec/support.rb +4 -0
- data/opal/opal/rspec/fixes/rspec/support/encoded_string.rb +10 -0
- data/opal/opal/rspec/fixes/rspec/support/fuzzy_matcher.rb +23 -0
- data/opal/opal/rspec/fixes/rspec/support/recursive_const_methods.rb +7 -0
- data/opal/opal/rspec/fixes/rspec/support/ruby_features.rb +8 -0
- data/opal/opal/rspec/fixes/rspec/support/warnings.rb +18 -0
- data/opal/opal/rspec/formatter/browser_formatter.rb +38 -0
- data/opal/opal/rspec/formatter/document_io.rb +27 -0
- data/opal/opal/rspec/formatter/element.rb +100 -0
- data/opal/opal/rspec/formatter/html_printer.rb +121 -0
- data/opal/opal/rspec/formatter/noop_flush_string_io.rb +9 -0
- data/opal/opal/rspec/formatter/opal_closed_tty_io.rb +27 -0
- data/opal/opal/rspec/pre_require_fixes.rb +11 -0
- data/opal/opal/rspec/requires.rb +145 -0
- data/opal/opal/rspec/runner.rb +91 -0
- data/opal/opal/rspec/spec_opts.rb.erb +28 -0
- data/opal/opal/rspec/sprockets_runner.rb.erb +13 -0
- data/rspec-core/benchmarks/call_v_yield.rb +81 -0
- data/rspec-core/benchmarks/check_inclusion.rb +125 -0
- data/rspec-core/benchmarks/define_method_v_attr_reader_v_def.rb +81 -0
- data/rspec-core/benchmarks/eager_vs_lazy_metadata.rb +126 -0
- data/rspec-core/benchmarks/eager_vs_lazy_metadata/define_examples.rb +22 -0
- data/rspec-core/benchmarks/filter_object.rb +35 -0
- data/rspec-core/benchmarks/index_v_take_while.rb +47 -0
- data/rspec-core/benchmarks/map_then_flatten_vs_flat_map_benchmarks.rb +94 -0
- data/rspec-core/benchmarks/require_relative_v_require.rb +75 -0
- data/rspec-core/benchmarks/respond_to_v_defined.rb +72 -0
- data/rspec-core/benchmarks/several_regexps_v_one_big_one.rb +86 -0
- data/rspec-core/benchmarks/sort_by_v_shuffle.rb +83 -0
- data/rspec-core/benchmarks/to_proc_v_not_to_proc.rb +539 -0
- data/rspec-core/features/step_definitions/additional_cli_steps.rb +126 -0
- data/rspec-core/features/step_definitions/core_standalone_steps.rb +12 -0
- data/rspec-core/features/support/env.rb +21 -0
- data/rspec-core/features/support/require_expect_syntax_in_aruba_specs.rb +29 -0
- data/rspec-core/features/support/rubinius.rb +6 -0
- data/rspec-core/lib/rspec/autorun.rb +2 -0
- data/rspec-core/lib/rspec/core.rb +169 -0
- data/rspec-core/lib/rspec/core/backport_random.rb +336 -0
- data/rspec-core/lib/rspec/core/backtrace_formatter.rb +66 -0
- data/rspec-core/lib/rspec/core/configuration.rb +1440 -0
- data/rspec-core/lib/rspec/core/configuration_options.rb +173 -0
- data/rspec-core/lib/rspec/core/drb.rb +111 -0
- data/rspec-core/lib/rspec/core/dsl.rb +93 -0
- data/rspec-core/lib/rspec/core/example.rb +502 -0
- data/rspec-core/lib/rspec/core/example_group.rb +606 -0
- data/rspec-core/lib/rspec/core/filter_manager.rb +259 -0
- data/rspec-core/lib/rspec/core/flat_map.rb +18 -0
- data/rspec-core/lib/rspec/core/formatters.rb +240 -0
- data/rspec-core/lib/rspec/core/formatters/base_formatter.rb +67 -0
- data/rspec-core/lib/rspec/core/formatters/base_text_formatter.rb +76 -0
- data/rspec-core/lib/rspec/core/formatters/console_codes.rb +64 -0
- data/rspec-core/lib/rspec/core/formatters/deprecation_formatter.rb +222 -0
- data/rspec-core/lib/rspec/core/formatters/documentation_formatter.rb +68 -0
- data/rspec-core/lib/rspec/core/formatters/helpers.rb +87 -0
- data/rspec-core/lib/rspec/core/formatters/html_formatter.rb +149 -0
- data/rspec-core/lib/rspec/core/formatters/html_printer.rb +403 -0
- data/rspec-core/lib/rspec/core/formatters/json_formatter.rb +94 -0
- data/rspec-core/lib/rspec/core/formatters/profile_formatter.rb +65 -0
- data/rspec-core/lib/rspec/core/formatters/progress_formatter.rb +28 -0
- data/rspec-core/lib/rspec/core/formatters/protocol.rb +163 -0
- data/rspec-core/lib/rspec/core/formatters/snippet_extractor.rb +104 -0
- data/rspec-core/lib/rspec/core/hooks.rb +591 -0
- data/rspec-core/lib/rspec/core/memoized_helpers.rb +472 -0
- data/rspec-core/lib/rspec/core/metadata.rb +437 -0
- data/rspec-core/lib/rspec/core/metadata_filter.rb +95 -0
- data/rspec-core/lib/rspec/core/minitest_assertions_adapter.rb +28 -0
- data/rspec-core/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
- data/rspec-core/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
- data/rspec-core/lib/rspec/core/mocking_adapters/null.rb +14 -0
- data/rspec-core/lib/rspec/core/mocking_adapters/rr.rb +31 -0
- data/rspec-core/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
- data/rspec-core/lib/rspec/core/notifications.rb +542 -0
- data/rspec-core/lib/rspec/core/option_parser.rb +222 -0
- data/rspec-core/lib/rspec/core/ordering.rb +155 -0
- data/rspec-core/lib/rspec/core/pending.rb +163 -0
- data/rspec-core/lib/rspec/core/project_initializer.rb +48 -0
- data/rspec-core/lib/rspec/core/project_initializer/spec/spec_helper.rb +89 -0
- data/rspec-core/lib/rspec/core/rake_task.rb +187 -0
- data/rspec-core/lib/rspec/core/reporter.rb +149 -0
- data/rspec-core/lib/rspec/core/ruby_project.rb +45 -0
- data/rspec-core/lib/rspec/core/runner.rb +158 -0
- data/rspec-core/lib/rspec/core/shared_context.rb +55 -0
- data/rspec-core/lib/rspec/core/shared_example_group.rb +182 -0
- data/rspec-core/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
- data/rspec-core/lib/rspec/core/version.rb +9 -0
- data/rspec-core/lib/rspec/core/warnings.rb +40 -0
- data/rspec-core/lib/rspec/core/world.rb +183 -0
- data/rspec-core/spec/command_line/order_spec.rb +213 -0
- data/rspec-core/spec/rspec/core/backtrace_formatter_spec.rb +306 -0
- data/rspec-core/spec/rspec/core/configuration_options_spec.rb +425 -0
- data/rspec-core/spec/rspec/core/configuration_spec.rb +1963 -0
- data/rspec-core/spec/rspec/core/drb_spec.rb +278 -0
- data/rspec-core/spec/rspec/core/dsl_spec.rb +85 -0
- data/rspec-core/spec/rspec/core/example_execution_result_spec.rb +142 -0
- data/rspec-core/spec/rspec/core/example_group_constants_spec.rb +16 -0
- data/rspec-core/spec/rspec/core/example_group_spec.rb +1621 -0
- data/rspec-core/spec/rspec/core/example_spec.rb +662 -0
- data/rspec-core/spec/rspec/core/failed_example_notification_spec.rb +25 -0
- data/rspec-core/spec/rspec/core/filter_manager_spec.rb +299 -0
- data/rspec-core/spec/rspec/core/formatters/base_text_formatter_spec.rb +182 -0
- data/rspec-core/spec/rspec/core/formatters/console_codes_spec.rb +65 -0
- data/rspec-core/spec/rspec/core/formatters/deprecation_formatter_spec.rb +225 -0
- data/rspec-core/spec/rspec/core/formatters/documentation_formatter_spec.rb +111 -0
- data/rspec-core/spec/rspec/core/formatters/helpers_spec.rb +104 -0
- data/rspec-core/spec/rspec/core/formatters/html_formatter_spec.rb +111 -0
- data/rspec-core/spec/rspec/core/formatters/json_formatter_spec.rb +183 -0
- data/rspec-core/spec/rspec/core/formatters/profile_formatter_spec.rb +99 -0
- data/rspec-core/spec/rspec/core/formatters/progress_formatter_spec.rb +55 -0
- data/rspec-core/spec/rspec/core/formatters/snippet_extractor_spec.rb +26 -0
- data/rspec-core/spec/rspec/core/formatters_spec.rb +160 -0
- data/rspec-core/spec/rspec/core/hooks_filtering_spec.rb +227 -0
- data/rspec-core/spec/rspec/core/hooks_spec.rb +447 -0
- data/rspec-core/spec/rspec/core/memoized_helpers_spec.rb +537 -0
- data/rspec-core/spec/rspec/core/metadata_filter_spec.rb +181 -0
- data/rspec-core/spec/rspec/core/metadata_spec.rb +642 -0
- data/rspec-core/spec/rspec/core/notifications_spec.rb +92 -0
- data/rspec-core/spec/rspec/core/option_parser_spec.rb +270 -0
- data/rspec-core/spec/rspec/core/ordering_spec.rb +102 -0
- data/rspec-core/spec/rspec/core/pending_example_spec.rb +221 -0
- data/rspec-core/spec/rspec/core/pending_spec.rb +8 -0
- data/rspec-core/spec/rspec/core/project_initializer_spec.rb +123 -0
- data/rspec-core/spec/rspec/core/rake_task_spec.rb +351 -0
- data/rspec-core/spec/rspec/core/random_spec.rb +47 -0
- data/rspec-core/spec/rspec/core/reporter_spec.rb +198 -0
- data/rspec-core/spec/rspec/core/resources/a_bar.rb +0 -0
- data/rspec-core/spec/rspec/core/resources/a_foo.rb +0 -0
- data/rspec-core/spec/rspec/core/resources/a_spec.rb +1 -0
- data/rspec-core/spec/rspec/core/resources/acceptance/bar.rb +0 -0
- data/rspec-core/spec/rspec/core/resources/acceptance/foo_spec.rb +0 -0
- data/rspec-core/spec/rspec/core/resources/custom_example_group_runner.rb +14 -0
- data/rspec-core/spec/rspec/core/resources/formatter_specs.rb +58 -0
- data/rspec-core/spec/rspec/core/resources/utf8_encoded.rb +9 -0
- data/rspec-core/spec/rspec/core/rspec_matchers_spec.rb +45 -0
- data/rspec-core/spec/rspec/core/ruby_project_spec.rb +26 -0
- data/rspec-core/spec/rspec/core/runner_spec.rb +309 -0
- data/rspec-core/spec/rspec/core/shared_context_spec.rb +102 -0
- data/rspec-core/spec/rspec/core/shared_example_group_spec.rb +268 -0
- data/rspec-core/spec/rspec/core/warnings_spec.rb +72 -0
- data/rspec-core/spec/rspec/core/world_spec.rb +142 -0
- data/rspec-core/spec/rspec/core_spec.rb +103 -0
- data/rspec-core/spec/spec_helper.rb +89 -0
- data/rspec-core/spec/support/config_options_helper.rb +13 -0
- data/rspec-core/spec/support/fake_minitest/minitest.rb +0 -0
- data/rspec-core/spec/support/fake_minitest/minitest/minitest_assertions.rb +4 -0
- data/rspec-core/spec/support/fake_minitest/test/unit/assertions.rb +6 -0
- data/rspec-core/spec/support/formatter_support.rb +263 -0
- data/rspec-core/spec/support/helper_methods.rb +26 -0
- data/rspec-core/spec/support/isolated_home_directory.rb +16 -0
- data/rspec-core/spec/support/matchers.rb +103 -0
- data/rspec-core/spec/support/mathn_integration_support.rb +12 -0
- data/rspec-core/spec/support/sandboxing.rb +50 -0
- data/rspec-core/spec/support/shared_example_groups.rb +43 -0
- data/rspec-core/spec/support/spec_files.rb +44 -0
- data/rspec-expectations/benchmarks/2.x_vs_3.x_matcher_dsl_implementation.rb +253 -0
- data/rspec-expectations/benchmarks/autoload_v_require.rb +25 -0
- data/rspec-expectations/benchmarks/cloning_matchers.rb +19 -0
- data/rspec-expectations/benchmarks/default_messages_as_methods_v_blocks.rb +27 -0
- data/rspec-expectations/benchmarks/example_spec.rb +9 -0
- data/rspec-expectations/benchmarks/include_v_superclass.rb +39 -0
- data/rspec-expectations/benchmarks/match_array/failing_with_distinct_items.rb +147 -0
- data/rspec-expectations/benchmarks/match_array/failing_with_duplicate_items.rb +122 -0
- data/rspec-expectations/benchmarks/match_array/passing_with_distinct_items.rb +154 -0
- data/rspec-expectations/benchmarks/match_array/passing_with_duplicate_items.rb +132 -0
- data/rspec-expectations/benchmarks/match_array/rubyprof/passing_with_distinct_items.rb +9 -0
- data/rspec-expectations/benchmarks/matcher_dsl_vs_classes.rb +180 -0
- data/rspec-expectations/benchmarks/method_to_proc.rb +72 -0
- data/rspec-expectations/benchmarks/set_vs_array_include.rb +68 -0
- data/rspec-expectations/features/step_definitions/additional_cli_steps.rb +22 -0
- data/rspec-expectations/features/support/disallow_certain_apis.rb +34 -0
- data/rspec-expectations/features/support/env.rb +21 -0
- data/rspec-expectations/features/support/rubinius.rb +6 -0
- data/rspec-expectations/lib/rspec/expectations.rb +68 -0
- data/rspec-expectations/lib/rspec/expectations/configuration.rb +147 -0
- data/rspec-expectations/lib/rspec/expectations/expectation_target.rb +119 -0
- data/rspec-expectations/lib/rspec/expectations/fail_with.rb +34 -0
- data/rspec-expectations/lib/rspec/expectations/handler.rb +167 -0
- data/rspec-expectations/lib/rspec/expectations/minitest_integration.rb +17 -0
- data/rspec-expectations/lib/rspec/expectations/syntax.rb +132 -0
- data/rspec-expectations/lib/rspec/expectations/version.rb +8 -0
- data/rspec-expectations/lib/rspec/matchers.rb +967 -0
- data/rspec-expectations/lib/rspec/matchers/aliased_matcher.rb +116 -0
- data/rspec-expectations/lib/rspec/matchers/built_in.rb +52 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/all.rb +85 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/base_matcher.rb +132 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/be.rb +277 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/be_between.rb +77 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/be_within.rb +72 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/change.rb +337 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/compound.rb +258 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/contain_exactly.rb +249 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/cover.rb +24 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/eq.rb +75 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/eql.rb +34 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/equal.rb +81 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/exist.rb +86 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/has.rb +101 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/have_attributes.rb +84 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/include.rb +105 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/match.rb +29 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/operators.rb +119 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/output.rb +152 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/raise_error.rb +174 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/respond_to.rb +91 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/satisfy.rb +39 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/start_and_end_with.rb +82 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
- data/rspec-expectations/lib/rspec/matchers/built_in/yield.rb +420 -0
- data/rspec-expectations/lib/rspec/matchers/composable.rb +183 -0
- data/rspec-expectations/lib/rspec/matchers/dsl.rb +391 -0
- data/rspec-expectations/lib/rspec/matchers/generated_descriptions.rb +42 -0
- data/rspec-expectations/lib/rspec/matchers/matcher_delegator.rb +33 -0
- data/rspec-expectations/lib/rspec/matchers/matcher_protocol.rb +99 -0
- data/rspec-expectations/lib/rspec/matchers/pretty.rb +77 -0
- data/rspec-expectations/spec/rspec/expectations/configuration_spec.rb +226 -0
- data/rspec-expectations/spec/rspec/expectations/expectation_target_spec.rb +147 -0
- data/rspec-expectations/spec/rspec/expectations/extensions/kernel_spec.rb +69 -0
- data/rspec-expectations/spec/rspec/expectations/fail_with_spec.rb +73 -0
- data/rspec-expectations/spec/rspec/expectations/handler_spec.rb +200 -0
- data/rspec-expectations/spec/rspec/expectations/minitest_integration_spec.rb +25 -0
- data/rspec-expectations/spec/rspec/expectations/syntax_spec.rb +93 -0
- data/rspec-expectations/spec/rspec/expectations_spec.rb +15 -0
- data/rspec-expectations/spec/rspec/matchers/aliased_matcher_spec.rb +113 -0
- data/rspec-expectations/spec/rspec/matchers/aliases_spec.rb +455 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/all_spec.rb +212 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/base_matcher_spec.rb +140 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/be_between_spec.rb +157 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/be_instance_of_spec.rb +61 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/be_kind_of_spec.rb +39 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/be_spec.rb +685 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/be_within_spec.rb +139 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/change_spec.rb +829 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/compound_spec.rb +537 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/contain_exactly_spec.rb +556 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/cover_spec.rb +67 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/eq_spec.rb +176 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/eql_spec.rb +39 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/equal_spec.rb +130 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/exist_spec.rb +139 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/has_spec.rb +179 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/have_attributes_spec.rb +177 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/include_spec.rb +587 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/match_spec.rb +100 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/operators_spec.rb +250 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/output_spec.rb +168 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/raise_error_spec.rb +446 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/respond_to_spec.rb +290 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/satisfy_spec.rb +42 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/start_and_end_with_spec.rb +347 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/throw_symbol_spec.rb +133 -0
- data/rspec-expectations/spec/rspec/matchers/built_in/yield_spec.rb +643 -0
- data/rspec-expectations/spec/rspec/matchers/composable_spec.rb +77 -0
- data/rspec-expectations/spec/rspec/matchers/define_negated_matcher_spec.rb +199 -0
- data/rspec-expectations/spec/rspec/matchers/description_generation_spec.rb +189 -0
- data/rspec-expectations/spec/rspec/matchers/dsl_spec.rb +1036 -0
- data/rspec-expectations/spec/rspec/matchers/legacy_spec.rb +104 -0
- data/rspec-expectations/spec/rspec/matchers_spec.rb +108 -0
- data/rspec-expectations/spec/spec_helper.rb +94 -0
- data/rspec-expectations/spec/support/matchers.rb +54 -0
- data/rspec-expectations/spec/support/shared_examples.rb +101 -0
- data/rspec-mocks/benchmarks/double_creation.rb +66 -0
- data/rspec-mocks/benchmarks/each_value_v_values_each.rb +58 -0
- data/rspec-mocks/benchmarks/find_original_method_early.rb +64 -0
- data/rspec-mocks/benchmarks/method_defined_at_any_visibility.rb +101 -0
- data/rspec-mocks/benchmarks/thread_safety.rb +24 -0
- data/rspec-mocks/benchmarks/transfer_nested_constants.rb +77 -0
- data/rspec-mocks/features/step_definitions/additional_cli_steps.rb +21 -0
- data/rspec-mocks/features/support/disallow_certain_apis.rb +24 -0
- data/rspec-mocks/features/support/env.rb +22 -0
- data/rspec-mocks/features/support/rubinius.rb +6 -0
- data/rspec-mocks/lib/rspec/mocks.rb +126 -0
- data/rspec-mocks/lib/rspec/mocks/any_instance.rb +10 -0
- data/rspec-mocks/lib/rspec/mocks/any_instance/chain.rb +109 -0
- data/rspec-mocks/lib/rspec/mocks/any_instance/expect_chain_chain.rb +35 -0
- data/rspec-mocks/lib/rspec/mocks/any_instance/expectation_chain.rb +48 -0
- data/rspec-mocks/lib/rspec/mocks/any_instance/message_chains.rb +85 -0
- data/rspec-mocks/lib/rspec/mocks/any_instance/proxy.rb +116 -0
- data/rspec-mocks/lib/rspec/mocks/any_instance/recorder.rb +267 -0
- data/rspec-mocks/lib/rspec/mocks/any_instance/stub_chain.rb +45 -0
- data/rspec-mocks/lib/rspec/mocks/any_instance/stub_chain_chain.rb +27 -0
- data/rspec-mocks/lib/rspec/mocks/argument_list_matcher.rb +72 -0
- data/rspec-mocks/lib/rspec/mocks/argument_matchers.rb +282 -0
- data/rspec-mocks/lib/rspec/mocks/configuration.rb +157 -0
- data/rspec-mocks/lib/rspec/mocks/error_generator.rb +253 -0
- data/rspec-mocks/lib/rspec/mocks/example_methods.rb +379 -0
- data/rspec-mocks/lib/rspec/mocks/instance_method_stasher.rb +135 -0
- data/rspec-mocks/lib/rspec/mocks/marshal_extension.rb +41 -0
- data/rspec-mocks/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
- data/rspec-mocks/lib/rspec/mocks/matchers/have_received.rb +121 -0
- data/rspec-mocks/lib/rspec/mocks/matchers/receive.rb +106 -0
- data/rspec-mocks/lib/rspec/mocks/matchers/receive_message_chain.rb +66 -0
- data/rspec-mocks/lib/rspec/mocks/matchers/receive_messages.rb +71 -0
- data/rspec-mocks/lib/rspec/mocks/message_chain.rb +91 -0
- data/rspec-mocks/lib/rspec/mocks/message_expectation.rb +694 -0
- data/rspec-mocks/lib/rspec/mocks/method_double.rb +260 -0
- data/rspec-mocks/lib/rspec/mocks/method_reference.rb +155 -0
- data/rspec-mocks/lib/rspec/mocks/mutate_const.rb +324 -0
- data/rspec-mocks/lib/rspec/mocks/object_reference.rb +91 -0
- data/rspec-mocks/lib/rspec/mocks/order_group.rb +81 -0
- data/rspec-mocks/lib/rspec/mocks/proxy.rb +431 -0
- data/rspec-mocks/lib/rspec/mocks/space.rb +221 -0
- data/rspec-mocks/lib/rspec/mocks/standalone.rb +3 -0
- data/rspec-mocks/lib/rspec/mocks/syntax.rb +329 -0
- data/rspec-mocks/lib/rspec/mocks/targets.rb +97 -0
- data/rspec-mocks/lib/rspec/mocks/test_double.rb +135 -0
- data/rspec-mocks/lib/rspec/mocks/verifying_double.rb +127 -0
- data/rspec-mocks/lib/rspec/mocks/verifying_message_expecation.rb +62 -0
- data/rspec-mocks/lib/rspec/mocks/verifying_proxy.rb +171 -0
- data/rspec-mocks/lib/rspec/mocks/version.rb +9 -0
- data/rspec-mocks/spec/rspec/mocks/and_call_original_spec.rb +267 -0
- data/rspec-mocks/spec/rspec/mocks/and_return_spec.rb +21 -0
- data/rspec-mocks/spec/rspec/mocks/and_wrap_original_spec.rb +63 -0
- data/rspec-mocks/spec/rspec/mocks/and_yield_spec.rb +161 -0
- data/rspec-mocks/spec/rspec/mocks/any_instance/message_chains_spec.rb +39 -0
- data/rspec-mocks/spec/rspec/mocks/any_instance_spec.rb +1242 -0
- data/rspec-mocks/spec/rspec/mocks/argument_matchers_spec.rb +336 -0
- data/rspec-mocks/spec/rspec/mocks/array_including_matcher_spec.rb +39 -0
- data/rspec-mocks/spec/rspec/mocks/at_least_spec.rb +147 -0
- data/rspec-mocks/spec/rspec/mocks/at_most_spec.rb +113 -0
- data/rspec-mocks/spec/rspec/mocks/before_all_spec.rb +75 -0
- data/rspec-mocks/spec/rspec/mocks/block_return_value_spec.rb +68 -0
- data/rspec-mocks/spec/rspec/mocks/combining_implementation_instructions_spec.rb +196 -0
- data/rspec-mocks/spec/rspec/mocks/configuration_spec.rb +175 -0
- data/rspec-mocks/spec/rspec/mocks/double_spec.rb +830 -0
- data/rspec-mocks/spec/rspec/mocks/example_methods_spec.rb +11 -0
- data/rspec-mocks/spec/rspec/mocks/expiration_spec.rb +90 -0
- data/rspec-mocks/spec/rspec/mocks/hash_excluding_matcher_spec.rb +65 -0
- data/rspec-mocks/spec/rspec/mocks/hash_including_matcher_spec.rb +92 -0
- data/rspec-mocks/spec/rspec/mocks/instance_method_stasher_spec.rb +72 -0
- data/rspec-mocks/spec/rspec/mocks/marshal_extension_spec.rb +67 -0
- data/rspec-mocks/spec/rspec/mocks/matchers/have_received_spec.rb +513 -0
- data/rspec-mocks/spec/rspec/mocks/matchers/receive_message_chain_spec.rb +227 -0
- data/rspec-mocks/spec/rspec/mocks/matchers/receive_messages_spec.rb +148 -0
- data/rspec-mocks/spec/rspec/mocks/matchers/receive_spec.rb +525 -0
- data/rspec-mocks/spec/rspec/mocks/methods_spec.rb +24 -0
- data/rspec-mocks/spec/rspec/mocks/mock_expectation_error_spec.rb +20 -0
- data/rspec-mocks/spec/rspec/mocks/mock_ordering_spec.rb +112 -0
- data/rspec-mocks/spec/rspec/mocks/multiple_return_value_spec.rb +130 -0
- data/rspec-mocks/spec/rspec/mocks/mutate_const_spec.rb +561 -0
- data/rspec-mocks/spec/rspec/mocks/nil_expectation_warning_spec.rb +52 -0
- data/rspec-mocks/spec/rspec/mocks/null_object_double_spec.rb +135 -0
- data/rspec-mocks/spec/rspec/mocks/once_counts_spec.rb +50 -0
- data/rspec-mocks/spec/rspec/mocks/order_group_spec.rb +26 -0
- data/rspec-mocks/spec/rspec/mocks/partial_double_spec.rb +379 -0
- data/rspec-mocks/spec/rspec/mocks/partial_double_using_mocks_directly_spec.rb +83 -0
- data/rspec-mocks/spec/rspec/mocks/precise_counts_spec.rb +66 -0
- data/rspec-mocks/spec/rspec/mocks/serialization_spec.rb +89 -0
- data/rspec-mocks/spec/rspec/mocks/should_syntax_spec.rb +539 -0
- data/rspec-mocks/spec/rspec/mocks/space_spec.rb +242 -0
- data/rspec-mocks/spec/rspec/mocks/spy_spec.rb +127 -0
- data/rspec-mocks/spec/rspec/mocks/stash_spec.rb +43 -0
- data/rspec-mocks/spec/rspec/mocks/stub_chain_spec.rb +166 -0
- data/rspec-mocks/spec/rspec/mocks/stub_implementation_spec.rb +98 -0
- data/rspec-mocks/spec/rspec/mocks/stub_spec.rb +520 -0
- data/rspec-mocks/spec/rspec/mocks/stubbed_message_expectations_spec.rb +56 -0
- data/rspec-mocks/spec/rspec/mocks/syntax_agnostic_message_matchers_spec.rb +99 -0
- data/rspec-mocks/spec/rspec/mocks/syntax_spec.rb +7 -0
- data/rspec-mocks/spec/rspec/mocks/test_double_spec.rb +53 -0
- data/rspec-mocks/spec/rspec/mocks/thrice_counts_spec.rb +72 -0
- data/rspec-mocks/spec/rspec/mocks/to_ary_spec.rb +52 -0
- data/rspec-mocks/spec/rspec/mocks/twice_counts_spec.rb +64 -0
- data/rspec-mocks/spec/rspec/mocks/verifying_doubles/class_double_with_class_loaded_spec.rb +118 -0
- data/rspec-mocks/spec/rspec/mocks/verifying_doubles/class_double_with_class_not_loaded_spec.rb +58 -0
- data/rspec-mocks/spec/rspec/mocks/verifying_doubles/construction_spec.rb +54 -0
- data/rspec-mocks/spec/rspec/mocks/verifying_doubles/expected_arg_verification_spec.rb +81 -0
- data/rspec-mocks/spec/rspec/mocks/verifying_doubles/instance_double_with_class_loaded_spec.rb +195 -0
- data/rspec-mocks/spec/rspec/mocks/verifying_doubles/instance_double_with_class_not_loaded_spec.rb +57 -0
- data/rspec-mocks/spec/rspec/mocks/verifying_doubles/method_visibility_spec.rb +129 -0
- data/rspec-mocks/spec/rspec/mocks/verifying_doubles/object_double_spec.rb +68 -0
- data/rspec-mocks/spec/rspec/mocks_spec.rb +199 -0
- data/rspec-mocks/spec/spec_helper.rb +131 -0
- data/rspec-mocks/spec/support/before_all_shared_example_group.rb +16 -0
- data/rspec-mocks/spec/support/doubled_classes.rb +74 -0
- data/rspec-mocks/spec/support/matchers.rb +15 -0
- data/rspec-support/benchmarks/caller.rb +81 -0
- data/rspec-support/lib/rspec/support.rb +76 -0
- data/rspec-support/lib/rspec/support/caller_filter.rb +63 -0
- data/rspec-support/lib/rspec/support/differ.rb +214 -0
- data/rspec-support/lib/rspec/support/directory_maker.rb +61 -0
- data/rspec-support/lib/rspec/support/encoded_string.rb +69 -0
- data/rspec-support/lib/rspec/support/fuzzy_matcher.rb +48 -0
- data/rspec-support/lib/rspec/support/hunk_generator.rb +47 -0
- data/rspec-support/lib/rspec/support/matcher_definition.rb +31 -0
- data/rspec-support/lib/rspec/support/method_signature_verifier.rb +272 -0
- data/rspec-support/lib/rspec/support/os.rb +18 -0
- data/rspec-support/lib/rspec/support/recursive_const_methods.rb +76 -0
- data/rspec-support/lib/rspec/support/ruby_features.rb +45 -0
- data/rspec-support/lib/rspec/support/spec.rb +72 -0
- data/rspec-support/lib/rspec/support/spec/deprecation_helpers.rb +60 -0
- data/rspec-support/lib/rspec/support/spec/formatting_support.rb +9 -0
- data/rspec-support/lib/rspec/support/spec/in_sub_process.rb +43 -0
- data/rspec-support/lib/rspec/support/spec/prevent_load_time_warnings.rb +44 -0
- data/rspec-support/lib/rspec/support/spec/shell_out.rb +69 -0
- data/rspec-support/lib/rspec/support/spec/stderr_splitter.rb +52 -0
- data/rspec-support/lib/rspec/support/spec/with_isolated_directory.rb +9 -0
- data/rspec-support/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
- data/rspec-support/lib/rspec/support/version.rb +7 -0
- data/rspec-support/lib/rspec/support/version_checker.rb +53 -0
- data/rspec-support/lib/rspec/support/warnings.rb +39 -0
- data/rspec-support/spec/rspec/support/caller_filter_spec.rb +66 -0
- data/rspec-support/spec/rspec/support/differ_spec.rb +322 -0
- data/rspec-support/spec/rspec/support/directory_maker_spec.rb +58 -0
- data/rspec-support/spec/rspec/support/encoded_string_spec.rb +86 -0
- data/rspec-support/spec/rspec/support/fuzzy_matcher_spec.rb +179 -0
- data/rspec-support/spec/rspec/support/method_signature_verifier_spec.rb +357 -0
- data/rspec-support/spec/rspec/support/os_spec.rb +36 -0
- data/rspec-support/spec/rspec/support/recursive_const_methods_spec.rb +49 -0
- data/rspec-support/spec/rspec/support/spec/in_sub_process_spec.rb +36 -0
- data/rspec-support/spec/rspec/support/spec/prevent_load_time_warnings_spec.rb +10 -0
- data/rspec-support/spec/rspec/support/spec/shell_out_spec.rb +44 -0
- data/rspec-support/spec/rspec/support/spec/stderr_splitter_spec.rb +60 -0
- data/rspec-support/spec/rspec/support/spec/with_isolated_std_err_spec.rb +21 -0
- data/rspec-support/spec/rspec/support/version_checker_spec.rb +29 -0
- data/rspec-support/spec/rspec/support/warnings_spec.rb +66 -0
- data/rspec-support/spec/rspec/support_spec.rb +119 -0
- data/rspec-support/spec/spec_helper.rb +2 -0
- data/rspec/lib/rspec.rb +3 -0
- data/rspec/lib/rspec/version.rb +5 -0
- data/spec/mri/integration/browser_spec.rb +31 -0
- data/spec/mri/integration/rack/sprockets_runner_js_errors.rb.erb +20 -0
- data/spec/mri/integration/spec_opts_spec.rb +81 -0
- data/spec/mri/unit/opal/rspec/browser_formatter_spec.rb +35 -0
- data/spec/mri/unit/opal/rspec/cached_environment_spec.rb +85 -0
- data/spec/mri/unit/opal/rspec/opal/browser_formatter_spec.rb +14 -0
- data/spec/mri/unit/opal/rspec/rack/config.ru +12 -0
- data/spec/mri/unit/opal/rspec/rake_task_spec.rb +261 -0
- data/spec/mri/unit/opal/rspec/sprockets_environment_spec.rb +55 -0
- data/spec/mri/unit/opal/rspec/temp_dir_helper.rb +19 -0
- data/spec/opal/after_hooks_spec.rb +140 -0
- data/spec/opal/around_hooks_spec.rb +164 -0
- data/spec/opal/async_spec.rb +184 -0
- data/spec/opal/before_hooks_spec.rb +183 -0
- data/spec/opal/example_spec.rb +174 -0
- data/spec/opal/expected_failures.txt +40 -0
- data/spec/opal/matchers_spec.rb +205 -0
- data/spec/opal/mock_spec.rb +63 -0
- data/spec/opal/should_syntax_spec.rb +17 -0
- data/spec/opal/skip_pending_spec.rb +43 -0
- data/spec/opal/subject_spec.rb +87 -0
- data/spec/other/color_on_by_default_spec.rb +9 -0
- data/spec/other/dummy_spec.rb +5 -0
- data/spec/other/formatter_dependency.rb +3 -0
- data/spec/other/ignored_spec.opal +5 -0
- data/spec/other/test_formatter.rb +9 -0
- data/spec/rspec/core/config.rb +5 -0
- data/spec/rspec/core/config.ru +4 -0
- data/spec/rspec/core/core_spec_loader.rb +46 -0
- data/spec/rspec/core/filter/core/async/example_group.txt +13 -0
- data/spec/rspec/core/filter/core/async/hooks.rb +12 -0
- data/spec/rspec/core/filter/core/async/memoized_helpers.txt +3 -0
- data/spec/rspec/core/filter/core/async/metadata.txt +2 -0
- data/spec/rspec/core/filter/core/bugs/filter_manager.txt +4 -0
- data/spec/rspec/core/filter/core/bugs/formatters.txt +4 -0
- data/spec/rspec/core/filter/core/bugs/memoized_helpers.rb +11 -0
- data/spec/rspec/core/filter/core/bugs/metadata.txt +5 -0
- data/spec/rspec/core/filter/core/bugs/sandbox/subject_issue_test.rb +328 -0
- data/spec/rspec/core/filter/core/bugs/warnings_deprecations.txt +3 -0
- data/spec/rspec/core/filter/core/unsupported/core.txt +5 -0
- data/spec/rspec/core/filter/core/unsupported/example.txt +7 -0
- data/spec/rspec/core/filter/core/unsupported/example_group.txt +13 -0
- data/spec/rspec/core/filter/core/unsupported/filter_manager.txt +7 -0
- data/spec/rspec/core/filter/core/unsupported/formatters.txt +27 -0
- data/spec/rspec/core/filter/core/unsupported/hooks.txt +2 -0
- data/spec/rspec/core/filter/core/unsupported/memoized_helpers.txt +6 -0
- data/spec/rspec/core/filter/core/unsupported/metadata.txt +14 -0
- data/spec/rspec/core/filter/core/unsupported/metadata_filter.txt +2 -0
- data/spec/rspec/core/filter/core/unsupported/notifications.txt +8 -0
- data/spec/rspec/core/filter/core/unsupported/world.txt +3 -0
- data/spec/rspec/core/fixes/missing_constants.rb +20 -0
- data/spec/rspec/core/fixes/opal_itself.rb +38 -0
- data/spec/rspec/core/fixes/shared_examples.rb +3 -0
- data/spec/rspec/core/opal_alternates/rspec/core/example_group_spec.rb +145 -0
- data/spec/rspec/core/opal_alternates/rspec/core/failed_example_notification_spec.rb +31 -0
- data/spec/rspec/core/opal_alternates/rspec/core/hooks_spec.rb +113 -0
- data/spec/rspec/core/opal_alternates/rspec/core/memoized_helpers_spec.rb +36 -0
- data/spec/rspec/core/opal_alternates/rspec/core/metadata_spec.rb +48 -0
- data/spec/rspec/core/require_specs.rb +25 -0
- data/spec/rspec/core/sandboxing.rb +72 -0
- data/spec/rspec/core/spec_files_exclude.txt +41 -0
- data/spec/rspec/expectations/config.rb +16 -0
- data/spec/rspec/expectations/config.ru +4 -0
- data/spec/rspec/expectations/expectation_spec_loader.rb +110 -0
- data/spec/rspec/expectations/filter/bugs/aliased_matcher.txt +2 -0
- data/spec/rspec/expectations/filter/bugs/aliases.rb +13 -0
- data/spec/rspec/expectations/filter/bugs/base_matcher.txt +2 -0
- data/spec/rspec/expectations/filter/bugs/be.rb +4 -0
- data/spec/rspec/expectations/filter/bugs/be_instance_of.rb +7 -0
- data/spec/rspec/expectations/filter/bugs/be_spec.txt +2 -0
- data/spec/rspec/expectations/filter/bugs/configuration.txt +8 -0
- data/spec/rspec/expectations/filter/bugs/contain_exactly.rb +13 -0
- data/spec/rspec/expectations/filter/bugs/define_negated_matcher.rb +9 -0
- data/spec/rspec/expectations/filter/bugs/description_generation.rb +4 -0
- data/spec/rspec/expectations/filter/bugs/dsl.txt +14 -0
- data/spec/rspec/expectations/filter/bugs/equal.txt +3 -0
- data/spec/rspec/expectations/filter/bugs/expectation_target.txt +2 -0
- data/spec/rspec/expectations/filter/bugs/expectations.txt +2 -0
- data/spec/rspec/expectations/filter/bugs/have_attributes.rb +8 -0
- data/spec/rspec/expectations/filter/bugs/include.rb +4 -0
- data/spec/rspec/expectations/filter/bugs/operators.txt +2 -0
- data/spec/rspec/expectations/filter/bugs/raise_error.txt +2 -0
- data/spec/rspec/expectations/filter/bugs/respond_to.rb +13 -0
- data/spec/rspec/expectations/filter/bugs/sandbox/undef.rb +20 -0
- data/spec/rspec/expectations/filter/unsupported/aliases.txt +5 -0
- data/spec/rspec/expectations/filter/unsupported/be.txt +2 -0
- data/spec/rspec/expectations/filter/unsupported/be_instance_of.txt +3 -0
- data/spec/rspec/expectations/filter/unsupported/change.txt +2 -0
- data/spec/rspec/expectations/filter/unsupported/configuration.txt +2 -0
- data/spec/rspec/expectations/filter/unsupported/contain_exactly.txt +2 -0
- data/spec/rspec/expectations/filter/unsupported/description_generation.txt +6 -0
- data/spec/rspec/expectations/filter/unsupported/dsl.txt +8 -0
- data/spec/rspec/expectations/filter/unsupported/eq.txt +10 -0
- data/spec/rspec/expectations/filter/unsupported/equal.txt +3 -0
- data/spec/rspec/expectations/filter/unsupported/expectation_target.txt +2 -0
- data/spec/rspec/expectations/filter/unsupported/expectations.txt +8 -0
- data/spec/rspec/expectations/filter/unsupported/has.txt +2 -0
- data/spec/rspec/expectations/filter/unsupported/include.txt +3 -0
- data/spec/rspec/expectations/filter/unsupported/match.txt +2 -0
- data/spec/rspec/expectations/filter/unsupported/matchers.txt +11 -0
- data/spec/rspec/expectations/filter/unsupported/output.txt +14 -0
- data/spec/rspec/expectations/filter/unsupported/raise_error.txt +3 -0
- data/spec/rspec/expectations/filter/unsupported/respond_to.rb +5 -0
- data/spec/rspec/expectations/filter/unsupported/syntax.txt +3 -0
- data/spec/rspec/expectations/filter/unsupported/yield.txt +2 -0
- data/spec/rspec/expectations/fixes/example_patches.rb +32 -0
- data/spec/rspec/expectations/fixes/missing_constants.rb +12 -0
- data/spec/rspec/expectations/fixes/not_compatible.rb +6 -0
- data/spec/rspec/expectations/fixes/opal_itself.rb +140 -0
- data/spec/rspec/expectations/opal_alternates/be_instance_of_spec.rb +11 -0
- data/spec/rspec/expectations/opal_alternates/dsl_spec.rb +66 -0
- data/spec/rspec/expectations/opal_alternates/expectation_target_spec.rb +21 -0
- data/spec/rspec/expectations/opal_alternates/yield_spec.rb +11 -0
- data/spec/rspec/expectations/require_specs.rb +16 -0
- data/spec/rspec/expectations/shared_examples.rb +47 -0
- data/spec/rspec/expectations/spec_files_exclude.txt +2 -0
- data/spec/rspec/expectations/spec_helper_opal.rb +13 -0
- data/spec/rspec/filter_processor.rb +77 -0
- data/spec/rspec/mocks/config.ru +4 -0
- data/spec/rspec/mocks/filter/bugs/and_call_original.txt +9 -0
- data/spec/rspec/mocks/filter/bugs/and_wrap_original.txt +2 -0
- data/spec/rspec/mocks/filter/bugs/any_instance.rb +24 -0
- data/spec/rspec/mocks/filter/bugs/argument_matchers.rb +3 -0
- data/spec/rspec/mocks/filter/bugs/configuration.txt +2 -0
- data/spec/rspec/mocks/filter/bugs/double.txt +3 -0
- data/spec/rspec/mocks/filter/bugs/expiration.txt +2 -0
- data/spec/rspec/mocks/filter/bugs/instance_method_stasher.txt +2 -0
- data/spec/rspec/mocks/filter/bugs/methods.rb +5 -0
- data/spec/rspec/mocks/filter/bugs/mocks.txt +6 -0
- data/spec/rspec/mocks/filter/bugs/mutate_const.txt +2 -0
- data/spec/rspec/mocks/filter/bugs/partial_double.rb +8 -0
- data/spec/rspec/mocks/filter/bugs/receive.txt +5 -0
- data/spec/rspec/mocks/filter/bugs/should_syntax.txt +5 -0
- data/spec/rspec/mocks/filter/bugs/space.txt +2 -0
- data/spec/rspec/mocks/filter/bugs/spy.txt +5 -0
- data/spec/rspec/mocks/filter/bugs/stub_implementation.rb +9 -0
- data/spec/rspec/mocks/filter/unsupported/and_call_original.txt +5 -0
- data/spec/rspec/mocks/filter/unsupported/and_return.txt +2 -0
- data/spec/rspec/mocks/filter/unsupported/any_instance.rb +6 -0
- data/spec/rspec/mocks/filter/unsupported/argument_matchers.rb +10 -0
- data/spec/rspec/mocks/filter/unsupported/combining_implementation_instructions.rb +9 -0
- data/spec/rspec/mocks/filter/unsupported/double.rb +16 -0
- data/spec/rspec/mocks/filter/unsupported/expected_arg_verification.txt +2 -0
- data/spec/rspec/mocks/filter/unsupported/have_received.txt +2 -0
- data/spec/rspec/mocks/filter/unsupported/instance_double_with_class_loaded.txt +8 -0
- data/spec/rspec/mocks/filter/unsupported/mocks.rb +8 -0
- data/spec/rspec/mocks/filter/unsupported/nil_expectation_warning.rb +8 -0
- data/spec/rspec/mocks/filter/unsupported/partial_double.rb +6 -0
- data/spec/rspec/mocks/filter/unsupported/receive.txt +13 -0
- data/spec/rspec/mocks/filter/unsupported/receive_message_chain.rb +4 -0
- data/spec/rspec/mocks/filter/unsupported/receive_messages.txt +2 -0
- data/spec/rspec/mocks/filter/unsupported/should_syntax.txt +1 -0
- data/spec/rspec/mocks/filter/unsupported/space.rb +7 -0
- data/spec/rspec/mocks/filter/unsupported/stub.rb +7 -0
- data/spec/rspec/mocks/fixes/doubled_classes.rb +76 -0
- data/spec/rspec/mocks/fixes/missing_constants.rb +3 -0
- data/spec/rspec/mocks/fixes/opal_itself.rb +59 -0
- data/spec/rspec/mocks/mocks_spec_loader.rb +91 -0
- data/spec/rspec/mocks/require_specs.rb +15 -0
- data/spec/rspec/mocks/spec_files_exclude.txt +11 -0
- data/spec/rspec/mocks/spec_helper_opal.rb +129 -0
- data/spec/rspec/opal_rspec_spec_loader.rb +359 -0
- data/spec/rspec/shared/opal/fixes/deprecation_helpers.rb +31 -0
- data/spec/rspec/shared/opal/fixes/rspec_helpers.rb +6 -0
- data/spec/rspec/shared/opal/progress_json_formatter.rb +29 -0
- data/spec/rspec/support/config.rb +5 -0
- data/spec/rspec/support/config.ru +4 -0
- data/spec/rspec/support/filter/bugs/recursive_const_methods.txt +3 -0
- data/spec/rspec/support/filter/bugs/sandbox/basic_object.rb +30 -0
- data/spec/rspec/support/filter/bugs/stderr_splitter_spec.txt +2 -0
- data/spec/rspec/support/filter/bugs/support.txt +2 -0
- data/spec/rspec/support/filter/unsupported/fuzzy_matcher.txt +2 -0
- data/spec/rspec/support/filter/unsupported/support.rb +7 -0
- data/spec/rspec/support/filter/unsupported/warnings.txt +6 -0
- data/spec/rspec/support/fixes/missing_constants.rb +3 -0
- data/spec/rspec/support/fixes/opal_itself.rb +13 -0
- data/spec/rspec/support/require_specs.rb +15 -0
- data/spec/rspec/support/spec_files_exclude.txt +26 -0
- data/spec/rspec/support/spec_helper.rb +27 -0
- data/spec/rspec/support/support_spec_loader.rb +38 -0
- data/util/create_requires.rb +49 -0
- data/vendor/spec_runner.js +64 -0
- metadata +774 -0
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
module RSpec::Mocks::Matchers
|
|
2
|
+
RSpec.describe "receive_message_chain" do
|
|
3
|
+
let(:object) { double(:object) }
|
|
4
|
+
|
|
5
|
+
context "with only the expect syntax enabled" do
|
|
6
|
+
include_context "with syntax", :expect
|
|
7
|
+
|
|
8
|
+
it "errors with a negative allowance" do
|
|
9
|
+
expect {
|
|
10
|
+
allow(object).not_to receive_message_chain(:to_a)
|
|
11
|
+
}.to raise_error(RSpec::Mocks::NegationUnsupportedError)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "errors with a negative expectation" do
|
|
15
|
+
expect {
|
|
16
|
+
expect(object).not_to receive_message_chain(:to_a)
|
|
17
|
+
}.to raise_error(RSpec::Mocks::NegationUnsupportedError)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "errors with a negative any_instance expectation" do
|
|
21
|
+
expect {
|
|
22
|
+
expect_any_instance_of(Object).not_to receive_message_chain(:to_a)
|
|
23
|
+
}.to raise_error(RSpec::Mocks::NegationUnsupportedError)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "errors with a negative any_instance allowance" do
|
|
27
|
+
expect {
|
|
28
|
+
allow_any_instance_of(Object).not_to receive_message_chain(:to_a)
|
|
29
|
+
}.to raise_error(RSpec::Mocks::NegationUnsupportedError)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "works with a do block" do
|
|
33
|
+
allow(object).to receive_message_chain(:to_a, :length) do
|
|
34
|
+
3
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
expect(object.to_a.length).to eq(3)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "works with a {} block" do
|
|
41
|
+
allow(object).to receive_message_chain(:to_a, :length) { 3 }
|
|
42
|
+
|
|
43
|
+
expect(object.to_a.length).to eq(3)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "gives the { } block prescedence over the do block" do
|
|
47
|
+
allow(object).to receive_message_chain(:to_a, :length) { 3 } do
|
|
48
|
+
4
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
expect(object.to_a.length).to eq(3)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "works with and_return" do
|
|
55
|
+
allow(object).to receive_message_chain(:to_a, :length).and_return(3)
|
|
56
|
+
|
|
57
|
+
expect(object.to_a.length).to eq(3)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "can constrain the return value by the argument to the last call" do
|
|
61
|
+
allow(object).to receive_message_chain(:one, :plus).with(1) { 2 }
|
|
62
|
+
allow(object).to receive_message_chain(:one, :plus).with(2) { 3 }
|
|
63
|
+
expect(object.one.plus(1)).to eq(2)
|
|
64
|
+
expect(object.one.plus(2)).to eq(3)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "works with and_call_original", :pending => "See https://github.com/rspec/rspec-mocks/pull/467#issuecomment-28631621" do
|
|
68
|
+
list = [1, 2, 3]
|
|
69
|
+
expect(list).to receive_message_chain(:to_a, :length).and_call_original
|
|
70
|
+
expect(list.to_a.length).to eq(3)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "fails with and_call_original when the entire chain is not called", :pending => "See https://github.com/rspec/rspec-mocks/pull/467#issuecomment-28631621" do
|
|
74
|
+
list = [1, 2, 3]
|
|
75
|
+
expect(list).to receive_message_chain(:to_a, :length).and_call_original
|
|
76
|
+
expect(list.to_a).to eq([1, 2, 3])
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "works with and_raise" do
|
|
80
|
+
allow(object).to receive_message_chain(:to_a, :length).and_raise(StandardError.new("hi"))
|
|
81
|
+
|
|
82
|
+
expect { object.to_a.length }.to raise_error(StandardError, "hi")
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it "works with and_throw" do
|
|
86
|
+
allow(object).to receive_message_chain(:to_a, :length).and_throw(:nope)
|
|
87
|
+
|
|
88
|
+
expect { object.to_a.length }.to throw_symbol(:nope)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it "works with and_yield" do
|
|
92
|
+
allow(object).to receive_message_chain(:to_a, :length).and_yield(3)
|
|
93
|
+
|
|
94
|
+
expect { |blk| object.to_a.length(&blk) }.to yield_with_args(3)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "works with a string of messages to chain" do
|
|
98
|
+
allow(object).to receive_message_chain("to_a.length").and_yield(3)
|
|
99
|
+
|
|
100
|
+
expect { |blk| object.to_a.length(&blk) }.to yield_with_args(3)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "works with a hash return as the last argument in the chain" do
|
|
104
|
+
allow(object).to receive_message_chain(:to_a, :length => 3)
|
|
105
|
+
|
|
106
|
+
expect(object.to_a.length).to eq(3)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "accepts any number of arguments to the stubbed messages" do
|
|
110
|
+
allow(object).to receive_message_chain(:msg1, :msg2).and_return(:return_value)
|
|
111
|
+
|
|
112
|
+
expect(object.msg1("nonsense", :value).msg2("another", :nonsense, 3.0, "value")).to eq(:return_value)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
it "accepts any number of arguments to the stubbed messages with an inline hash return value" do
|
|
116
|
+
allow(object).to receive_message_chain(:msg1, :msg2 => :return_value)
|
|
117
|
+
|
|
118
|
+
expect(object.msg1("nonsense", :value).msg2("another", :nonsense, 3.0, "value")).to eq(:return_value)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it "raises when expect is used and some of the messages in the chain aren't called" do
|
|
122
|
+
expect {
|
|
123
|
+
expect(object).to receive_message_chain(:to_a, :farce, :length => 3)
|
|
124
|
+
object.to_a
|
|
125
|
+
verify_all
|
|
126
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it "raises when expect is used and all but the last message in the chain are called" do
|
|
130
|
+
expect {
|
|
131
|
+
expect(object).to receive_message_chain(:foo, :bar, :baz)
|
|
132
|
+
object.foo.bar
|
|
133
|
+
verify_all
|
|
134
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
it "does not raise when expect is used and the entire chain is called" do
|
|
138
|
+
expect {
|
|
139
|
+
expect(object).to receive_message_chain(:to_a, :length => 3)
|
|
140
|
+
object.to_a.length
|
|
141
|
+
verify_all
|
|
142
|
+
}.not_to raise_error
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it "works with allow_any_instance" do
|
|
146
|
+
o = Object.new
|
|
147
|
+
|
|
148
|
+
allow_any_instance_of(Object).to receive_message_chain(:to_a, :length => 3)
|
|
149
|
+
|
|
150
|
+
expect(o.to_a.length).to eq(3)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
it "stubs already stubbed instances when using `allow_any_instance_of`" do
|
|
154
|
+
o = Object.new
|
|
155
|
+
allow(o).to receive(:foo).and_return(dbl = double)
|
|
156
|
+
expect(o.foo).to be(dbl)
|
|
157
|
+
|
|
158
|
+
allow_any_instance_of(Object).to receive_message_chain(:foo, :bar).and_return("bazz")
|
|
159
|
+
expect(o.foo.bar).to eq("bazz")
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
it "fails when with expect_any_instance_of is used and the entire chain is not called" do
|
|
163
|
+
expect {
|
|
164
|
+
expect_any_instance_of(Object).to receive_message_chain(:to_a, :length => 3)
|
|
165
|
+
verify_all
|
|
166
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it "affects previously stubbed instances when `expect_any_instance_of` is called" do
|
|
170
|
+
o = Object.new
|
|
171
|
+
allow(o).to receive(:foo).and_return(double)
|
|
172
|
+
|
|
173
|
+
expect_any_instance_of(Object).to receive_message_chain(:foo, :bar => 3)
|
|
174
|
+
expect(o.foo.bar).to eq(3)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
it "passes when with expect_any_instance_of is used and the entire chain is called" do
|
|
178
|
+
o = Object.new
|
|
179
|
+
|
|
180
|
+
expect_any_instance_of(Object).to receive_message_chain(:to_a, :length => 3)
|
|
181
|
+
o.to_a.length
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it "works with expect where the first level of the chain is already expected" do
|
|
185
|
+
o = Object.new
|
|
186
|
+
expect(o).to receive(:foo).and_return(double)
|
|
187
|
+
expect(o).to receive_message_chain(:foo, :bar, :baz)
|
|
188
|
+
|
|
189
|
+
o.foo.bar.baz
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
it "works with allow where the first level of the chain is already expected" do
|
|
193
|
+
o = Object.new
|
|
194
|
+
expect(o).to receive(:foo).and_return(double)
|
|
195
|
+
allow(o).to receive_message_chain(:foo, :bar, :baz).and_return(3)
|
|
196
|
+
|
|
197
|
+
expect(o.foo.bar.baz).to eq(3)
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
it "works with expect where the first level of the chain is already stubbed" do
|
|
201
|
+
o = Object.new
|
|
202
|
+
allow(o).to receive(:foo).and_return(double)
|
|
203
|
+
expect(o).to receive_message_chain(:foo, :bar, :baz)
|
|
204
|
+
|
|
205
|
+
o.foo.bar.baz
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
it "works with allow where the first level of the chain is already stubbed" do
|
|
209
|
+
o = Object.new
|
|
210
|
+
allow(o).to receive(:foo).and_return(double)
|
|
211
|
+
allow(o).to receive_message_chain(:foo, :bar, :baz).and_return(3)
|
|
212
|
+
|
|
213
|
+
expect(o.foo.bar.baz).to eq(3)
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
context "when the expect and should syntaxes are enabled" do
|
|
218
|
+
include_context "with syntax", [:expect, :should]
|
|
219
|
+
|
|
220
|
+
it "stubs the message correctly" do
|
|
221
|
+
allow(object).to receive_message_chain(:to_a, :length)
|
|
222
|
+
|
|
223
|
+
expect { object.to_a.length }.not_to raise_error
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
end
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Mocks
|
|
3
|
+
RSpec.shared_examples "complains when given blocks" do
|
|
4
|
+
it "complains if a { } block is given" do
|
|
5
|
+
expect {
|
|
6
|
+
target.to receive_messages(:a => 1) { "implementation" }
|
|
7
|
+
}.to raise_error "Implementation blocks aren't supported with `receive_messages`"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "complains if a do; end; block is given" do
|
|
11
|
+
expect {
|
|
12
|
+
target.to receive_messages(:a => 1) do
|
|
13
|
+
"implementation"
|
|
14
|
+
end
|
|
15
|
+
}.to raise_error "Implementation blocks aren't supported with `receive_messages`"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
RSpec.shared_examples "handles partially mocked objects correctly" do
|
|
20
|
+
let(:obj) { Struct.new(:a).new('original') }
|
|
21
|
+
|
|
22
|
+
it "resets partially mocked objects correctly" do
|
|
23
|
+
target.to receive_messages(:a => 1, :b => 2)
|
|
24
|
+
|
|
25
|
+
expect {
|
|
26
|
+
reset obj
|
|
27
|
+
}.to change { obj.a }.from(1).to("original")
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
RSpec.describe "allow(...).to receive_messages(:a => 1, :b => 2)" do
|
|
32
|
+
let(:obj) { double "Object" }
|
|
33
|
+
let(:target) { allow(obj) }
|
|
34
|
+
|
|
35
|
+
it "allows the object to respond to multiple messages" do
|
|
36
|
+
allow(obj).to receive_messages(:a => 1, :b => 2)
|
|
37
|
+
expect(obj.a).to eq 1
|
|
38
|
+
expect(obj.b).to eq 2
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it_behaves_like "complains when given blocks"
|
|
42
|
+
it_behaves_like "handles partially mocked objects correctly"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
RSpec.describe "allow_any_instance_of(...).to receive_messages(:a => 1, :b => 2)" do
|
|
46
|
+
let(:obj) { Object.new }
|
|
47
|
+
let(:target) { allow_any_instance_of(Object) }
|
|
48
|
+
|
|
49
|
+
it "allows the object to respond to multiple messages" do
|
|
50
|
+
allow_any_instance_of(Object).to receive_messages(:a => 1, :b => 2)
|
|
51
|
+
expect(obj.a).to eq 1
|
|
52
|
+
expect(obj.b).to eq 2
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "updates stubs on instances with existing stubs" do
|
|
56
|
+
allow(obj).to receive(:a).and_return(3)
|
|
57
|
+
expect(obj.a).to eq(3)
|
|
58
|
+
|
|
59
|
+
allow_any_instance_of(Object).to receive_messages(:a => 1, :b => 2)
|
|
60
|
+
expect(obj.a).to eq 1
|
|
61
|
+
expect(obj.b).to eq 2
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it_behaves_like "complains when given blocks"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
RSpec.describe "expect(...).to receive_messages(:a => 1, :b => 2)" do
|
|
68
|
+
let(:obj) { double "Object" }
|
|
69
|
+
let(:target) { expect(obj) }
|
|
70
|
+
|
|
71
|
+
let(:expectation_error) do
|
|
72
|
+
failure = nil
|
|
73
|
+
begin
|
|
74
|
+
verify_all
|
|
75
|
+
rescue RSpec::Mocks::MockExpectationError => error
|
|
76
|
+
failure = error
|
|
77
|
+
end
|
|
78
|
+
failure
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "sets up multiple expectations" do
|
|
82
|
+
expect(obj).to receive_messages(:a => 1, :b => 2)
|
|
83
|
+
obj.a
|
|
84
|
+
expect { verify_all }.to raise_error RSpec::Mocks::MockExpectationError
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it 'fails with a sensible message' do
|
|
88
|
+
expect(obj).to receive_messages(:a => 1, :b => 2)
|
|
89
|
+
obj.b
|
|
90
|
+
expect(expectation_error.to_s).to eq %Q{(Double "Object").a(no args)\n expected: 1 time with any arguments\n received: 0 times}
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it 'fails with the correct location' do
|
|
94
|
+
expect(obj).to receive_messages(:a => 1, :b => 2); line = __LINE__
|
|
95
|
+
expect(expectation_error.backtrace[0]).to match(/#{__FILE__}:#{line}/)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it_behaves_like "complains when given blocks"
|
|
99
|
+
it_behaves_like "handles partially mocked objects correctly"
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
RSpec.describe "expect_any_instance_of(...).to receive_messages(:a => 1, :b => 2)" do
|
|
103
|
+
let(:obj) { Object.new }
|
|
104
|
+
let(:target) { expect_any_instance_of(Object) }
|
|
105
|
+
|
|
106
|
+
it "sets up multiple expectations" do
|
|
107
|
+
expect_any_instance_of(Object).to receive_messages(:a => 1, :b => 2)
|
|
108
|
+
obj.a
|
|
109
|
+
expect { RSpec::Mocks.space.verify_all }.to raise_error RSpec::Mocks::MockExpectationError
|
|
110
|
+
RSpec::Mocks.space.reset_all
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it_behaves_like "complains when given blocks"
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
RSpec.describe "negative expectation failure" do
|
|
117
|
+
let(:obj) { Object.new }
|
|
118
|
+
|
|
119
|
+
example "allow(...).to_not receive_messages(:a => 1, :b => 2)" do
|
|
120
|
+
expect { allow(obj).to_not receive_messages(:a => 1, :b => 2) }.to(
|
|
121
|
+
raise_error "`allow(...).to_not receive_messages` is not supported "+
|
|
122
|
+
"since it doesn't really make sense. What would it even mean?"
|
|
123
|
+
)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
example "allow_any_instance_of(...).to_not receive_messages(:a => 1, :b => 2)" do
|
|
127
|
+
expect { allow_any_instance_of(obj).to_not receive_messages(:a => 1, :b => 2) }.to(
|
|
128
|
+
raise_error "`allow_any_instance_of(...).to_not receive_messages` is not supported "+
|
|
129
|
+
"since it doesn't really make sense. What would it even mean?"
|
|
130
|
+
)
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
example "expect(...).to_not receive_messages(:a => 1, :b => 2)" do
|
|
134
|
+
expect { expect(obj).to_not receive_messages(:a => 1, :b => 2) }.to(
|
|
135
|
+
raise_error "`expect(...).to_not receive_messages` is not supported "+
|
|
136
|
+
"since it doesn't really make sense. What would it even mean?"
|
|
137
|
+
)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
example "expect_any_instance_of(...).to_not receive_messages(:a => 1, :b => 2)" do
|
|
141
|
+
expect { expect_any_instance_of(obj).to_not receive_messages(:a => 1, :b => 2) }.to(
|
|
142
|
+
raise_error "`expect_any_instance_of(...).to_not receive_messages` is not supported "+
|
|
143
|
+
"since it doesn't really make sense. What would it even mean?"
|
|
144
|
+
)
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
@@ -0,0 +1,525 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Mocks
|
|
3
|
+
RSpec.describe Matchers::Receive do
|
|
4
|
+
include_context "with syntax", :expect
|
|
5
|
+
|
|
6
|
+
describe "expectations/allowances on any instance recorders" do
|
|
7
|
+
include_context "with syntax", [:expect, :should]
|
|
8
|
+
|
|
9
|
+
it "warns about allow(Klass.any_instance).to receive..." do
|
|
10
|
+
expect(RSpec).to receive(:warning).with(/allow.*any_instance.*is probably not what you meant.*allow_any_instance_of.*instead/)
|
|
11
|
+
allow(Object.any_instance).to receive(:foo)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "includes the correct call site in the allow warning" do
|
|
15
|
+
expect_warning_with_call_site(__FILE__, __LINE__ + 1)
|
|
16
|
+
allow(Object.any_instance).to receive(:foo)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "warns about expect(Klass.any_instance).to receive..." do
|
|
20
|
+
expect(RSpec).to receive(:warning).with(/expect.*any_instance.*is probably not what you meant.*expect_any_instance_of.*instead/)
|
|
21
|
+
any_instance_proxy = Object.any_instance
|
|
22
|
+
expect(any_instance_proxy).to receive(:foo)
|
|
23
|
+
any_instance_proxy.foo
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "includes the correct call site in the expect warning" do
|
|
27
|
+
any_instance_proxy = Object.any_instance
|
|
28
|
+
expect_warning_with_call_site(__FILE__, __LINE__ + 1)
|
|
29
|
+
expect(any_instance_proxy).to receive(:foo)
|
|
30
|
+
any_instance_proxy.foo
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
shared_examples "a receive matcher" do |*options|
|
|
35
|
+
it 'allows the caller to configure how the subject responds' do
|
|
36
|
+
wrapped.to receive(:foo).and_return(5)
|
|
37
|
+
expect(receiver.foo).to eq(5)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it 'allows the caller to constrain the received arguments' do
|
|
41
|
+
wrapped.to receive(:foo).with(:a)
|
|
42
|
+
receiver.foo(:a)
|
|
43
|
+
|
|
44
|
+
expect {
|
|
45
|
+
receiver.foo(:b)
|
|
46
|
+
}.to raise_error(/received :foo with unexpected arguments/)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it 'allows the caller to constrain the received arguments by matcher' do
|
|
50
|
+
wrapped.to receive(:foo).with an_instance_of Fixnum
|
|
51
|
+
expect {
|
|
52
|
+
receiver.foo(1.1)
|
|
53
|
+
}.to raise_error(/expected.*\(an instance of Fixnum\)/)
|
|
54
|
+
receiver.foo(1)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it 'allows a `do...end` block implementation to be provided' do
|
|
58
|
+
wrapped.to receive(:foo) do
|
|
59
|
+
4
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
expect(receiver.foo).to eq(4)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
it 'allows chaining off a `do...end` block implementation to be provided' do
|
|
66
|
+
wrapped.to receive(:foo) do
|
|
67
|
+
4
|
|
68
|
+
end.and_return(6)
|
|
69
|
+
|
|
70
|
+
expect(receiver.foo).to eq(6)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it 'allows a `{ ... }` block implementation to be provided' do
|
|
74
|
+
wrapped.to receive(:foo) { 5 }
|
|
75
|
+
expect(receiver.foo).to eq(5)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it 'gives precedence to a `{ ... }` block when both forms are provided ' +
|
|
79
|
+
'since that form actually binds to `receive`' do
|
|
80
|
+
wrapped.to receive(:foo) { :curly } do
|
|
81
|
+
:do_end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
expect(receiver.foo).to eq(:curly)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it 'does not support other matchers', :unless => options.include?(:allow_other_matchers) do
|
|
88
|
+
expect {
|
|
89
|
+
wrapped.to eq(3)
|
|
90
|
+
}.to raise_error(UnsupportedMatcherError)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it 'does not get confused by messages being passed as strings and symbols' do
|
|
94
|
+
wrapped.to receive(:foo).with(1) { :a }
|
|
95
|
+
wrapped.to receive("foo").with(2) { :b }
|
|
96
|
+
|
|
97
|
+
expect(receiver.foo(1)).to eq(:a)
|
|
98
|
+
expect(receiver.foo(2)).to eq(:b)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it 'allows do...end blocks to be passed to the fluent interface methods without getting a warning' do
|
|
102
|
+
expect(RSpec).not_to receive(:warning)
|
|
103
|
+
|
|
104
|
+
wrapped.to receive(:foo).with(1) do
|
|
105
|
+
:a
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
expect(receiver.foo(1)).to eq(:a)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it 'makes { } blocks trump do...end blocks when passed to a fluent interface method' do
|
|
112
|
+
wrapped.to receive(:foo).with(1) { :curly } do
|
|
113
|
+
:do_end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
expect(receiver.foo(1)).to eq(:curly)
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
shared_examples "an expect syntax allowance" do |*options|
|
|
121
|
+
it_behaves_like "a receive matcher", *options
|
|
122
|
+
|
|
123
|
+
it 'does not expect the message to be received' do
|
|
124
|
+
wrapped.to receive(:foo)
|
|
125
|
+
expect { verify_all }.not_to raise_error
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
shared_examples "an expect syntax negative allowance" do
|
|
130
|
+
it 'is disabled since this expression is confusing' do
|
|
131
|
+
expect {
|
|
132
|
+
wrapped.not_to receive(:foo)
|
|
133
|
+
}.to raise_error(/not_to receive` is not supported/)
|
|
134
|
+
|
|
135
|
+
expect {
|
|
136
|
+
wrapped.to_not receive(:foo)
|
|
137
|
+
}.to raise_error(/to_not receive` is not supported/)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
shared_examples "an expect syntax expectation" do |*options|
|
|
142
|
+
it_behaves_like "a receive matcher", *options
|
|
143
|
+
|
|
144
|
+
it 'sets up a message expectation that passes if the message is received' do
|
|
145
|
+
wrapped.to receive(:foo)
|
|
146
|
+
receiver.foo
|
|
147
|
+
verify_all
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
it 'sets up a message expectation that fails if the message is not received' do
|
|
151
|
+
wrapped.to receive(:foo)
|
|
152
|
+
|
|
153
|
+
expect {
|
|
154
|
+
verify_all
|
|
155
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it "reports the line number of expectation of unreceived message", :pending => options.include?(:does_not_report_line_num) do
|
|
159
|
+
expected_error_line = __LINE__; wrapped.to receive(:foo)
|
|
160
|
+
|
|
161
|
+
expect {
|
|
162
|
+
verify_all
|
|
163
|
+
}.to raise_error { |e|
|
|
164
|
+
expect(e.backtrace.first).to match(/#{File.basename(__FILE__)}:#{expected_error_line}/)
|
|
165
|
+
}
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
shared_examples "an expect syntax negative expectation" do
|
|
170
|
+
it 'sets up a negaive message expectation that passes if the message is not received' do
|
|
171
|
+
wrapped.not_to receive(:foo)
|
|
172
|
+
verify_all
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
it 'sets up a negative message expectation that fails if the message is received' do
|
|
176
|
+
wrapped.not_to receive(:foo)
|
|
177
|
+
|
|
178
|
+
expect {
|
|
179
|
+
receiver.foo
|
|
180
|
+
}.to raise_error(/expected: 0 times.*received: 1 time/m)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
it 'supports `to_not` as an alias for `not_to`' do
|
|
184
|
+
wrapped.to_not receive(:foo)
|
|
185
|
+
|
|
186
|
+
expect {
|
|
187
|
+
receiver.foo
|
|
188
|
+
}.to raise_error(/expected: 0 times.*received: 1 time/m)
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
it 'allows the caller to constrain the received arguments' do
|
|
192
|
+
wrapped.not_to receive(:foo).with(:a)
|
|
193
|
+
def receiver.method_missing(*a); end # a poor man's stub...
|
|
194
|
+
|
|
195
|
+
expect {
|
|
196
|
+
receiver.foo(:b)
|
|
197
|
+
}.not_to raise_error
|
|
198
|
+
|
|
199
|
+
expect {
|
|
200
|
+
receiver.foo(:a)
|
|
201
|
+
}.to raise_error(/expected: 0 times.*received: 1 time/m)
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
it 'prevents confusing double-negative expressions involving `never`' do
|
|
205
|
+
expect {
|
|
206
|
+
wrapped.not_to receive(:foo).never
|
|
207
|
+
}.to raise_error(/trying to negate it again/)
|
|
208
|
+
|
|
209
|
+
expect {
|
|
210
|
+
wrapped.to_not receive(:foo).never
|
|
211
|
+
}.to raise_error(/trying to negate it again/)
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
shared_examples "resets partial mocks cleanly" do
|
|
216
|
+
let(:klass) { Struct.new(:foo) }
|
|
217
|
+
let(:object) { klass.new :bar }
|
|
218
|
+
|
|
219
|
+
it "removes the method double" do
|
|
220
|
+
target.to receive(:foo).and_return(:baz)
|
|
221
|
+
expect { reset object }.to change { object.foo }.from(:baz).to(:bar)
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
context "on a frozen object" do
|
|
225
|
+
it "warns about being unable to remove the method double" do
|
|
226
|
+
target.to receive(:foo).and_return(:baz)
|
|
227
|
+
expect_warning_without_call_site(/rspec-mocks was unable to restore the original `foo` method on #{object.inspect}/)
|
|
228
|
+
object.freeze
|
|
229
|
+
reset object
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
it "includes the spec location in the warning" do
|
|
233
|
+
line = __LINE__ - 1
|
|
234
|
+
target.to receive(:foo).and_return(:baz)
|
|
235
|
+
expect_warning_without_call_site(/#{RSpec::Core::Metadata.relative_path(__FILE__)}:#{line}/)
|
|
236
|
+
object.freeze
|
|
237
|
+
reset object
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
shared_examples "resets partial mocks of any instance cleanly" do
|
|
243
|
+
let(:klass) { Struct.new(:foo) }
|
|
244
|
+
let(:object) { klass.new :bar }
|
|
245
|
+
|
|
246
|
+
it "removes the method double" do
|
|
247
|
+
target.to receive(:foo).and_return(:baz)
|
|
248
|
+
expect {
|
|
249
|
+
verify_all
|
|
250
|
+
}.to change { object.foo }.from(:baz).to(:bar)
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
describe "allow(...).to receive" do
|
|
255
|
+
it_behaves_like "an expect syntax allowance" do
|
|
256
|
+
let(:receiver) { double }
|
|
257
|
+
let(:wrapped) { allow(receiver) }
|
|
258
|
+
end
|
|
259
|
+
it_behaves_like "resets partial mocks cleanly" do
|
|
260
|
+
let(:target) { allow(object) }
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
describe "allow(...).not_to receive" do
|
|
265
|
+
it_behaves_like "an expect syntax negative allowance" do
|
|
266
|
+
let(:wrapped) { allow(double) }
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
describe "allow_any_instance_of(...).to receive" do
|
|
271
|
+
it_behaves_like "an expect syntax allowance" do
|
|
272
|
+
let(:klass) { Class.new }
|
|
273
|
+
let(:wrapped) { allow_any_instance_of(klass) }
|
|
274
|
+
let(:receiver) { klass.new }
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
it_behaves_like "resets partial mocks of any instance cleanly" do
|
|
278
|
+
let(:target) { allow_any_instance_of(klass) }
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
describe "allow_any_instance_of(...).not_to receive" do
|
|
283
|
+
it_behaves_like "an expect syntax negative allowance" do
|
|
284
|
+
let(:wrapped) { allow_any_instance_of(Class.new) }
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
describe "expect(...).to receive" do
|
|
289
|
+
it_behaves_like "an expect syntax expectation", :allow_other_matchers do
|
|
290
|
+
let(:receiver) { double }
|
|
291
|
+
let(:wrapped) { expect(receiver) }
|
|
292
|
+
|
|
293
|
+
it 'sets up a message expectation that formats argument matchers correctly' do
|
|
294
|
+
wrapped.to receive(:foo).with an_instance_of Fixnum
|
|
295
|
+
expect { verify_all }.to(
|
|
296
|
+
raise_error(/expected: 1 time with arguments: \(an instance of Fixnum\)\n\s+received: 0 times$/)
|
|
297
|
+
)
|
|
298
|
+
end
|
|
299
|
+
end
|
|
300
|
+
it_behaves_like "resets partial mocks cleanly" do
|
|
301
|
+
let(:target) { expect(object) }
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
context "ordered with receive counts" do
|
|
305
|
+
let(:dbl) { double(:one => 1, :two => 2) }
|
|
306
|
+
|
|
307
|
+
it "passes with exact receive counts when the ordering is correct" do
|
|
308
|
+
expect(dbl).to receive(:one).twice.ordered
|
|
309
|
+
expect(dbl).to receive(:two).once.ordered
|
|
310
|
+
|
|
311
|
+
dbl.one
|
|
312
|
+
dbl.one
|
|
313
|
+
dbl.two
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
it "fails with exact receive counts when the ordering is incorrect" do
|
|
317
|
+
expect {
|
|
318
|
+
expect(dbl).to receive(:one).twice.ordered
|
|
319
|
+
expect(dbl).to receive(:two).once.ordered
|
|
320
|
+
|
|
321
|
+
dbl.one
|
|
322
|
+
dbl.two
|
|
323
|
+
dbl.one
|
|
324
|
+
}.to raise_error(/out of order/)
|
|
325
|
+
|
|
326
|
+
reset_all
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
it "passes with at least when the ordering is correct" do
|
|
330
|
+
expect(dbl).to receive(:one).at_least(2).times.ordered
|
|
331
|
+
expect(dbl).to receive(:two).once.ordered
|
|
332
|
+
|
|
333
|
+
dbl.one
|
|
334
|
+
dbl.one
|
|
335
|
+
dbl.one
|
|
336
|
+
dbl.two
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
pending "fails with at least when the ordering is incorrect" do
|
|
340
|
+
expect {
|
|
341
|
+
expect(dbl).to receive(:one).at_least(2).times.ordered
|
|
342
|
+
expect(dbl).to receive(:two).once.ordered
|
|
343
|
+
|
|
344
|
+
dbl.one
|
|
345
|
+
dbl.two
|
|
346
|
+
}.to raise_error
|
|
347
|
+
|
|
348
|
+
reset_all
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
it "passes with at most when the ordering is correct" do
|
|
352
|
+
expect(dbl).to receive(:one).at_most(2).times.ordered
|
|
353
|
+
expect(dbl).to receive(:two).once.ordered
|
|
354
|
+
|
|
355
|
+
dbl.one
|
|
356
|
+
dbl.two
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
pending "fails with at most when the ordering is incorrect" do
|
|
360
|
+
expect {
|
|
361
|
+
expect(dbl).to receive(:one).at_most(2).times.ordered
|
|
362
|
+
expect(dbl).to receive(:two).once.ordered
|
|
363
|
+
|
|
364
|
+
dbl.one
|
|
365
|
+
dbl.one
|
|
366
|
+
dbl.one
|
|
367
|
+
dbl.two
|
|
368
|
+
}.to raise_error
|
|
369
|
+
|
|
370
|
+
reset_all
|
|
371
|
+
end
|
|
372
|
+
end
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
describe "expect_any_instance_of(...).to receive" do
|
|
376
|
+
it_behaves_like "an expect syntax expectation", :does_not_report_line_num do
|
|
377
|
+
let(:klass) { Class.new }
|
|
378
|
+
let(:wrapped) { expect_any_instance_of(klass) }
|
|
379
|
+
let(:receiver) { klass.new }
|
|
380
|
+
|
|
381
|
+
it 'sets up a message expectation that formats argument matchers correctly' do
|
|
382
|
+
wrapped.to receive(:foo).with an_instance_of Fixnum
|
|
383
|
+
expect { verify_all }.to raise_error(/should have received the following message\(s\) but didn't/)
|
|
384
|
+
end
|
|
385
|
+
end
|
|
386
|
+
it_behaves_like "resets partial mocks of any instance cleanly" do
|
|
387
|
+
let(:target) { expect_any_instance_of(klass) }
|
|
388
|
+
end
|
|
389
|
+
end
|
|
390
|
+
|
|
391
|
+
describe "expect(...).not_to receive" do
|
|
392
|
+
it_behaves_like "an expect syntax negative expectation" do
|
|
393
|
+
let(:receiver) { double }
|
|
394
|
+
let(:wrapped) { expect(receiver) }
|
|
395
|
+
end
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
describe "expect_any_instance_of(...).not_to receive" do
|
|
399
|
+
it_behaves_like "an expect syntax negative expectation" do
|
|
400
|
+
let(:klass) { Class.new }
|
|
401
|
+
let(:wrapped) { expect_any_instance_of(klass) }
|
|
402
|
+
let(:receiver) { klass.new }
|
|
403
|
+
end
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
shared_examples "using rspec-mocks in another test framework" do
|
|
407
|
+
it 'can use the `expect` syntax' do
|
|
408
|
+
dbl = double
|
|
409
|
+
|
|
410
|
+
framework.new.instance_exec do
|
|
411
|
+
expect(dbl).to receive(:foo).and_return(3)
|
|
412
|
+
end
|
|
413
|
+
|
|
414
|
+
expect(dbl.foo).to eq(3)
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
it 'expects the method to be called when `expect` is used' do
|
|
418
|
+
dbl = double
|
|
419
|
+
|
|
420
|
+
framework.new.instance_exec do
|
|
421
|
+
expect(dbl).to receive(:foo)
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
expect { verify dbl }.to raise_error(RSpec::Mocks::MockExpectationError)
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
it 'supports `expect(...).not_to receive`' do
|
|
428
|
+
dbl = double
|
|
429
|
+
|
|
430
|
+
framework.new.instance_exec do
|
|
431
|
+
expect(dbl).not_to receive(:foo)
|
|
432
|
+
end
|
|
433
|
+
|
|
434
|
+
expect { dbl.foo }.to raise_error(RSpec::Mocks::MockExpectationError)
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
it 'supports `expect(...).to_not receive`' do
|
|
438
|
+
dbl = double
|
|
439
|
+
|
|
440
|
+
framework.new.instance_exec do
|
|
441
|
+
expect(dbl).to_not receive(:foo)
|
|
442
|
+
end
|
|
443
|
+
|
|
444
|
+
expect { dbl.foo }.to raise_error(RSpec::Mocks::MockExpectationError)
|
|
445
|
+
end
|
|
446
|
+
end
|
|
447
|
+
|
|
448
|
+
context "when used in a test framework without rspec-expectations" do
|
|
449
|
+
let(:framework) do
|
|
450
|
+
Class.new do
|
|
451
|
+
include RSpec::Mocks::ExampleMethods
|
|
452
|
+
|
|
453
|
+
def eq(value)
|
|
454
|
+
double("MyMatcher")
|
|
455
|
+
end
|
|
456
|
+
end
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
it_behaves_like "using rspec-mocks in another test framework"
|
|
460
|
+
|
|
461
|
+
it 'cannot use `expect` with another matcher' do
|
|
462
|
+
expect {
|
|
463
|
+
framework.new.instance_exec do
|
|
464
|
+
expect(3).to eq(3)
|
|
465
|
+
end
|
|
466
|
+
}.to raise_error(/only the `receive` or `receive_messages` matchers are supported with `expect\(...\).to`/)
|
|
467
|
+
end
|
|
468
|
+
|
|
469
|
+
it 'can toggle the available syntax' do
|
|
470
|
+
expect(framework.new).to respond_to(:expect)
|
|
471
|
+
RSpec::Mocks.configuration.syntax = :should
|
|
472
|
+
expect(framework.new).not_to respond_to(:expect)
|
|
473
|
+
RSpec::Mocks.configuration.syntax = :expect
|
|
474
|
+
expect(framework.new).to respond_to(:expect)
|
|
475
|
+
end
|
|
476
|
+
|
|
477
|
+
after { RSpec::Mocks.configuration.syntax = :expect }
|
|
478
|
+
end
|
|
479
|
+
|
|
480
|
+
context "when rspec-expectations is included in the test framework first" do
|
|
481
|
+
before do
|
|
482
|
+
# the examples here assume `expect` is define in RSpec::Matchers...
|
|
483
|
+
expect(RSpec::Matchers.method_defined?(:expect)).to be_truthy
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
let(:framework) do
|
|
487
|
+
Class.new do
|
|
488
|
+
include RSpec::Matchers
|
|
489
|
+
include RSpec::Mocks::ExampleMethods
|
|
490
|
+
end
|
|
491
|
+
end
|
|
492
|
+
|
|
493
|
+
it_behaves_like "using rspec-mocks in another test framework"
|
|
494
|
+
|
|
495
|
+
it 'can use `expect` with any matcher' do
|
|
496
|
+
framework.new.instance_exec do
|
|
497
|
+
expect(3).to eq(3)
|
|
498
|
+
end
|
|
499
|
+
end
|
|
500
|
+
end
|
|
501
|
+
|
|
502
|
+
context "when rspec-expectations is included in the test framework last" do
|
|
503
|
+
before do
|
|
504
|
+
# the examples here assume `expect` is define in RSpec::Matchers...
|
|
505
|
+
expect(RSpec::Matchers.method_defined?(:expect)).to be_truthy
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
let(:framework) do
|
|
509
|
+
Class.new do
|
|
510
|
+
include RSpec::Mocks::ExampleMethods
|
|
511
|
+
include RSpec::Matchers
|
|
512
|
+
end
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
it_behaves_like "using rspec-mocks in another test framework"
|
|
516
|
+
|
|
517
|
+
it 'can use `expect` with any matcher' do
|
|
518
|
+
framework.new.instance_exec do
|
|
519
|
+
expect(3).to eq(3)
|
|
520
|
+
end
|
|
521
|
+
end
|
|
522
|
+
end
|
|
523
|
+
end
|
|
524
|
+
end
|
|
525
|
+
end
|