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,24 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Mocks
|
|
3
|
+
RSpec.describe "Methods added to every object" do
|
|
4
|
+
include_context "with syntax", :expect
|
|
5
|
+
|
|
6
|
+
def added_methods
|
|
7
|
+
host = Class.new
|
|
8
|
+
orig_instance_methods = host.instance_methods
|
|
9
|
+
Syntax.enable_should(host)
|
|
10
|
+
(host.instance_methods - orig_instance_methods).map(&:to_sym)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'limits the number of methods that get added to all objects' do
|
|
14
|
+
# If really necessary, you can add to this list, but long term,
|
|
15
|
+
# we are hoping to cut down on the number of methods added to all objects
|
|
16
|
+
expect(added_methods).to match_array([
|
|
17
|
+
:as_null_object, :null_object?,
|
|
18
|
+
:received_message?, :should_not_receive, :should_receive,
|
|
19
|
+
:stub, :stub_chain, :unstub
|
|
20
|
+
])
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Mocks
|
|
3
|
+
RSpec.describe 'MockExpectationError' do
|
|
4
|
+
|
|
5
|
+
class Foo
|
|
6
|
+
def self.foo
|
|
7
|
+
bar
|
|
8
|
+
rescue StandardError
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it 'is not caught by StandardError rescue blocks' do
|
|
13
|
+
expect(Foo).not_to receive(:bar)
|
|
14
|
+
expect {
|
|
15
|
+
Foo.foo
|
|
16
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Mocks
|
|
3
|
+
|
|
4
|
+
RSpec.describe "ordering" do
|
|
5
|
+
before { @double = double("test double") }
|
|
6
|
+
after { reset @double }
|
|
7
|
+
|
|
8
|
+
it "passes when messages are received in order" do
|
|
9
|
+
expect(@double).to receive(:one).ordered
|
|
10
|
+
expect(@double).to receive(:two).ordered
|
|
11
|
+
expect(@double).to receive(:three).ordered
|
|
12
|
+
@double.one
|
|
13
|
+
@double.two
|
|
14
|
+
@double.three
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "passes when messages are received in order" do
|
|
18
|
+
allow(@double).to receive(:something)
|
|
19
|
+
expect(@double).to receive(:one).ordered
|
|
20
|
+
expect(@double).to receive(:two).ordered
|
|
21
|
+
expect(@double).to receive(:three).at_least(:once).ordered
|
|
22
|
+
@double.one
|
|
23
|
+
@double.two
|
|
24
|
+
@double.three
|
|
25
|
+
@double.three
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "passes when messages are received in order across objects" do
|
|
29
|
+
a = double("a")
|
|
30
|
+
b = double("b")
|
|
31
|
+
expect(a).to receive(:one).ordered
|
|
32
|
+
expect(b).to receive(:two).ordered
|
|
33
|
+
expect(a).to receive(:three).ordered
|
|
34
|
+
a.one
|
|
35
|
+
b.two
|
|
36
|
+
a.three
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "fails when messages are received out of order (2nd message 1st)" do
|
|
40
|
+
expect(@double).to receive(:one).ordered
|
|
41
|
+
expect(@double).to receive(:two).ordered
|
|
42
|
+
expect {
|
|
43
|
+
@double.two
|
|
44
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :two out of order")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "fails when messages are received out of order (3rd message 1st)" do
|
|
48
|
+
expect(@double).to receive(:one).ordered
|
|
49
|
+
expect(@double).to receive(:two).ordered
|
|
50
|
+
expect(@double).to receive(:three).ordered
|
|
51
|
+
@double.one
|
|
52
|
+
expect {
|
|
53
|
+
@double.three
|
|
54
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :three out of order")
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "fails when messages are received out of order (3rd message 2nd)" do
|
|
58
|
+
expect(@double).to receive(:one).ordered
|
|
59
|
+
expect(@double).to receive(:two).ordered
|
|
60
|
+
expect(@double).to receive(:three).ordered
|
|
61
|
+
@double.one
|
|
62
|
+
expect {
|
|
63
|
+
@double.three
|
|
64
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :three out of order")
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "fails when messages are out of order across objects" do
|
|
68
|
+
a = double("test double")
|
|
69
|
+
b = double("another test double")
|
|
70
|
+
expect(a).to receive(:one).ordered
|
|
71
|
+
expect(b).to receive(:two).ordered
|
|
72
|
+
expect(a).to receive(:three).ordered
|
|
73
|
+
a.one
|
|
74
|
+
expect {
|
|
75
|
+
a.three
|
|
76
|
+
}.to raise_error(RSpec::Mocks::MockExpectationError, "Double \"test double\" received :three out of order")
|
|
77
|
+
reset a
|
|
78
|
+
reset b
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "ignores order of non ordered messages" do
|
|
82
|
+
expect(@double).to receive(:ignored_0)
|
|
83
|
+
expect(@double).to receive(:ordered_1).ordered
|
|
84
|
+
expect(@double).to receive(:ignored_1)
|
|
85
|
+
expect(@double).to receive(:ordered_2).ordered
|
|
86
|
+
expect(@double).to receive(:ignored_2)
|
|
87
|
+
expect(@double).to receive(:ignored_3)
|
|
88
|
+
expect(@double).to receive(:ordered_3).ordered
|
|
89
|
+
expect(@double).to receive(:ignored_4)
|
|
90
|
+
@double.ignored_3
|
|
91
|
+
@double.ordered_1
|
|
92
|
+
@double.ignored_0
|
|
93
|
+
@double.ordered_2
|
|
94
|
+
@double.ignored_4
|
|
95
|
+
@double.ignored_2
|
|
96
|
+
@double.ordered_3
|
|
97
|
+
@double.ignored_1
|
|
98
|
+
verify @double
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it "supports duplicate messages" do
|
|
102
|
+
expect(@double).to receive(:a).ordered
|
|
103
|
+
expect(@double).to receive(:b).ordered
|
|
104
|
+
expect(@double).to receive(:a).ordered
|
|
105
|
+
|
|
106
|
+
@double.a
|
|
107
|
+
@double.b
|
|
108
|
+
@double.a
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Mocks
|
|
3
|
+
RSpec.describe "a double stubbed with multiple return values" do
|
|
4
|
+
let(:a_double) { double }
|
|
5
|
+
|
|
6
|
+
before do
|
|
7
|
+
allow(a_double).to receive(:foo).and_return(:val_1, nil)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'can still set a message expectation with a single return value' do
|
|
11
|
+
expect(a_double).to receive(:foo).once.and_return(:val_1)
|
|
12
|
+
expect(a_double.foo).to eq(:val_1)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
RSpec.describe "a message expectation with multiple return values and no specified count" do
|
|
17
|
+
before(:each) do
|
|
18
|
+
@double = double
|
|
19
|
+
@return_values = [1,2,3]
|
|
20
|
+
expect(@double).to receive(:do_something).and_return(@return_values[0],@return_values[1],@return_values[2])
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "returns values in order" do
|
|
24
|
+
expect(@double.do_something).to eq @return_values[0]
|
|
25
|
+
expect(@double.do_something).to eq @return_values[1]
|
|
26
|
+
expect(@double.do_something).to eq @return_values[2]
|
|
27
|
+
verify @double
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
it "falls back to a previously stubbed value" do
|
|
31
|
+
allow(@double).to receive_messages :do_something => :stub_result
|
|
32
|
+
expect(@double.do_something).to eq @return_values[0]
|
|
33
|
+
expect(@double.do_something).to eq @return_values[1]
|
|
34
|
+
expect(@double.do_something).to eq @return_values[2]
|
|
35
|
+
expect(@double.do_something).to eq :stub_result
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "fails when there are too few calls (if there is no stub)" do
|
|
39
|
+
@double.do_something
|
|
40
|
+
@double.do_something
|
|
41
|
+
expect { verify @double }.to raise_error
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "fails when there are too many calls (if there is no stub)" do
|
|
45
|
+
@double.do_something
|
|
46
|
+
@double.do_something
|
|
47
|
+
@double.do_something
|
|
48
|
+
@double.do_something
|
|
49
|
+
expect { verify @double }.to raise_error
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
RSpec.describe "a message expectation with multiple return values with a specified count equal to the number of values" do
|
|
54
|
+
before(:each) do
|
|
55
|
+
@double = double
|
|
56
|
+
@return_values = [1,2,3]
|
|
57
|
+
expect(@double).to receive(:do_something).exactly(3).times.and_return(@return_values[0], @return_values[1], @return_values[2])
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
it "returns values in order to consecutive calls" do
|
|
61
|
+
expect(@double.do_something).to eq @return_values[0]
|
|
62
|
+
expect(@double.do_something).to eq @return_values[1]
|
|
63
|
+
expect(@double.do_something).to eq @return_values[2]
|
|
64
|
+
verify @double
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
RSpec.describe "a message expectation with multiple return values specifying at_least less than the number of values" do
|
|
69
|
+
before(:each) do
|
|
70
|
+
@double = double
|
|
71
|
+
expect(@double).to receive(:do_something).at_least(:twice).with(no_args).and_return(11, 22)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "uses the last return value for subsequent calls" do
|
|
75
|
+
expect(@double.do_something).to equal(11)
|
|
76
|
+
expect(@double.do_something).to equal(22)
|
|
77
|
+
expect(@double.do_something).to equal(22)
|
|
78
|
+
verify @double
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "fails when called less than the specified number" do
|
|
82
|
+
expect(@double.do_something).to equal(11)
|
|
83
|
+
expect { verify @double }.to raise_error(RSpec::Mocks::MockExpectationError)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
context "when method is stubbed too" do
|
|
87
|
+
before { allow(@double).to receive(:do_something).and_return :stub_result }
|
|
88
|
+
|
|
89
|
+
it "uses the last value for subsequent calls" do
|
|
90
|
+
expect(@double.do_something).to equal(11)
|
|
91
|
+
expect(@double.do_something).to equal(22)
|
|
92
|
+
expect(@double.do_something).to equal(22)
|
|
93
|
+
verify @double
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "fails when called less than the specified number" do
|
|
97
|
+
expect(@double.do_something).to equal(11)
|
|
98
|
+
expect { verify @double }.to raise_error(RSpec::Mocks::MockExpectationError)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
RSpec.describe "a message expectation with multiple return values with a specified count larger than the number of values" do
|
|
104
|
+
before(:each) do
|
|
105
|
+
@double = RSpec::Mocks::Double.new("double")
|
|
106
|
+
expect(@double).to receive(:do_something).exactly(3).times.and_return(11, 22)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "uses the last return value for subsequent calls" do
|
|
110
|
+
expect(@double.do_something).to equal(11)
|
|
111
|
+
expect(@double.do_something).to equal(22)
|
|
112
|
+
expect(@double.do_something).to equal(22)
|
|
113
|
+
verify @double
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "fails when called less than the specified number" do
|
|
117
|
+
@double.do_something
|
|
118
|
+
@double.do_something
|
|
119
|
+
expect { verify @double }.to raise_error
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "fails fast when called greater than the specified number" do
|
|
123
|
+
@double.do_something
|
|
124
|
+
@double.do_something
|
|
125
|
+
@double.do_something
|
|
126
|
+
expect { @double.do_something }.to raise_error
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
TOP_LEVEL_VALUE_CONST = 7
|
|
2
|
+
|
|
3
|
+
class TestClass
|
|
4
|
+
M = :m
|
|
5
|
+
N = :n
|
|
6
|
+
|
|
7
|
+
class Nested
|
|
8
|
+
class NestedEvenMore
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class TestClassThatDefinesSend
|
|
14
|
+
C = :c
|
|
15
|
+
|
|
16
|
+
def self.send
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class TestSubClass < TestClass
|
|
21
|
+
P = :p
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
module RSpec
|
|
25
|
+
module Mocks
|
|
26
|
+
RSpec.describe "Constant Mutating" do
|
|
27
|
+
include RSpec::Support::RecursiveConstMethods
|
|
28
|
+
|
|
29
|
+
def reset_rspec_mocks
|
|
30
|
+
::RSpec::Mocks.space.reset_all
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
shared_context "constant example methods" do |const_name|
|
|
34
|
+
define_method :const do
|
|
35
|
+
recursive_const_get(const_name)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
define_method :parent_const do
|
|
39
|
+
recursive_const_get("Object::" + const_name.sub(/(::)?[^:]+\z/, ''))
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
define_method :last_const_part do
|
|
43
|
+
const_name.split('::').last
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
shared_examples "loaded constant stubbing" do |const_name|
|
|
48
|
+
include_context "constant example methods", const_name
|
|
49
|
+
|
|
50
|
+
let!(:original_const_value) { const }
|
|
51
|
+
after { change_const_value_to(original_const_value) }
|
|
52
|
+
|
|
53
|
+
def change_const_value_to(value)
|
|
54
|
+
parent_const.__send__(:remove_const, last_const_part)
|
|
55
|
+
parent_const.const_set(last_const_part, value)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'allows it to be stubbed' do
|
|
59
|
+
expect(const).not_to eq(7)
|
|
60
|
+
stub_const(const_name, 7)
|
|
61
|
+
expect(const).to eq(7)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it 'resets it to its original value when rspec clears its mocks' do
|
|
65
|
+
original_value = const
|
|
66
|
+
expect(original_value).not_to eq(:a)
|
|
67
|
+
stub_const(const_name, :a)
|
|
68
|
+
reset_rspec_mocks
|
|
69
|
+
expect(const).to be(original_value)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it 'returns the stubbed value' do
|
|
73
|
+
expect(stub_const(const_name, 7)).to eq(7)
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
shared_examples "loaded constant hiding" do |const_name|
|
|
78
|
+
before do
|
|
79
|
+
expect(recursive_const_defined?(const_name)).to be_truthy
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it 'allows it to be hidden' do
|
|
83
|
+
hide_const(const_name)
|
|
84
|
+
expect(recursive_const_defined?(const_name)).to be_falsey
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it 'resets the constant when rspec clear its mocks' do
|
|
88
|
+
hide_const(const_name)
|
|
89
|
+
reset_rspec_mocks
|
|
90
|
+
expect(recursive_const_defined?(const_name)).to be_truthy
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it 'returns nil' do
|
|
94
|
+
expect(hide_const(const_name)).to be_nil
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
shared_examples "unloaded constant stubbing" do |const_name|
|
|
99
|
+
include_context "constant example methods", const_name
|
|
100
|
+
|
|
101
|
+
before do
|
|
102
|
+
expect(recursive_const_defined?(const_name)).to be_falsey
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it 'allows it to be stubbed' do
|
|
106
|
+
stub_const(const_name, 7)
|
|
107
|
+
expect(const).to eq(7)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it 'removes the constant when rspec clears its mocks' do
|
|
111
|
+
stub_const(const_name, 7)
|
|
112
|
+
reset_rspec_mocks
|
|
113
|
+
expect(recursive_const_defined?(const_name)).to be_falsey
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it 'returns the stubbed value' do
|
|
117
|
+
expect(stub_const(const_name, 7)).to eq(7)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it 'ignores the :transfer_nested_constants option if passed' do
|
|
121
|
+
stub = Module.new
|
|
122
|
+
stub_const(const_name, stub, :transfer_nested_constants => true)
|
|
123
|
+
expect(stub.constants).to eq([])
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
shared_examples "unloaded constant hiding" do |const_name|
|
|
128
|
+
include_context "constant example methods", const_name
|
|
129
|
+
|
|
130
|
+
before do
|
|
131
|
+
expect(recursive_const_defined?(const_name)).to be_falsey
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
it 'allows it to be hidden, though the operation has no effect' do
|
|
135
|
+
hide_const(const_name)
|
|
136
|
+
expect(recursive_const_defined?(const_name)).to be_falsey
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
it 'remains undefined after rspec clears its mocks' do
|
|
140
|
+
hide_const(const_name)
|
|
141
|
+
reset_rspec_mocks
|
|
142
|
+
expect(recursive_const_defined?(const_name)).to be_falsey
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
it 'returns nil' do
|
|
146
|
+
expect(hide_const(const_name)).to be_nil
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
describe "#hide_const" do
|
|
151
|
+
context "for a loaded constant nested in a module that redefines `send`" do
|
|
152
|
+
it_behaves_like "loaded constant hiding", "TestClassThatDefinesSend::C"
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
context 'for a loaded nested constant' do
|
|
157
|
+
it_behaves_like "loaded constant hiding", "TestClass::Nested"
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
context 'for a loaded constant prefixed with ::' do
|
|
161
|
+
it_behaves_like 'loaded constant hiding', "::TestClass"
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
context 'for an unloaded constant with nested name that matches a top-level constant' do
|
|
165
|
+
it_behaves_like "unloaded constant hiding", "TestClass::Hash"
|
|
166
|
+
|
|
167
|
+
it 'does not hide the top-level constant' do
|
|
168
|
+
top_level_hash = ::Hash
|
|
169
|
+
|
|
170
|
+
hide_const("TestClass::Hash")
|
|
171
|
+
expect(::Hash).to equal(top_level_hash)
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
it 'does not affect the ability to access the top-level constant from nested contexts', :silence_warnings do
|
|
175
|
+
top_level_hash = ::Hash
|
|
176
|
+
|
|
177
|
+
hide_const("TestClass::Hash")
|
|
178
|
+
expect(TestClass::Hash).to equal(top_level_hash)
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
context 'for a loaded deeply nested constant' do
|
|
183
|
+
it_behaves_like "loaded constant hiding", "TestClass::Nested::NestedEvenMore"
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
context 'for an unloaded unnested constant' do
|
|
187
|
+
it_behaves_like "unloaded constant hiding", "X"
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
context 'for an unloaded nested constant' do
|
|
191
|
+
it_behaves_like "unloaded constant hiding", "X::Y"
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
it 'can be hidden multiple times but still restores the original value properly' do
|
|
195
|
+
orig_value = TestClass
|
|
196
|
+
hide_const("TestClass")
|
|
197
|
+
hide_const("TestClass")
|
|
198
|
+
|
|
199
|
+
reset_rspec_mocks
|
|
200
|
+
expect(TestClass).to be(orig_value)
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
it 'allows a constant to be hidden, then stubbed, restoring it to its original value properly' do
|
|
204
|
+
orig_value = TOP_LEVEL_VALUE_CONST
|
|
205
|
+
|
|
206
|
+
hide_const("TOP_LEVEL_VALUE_CONST")
|
|
207
|
+
expect(recursive_const_defined?("TOP_LEVEL_VALUE_CONST")).to be_falsey
|
|
208
|
+
|
|
209
|
+
stub_const("TOP_LEVEL_VALUE_CONST", 12345)
|
|
210
|
+
expect(TOP_LEVEL_VALUE_CONST).to eq 12345
|
|
211
|
+
|
|
212
|
+
reset_rspec_mocks
|
|
213
|
+
expect(TOP_LEVEL_VALUE_CONST).to eq orig_value
|
|
214
|
+
end
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
describe "#stub_const" do
|
|
218
|
+
context "for a loaded constant nested in a module that redefines `send`" do
|
|
219
|
+
it_behaves_like "loaded constant stubbing", "TestClassThatDefinesSend::C"
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
context 'for a loaded unnested constant' do
|
|
223
|
+
it_behaves_like "loaded constant stubbing", "TestClass"
|
|
224
|
+
|
|
225
|
+
it 'can be stubbed multiple times but still restores the original value properly' do
|
|
226
|
+
orig_value = TestClass
|
|
227
|
+
stub1, stub2 = Module.new, Module.new
|
|
228
|
+
stub_const("TestClass", stub1)
|
|
229
|
+
stub_const("TestClass", stub2)
|
|
230
|
+
|
|
231
|
+
reset_rspec_mocks
|
|
232
|
+
expect(TestClass).to be(orig_value)
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
it 'allows nested constants to be transferred to a stub module' do
|
|
236
|
+
tc_nested = TestClass::Nested
|
|
237
|
+
stub = Module.new
|
|
238
|
+
stub_const("TestClass", stub, :transfer_nested_constants => true)
|
|
239
|
+
expect(stub::M).to eq(:m)
|
|
240
|
+
expect(stub::N).to eq(:n)
|
|
241
|
+
expect(stub::Nested).to be(tc_nested)
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
it 'removes the transferred constants on reset' do
|
|
245
|
+
stub = Module.new
|
|
246
|
+
stub_const("TestClass", stub, :transfer_nested_constants => true)
|
|
247
|
+
|
|
248
|
+
expect {
|
|
249
|
+
reset_all
|
|
250
|
+
}.to change { stub.constants }.to([])
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
it 'does not transfer nested constants that are inherited from a superclass' do
|
|
254
|
+
stub = Module.new
|
|
255
|
+
stub_const("TestSubClass", stub, :transfer_nested_constants => true)
|
|
256
|
+
expect(stub::P).to eq(:p)
|
|
257
|
+
expect(defined?(stub::M)).to be_falsey
|
|
258
|
+
expect(defined?(stub::N)).to be_falsey
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
it 'raises an error when asked to transfer a nested inherited constant' do
|
|
262
|
+
original_tsc = TestSubClass
|
|
263
|
+
|
|
264
|
+
expect {
|
|
265
|
+
stub_const("TestSubClass", Module.new, :transfer_nested_constants => [:M])
|
|
266
|
+
}.to raise_error(ArgumentError)
|
|
267
|
+
|
|
268
|
+
expect(TestSubClass).to be(original_tsc)
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
it 'allows nested constants to be selectively transferred to a stub module' do
|
|
272
|
+
stub = Module.new
|
|
273
|
+
stub_const("TestClass", stub, :transfer_nested_constants => [:M, :N])
|
|
274
|
+
expect(stub::M).to eq(:m)
|
|
275
|
+
expect(stub::N).to eq(:n)
|
|
276
|
+
expect(defined?(stub::Nested)).to be_falsey
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
it 'raises an error if asked to transfer nested constants but given an object that does not support them' do
|
|
280
|
+
original_tc = TestClass
|
|
281
|
+
stub = Object.new
|
|
282
|
+
expect {
|
|
283
|
+
stub_const("TestClass", stub, :transfer_nested_constants => true)
|
|
284
|
+
}.to raise_error(ArgumentError)
|
|
285
|
+
|
|
286
|
+
expect(TestClass).to be(original_tc)
|
|
287
|
+
|
|
288
|
+
expect {
|
|
289
|
+
stub_const("TestClass", stub, :transfer_nested_constants => [:M])
|
|
290
|
+
}.to raise_error(ArgumentError)
|
|
291
|
+
|
|
292
|
+
expect(TestClass).to be(original_tc)
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
it 'raises an error if asked to transfer nested constants on a constant that does not support nested constants' do
|
|
296
|
+
stub = Module.new
|
|
297
|
+
expect {
|
|
298
|
+
stub_const("TOP_LEVEL_VALUE_CONST", stub, :transfer_nested_constants => true)
|
|
299
|
+
}.to raise_error(ArgumentError)
|
|
300
|
+
|
|
301
|
+
expect(TOP_LEVEL_VALUE_CONST).to eq(7)
|
|
302
|
+
|
|
303
|
+
expect {
|
|
304
|
+
stub_const("TOP_LEVEL_VALUE_CONST", stub, :transfer_nested_constants => [:M])
|
|
305
|
+
}.to raise_error(ArgumentError)
|
|
306
|
+
|
|
307
|
+
expect(TOP_LEVEL_VALUE_CONST).to eq(7)
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
it 'raises an error if asked to transfer a nested constant that is not defined' do
|
|
311
|
+
original_tc = TestClass
|
|
312
|
+
expect(defined?(TestClass::V)).to be_falsey
|
|
313
|
+
stub = Module.new
|
|
314
|
+
|
|
315
|
+
expect {
|
|
316
|
+
stub_const("TestClass", stub, :transfer_nested_constants => [:V])
|
|
317
|
+
}.to raise_error(/cannot transfer nested constant.*V/i)
|
|
318
|
+
|
|
319
|
+
expect(TestClass).to be(original_tc)
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
describe 'with global transfer_nested_constant option set' do
|
|
323
|
+
include_context "with isolated configuration"
|
|
324
|
+
|
|
325
|
+
before do
|
|
326
|
+
RSpec::Mocks.configuration.transfer_nested_constants = true
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
it 'allows nested constants to be transferred to a stub module' do
|
|
330
|
+
tc_nested = TestClass::Nested
|
|
331
|
+
stub = Module.new
|
|
332
|
+
stub_const("TestClass", stub)
|
|
333
|
+
expect(stub::M).to eq(:m)
|
|
334
|
+
expect(stub::N).to eq(:n)
|
|
335
|
+
expect(stub::Nested).to be(tc_nested)
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
context "when stubbing a constant that is not a module or a class" do
|
|
339
|
+
it 'does not attempt to transfer constants' do
|
|
340
|
+
stub_const("TOP_LEVEL_VALUE_CONST", 4)
|
|
341
|
+
expect(TOP_LEVEL_VALUE_CONST).to eq(4)
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
it 'still raises an error when the `:transfer_nested_constants` option is provided' do
|
|
345
|
+
expect {
|
|
346
|
+
stub_const("TOP_LEVEL_VALUE_CONST", 4, :transfer_nested_constants => true)
|
|
347
|
+
}.to raise_error(/cannot transfer nested constant/i)
|
|
348
|
+
end
|
|
349
|
+
end
|
|
350
|
+
end
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
context 'for a loaded nested constant' do
|
|
354
|
+
it_behaves_like "loaded constant stubbing", "TestClass::Nested"
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
context 'for a loaded constant prefixed with ::' do
|
|
358
|
+
it_behaves_like 'loaded constant stubbing', "::TestClass"
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
context 'for an unloaded constant prefixed with ::' do
|
|
362
|
+
it_behaves_like 'unloaded constant stubbing', "::SomeUndefinedConst"
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
context "for an unloaded constant nested in a module that redefines `send`" do
|
|
366
|
+
it_behaves_like 'unloaded constant stubbing', "TestClassThatDefinesSend::SomeUndefinedConst"
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
context 'for an unloaded constant with nested name that matches a top-level constant' do
|
|
370
|
+
it_behaves_like "unloaded constant stubbing", "TestClass::Hash"
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
context 'for a loaded deeply nested constant' do
|
|
374
|
+
it_behaves_like "loaded constant stubbing", "TestClass::Nested::NestedEvenMore"
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
context 'for an unloaded unnested constant' do
|
|
378
|
+
it_behaves_like "unloaded constant stubbing", "X"
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
context 'for an unloaded nested constant' do
|
|
382
|
+
it_behaves_like "unloaded constant stubbing", "X::Y"
|
|
383
|
+
|
|
384
|
+
it 'removes the root constant when rspec clears its mocks' do
|
|
385
|
+
expect(defined?(X)).to be_falsey
|
|
386
|
+
stub_const("X::Y", 7)
|
|
387
|
+
reset_rspec_mocks
|
|
388
|
+
expect(defined?(X)).to be_falsey
|
|
389
|
+
end
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
context 'for an unloaded deeply nested constant' do
|
|
393
|
+
it_behaves_like "unloaded constant stubbing", "X::Y::Z"
|
|
394
|
+
|
|
395
|
+
it 'removes the root constant when rspec clears its mocks' do
|
|
396
|
+
expect(defined?(X)).to be_falsey
|
|
397
|
+
stub_const("X::Y::Z", 7)
|
|
398
|
+
reset_rspec_mocks
|
|
399
|
+
expect(defined?(X)).to be_falsey
|
|
400
|
+
end
|
|
401
|
+
end
|
|
402
|
+
|
|
403
|
+
context 'for an unloaded constant nested within a loaded constant' do
|
|
404
|
+
it_behaves_like "unloaded constant stubbing", "TestClass::X"
|
|
405
|
+
|
|
406
|
+
it 'removes the unloaded constant but leaves the loaded constant when rspec resets its mocks' do
|
|
407
|
+
expect(defined?(TestClass)).to be_truthy
|
|
408
|
+
expect(defined?(TestClass::X)).to be_falsey
|
|
409
|
+
stub_const("TestClass::X", 7)
|
|
410
|
+
reset_rspec_mocks
|
|
411
|
+
expect(defined?(TestClass)).to be_truthy
|
|
412
|
+
expect(defined?(TestClass::X)).to be_falsey
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
it 'raises a helpful error if it cannot be stubbed due to an intermediary constant that is not a module' do
|
|
416
|
+
expect(TestClass::M).to be_a(Symbol)
|
|
417
|
+
expect { stub_const("TestClass::M::X", 5) }.to raise_error(/cannot stub/i)
|
|
418
|
+
end
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
context 'for an unloaded constant nested deeply within a deeply nested loaded constant' do
|
|
422
|
+
it_behaves_like "unloaded constant stubbing", "TestClass::Nested::NestedEvenMore::X::Y::Z"
|
|
423
|
+
|
|
424
|
+
it 'removes the first unloaded constant but leaves the loaded nested constant when rspec resets its mocks' do
|
|
425
|
+
expect(defined?(TestClass::Nested::NestedEvenMore)).to be_truthy
|
|
426
|
+
expect(defined?(TestClass::Nested::NestedEvenMore::X)).to be_falsey
|
|
427
|
+
stub_const("TestClass::Nested::NestedEvenMore::X::Y::Z", 7)
|
|
428
|
+
reset_rspec_mocks
|
|
429
|
+
expect(defined?(TestClass::Nested::NestedEvenMore)).to be_truthy
|
|
430
|
+
expect(defined?(TestClass::Nested::NestedEvenMore::X)).to be_falsey
|
|
431
|
+
end
|
|
432
|
+
end
|
|
433
|
+
end
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
RSpec.describe Constant do
|
|
437
|
+
describe ".original" do
|
|
438
|
+
context 'for a previously defined unstubbed constant' do
|
|
439
|
+
let(:const) { Constant.original("TestClass::M") }
|
|
440
|
+
|
|
441
|
+
it("exposes its name") { expect(const.name).to eq("TestClass::M") }
|
|
442
|
+
it("indicates it was previously defined") { expect(const).to be_previously_defined }
|
|
443
|
+
it("indicates it has not been mutated") { expect(const).not_to be_mutated }
|
|
444
|
+
it("indicates it has not been stubbed") { expect(const).not_to be_stubbed }
|
|
445
|
+
it("indicates it has not been hidden") { expect(const).not_to be_hidden }
|
|
446
|
+
it("exposes its original value") { expect(const.original_value).to eq(:m) }
|
|
447
|
+
end
|
|
448
|
+
|
|
449
|
+
context 'for a previously defined stubbed constant' do
|
|
450
|
+
before { stub_const("TestClass::M", :other) }
|
|
451
|
+
let(:const) { Constant.original("TestClass::M") }
|
|
452
|
+
|
|
453
|
+
it("exposes its name") { expect(const.name).to eq("TestClass::M") }
|
|
454
|
+
it("indicates it was previously defined") { expect(const).to be_previously_defined }
|
|
455
|
+
it("indicates it has been mutated") { expect(const).to be_mutated }
|
|
456
|
+
it("indicates it has been stubbed") { expect(const).to be_stubbed }
|
|
457
|
+
it("indicates it has not been hidden") { expect(const).not_to be_hidden }
|
|
458
|
+
it("exposes its original value") { expect(const.original_value).to eq(:m) }
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
context 'for a previously undefined stubbed constant' do
|
|
462
|
+
before { stub_const("TestClass::Undefined", :other) }
|
|
463
|
+
let(:const) { Constant.original("TestClass::Undefined") }
|
|
464
|
+
|
|
465
|
+
it("exposes its name") { expect(const.name).to eq("TestClass::Undefined") }
|
|
466
|
+
it("indicates it was not previously defined") { expect(const).not_to be_previously_defined }
|
|
467
|
+
it("indicates it has been mutated") { expect(const).to be_mutated }
|
|
468
|
+
it("indicates it has been stubbed") { expect(const).to be_stubbed }
|
|
469
|
+
it("indicates it has not been hidden") { expect(const).not_to be_hidden }
|
|
470
|
+
it("returns nil for the original value") { expect(const.original_value).to be_nil }
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
context 'for a previously undefined parent of a stubbed constant' do
|
|
474
|
+
before { stub_const("TestClass::UndefinedModule::Undefined", :other) }
|
|
475
|
+
let(:const) { Constant.original("TestClass::UndefinedModule") }
|
|
476
|
+
|
|
477
|
+
it("exposes its name") { expect(const.name).to eq("TestClass::UndefinedModule") }
|
|
478
|
+
it("indicates it was not previously defined") { expect(const).not_to be_previously_defined }
|
|
479
|
+
it("indicates it has been mutated") { expect(const).to be_mutated }
|
|
480
|
+
it("indicates it has been stubbed") { expect(const).to be_stubbed }
|
|
481
|
+
it("indicates it has not been hidden") { expect(const).not_to be_hidden }
|
|
482
|
+
it("returns nil for the original value") { expect(const.original_value).to be_nil }
|
|
483
|
+
end
|
|
484
|
+
|
|
485
|
+
context 'for a previously undefined unstubbed constant' do
|
|
486
|
+
let(:const) { Constant.original("TestClass::Undefined") }
|
|
487
|
+
|
|
488
|
+
it("exposes its name") { expect(const.name).to eq("TestClass::Undefined") }
|
|
489
|
+
it("indicates it was not previously defined") { expect(const).not_to be_previously_defined }
|
|
490
|
+
it("indicates it has not been mutated") { expect(const).not_to be_mutated }
|
|
491
|
+
it("indicates it has not been stubbed") { expect(const).not_to be_stubbed }
|
|
492
|
+
it("indicates it has not been hidden") { expect(const).not_to be_hidden }
|
|
493
|
+
it("returns nil for the original value") { expect(const.original_value).to be_nil }
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
context 'for a previously defined constant that has been stubbed twice' do
|
|
497
|
+
before { stub_const("TestClass::M", 1) }
|
|
498
|
+
before { stub_const("TestClass::M", 2) }
|
|
499
|
+
let(:const) { Constant.original("TestClass::M") }
|
|
500
|
+
|
|
501
|
+
it("exposes its name") { expect(const.name).to eq("TestClass::M") }
|
|
502
|
+
it("indicates it was previously defined") { expect(const).to be_previously_defined }
|
|
503
|
+
it("indicates it has been mutated") { expect(const).to be_mutated }
|
|
504
|
+
it("indicates it has been stubbed") { expect(const).to be_stubbed }
|
|
505
|
+
it("indicates it has not been hidden") { expect(const).not_to be_hidden }
|
|
506
|
+
it("exposes its original value") { expect(const.original_value).to eq(:m) }
|
|
507
|
+
end
|
|
508
|
+
|
|
509
|
+
context 'for a previously undefined constant that has been stubbed twice' do
|
|
510
|
+
before { stub_const("TestClass::Undefined", 1) }
|
|
511
|
+
before { stub_const("TestClass::Undefined", 2) }
|
|
512
|
+
let(:const) { Constant.original("TestClass::Undefined") }
|
|
513
|
+
|
|
514
|
+
it("exposes its name") { expect(const.name).to eq("TestClass::Undefined") }
|
|
515
|
+
it("indicates it was not previously defined") { expect(const).not_to be_previously_defined }
|
|
516
|
+
it("indicates it has been mutated") { expect(const).to be_mutated }
|
|
517
|
+
it("indicates it has been stubbed") { expect(const).to be_stubbed }
|
|
518
|
+
it("indicates it has not been hidden") { expect(const).not_to be_hidden }
|
|
519
|
+
it("returns nil for the original value") { expect(const.original_value).to be_nil }
|
|
520
|
+
end
|
|
521
|
+
|
|
522
|
+
context 'for a previously undefined hidden constant' do
|
|
523
|
+
before { hide_const("SomeUndefinedConst") }
|
|
524
|
+
let(:const) { Constant.original("SomeUndefinedConst") }
|
|
525
|
+
|
|
526
|
+
it("exposes its name") { expect(const.name).to eq("SomeUndefinedConst") }
|
|
527
|
+
it("indicates it was previously undefined") { expect(const).not_to be_previously_defined }
|
|
528
|
+
it("indicates it has not been mutated") { expect(const).not_to be_mutated }
|
|
529
|
+
it("indicates it has not not been stubbed") { expect(const).not_to be_stubbed }
|
|
530
|
+
it("indicates it has not been hidden") { expect(const).not_to be_hidden }
|
|
531
|
+
it("returns nil for the original value") { expect(const.original_value).to be_nil }
|
|
532
|
+
end
|
|
533
|
+
|
|
534
|
+
context 'for a previously defined hidden constant' do
|
|
535
|
+
before { hide_const("TestClass::M") }
|
|
536
|
+
let(:const) { Constant.original("TestClass::M") }
|
|
537
|
+
|
|
538
|
+
it("exposes its name") { expect(const.name).to eq("TestClass::M") }
|
|
539
|
+
it("indicates it was previously defined") { expect(const).to be_previously_defined }
|
|
540
|
+
it("indicates it has been mutated") { expect(const).to be_mutated }
|
|
541
|
+
it("indicates it has not been stubbed") { expect(const).not_to be_stubbed }
|
|
542
|
+
it("indicates it has been hidden") { expect(const).to be_hidden }
|
|
543
|
+
it("exposes its original value") { expect(const.original_value).to eq(:m) }
|
|
544
|
+
end
|
|
545
|
+
|
|
546
|
+
context 'for a previously defined constant that has been hidden twice' do
|
|
547
|
+
before { hide_const("TestClass::M") }
|
|
548
|
+
before { hide_const("TestClass::M") }
|
|
549
|
+
let(:const) { Constant.original("TestClass::M") }
|
|
550
|
+
|
|
551
|
+
it("exposes its name") { expect(const.name).to eq("TestClass::M") }
|
|
552
|
+
it("indicates it was previously defined") { expect(const).to be_previously_defined }
|
|
553
|
+
it("indicates it has been mutated") { expect(const).to be_mutated }
|
|
554
|
+
it("indicates it has not been stubbed") { expect(const).not_to be_stubbed }
|
|
555
|
+
it("indicates it has been hidden") { expect(const).to be_hidden }
|
|
556
|
+
it("exposes its original value") { expect(const.original_value).to eq(:m) }
|
|
557
|
+
end
|
|
558
|
+
end
|
|
559
|
+
end
|
|
560
|
+
end
|
|
561
|
+
end
|