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,173 @@
|
|
|
1
|
+
require 'erb'
|
|
2
|
+
require 'shellwords'
|
|
3
|
+
require 'set'
|
|
4
|
+
|
|
5
|
+
module RSpec
|
|
6
|
+
module Core
|
|
7
|
+
# Responsible for utilizing externally provided configuration options,
|
|
8
|
+
# whether via the command line, `.rspec`, `~/.rspec`, `.rspec-local`
|
|
9
|
+
# or a custom options file.
|
|
10
|
+
class ConfigurationOptions
|
|
11
|
+
# @param args [Array<String>] command line arguments
|
|
12
|
+
def initialize(args)
|
|
13
|
+
@args = args.dup
|
|
14
|
+
organize_options
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Updates the provided {Configuration} instance based on the provided
|
|
18
|
+
# external configuration options.
|
|
19
|
+
#
|
|
20
|
+
# @param config [Configuration] the configuration instance to update
|
|
21
|
+
def configure(config)
|
|
22
|
+
process_options_into config
|
|
23
|
+
configure_filter_manager config.filter_manager
|
|
24
|
+
load_formatters_into config
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# @api private
|
|
28
|
+
# Updates the provided {FilterManager} based on the filter options.
|
|
29
|
+
# @param filter_manager [FilterManager] instance to update
|
|
30
|
+
def configure_filter_manager(filter_manager)
|
|
31
|
+
@filter_manager_options.each do |command, value|
|
|
32
|
+
filter_manager.__send__ command, value
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @return [Hash] the final merged options, drawn from all external sources
|
|
37
|
+
attr_reader :options
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def organize_options
|
|
42
|
+
@filter_manager_options = []
|
|
43
|
+
|
|
44
|
+
@options = (file_options << command_line_options << env_options).each do |opts|
|
|
45
|
+
@filter_manager_options << [:include, opts.delete(:inclusion_filter)] if opts.key?(:inclusion_filter)
|
|
46
|
+
@filter_manager_options << [:exclude, opts.delete(:exclusion_filter)] if opts.key?(:exclusion_filter)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
@options = @options.inject(:libs => [], :requires => []) do |hash, opts|
|
|
50
|
+
hash.merge(opts) do |key, oldval, newval|
|
|
51
|
+
[:libs, :requires].include?(key) ? oldval + newval : newval
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
UNFORCED_OPTIONS = [
|
|
57
|
+
:requires, :profile, :drb, :libs, :files_or_directories_to_run,
|
|
58
|
+
:full_description, :full_backtrace, :tty
|
|
59
|
+
].to_set
|
|
60
|
+
|
|
61
|
+
UNPROCESSABLE_OPTIONS = [:formatters].to_set
|
|
62
|
+
|
|
63
|
+
def force?(key)
|
|
64
|
+
!UNFORCED_OPTIONS.include?(key)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def order(keys)
|
|
68
|
+
OPTIONS_ORDER.reverse.each do |key|
|
|
69
|
+
keys.unshift(key) if keys.delete(key)
|
|
70
|
+
end
|
|
71
|
+
keys
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
OPTIONS_ORDER = [
|
|
75
|
+
# It's important to set this before anything that might issue a
|
|
76
|
+
# deprecation (or otherwise access the reporter).
|
|
77
|
+
:deprecation_stream,
|
|
78
|
+
|
|
79
|
+
# load paths depend on nothing, but must be set before `requires`
|
|
80
|
+
# to support load-path-relative requires.
|
|
81
|
+
:libs,
|
|
82
|
+
|
|
83
|
+
# `files_or_directories_to_run` uses `default_path` so it must be
|
|
84
|
+
# set before it.
|
|
85
|
+
:default_path,
|
|
86
|
+
|
|
87
|
+
# These must be set before `requires` to support checking `config.files_to_run`
|
|
88
|
+
# from within `spec_helper.rb` when a `-rspec_helper` option is used.
|
|
89
|
+
:files_or_directories_to_run, :pattern, :exclude_pattern,
|
|
90
|
+
|
|
91
|
+
# In general, we want to require the specified files as early as possible.
|
|
92
|
+
# The `--require` option is specifically intended to allow early requires.
|
|
93
|
+
# For later requires, they can just put the require in their spec files, but
|
|
94
|
+
# `--require` provides a unique opportunity for users to instruct RSpec to
|
|
95
|
+
# load an extension file early for maximum flexibility.
|
|
96
|
+
:requires
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
def process_options_into(config)
|
|
100
|
+
opts = options.reject { |k, _| UNPROCESSABLE_OPTIONS.include? k }
|
|
101
|
+
|
|
102
|
+
order(opts.keys).each do |key|
|
|
103
|
+
force?(key) ? config.force(key => opts[key]) : config.__send__("#{key}=", opts[key])
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def load_formatters_into(config)
|
|
108
|
+
options[:formatters].each { |pair| config.add_formatter(*pair) } if options[:formatters]
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def file_options
|
|
112
|
+
custom_options_file ? [custom_options] : [global_options, project_options, local_options]
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def env_options
|
|
116
|
+
ENV["SPEC_OPTS"] ? Parser.parse(Shellwords.split(ENV["SPEC_OPTS"])) : {}
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def command_line_options
|
|
120
|
+
@command_line_options ||= Parser.parse(@args).merge :files_or_directories_to_run => @args
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def custom_options
|
|
124
|
+
options_from(custom_options_file)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def local_options
|
|
128
|
+
@local_options ||= options_from(local_options_file)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def project_options
|
|
132
|
+
@project_options ||= options_from(project_options_file)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def global_options
|
|
136
|
+
@global_options ||= options_from(global_options_file)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def options_from(path)
|
|
140
|
+
Parser.parse(args_from_options_file(path))
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def args_from_options_file(path)
|
|
144
|
+
return [] unless path && File.exist?(path)
|
|
145
|
+
config_string = options_file_as_erb_string(path)
|
|
146
|
+
FlatMap.flat_map(config_string.split(/\n+/), &:shellsplit)
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def options_file_as_erb_string(path)
|
|
150
|
+
ERB.new(File.read(path), nil, '-').result(binding)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def custom_options_file
|
|
154
|
+
command_line_options[:custom_options_file]
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def project_options_file
|
|
158
|
+
".rspec"
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def local_options_file
|
|
162
|
+
".rspec-local"
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def global_options_file
|
|
166
|
+
File.join(File.expand_path("~"), ".rspec")
|
|
167
|
+
rescue ArgumentError
|
|
168
|
+
RSpec.warning "Unable to find ~/.rspec because the HOME environment variable is not set"
|
|
169
|
+
nil
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
require 'drb/drb'
|
|
2
|
+
|
|
3
|
+
module RSpec
|
|
4
|
+
module Core
|
|
5
|
+
# @private
|
|
6
|
+
class DRbRunner
|
|
7
|
+
def initialize(options, configuration=RSpec.configuration)
|
|
8
|
+
@options = options
|
|
9
|
+
@configuration = configuration
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def drb_port
|
|
13
|
+
@options.options[:drb_port] || ENV['RSPEC_DRB'] || 8989
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def run(err, out)
|
|
17
|
+
begin
|
|
18
|
+
DRb.start_service("druby://localhost:0")
|
|
19
|
+
rescue SocketError, Errno::EADDRNOTAVAIL
|
|
20
|
+
DRb.start_service("druby://:0")
|
|
21
|
+
end
|
|
22
|
+
spec_server = DRbObject.new_with_uri("druby://127.0.0.1:#{drb_port}")
|
|
23
|
+
spec_server.run(drb_argv, err, out)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def drb_argv
|
|
27
|
+
@drb_argv ||= begin
|
|
28
|
+
@options.configure_filter_manager(@configuration.filter_manager)
|
|
29
|
+
DRbOptions.new(@options.options, @configuration.filter_manager).options
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# @private
|
|
35
|
+
class DRbOptions
|
|
36
|
+
def initialize(submitted_options, filter_manager)
|
|
37
|
+
@submitted_options = submitted_options
|
|
38
|
+
@filter_manager = filter_manager
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def options
|
|
42
|
+
argv = []
|
|
43
|
+
argv << "--color" if @submitted_options[:color]
|
|
44
|
+
argv << "--profile" if @submitted_options[:profile_examples]
|
|
45
|
+
argv << "--backtrace" if @submitted_options[:full_backtrace]
|
|
46
|
+
argv << "--tty" if @submitted_options[:tty]
|
|
47
|
+
argv << "--fail-fast" if @submitted_options[:fail_fast]
|
|
48
|
+
argv << "--options" << @submitted_options[:custom_options_file] if @submitted_options[:custom_options_file]
|
|
49
|
+
argv << "--order" << @submitted_options[:order] if @submitted_options[:order]
|
|
50
|
+
|
|
51
|
+
add_failure_exit_code(argv)
|
|
52
|
+
add_full_description(argv)
|
|
53
|
+
add_filter(argv, :inclusion, @filter_manager.inclusions)
|
|
54
|
+
add_filter(argv, :exclusion, @filter_manager.exclusions)
|
|
55
|
+
add_formatters(argv)
|
|
56
|
+
add_libs(argv)
|
|
57
|
+
add_requires(argv)
|
|
58
|
+
|
|
59
|
+
argv + @submitted_options[:files_or_directories_to_run]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def add_failure_exit_code(argv)
|
|
63
|
+
return unless @submitted_options[:failure_exit_code]
|
|
64
|
+
|
|
65
|
+
argv << "--failure-exit-code" << @submitted_options[:failure_exit_code].to_s
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def add_full_description(argv)
|
|
69
|
+
return unless @submitted_options[:full_description]
|
|
70
|
+
|
|
71
|
+
# The argument to --example is regexp-escaped before being stuffed
|
|
72
|
+
# into a regexp when received for the first time (see OptionParser).
|
|
73
|
+
# Hence, merely grabbing the source of this regexp will retain the
|
|
74
|
+
# backslashes, so we must remove them.
|
|
75
|
+
@submitted_options[:full_description].each do |description|
|
|
76
|
+
argv << "--example" << description.source.delete('\\')
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
CONDITIONAL_FILTERS = [:if, :unless]
|
|
81
|
+
|
|
82
|
+
def add_filter(argv, name, hash)
|
|
83
|
+
hash.each_pair do |k, v|
|
|
84
|
+
next if CONDITIONAL_FILTERS.include?(k)
|
|
85
|
+
tag = name == :inclusion ? k.to_s : "~#{k}"
|
|
86
|
+
tag << ":#{v}" if v.is_a?(String)
|
|
87
|
+
argv << "--tag" << tag
|
|
88
|
+
end unless hash.empty?
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def add_formatters(argv)
|
|
92
|
+
@submitted_options[:formatters].each do |pair|
|
|
93
|
+
argv << "--format" << pair[0]
|
|
94
|
+
argv << "--out" << pair[1] if pair[1]
|
|
95
|
+
end if @submitted_options[:formatters]
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def add_libs(argv)
|
|
99
|
+
@submitted_options[:libs].each do |path|
|
|
100
|
+
argv << "-I" << path
|
|
101
|
+
end if @submitted_options[:libs]
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def add_requires(argv)
|
|
105
|
+
@submitted_options[:requires].each do |path|
|
|
106
|
+
argv << "--require" << path
|
|
107
|
+
end if @submitted_options[:requires]
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Core
|
|
3
|
+
# DSL defines methods to group examples, most notably `describe`,
|
|
4
|
+
# and exposes them as class methods of {RSpec}. They can also be
|
|
5
|
+
# exposed globally (on `main` and instances of `Module`) through
|
|
6
|
+
# the {Configuration} option `expose_dsl_globally`.
|
|
7
|
+
#
|
|
8
|
+
# By default the methods `describe`, `context` and `example_group`
|
|
9
|
+
# are exposed. These methods define a named context for one or
|
|
10
|
+
# more examples. The given block is evaluated in the context of
|
|
11
|
+
# a generated subclass of {RSpec::Core::ExampleGroup}
|
|
12
|
+
#
|
|
13
|
+
# ## Examples:
|
|
14
|
+
#
|
|
15
|
+
# RSpec.describe "something" do
|
|
16
|
+
# context "when something is a certain way" do
|
|
17
|
+
# it "does something" do
|
|
18
|
+
# # example code goes here
|
|
19
|
+
# end
|
|
20
|
+
# end
|
|
21
|
+
# end
|
|
22
|
+
#
|
|
23
|
+
# @see ExampleGroup
|
|
24
|
+
# @see ExampleGroup.example_group
|
|
25
|
+
module DSL
|
|
26
|
+
# @private
|
|
27
|
+
def self.example_group_aliases
|
|
28
|
+
@example_group_aliases ||= []
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @private
|
|
32
|
+
def self.exposed_globally?
|
|
33
|
+
@exposed_globally ||= false
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @private
|
|
37
|
+
def self.expose_example_group_alias(name)
|
|
38
|
+
example_group_aliases << name
|
|
39
|
+
|
|
40
|
+
(class << RSpec; self; end).__send__(:define_method, name) do |*args, &example_group_block|
|
|
41
|
+
RSpec.world.register RSpec::Core::ExampleGroup.__send__(name, *args, &example_group_block)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
expose_example_group_alias_globally(name) if exposed_globally?
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
class << self
|
|
48
|
+
# @private
|
|
49
|
+
attr_accessor :top_level
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Adds the describe method to Module and the top level binding
|
|
53
|
+
# @api private
|
|
54
|
+
def self.expose_globally!
|
|
55
|
+
return if exposed_globally?
|
|
56
|
+
|
|
57
|
+
example_group_aliases.each do |method_name|
|
|
58
|
+
expose_example_group_alias_globally(method_name)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
@exposed_globally = true
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Removes the describe method from Module and the top level binding
|
|
65
|
+
# @api private
|
|
66
|
+
def self.remove_globally!
|
|
67
|
+
return unless exposed_globally?
|
|
68
|
+
|
|
69
|
+
example_group_aliases.each do |method_name|
|
|
70
|
+
change_global_dsl { undef_method method_name }
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
@exposed_globally = false
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# @private
|
|
77
|
+
def self.expose_example_group_alias_globally(method_name)
|
|
78
|
+
change_global_dsl do
|
|
79
|
+
define_method(method_name) { |*a, &b| ::RSpec.__send__(method_name, *a, &b) }
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# @private
|
|
84
|
+
def self.change_global_dsl(&changes)
|
|
85
|
+
(class << top_level; self; end).class_exec(&changes)
|
|
86
|
+
Module.class_exec(&changes)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# capture main without an eval
|
|
93
|
+
::RSpec::Core::DSL.top_level = self
|
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
module RSpec
|
|
2
|
+
module Core
|
|
3
|
+
# Wrapper for an instance of a subclass of {ExampleGroup}. An instance of
|
|
4
|
+
# `RSpec::Core::Example` is returned by example definition methods
|
|
5
|
+
# such as {ExampleGroup.it it} and is yielded to the {ExampleGroup.it it},
|
|
6
|
+
# {Hooks#before before}, {Hooks#after after}, {Hooks#around around},
|
|
7
|
+
# {MemoizedHelpers::ClassMethods#let let} and
|
|
8
|
+
# {MemoizedHelpers::ClassMethods#subject subject} blocks.
|
|
9
|
+
#
|
|
10
|
+
# This allows us to provide rich metadata about each individual
|
|
11
|
+
# example without adding tons of methods directly to the ExampleGroup
|
|
12
|
+
# that users may inadvertantly redefine.
|
|
13
|
+
#
|
|
14
|
+
# Useful for configuring logging and/or taking some action based
|
|
15
|
+
# on the state of an example's metadata.
|
|
16
|
+
#
|
|
17
|
+
# @example
|
|
18
|
+
#
|
|
19
|
+
# RSpec.configure do |config|
|
|
20
|
+
# config.before do |example|
|
|
21
|
+
# log example.description
|
|
22
|
+
# end
|
|
23
|
+
#
|
|
24
|
+
# config.after do |example|
|
|
25
|
+
# log example.description
|
|
26
|
+
# end
|
|
27
|
+
#
|
|
28
|
+
# config.around do |example|
|
|
29
|
+
# log example.description
|
|
30
|
+
# example.run
|
|
31
|
+
# end
|
|
32
|
+
# end
|
|
33
|
+
#
|
|
34
|
+
# shared_examples "auditable" do
|
|
35
|
+
# it "does something" do
|
|
36
|
+
# log "#{example.full_description}: #{auditable.inspect}"
|
|
37
|
+
# auditable.should do_something
|
|
38
|
+
# end
|
|
39
|
+
# end
|
|
40
|
+
#
|
|
41
|
+
# @see ExampleGroup
|
|
42
|
+
# @note Example blocks are evaluated in the context of an instance
|
|
43
|
+
# of an `ExampleGroup`, not in the context of an instance of `Example`.
|
|
44
|
+
class Example
|
|
45
|
+
# @private
|
|
46
|
+
#
|
|
47
|
+
# Used to define methods that delegate to this example's metadata
|
|
48
|
+
def self.delegate_to_metadata(key)
|
|
49
|
+
define_method(key) { @metadata[key] }
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @return [ExecutionResult] represents the result of running this example.
|
|
53
|
+
delegate_to_metadata :execution_result
|
|
54
|
+
# @return [String] the relative path to the file where this example was defined.
|
|
55
|
+
delegate_to_metadata :file_path
|
|
56
|
+
# @return [String] the full description (including the docstrings of
|
|
57
|
+
# all parent example groups).
|
|
58
|
+
delegate_to_metadata :full_description
|
|
59
|
+
# @return [String] the exact source location of this example in a form
|
|
60
|
+
# like `./path/to/spec.rb:17`
|
|
61
|
+
delegate_to_metadata :location
|
|
62
|
+
# @return [Boolean] flag that indicates that the example is not expected to pass.
|
|
63
|
+
# It will be run and will either have a pending result (if a failure occurs)
|
|
64
|
+
# or a failed result (if no failure occurs).
|
|
65
|
+
delegate_to_metadata :pending
|
|
66
|
+
# @return [Boolean] flag that will cause the example to not run.
|
|
67
|
+
# The {ExecutionResult} status will be `:pending`.
|
|
68
|
+
delegate_to_metadata :skip
|
|
69
|
+
|
|
70
|
+
# Returns the string submitted to `example` or its aliases (e.g.
|
|
71
|
+
# `specify`, `it`, etc). If no string is submitted (e.g. `it { is_expected.to
|
|
72
|
+
# do_something }`) it returns the message generated by the matcher if
|
|
73
|
+
# there is one, otherwise returns a message including the location of the
|
|
74
|
+
# example.
|
|
75
|
+
def description
|
|
76
|
+
description = if metadata[:description].to_s.empty?
|
|
77
|
+
"example at #{location}"
|
|
78
|
+
else
|
|
79
|
+
metadata[:description]
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
RSpec.configuration.format_docstrings_block.call(description)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# @attr_reader
|
|
86
|
+
#
|
|
87
|
+
# Returns the first exception raised in the context of running this
|
|
88
|
+
# example (nil if no exception is raised)
|
|
89
|
+
attr_reader :exception
|
|
90
|
+
|
|
91
|
+
# @attr_reader
|
|
92
|
+
#
|
|
93
|
+
# Returns the metadata object associated with this example.
|
|
94
|
+
attr_reader :metadata
|
|
95
|
+
|
|
96
|
+
# @attr_reader
|
|
97
|
+
# @private
|
|
98
|
+
#
|
|
99
|
+
# Returns the example_group_instance that provides the context for
|
|
100
|
+
# running this example.
|
|
101
|
+
attr_reader :example_group_instance
|
|
102
|
+
|
|
103
|
+
# @attr
|
|
104
|
+
# @private
|
|
105
|
+
attr_accessor :clock
|
|
106
|
+
|
|
107
|
+
# Creates a new instance of Example.
|
|
108
|
+
# @param example_group_class [Class] the subclass of ExampleGroup in which this Example is declared
|
|
109
|
+
# @param description [String] the String passed to the `it` method (or alias)
|
|
110
|
+
# @param user_metadata [Hash] additional args passed to `it` to be used as metadata
|
|
111
|
+
# @param example_block [Proc] the block of code that represents the example
|
|
112
|
+
# @api private
|
|
113
|
+
def initialize(example_group_class, description, user_metadata, example_block=nil)
|
|
114
|
+
@example_group_class = example_group_class
|
|
115
|
+
@example_block = example_block
|
|
116
|
+
|
|
117
|
+
@metadata = Metadata::ExampleHash.create(
|
|
118
|
+
@example_group_class.metadata, user_metadata, description, example_block
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
@example_group_instance = @exception = nil
|
|
122
|
+
@clock = RSpec::Core::Time
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Returns the example group class that provides the context for running
|
|
126
|
+
# this example.
|
|
127
|
+
def example_group
|
|
128
|
+
@example_group_class
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
alias_method :pending?, :pending
|
|
132
|
+
alias_method :skipped?, :skip
|
|
133
|
+
|
|
134
|
+
# @api private
|
|
135
|
+
# instance_execs the block passed to the constructor in the context of
|
|
136
|
+
# the instance of {ExampleGroup}.
|
|
137
|
+
# @param example_group_instance the instance of an ExampleGroup subclass
|
|
138
|
+
def run(example_group_instance, reporter)
|
|
139
|
+
@example_group_instance = example_group_instance
|
|
140
|
+
RSpec.current_example = self
|
|
141
|
+
|
|
142
|
+
start(reporter)
|
|
143
|
+
Pending.mark_pending!(self, pending) if pending?
|
|
144
|
+
|
|
145
|
+
begin
|
|
146
|
+
if skipped?
|
|
147
|
+
Pending.mark_pending! self, skip
|
|
148
|
+
elsif !RSpec.configuration.dry_run?
|
|
149
|
+
with_around_example_hooks do
|
|
150
|
+
begin
|
|
151
|
+
run_before_example
|
|
152
|
+
@example_group_instance.instance_exec(self, &@example_block)
|
|
153
|
+
|
|
154
|
+
if pending?
|
|
155
|
+
Pending.mark_fixed! self
|
|
156
|
+
|
|
157
|
+
raise Pending::PendingExampleFixedError,
|
|
158
|
+
'Expected example to fail since it is pending, but it passed.',
|
|
159
|
+
[location]
|
|
160
|
+
end
|
|
161
|
+
rescue Pending::SkipDeclaredInExample
|
|
162
|
+
# no-op, required metadata has already been set by the `skip`
|
|
163
|
+
# method.
|
|
164
|
+
rescue Exception => e
|
|
165
|
+
set_exception(e)
|
|
166
|
+
ensure
|
|
167
|
+
run_after_example
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
rescue Exception => e
|
|
172
|
+
set_exception(e)
|
|
173
|
+
ensure
|
|
174
|
+
@example_group_instance.instance_variables.each do |ivar|
|
|
175
|
+
@example_group_instance.instance_variable_set(ivar, nil)
|
|
176
|
+
end
|
|
177
|
+
@example_group_instance = nil
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
finish(reporter)
|
|
181
|
+
ensure
|
|
182
|
+
RSpec.current_example = nil
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
# Wraps both a `Proc` and an {Example} for use in {Hooks#around
|
|
186
|
+
# around} hooks. In around hooks we need to yield this special
|
|
187
|
+
# kind of object (rather than the raw {Example}) because when
|
|
188
|
+
# there are multiple `around` hooks we have to wrap them recursively.
|
|
189
|
+
#
|
|
190
|
+
# @example
|
|
191
|
+
#
|
|
192
|
+
# RSpec.configure do |c|
|
|
193
|
+
# c.around do |ex| # Procsy which wraps the example
|
|
194
|
+
# if ex.metadata[:key] == :some_value && some_global_condition
|
|
195
|
+
# raise "some message"
|
|
196
|
+
# end
|
|
197
|
+
# ex.run # run delegates to ex.call
|
|
198
|
+
# end
|
|
199
|
+
# end
|
|
200
|
+
#
|
|
201
|
+
# @note This class also exposes the instance methods of {Example},
|
|
202
|
+
# proxying them through to the wrapped {Example} instance.
|
|
203
|
+
class Procsy
|
|
204
|
+
# The {Example} instance.
|
|
205
|
+
attr_reader :example
|
|
206
|
+
|
|
207
|
+
Example.public_instance_methods(false).each do |name|
|
|
208
|
+
next if name.to_sym == :run || name.to_sym == :inspect
|
|
209
|
+
|
|
210
|
+
define_method(name) { |*a, &b| @example.__send__(name, *a, &b) }
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
Proc.public_instance_methods(false).each do |name|
|
|
214
|
+
next if name.to_sym == :call || name.to_sym == :inspect || name.to_sym == :to_proc
|
|
215
|
+
|
|
216
|
+
define_method(name) { |*a, &b| @proc.__send__(name, *a, &b) }
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Calls the proc and notes that the example has been executed.
|
|
220
|
+
def call(*args, &block)
|
|
221
|
+
@executed = true
|
|
222
|
+
@proc.call(*args, &block)
|
|
223
|
+
end
|
|
224
|
+
alias run call
|
|
225
|
+
|
|
226
|
+
# Provides a wrapped proc that will update our `executed?` state when executed.
|
|
227
|
+
def to_proc
|
|
228
|
+
method(:call).to_proc
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
def initialize(example, &block)
|
|
232
|
+
@example = example
|
|
233
|
+
@proc = block
|
|
234
|
+
@executed = false
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
# @private
|
|
238
|
+
def wrap(&block)
|
|
239
|
+
self.class.new(example, &block)
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
# Indicates whether or not the around hook has executed the example.
|
|
243
|
+
def executed?
|
|
244
|
+
@executed
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
# @private
|
|
248
|
+
def inspect
|
|
249
|
+
@example.inspect.gsub('Example', 'ExampleProcsy')
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
# @private
|
|
254
|
+
def any_apply?(filters)
|
|
255
|
+
MetadataFilter.any_apply?(filters, metadata)
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
# @private
|
|
259
|
+
def all_apply?(filters)
|
|
260
|
+
MetadataFilter.all_apply?(filters, metadata) || @example_group_class.all_apply?(filters)
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
# @private
|
|
264
|
+
def around_example_hooks
|
|
265
|
+
@around_example_hooks ||= example_group.hooks.around_example_hooks_for(self)
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
# @private
|
|
269
|
+
#
|
|
270
|
+
# Used internally to set an exception in an after hook, which
|
|
271
|
+
# captures the exception but doesn't raise it.
|
|
272
|
+
def set_exception(exception, context=nil)
|
|
273
|
+
if pending? && !(Pending::PendingExampleFixedError === exception)
|
|
274
|
+
execution_result.pending_exception = exception
|
|
275
|
+
else
|
|
276
|
+
if @exception
|
|
277
|
+
# An error has already been set; we don't want to override it,
|
|
278
|
+
# but we also don't want silence the error, so let's print it.
|
|
279
|
+
msg = <<-EOS
|
|
280
|
+
|
|
281
|
+
An error occurred #{context}
|
|
282
|
+
#{exception.class}: #{exception.message}
|
|
283
|
+
occurred at #{exception.backtrace.first}
|
|
284
|
+
|
|
285
|
+
EOS
|
|
286
|
+
RSpec.configuration.reporter.message(msg)
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
@exception ||= exception
|
|
290
|
+
end
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
# @private
|
|
294
|
+
#
|
|
295
|
+
# Used internally to set an exception and fail without actually executing
|
|
296
|
+
# the example when an exception is raised in before(:context).
|
|
297
|
+
def fail_with_exception(reporter, exception)
|
|
298
|
+
start(reporter)
|
|
299
|
+
set_exception(exception)
|
|
300
|
+
finish(reporter)
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
# @private
|
|
304
|
+
#
|
|
305
|
+
# Used internally to skip without actually executing the example when
|
|
306
|
+
# skip is used in before(:context)
|
|
307
|
+
def skip_with_exception(reporter, exception)
|
|
308
|
+
start(reporter)
|
|
309
|
+
Pending.mark_skipped! self, exception.argument
|
|
310
|
+
finish(reporter)
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
# @private
|
|
314
|
+
def instance_exec_with_rescue(context, &block)
|
|
315
|
+
@example_group_instance.instance_exec(self, &block)
|
|
316
|
+
rescue Exception => e
|
|
317
|
+
set_exception(e, context)
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
# @private
|
|
321
|
+
def instance_exec(*args, &block)
|
|
322
|
+
@example_group_instance.instance_exec(*args, &block)
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
private
|
|
326
|
+
|
|
327
|
+
def with_around_example_hooks(&block)
|
|
328
|
+
if around_example_hooks.empty?
|
|
329
|
+
yield
|
|
330
|
+
else
|
|
331
|
+
@example_group_class.hooks.run(:around, :example, self, Procsy.new(self, &block))
|
|
332
|
+
end
|
|
333
|
+
rescue Exception => e
|
|
334
|
+
set_exception(e, "in an `around(:example)` hook")
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
def start(reporter)
|
|
338
|
+
reporter.example_started(self)
|
|
339
|
+
execution_result.started_at = clock.now
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
def finish(reporter)
|
|
343
|
+
pending_message = execution_result.pending_message
|
|
344
|
+
|
|
345
|
+
if @exception
|
|
346
|
+
record_finished :failed
|
|
347
|
+
execution_result.exception = @exception
|
|
348
|
+
reporter.example_failed self
|
|
349
|
+
false
|
|
350
|
+
elsif pending_message
|
|
351
|
+
record_finished :pending
|
|
352
|
+
execution_result.pending_message = pending_message
|
|
353
|
+
reporter.example_pending self
|
|
354
|
+
true
|
|
355
|
+
else
|
|
356
|
+
record_finished :passed
|
|
357
|
+
reporter.example_passed self
|
|
358
|
+
true
|
|
359
|
+
end
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
def record_finished(status)
|
|
363
|
+
execution_result.record_finished(status, clock.now)
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
def run_before_example
|
|
367
|
+
@example_group_instance.setup_mocks_for_rspec
|
|
368
|
+
@example_group_class.hooks.run(:before, :example, self)
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
def run_after_example
|
|
372
|
+
@example_group_class.hooks.run(:after, :example, self)
|
|
373
|
+
verify_mocks
|
|
374
|
+
assign_generated_description if RSpec.configuration.expecting_with_rspec?
|
|
375
|
+
rescue Exception => e
|
|
376
|
+
set_exception(e, "in an `after(:example)` hook")
|
|
377
|
+
ensure
|
|
378
|
+
@example_group_instance.teardown_mocks_for_rspec
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
def verify_mocks
|
|
382
|
+
@example_group_instance.verify_mocks_for_rspec if mocks_need_verification?
|
|
383
|
+
rescue Exception => e
|
|
384
|
+
if pending?
|
|
385
|
+
execution_result.pending_fixed = false
|
|
386
|
+
@exception = nil
|
|
387
|
+
else
|
|
388
|
+
set_exception(e)
|
|
389
|
+
end
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
def mocks_need_verification?
|
|
393
|
+
exception.nil? || execution_result.pending_fixed?
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
def assign_generated_description
|
|
397
|
+
if metadata[:description].empty? && (description = RSpec::Matchers.generated_description)
|
|
398
|
+
metadata[:description] = description
|
|
399
|
+
metadata[:full_description] << description
|
|
400
|
+
end
|
|
401
|
+
rescue Exception => e
|
|
402
|
+
set_exception(e, "while assigning the example description")
|
|
403
|
+
ensure
|
|
404
|
+
RSpec::Matchers.clear_generated_description
|
|
405
|
+
end
|
|
406
|
+
|
|
407
|
+
def skip_message
|
|
408
|
+
if String === skip
|
|
409
|
+
skip
|
|
410
|
+
else
|
|
411
|
+
Pending::NO_REASON_GIVEN
|
|
412
|
+
end
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
# Represents the result of executing an example.
|
|
416
|
+
# Behaves like a hash for backwards compatibility.
|
|
417
|
+
class ExecutionResult
|
|
418
|
+
include HashImitatable
|
|
419
|
+
|
|
420
|
+
# @return [Symbol] `:passed`, `:failed` or `:pending`.
|
|
421
|
+
attr_accessor :status
|
|
422
|
+
|
|
423
|
+
# @return [Exception, nil] The failure, if there was one.
|
|
424
|
+
attr_accessor :exception
|
|
425
|
+
|
|
426
|
+
# @return [Time] When the example started.
|
|
427
|
+
attr_accessor :started_at
|
|
428
|
+
|
|
429
|
+
# @return [Time] When the example finished.
|
|
430
|
+
attr_accessor :finished_at
|
|
431
|
+
|
|
432
|
+
# @return [Float] How long the example took in seconds.
|
|
433
|
+
attr_accessor :run_time
|
|
434
|
+
|
|
435
|
+
# @return [String, nil] The reason the example was pending,
|
|
436
|
+
# or nil if the example was not pending.
|
|
437
|
+
attr_accessor :pending_message
|
|
438
|
+
|
|
439
|
+
# @return [Exception, nil] The exception triggered while
|
|
440
|
+
# executing the pending example. If no exception was triggered
|
|
441
|
+
# it would no longer get a status of `:pending` unless it was
|
|
442
|
+
# tagged with `:skip`.
|
|
443
|
+
attr_accessor :pending_exception
|
|
444
|
+
|
|
445
|
+
# @return [Boolean] For examples tagged with `:pending`,
|
|
446
|
+
# this indicates whether or not it now passes.
|
|
447
|
+
attr_accessor :pending_fixed
|
|
448
|
+
|
|
449
|
+
alias pending_fixed? pending_fixed
|
|
450
|
+
|
|
451
|
+
# @api private
|
|
452
|
+
# Records the finished status of the example.
|
|
453
|
+
def record_finished(status, finished_at)
|
|
454
|
+
self.status = status
|
|
455
|
+
self.finished_at = finished_at
|
|
456
|
+
self.run_time = (finished_at - started_at).to_f
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
private
|
|
460
|
+
|
|
461
|
+
# For backwards compatibility we present `status` as a string
|
|
462
|
+
# when presenting the legacy hash interface.
|
|
463
|
+
def hash_for_delegation
|
|
464
|
+
super.tap do |hash|
|
|
465
|
+
hash[:status] &&= status.to_s
|
|
466
|
+
end
|
|
467
|
+
end
|
|
468
|
+
|
|
469
|
+
def set_value(name, value)
|
|
470
|
+
value &&= value.to_sym if name == :status
|
|
471
|
+
super(name, value)
|
|
472
|
+
end
|
|
473
|
+
|
|
474
|
+
def get_value(name)
|
|
475
|
+
if name == :status
|
|
476
|
+
status.to_s if status
|
|
477
|
+
else
|
|
478
|
+
super
|
|
479
|
+
end
|
|
480
|
+
end
|
|
481
|
+
|
|
482
|
+
def issue_deprecation(_method_name, *_args)
|
|
483
|
+
RSpec.deprecate("Treating `metadata[:execution_result]` as a hash",
|
|
484
|
+
:replacement => "the attributes methods to access the data")
|
|
485
|
+
end
|
|
486
|
+
end
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
# @private
|
|
490
|
+
# Provides an execution context for before/after :suite hooks.
|
|
491
|
+
class SuiteHookContext < Example
|
|
492
|
+
def initialize
|
|
493
|
+
super(AnonymousExampleGroup, "", {})
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
# To ensure we don't silence errors...
|
|
497
|
+
def set_exception(exception, _context=nil)
|
|
498
|
+
raise exception
|
|
499
|
+
end
|
|
500
|
+
end
|
|
501
|
+
end
|
|
502
|
+
end
|