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,157 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Mocks
|
|
3
|
+
# Provides configuration options for rspec-mocks.
|
|
4
|
+
class Configuration
|
|
5
|
+
def initialize
|
|
6
|
+
@yield_receiver_to_any_instance_implementation_blocks = true
|
|
7
|
+
@verify_doubled_constant_names = false
|
|
8
|
+
@transfer_nested_constants = false
|
|
9
|
+
@verify_partial_doubles = false
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def yield_receiver_to_any_instance_implementation_blocks?
|
|
13
|
+
@yield_receiver_to_any_instance_implementation_blocks
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Sets whether or not RSpec will yield the receiving instance of a
|
|
17
|
+
# message to blocks that are used for any_instance stub implementations.
|
|
18
|
+
# When set, the first yielded argument will be the receiving instance.
|
|
19
|
+
# Defaults to `true`.
|
|
20
|
+
#
|
|
21
|
+
# @example
|
|
22
|
+
#
|
|
23
|
+
# RSpec.configure do |rspec|
|
|
24
|
+
# rspec.mock_with :rspec do |mocks|
|
|
25
|
+
# mocks.yield_receiver_to_any_instance_implementation_blocks = false
|
|
26
|
+
# end
|
|
27
|
+
# end
|
|
28
|
+
attr_writer :yield_receiver_to_any_instance_implementation_blocks
|
|
29
|
+
|
|
30
|
+
# Adds `stub` and `should_receive` to the given
|
|
31
|
+
# modules or classes. This is usually only necessary
|
|
32
|
+
# if you application uses some proxy classes that
|
|
33
|
+
# "strip themselves down" to a bare minimum set of
|
|
34
|
+
# methods and remove `stub` and `should_receive` in
|
|
35
|
+
# the process.
|
|
36
|
+
#
|
|
37
|
+
# @example
|
|
38
|
+
#
|
|
39
|
+
# RSpec.configure do |rspec|
|
|
40
|
+
# rspec.mock_with :rspec do |mocks|
|
|
41
|
+
# mocks.add_stub_and_should_receive_to Delegator
|
|
42
|
+
# end
|
|
43
|
+
# end
|
|
44
|
+
#
|
|
45
|
+
def add_stub_and_should_receive_to(*modules)
|
|
46
|
+
modules.each do |mod|
|
|
47
|
+
Syntax.enable_should(mod)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Provides the ability to set either `expect`,
|
|
52
|
+
# `should` or both syntaxes. RSpec uses `expect`
|
|
53
|
+
# syntax by default. This is needed if you want to
|
|
54
|
+
# explicitly enable `should` syntax and/or explicitly
|
|
55
|
+
# disable `expect` syntax.
|
|
56
|
+
#
|
|
57
|
+
# @example
|
|
58
|
+
#
|
|
59
|
+
# RSpec.configure do |rspec|
|
|
60
|
+
# rspec.mock_with :rspec do |mocks|
|
|
61
|
+
# mocks.syntax = [:expect, :should]
|
|
62
|
+
# end
|
|
63
|
+
# end
|
|
64
|
+
#
|
|
65
|
+
def syntax=(*values)
|
|
66
|
+
syntaxes = values.flatten
|
|
67
|
+
if syntaxes.include?(:expect)
|
|
68
|
+
Syntax.enable_expect
|
|
69
|
+
else
|
|
70
|
+
Syntax.disable_expect
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
if syntaxes.include?(:should)
|
|
74
|
+
Syntax.enable_should
|
|
75
|
+
else
|
|
76
|
+
Syntax.disable_should
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Returns an array with a list of syntaxes
|
|
81
|
+
# that are enabled.
|
|
82
|
+
#
|
|
83
|
+
# @example
|
|
84
|
+
#
|
|
85
|
+
# unless RSpec::Mocks.configuration.syntax.include?(:expect)
|
|
86
|
+
# raise "this RSpec extension gem requires the rspec-mocks `:expect` syntax"
|
|
87
|
+
# end
|
|
88
|
+
#
|
|
89
|
+
def syntax
|
|
90
|
+
syntaxes = []
|
|
91
|
+
syntaxes << :should if Syntax.should_enabled?
|
|
92
|
+
syntaxes << :expect if Syntax.expect_enabled?
|
|
93
|
+
syntaxes
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def verify_doubled_constant_names?
|
|
97
|
+
!!@verify_doubled_constant_names
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# When this is set to true, an error will be raised when
|
|
101
|
+
# `instance_double` or `class_double` is given the name of an undefined
|
|
102
|
+
# constant. You probably only want to set this when running your entire
|
|
103
|
+
# test suite, with all production code loaded. Setting this for an
|
|
104
|
+
# isolated unit test will prevent you from being able to isolate it!
|
|
105
|
+
attr_writer :verify_doubled_constant_names
|
|
106
|
+
|
|
107
|
+
def transfer_nested_constants?
|
|
108
|
+
!!@transfer_nested_constants
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Sets the default for the `transfer_nested_constants` option when
|
|
112
|
+
# stubbing constants.
|
|
113
|
+
attr_writer :transfer_nested_constants
|
|
114
|
+
|
|
115
|
+
# When set to true, partial mocks will be verified the same as object
|
|
116
|
+
# doubles. Any stubs will have their arguments checked against the original
|
|
117
|
+
# method, and methods that do not exist cannot be stubbed.
|
|
118
|
+
def verify_partial_doubles=(val)
|
|
119
|
+
@verify_partial_doubles = !!val
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
def verify_partial_doubles?
|
|
123
|
+
@verify_partial_doubles
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Monkey-patch `Marshal.dump` to enable dumping of mocked or stubbed
|
|
127
|
+
# objects. By default this will not work since RSpec mocks works by
|
|
128
|
+
# adding singleton methods that cannot be serialized. This patch removes
|
|
129
|
+
# these singleton methods before serialization. Setting to falsey removes
|
|
130
|
+
# the patch.
|
|
131
|
+
#
|
|
132
|
+
# This method is idempotent.
|
|
133
|
+
def patch_marshal_to_support_partial_doubles=(val)
|
|
134
|
+
if val
|
|
135
|
+
RSpec::Mocks::MarshalExtension.patch!
|
|
136
|
+
else
|
|
137
|
+
RSpec::Mocks::MarshalExtension.unpatch!
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
# @api private
|
|
142
|
+
# Resets the configured syntax to the default.
|
|
143
|
+
def reset_syntaxes_to_default
|
|
144
|
+
self.syntax = [:should, :expect]
|
|
145
|
+
RSpec::Mocks::Syntax.warn_about_should!
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# Mocks specific configuration, as distinct from `RSpec.configuration`
|
|
150
|
+
# which is core RSpec configuration.
|
|
151
|
+
def self.configuration
|
|
152
|
+
@configuration ||= Configuration.new
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
configuration.reset_syntaxes_to_default
|
|
156
|
+
end
|
|
157
|
+
end
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Mocks
|
|
3
|
+
# Raised when a message expectation is not satisfied.
|
|
4
|
+
MockExpectationError = Class.new(Exception)
|
|
5
|
+
|
|
6
|
+
# Raised when a test double is used after it has been torn
|
|
7
|
+
# down (typically at the end of an rspec-core example).
|
|
8
|
+
ExpiredTestDoubleError = Class.new(MockExpectationError)
|
|
9
|
+
|
|
10
|
+
# Raised when doubles or partial doubles are used outside of the per-test lifecycle.
|
|
11
|
+
OutsideOfExampleError = Class.new(StandardError)
|
|
12
|
+
|
|
13
|
+
# @private
|
|
14
|
+
UnsupportedMatcherError = Class.new(StandardError)
|
|
15
|
+
# @private
|
|
16
|
+
NegationUnsupportedError = Class.new(StandardError)
|
|
17
|
+
# @private
|
|
18
|
+
VerifyingDoubleNotDefinedError = Class.new(StandardError)
|
|
19
|
+
|
|
20
|
+
# @private
|
|
21
|
+
class ErrorGenerator
|
|
22
|
+
attr_writer :opts
|
|
23
|
+
|
|
24
|
+
def initialize(target, name)
|
|
25
|
+
@target = target
|
|
26
|
+
@name = name
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# @private
|
|
30
|
+
def opts
|
|
31
|
+
@opts ||= {}
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @private
|
|
35
|
+
def raise_unexpected_message_error(message, *args)
|
|
36
|
+
__raise "#{intro} received unexpected message :#{message}#{arg_message(*args)}"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @private
|
|
40
|
+
def raise_unexpected_message_args_error(expectation, *args)
|
|
41
|
+
expected_args = format_args(*expectation.expected_args)
|
|
42
|
+
actual_args = format_received_args(*args)
|
|
43
|
+
__raise "#{intro} received #{expectation.message.inspect} with " \
|
|
44
|
+
"unexpected arguments\n expected: #{expected_args}\n" \
|
|
45
|
+
" got: #{actual_args}"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# @private
|
|
49
|
+
def raise_missing_default_stub_error(expectation, *args)
|
|
50
|
+
expected_args = format_args(*expectation.expected_args)
|
|
51
|
+
actual_args = format_received_args(*args)
|
|
52
|
+
__raise "#{intro} received #{expectation.message.inspect} with " \
|
|
53
|
+
"unexpected arguments\n expected: #{expected_args}\n" \
|
|
54
|
+
" got: #{actual_args}\n Please stub a default value " \
|
|
55
|
+
"first if message might be received with other args as well. \n"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# @private
|
|
59
|
+
def raise_similar_message_args_error(expectation, *args_for_multiple_calls)
|
|
60
|
+
expected_args = format_args(*expectation.expected_args)
|
|
61
|
+
actual_args = args_for_multiple_calls.map { |a| format_received_args(*a) }.join(", ")
|
|
62
|
+
__raise "#{intro} received #{expectation.message.inspect} with " \
|
|
63
|
+
"unexpected arguments\n expected: #{expected_args}\n" \
|
|
64
|
+
" got: #{actual_args}"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# rubocop:disable Style/ParameterLists
|
|
68
|
+
# @private
|
|
69
|
+
def raise_expectation_error(message, expected_received_count, argument_list_matcher, actual_received_count, expectation_count_type, *args)
|
|
70
|
+
expected_part = expected_part_of_expectation_error(expected_received_count, expectation_count_type, argument_list_matcher)
|
|
71
|
+
received_part = received_part_of_expectation_error(actual_received_count, *args)
|
|
72
|
+
__raise "(#{intro}).#{message}#{format_args(*args)}\n #{expected_part}\n #{received_part}"
|
|
73
|
+
end
|
|
74
|
+
# rubocop:enable Style/ParameterLists
|
|
75
|
+
|
|
76
|
+
# @private
|
|
77
|
+
def raise_unimplemented_error(doubled_module, method_name)
|
|
78
|
+
__raise "%s does not implement: %s" % [
|
|
79
|
+
doubled_module.description,
|
|
80
|
+
method_name
|
|
81
|
+
]
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# @private
|
|
85
|
+
def raise_non_public_error(method_name, visibility)
|
|
86
|
+
raise NoMethodError, "%s method `%s' called on %s" % [
|
|
87
|
+
visibility, method_name, intro
|
|
88
|
+
]
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# @private
|
|
92
|
+
def raise_invalid_arguments_error(verifier)
|
|
93
|
+
__raise verifier.error_message
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# @private
|
|
97
|
+
def raise_expired_test_double_error
|
|
98
|
+
raise ExpiredTestDoubleError,
|
|
99
|
+
"#{intro} was originally created in one example but has leaked into " \
|
|
100
|
+
"another example and can no longer be used. rspec-mocks' doubles are " \
|
|
101
|
+
"designed to only last for one example, and you need to create a new " \
|
|
102
|
+
"one in each example you wish to use it for."
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# @private
|
|
106
|
+
def received_part_of_expectation_error(actual_received_count, *args)
|
|
107
|
+
"received: #{count_message(actual_received_count)}" +
|
|
108
|
+
actual_method_call_args_description(actual_received_count, args)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# @private
|
|
112
|
+
def expected_part_of_expectation_error(expected_received_count, expectation_count_type, argument_list_matcher)
|
|
113
|
+
"expected: #{count_message(expected_received_count, expectation_count_type)}" +
|
|
114
|
+
expected_method_call_args_description(argument_list_matcher.expected_args)
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# @private
|
|
118
|
+
def actual_method_call_args_description(count, args)
|
|
119
|
+
method_call_args_description(args) ||
|
|
120
|
+
if count > 0 && args.length > 0
|
|
121
|
+
" with arguments: #{args.inspect.gsub(/\A\[(.+)\]\z/, '(\1)')}"
|
|
122
|
+
else
|
|
123
|
+
""
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# @private
|
|
128
|
+
def expected_method_call_args_description(args)
|
|
129
|
+
method_call_args_description(args) ||
|
|
130
|
+
if args.length > 0
|
|
131
|
+
" with arguments: #{format_args(*args)}"
|
|
132
|
+
else
|
|
133
|
+
""
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# @private
|
|
138
|
+
def method_call_args_description(args)
|
|
139
|
+
case args.first
|
|
140
|
+
when ArgumentMatchers::AnyArgsMatcher then " with any arguments"
|
|
141
|
+
when ArgumentMatchers::NoArgsMatcher then " with no arguments"
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# @private
|
|
146
|
+
def describe_expectation(message, expected_received_count, _actual_received_count, *args)
|
|
147
|
+
"have received #{message}#{format_args(*args)} #{count_message(expected_received_count)}"
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# @private
|
|
151
|
+
def raise_out_of_order_error(message)
|
|
152
|
+
__raise "#{intro} received :#{message} out of order"
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# @private
|
|
156
|
+
def raise_block_failed_error(message, detail)
|
|
157
|
+
__raise "#{intro} received :#{message} but passed block failed with: #{detail}"
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# @private
|
|
161
|
+
def raise_missing_block_error(args_to_yield)
|
|
162
|
+
__raise "#{intro} asked to yield |#{arg_list(*args_to_yield)}| but no block was passed"
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# @private
|
|
166
|
+
def raise_wrong_arity_error(args_to_yield, signature)
|
|
167
|
+
__raise "#{intro} yielded |#{arg_list(*args_to_yield)}| to block with #{signature.description}"
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
# @private
|
|
171
|
+
def raise_only_valid_on_a_partial_double(method)
|
|
172
|
+
__raise "#{intro} is a pure test double. `#{method}` is only " \
|
|
173
|
+
"available on a partial double."
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
# @private
|
|
177
|
+
def raise_expectation_on_unstubbed_method(method)
|
|
178
|
+
__raise "#{intro} expected to have received #{method}, but that " \
|
|
179
|
+
"object is not a spy or method has not been stubbed."
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
# @private
|
|
183
|
+
def raise_expectation_on_mocked_method(method)
|
|
184
|
+
__raise "#{intro} expected to have received #{method}, but that " \
|
|
185
|
+
"method has been mocked instead of stubbed or spied."
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def self.raise_double_negation_error(wrapped_expression)
|
|
189
|
+
raise "Isn't life confusing enough? You've already set a " \
|
|
190
|
+
"negative message expectation and now you are trying to " \
|
|
191
|
+
"negate it again with `never`. What does an expression like " \
|
|
192
|
+
"`#{wrapped_expression}.not_to receive(:msg).never` even mean?"
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
private
|
|
196
|
+
|
|
197
|
+
def intro
|
|
198
|
+
if @name
|
|
199
|
+
"Double #{@name.inspect}"
|
|
200
|
+
elsif TestDouble === @target
|
|
201
|
+
"Double"
|
|
202
|
+
elsif Class === @target
|
|
203
|
+
"<#{@target.inspect} (class)>"
|
|
204
|
+
elsif @target
|
|
205
|
+
@target
|
|
206
|
+
else
|
|
207
|
+
"nil"
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
def __raise(message)
|
|
212
|
+
message = opts[:message] unless opts[:message].nil?
|
|
213
|
+
Kernel.raise(RSpec::Mocks::MockExpectationError, message)
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
def arg_message(*args)
|
|
217
|
+
" with " + format_args(*args)
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def format_args(*args)
|
|
221
|
+
args.empty? ? "(no args)" : "(" + arg_list(*args) + ")"
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
def arg_list(*args)
|
|
225
|
+
args.map { |arg| arg_has_valid_description(arg) ? arg.description : arg.inspect }.join(", ")
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def arg_has_valid_description(arg)
|
|
229
|
+
return false unless arg.respond_to?(:description)
|
|
230
|
+
|
|
231
|
+
!arg.description.nil? && !arg.description.empty?
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def format_received_args(*args)
|
|
235
|
+
args.empty? ? "(no args)" : "(" + received_arg_list(*args) + ")"
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
def received_arg_list(*args)
|
|
239
|
+
args.map(&:inspect).join(", ")
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
def count_message(count, expectation_count_type=nil)
|
|
243
|
+
return "at least #{times(count.abs)}" if count < 0 || expectation_count_type == :at_least
|
|
244
|
+
return "at most #{times(count)}" if expectation_count_type == :at_most
|
|
245
|
+
times(count)
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def times(count)
|
|
249
|
+
"#{count} time#{count == 1 ? '' : 's'}"
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
end
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
RSpec::Support.require_rspec_mocks 'object_reference'
|
|
2
|
+
|
|
3
|
+
module RSpec
|
|
4
|
+
module Mocks
|
|
5
|
+
# Contains methods intended to be used from within code examples.
|
|
6
|
+
# Mix this in to your test context (such as a test framework base class)
|
|
7
|
+
# to use rspec-mocks with your test framework. If you're using rspec-core,
|
|
8
|
+
# it'll take care of doing this for you.
|
|
9
|
+
module ExampleMethods
|
|
10
|
+
include RSpec::Mocks::ArgumentMatchers
|
|
11
|
+
|
|
12
|
+
# @overload double()
|
|
13
|
+
# @overload double(name)
|
|
14
|
+
# @param name [String/Symbol] used to clarify intent
|
|
15
|
+
# @overload double(stubs)
|
|
16
|
+
# @param stubs (Hash) hash of message/return-value pairs
|
|
17
|
+
# @overload double(name, stubs)
|
|
18
|
+
# @param name [String/Symbol] used to clarify intent
|
|
19
|
+
# @param stubs (Hash) hash of message/return-value pairs
|
|
20
|
+
# @return (Double)
|
|
21
|
+
#
|
|
22
|
+
# Constructs an instance of [RSpec::Mocks::Double](RSpec::Mocks::Double) configured
|
|
23
|
+
# with an optional name, used for reporting in failure messages, and an optional
|
|
24
|
+
# hash of message/return-value pairs.
|
|
25
|
+
#
|
|
26
|
+
# @example
|
|
27
|
+
#
|
|
28
|
+
# book = double("book", :title => "The RSpec Book")
|
|
29
|
+
# book.title #=> "The RSpec Book"
|
|
30
|
+
#
|
|
31
|
+
# card = double("card", :suit => "Spades", :rank => "A")
|
|
32
|
+
# card.suit #=> "Spades"
|
|
33
|
+
# card.rank #=> "A"
|
|
34
|
+
#
|
|
35
|
+
def double(*args)
|
|
36
|
+
ExampleMethods.declare_double(Double, *args)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @overload instance_double(doubled_class)
|
|
40
|
+
# @param doubled_class [String, Class]
|
|
41
|
+
# @overload instance_double(doubled_class, stubs)
|
|
42
|
+
# @param doubled_class [String, Class]
|
|
43
|
+
# @param stubs [Hash] hash of message/return-value pairs
|
|
44
|
+
# @return InstanceVerifyingDouble
|
|
45
|
+
#
|
|
46
|
+
# Constructs a test double against a specific class. If the given class
|
|
47
|
+
# name has been loaded, only instance methods defined on the class are
|
|
48
|
+
# allowed to be stubbed. In all other ways it behaves like a
|
|
49
|
+
# [double](double).
|
|
50
|
+
def instance_double(doubled_class, *args)
|
|
51
|
+
ref = ObjectReference.for(doubled_class)
|
|
52
|
+
ExampleMethods.declare_verifying_double(InstanceVerifyingDouble, ref, *args)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# @overload class_double(doubled_class)
|
|
56
|
+
# @param doubled_class [String, Module]
|
|
57
|
+
# @overload class_double(doubled_class, stubs)
|
|
58
|
+
# @param doubled_class [String, Module]
|
|
59
|
+
# @param stubs [Hash] hash of message/return-value pairs
|
|
60
|
+
# @return ClassVerifyingDouble
|
|
61
|
+
#
|
|
62
|
+
# Constructs a test double against a specific class. If the given class
|
|
63
|
+
# name has been loaded, only class methods defined on the class are
|
|
64
|
+
# allowed to be stubbed. In all other ways it behaves like a
|
|
65
|
+
# [double](double).
|
|
66
|
+
def class_double(doubled_class, *args)
|
|
67
|
+
ref = ObjectReference.for(doubled_class)
|
|
68
|
+
ExampleMethods.declare_verifying_double(ClassVerifyingDouble, ref, *args)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# @overload object_double(object_or_name)
|
|
72
|
+
# @param object_or_name [String, Object]
|
|
73
|
+
# @overload object_double(object_or_name, stubs)
|
|
74
|
+
# @param object_or_name [String, Object]
|
|
75
|
+
# @param stubs [Hash] hash of message/return-value pairs
|
|
76
|
+
# @return ObjectVerifyingDouble
|
|
77
|
+
#
|
|
78
|
+
# Constructs a test double against a specific object. Only the methods
|
|
79
|
+
# the object responds to are allowed to be stubbed. If a String argument
|
|
80
|
+
# is provided, it is assumed to reference a constant object which is used
|
|
81
|
+
# for verification. In all other ways it behaves like a [double](double).
|
|
82
|
+
def object_double(object_or_name, *args)
|
|
83
|
+
ref = ObjectReference.for(object_or_name, :allow_direct_object_refs)
|
|
84
|
+
ExampleMethods.declare_verifying_double(ObjectVerifyingDouble, ref, *args)
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# @overload spy()
|
|
88
|
+
# @overload spy(name)
|
|
89
|
+
# @param name [String/Symbol] used to clarify intent
|
|
90
|
+
# @overload spy(stubs)
|
|
91
|
+
# @param stubs (Hash) hash of message/return-value pairs
|
|
92
|
+
# @overload spy(name, stubs)
|
|
93
|
+
# @param name [String/Symbol] used to clarify intent
|
|
94
|
+
# @param stubs (Hash) hash of message/return-value pairs
|
|
95
|
+
# @return (Double)
|
|
96
|
+
#
|
|
97
|
+
# Constructs a test double that is optimized for use with
|
|
98
|
+
# `have_received`. With a normal double one has to stub methods in order
|
|
99
|
+
# to be able to spy them. A spy automatically spies on all methods.
|
|
100
|
+
def spy(*args)
|
|
101
|
+
double(*args).as_null_object
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# @overload instance_spy(doubled_class)
|
|
105
|
+
# @param doubled_class [String, Class]
|
|
106
|
+
# @overload instance_spy(doubled_class, stubs)
|
|
107
|
+
# @param doubled_class [String, Class]
|
|
108
|
+
# @param stubs [Hash] hash of message/return-value pairs
|
|
109
|
+
# @return InstanceVerifyingDouble
|
|
110
|
+
#
|
|
111
|
+
# Constructs a test double that is optimized for use with `have_received`
|
|
112
|
+
# against a specific class. If the given class name has been loaded, only
|
|
113
|
+
# instance methods defined on the class are allowed to be stubbed. With
|
|
114
|
+
# a normal double one has to stub methods in order to be able to spy
|
|
115
|
+
# them. An instance_spy automatically spies on all instance methods to
|
|
116
|
+
# which the class responds.
|
|
117
|
+
def instance_spy(*args)
|
|
118
|
+
instance_double(*args).as_null_object
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# @overload object_spy(object_or_name)
|
|
122
|
+
# @param object_or_name [String, Object]
|
|
123
|
+
# @overload object_spy(object_or_name, stubs)
|
|
124
|
+
# @param object_or_name [String, Object]
|
|
125
|
+
# @param stubs [Hash] hash of message/return-value pairs
|
|
126
|
+
# @return ObjectVerifyingDouble
|
|
127
|
+
#
|
|
128
|
+
# Constructs a test double that is optimized for use with `have_received`
|
|
129
|
+
# against a specific object. Only instance methods defined on the object
|
|
130
|
+
# are allowed to be stubbed. With a normal double one has to stub
|
|
131
|
+
# methods in order to be able to spy them. An object_spy automatically
|
|
132
|
+
# spies on all methods to which the object responds.
|
|
133
|
+
def object_spy(*args)
|
|
134
|
+
object_double(*args).as_null_object
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# @overload class_spy(doubled_class)
|
|
138
|
+
# @param doubled_class [String, Module]
|
|
139
|
+
# @overload class_spy(doubled_class, stubs)
|
|
140
|
+
# @param doubled_class [String, Module]
|
|
141
|
+
# @param stubs [Hash] hash of message/return-value pairs
|
|
142
|
+
# @return ClassVerifyingDouble
|
|
143
|
+
#
|
|
144
|
+
# Constructs a test double that is optimized for use with `have_received`
|
|
145
|
+
# against a specific class. If the given class name has been loaded,
|
|
146
|
+
# only class methods defined on the class are allowed to be stubbed.
|
|
147
|
+
# With a normal double one has to stub methods in order to be able to spy
|
|
148
|
+
# them. An class_spy automatically spies on all class methods to which the
|
|
149
|
+
# class responds.
|
|
150
|
+
def class_spy(*args)
|
|
151
|
+
class_double(*args).as_null_object
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Disables warning messages about expectations being set on nil.
|
|
155
|
+
#
|
|
156
|
+
# By default warning messages are issued when expectations are set on
|
|
157
|
+
# nil. This is to prevent false-positives and to catch potential bugs
|
|
158
|
+
# early on.
|
|
159
|
+
def allow_message_expectations_on_nil
|
|
160
|
+
RSpec::Mocks.space.proxy_for(nil).warn_about_expectations = false
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
# Stubs the named constant with the given value.
|
|
164
|
+
# Like method stubs, the constant will be restored
|
|
165
|
+
# to its original value (or lack of one, if it was
|
|
166
|
+
# undefined) when the example completes.
|
|
167
|
+
#
|
|
168
|
+
# @param constant_name [String] The fully qualified name of the constant. The current
|
|
169
|
+
# constant scoping at the point of call is not considered.
|
|
170
|
+
# @param value [Object] The value to make the constant refer to. When the
|
|
171
|
+
# example completes, the constant will be restored to its prior state.
|
|
172
|
+
# @param options [Hash] Stubbing options.
|
|
173
|
+
# @option options :transfer_nested_constants [Boolean, Array<Symbol>] Determines
|
|
174
|
+
# what nested constants, if any, will be transferred from the original value
|
|
175
|
+
# of the constant to the new value of the constant. This only works if both
|
|
176
|
+
# the original and new values are modules (or classes).
|
|
177
|
+
# @return [Object] the stubbed value of the constant
|
|
178
|
+
#
|
|
179
|
+
# @example
|
|
180
|
+
#
|
|
181
|
+
# stub_const("MyClass", Class.new) # => Replaces (or defines) MyClass with a new class object.
|
|
182
|
+
# stub_const("SomeModel::PER_PAGE", 5) # => Sets SomeModel::PER_PAGE to 5.
|
|
183
|
+
#
|
|
184
|
+
# class CardDeck
|
|
185
|
+
# SUITS = [:Spades, :Diamonds, :Clubs, :Hearts]
|
|
186
|
+
# NUM_CARDS = 52
|
|
187
|
+
# end
|
|
188
|
+
#
|
|
189
|
+
# stub_const("CardDeck", Class.new)
|
|
190
|
+
# CardDeck::SUITS # => uninitialized constant error
|
|
191
|
+
# CardDeck::NUM_CARDS # => uninitialized constant error
|
|
192
|
+
#
|
|
193
|
+
# stub_const("CardDeck", Class.new, :transfer_nested_constants => true)
|
|
194
|
+
# CardDeck::SUITS # => our suits array
|
|
195
|
+
# CardDeck::NUM_CARDS # => 52
|
|
196
|
+
#
|
|
197
|
+
# stub_const("CardDeck", Class.new, :transfer_nested_constants => [:SUITS])
|
|
198
|
+
# CardDeck::SUITS # => our suits array
|
|
199
|
+
# CardDeck::NUM_CARDS # => uninitialized constant error
|
|
200
|
+
def stub_const(constant_name, value, options={})
|
|
201
|
+
ConstantMutator.stub(constant_name, value, options)
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
# Hides the named constant with the given value. The constant will be
|
|
205
|
+
# undefined for the duration of the test.
|
|
206
|
+
#
|
|
207
|
+
# Like method stubs, the constant will be restored to its original value
|
|
208
|
+
# when the example completes.
|
|
209
|
+
#
|
|
210
|
+
# @param constant_name [String] The fully qualified name of the constant.
|
|
211
|
+
# The current constant scoping at the point of call is not considered.
|
|
212
|
+
#
|
|
213
|
+
# @example
|
|
214
|
+
#
|
|
215
|
+
# hide_const("MyClass") # => MyClass is now an undefined constant
|
|
216
|
+
def hide_const(constant_name)
|
|
217
|
+
ConstantMutator.hide(constant_name)
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
# Verifies that the given object received the expected message during the
|
|
221
|
+
# course of the test. On a spy objects or as null object doubles this
|
|
222
|
+
# works for any method, on other objects the method must have
|
|
223
|
+
# been stubbed beforehand in order for messages to be verified.
|
|
224
|
+
#
|
|
225
|
+
# Stubbing and verifying messages received in this way implements the
|
|
226
|
+
# Test Spy pattern.
|
|
227
|
+
#
|
|
228
|
+
# @param method_name [Symbol] name of the method expected to have been
|
|
229
|
+
# called.
|
|
230
|
+
#
|
|
231
|
+
# @example
|
|
232
|
+
#
|
|
233
|
+
# invitation = double('invitation', accept: true)
|
|
234
|
+
# user.accept_invitation(invitation)
|
|
235
|
+
# expect(invitation).to have_received(:accept)
|
|
236
|
+
#
|
|
237
|
+
# # You can also use most message expectations:
|
|
238
|
+
# expect(invitation).to have_received(:accept).with(mailer).once
|
|
239
|
+
def have_received(method_name, &block)
|
|
240
|
+
Matchers::HaveReceived.new(method_name, &block)
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
# @method expect
|
|
244
|
+
# Used to wrap an object in preparation for setting a mock expectation
|
|
245
|
+
# on it.
|
|
246
|
+
#
|
|
247
|
+
# @example
|
|
248
|
+
#
|
|
249
|
+
# expect(obj).to receive(:foo).with(5).and_return(:return_value)
|
|
250
|
+
#
|
|
251
|
+
# @note This method is usually provided by rspec-expectations. However,
|
|
252
|
+
# if you use rspec-mocks without rspec-expectations, there's a definition
|
|
253
|
+
# of it that is made available here. If you disable the `:expect` syntax
|
|
254
|
+
# this method will be undefined.
|
|
255
|
+
|
|
256
|
+
# @method allow
|
|
257
|
+
# Used to wrap an object in preparation for stubbing a method
|
|
258
|
+
# on it.
|
|
259
|
+
#
|
|
260
|
+
# @example
|
|
261
|
+
#
|
|
262
|
+
# allow(dbl).to receive(:foo).with(5).and_return(:return_value)
|
|
263
|
+
#
|
|
264
|
+
# @note If you disable the `:expect` syntax this method will be undefined.
|
|
265
|
+
|
|
266
|
+
# @method expect_any_instance_of
|
|
267
|
+
# Used to wrap a class in preparation for setting a mock expectation
|
|
268
|
+
# on instances of it.
|
|
269
|
+
#
|
|
270
|
+
# @example
|
|
271
|
+
#
|
|
272
|
+
# expect_any_instance_of(MyClass).to receive(:foo)
|
|
273
|
+
#
|
|
274
|
+
# @note If you disable the `:expect` syntax this method will be undefined.
|
|
275
|
+
|
|
276
|
+
# @method allow_any_instance_of
|
|
277
|
+
# Used to wrap a class in preparation for stubbing a method
|
|
278
|
+
# on instances of it.
|
|
279
|
+
#
|
|
280
|
+
# @example
|
|
281
|
+
#
|
|
282
|
+
# allow_any_instance_of(MyClass).to receive(:foo)
|
|
283
|
+
#
|
|
284
|
+
# @note This is only available when you have enabled the `expect` syntax.
|
|
285
|
+
|
|
286
|
+
# @method receive
|
|
287
|
+
# Used to specify a message that you expect or allow an object
|
|
288
|
+
# to receive. The object returned by `receive` supports the same
|
|
289
|
+
# fluent interface that `should_receive` and `stub` have always
|
|
290
|
+
# supported, allowing you to constrain the arguments or number of
|
|
291
|
+
# times, and configure how the object should respond to the message.
|
|
292
|
+
#
|
|
293
|
+
# @example
|
|
294
|
+
#
|
|
295
|
+
# expect(obj).to receive(:hello).with("world").exactly(3).times
|
|
296
|
+
#
|
|
297
|
+
# @note If you disable the `:expect` syntax this method will be undefined.
|
|
298
|
+
|
|
299
|
+
# @method receive_messages
|
|
300
|
+
# Shorthand syntax used to setup message(s), and their return value(s),
|
|
301
|
+
# that you expect or allow an object to receive. The method takes a hash
|
|
302
|
+
# of messages and their respective return values. Unlike with `receive`,
|
|
303
|
+
# you cannot apply further customizations using a block or the fluent
|
|
304
|
+
# interface.
|
|
305
|
+
#
|
|
306
|
+
# @example
|
|
307
|
+
#
|
|
308
|
+
# allow(obj).to receive_messages(:speak => "Hello World")
|
|
309
|
+
# allow(obj).to receive_messages(:speak => "Hello", :meow => "Meow")
|
|
310
|
+
#
|
|
311
|
+
# @note If you disable the `:expect` syntax this method will be undefined.
|
|
312
|
+
|
|
313
|
+
# @method receive_message_chain
|
|
314
|
+
# @overload receive_message_chain(method1, method2)
|
|
315
|
+
# @overload receive_message_chain("method1.method2")
|
|
316
|
+
# @overload receive_message_chain(method1, method_to_value_hash)
|
|
317
|
+
#
|
|
318
|
+
# stubs/mocks a chain of messages on an object or test double.
|
|
319
|
+
#
|
|
320
|
+
# ## Warning:
|
|
321
|
+
#
|
|
322
|
+
# Chains can be arbitrarily long, which makes it quite painless to
|
|
323
|
+
# violate the Law of Demeter in violent ways, so you should consider any
|
|
324
|
+
# use of `receive_message_chain` a code smell. Even though not all code smells
|
|
325
|
+
# indicate real problems (think fluent interfaces), `receive_message_chain` still
|
|
326
|
+
# results in brittle examples. For example, if you write
|
|
327
|
+
# `allow(foo).to receive_message_chain(:bar, :baz => 37)` in a spec and then the
|
|
328
|
+
# implementation calls `foo.baz.bar`, the stub will not work.
|
|
329
|
+
#
|
|
330
|
+
# @example
|
|
331
|
+
#
|
|
332
|
+
# allow(double).to receive_message_chain("foo.bar") { :baz }
|
|
333
|
+
# allow(double).to receive_message_chain(:foo, :bar => :baz)
|
|
334
|
+
# allow(double).to receive_message_chain(:foo, :bar) { :baz }
|
|
335
|
+
#
|
|
336
|
+
# # Given any of ^^ these three forms ^^:
|
|
337
|
+
# double.foo.bar # => :baz
|
|
338
|
+
#
|
|
339
|
+
# # Common use in Rails/ActiveRecord:
|
|
340
|
+
# allow(Article).to receive_message_chain("recent.published") { [Article.new] }
|
|
341
|
+
#
|
|
342
|
+
# @note If you disable the `:expect` syntax this method will be undefined.
|
|
343
|
+
|
|
344
|
+
# @private
|
|
345
|
+
def self.included(klass)
|
|
346
|
+
klass.class_exec do
|
|
347
|
+
# This gets mixed in so that if `RSpec::Matchers` is included in
|
|
348
|
+
# `klass` later, it's definition of `expect` will take precedence.
|
|
349
|
+
include ExpectHost unless method_defined?(:expect)
|
|
350
|
+
end
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
# @private
|
|
354
|
+
def self.declare_verifying_double(type, ref, *args)
|
|
355
|
+
if RSpec::Mocks.configuration.verify_doubled_constant_names? &&
|
|
356
|
+
!ref.defined?
|
|
357
|
+
|
|
358
|
+
raise VerifyingDoubleNotDefinedError,
|
|
359
|
+
"#{ref.description} is not a defined constant. " \
|
|
360
|
+
"Perhaps you misspelt it? " \
|
|
361
|
+
"Disable check with verify_doubled_constant_names configuration option."
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
declare_double(type, ref, *args)
|
|
365
|
+
end
|
|
366
|
+
|
|
367
|
+
# @private
|
|
368
|
+
def self.declare_double(type, *args)
|
|
369
|
+
args << {} unless Hash === args.last
|
|
370
|
+
type.new(*args)
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
# This module exists to host the `expect` method for cases where
|
|
374
|
+
# rspec-mocks is used w/o rspec-expectations.
|
|
375
|
+
module ExpectHost
|
|
376
|
+
end
|
|
377
|
+
end
|
|
378
|
+
end
|
|
379
|
+
end
|