sublimetheme 1.0.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 +9 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +230 -0
- data/Rakefile +8 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/sublimetheme.rb +6832 -0
- data/lib/sublimetheme/version.rb +3 -0
- data/path/bin/htmldiff +25 -0
- data/path/bin/htmldiff.bat +6 -0
- data/path/bin/ldiff +25 -0
- data/path/bin/ldiff.bat +6 -0
- data/path/bin/rspec +23 -0
- data/path/bin/rspec.bat +6 -0
- data/path/cache/diff-lcs-1.2.5.gem +0 -0
- data/path/cache/rspec-3.3.0.gem +0 -0
- data/path/cache/rspec-core-3.3.2.gem +0 -0
- data/path/cache/rspec-expectations-3.3.1.gem +0 -0
- data/path/cache/rspec-mocks-3.3.2.gem +0 -0
- data/path/cache/rspec-support-3.3.0.gem +0 -0
- data/path/gems/diff-lcs-1.2.5/.autotest +3 -0
- data/path/gems/diff-lcs-1.2.5/.gemtest +0 -0
- data/path/gems/diff-lcs-1.2.5/.hoerc +2 -0
- data/path/gems/diff-lcs-1.2.5/.rspec +2 -0
- data/path/gems/diff-lcs-1.2.5/.travis.yml +22 -0
- data/path/gems/diff-lcs-1.2.5/Contributing.rdoc +64 -0
- data/path/gems/diff-lcs-1.2.5/Gemfile +20 -0
- data/path/gems/diff-lcs-1.2.5/History.rdoc +152 -0
- data/path/gems/diff-lcs-1.2.5/License.rdoc +39 -0
- data/path/gems/diff-lcs-1.2.5/Manifest.txt +38 -0
- data/path/gems/diff-lcs-1.2.5/README.rdoc +85 -0
- data/path/gems/diff-lcs-1.2.5/Rakefile +41 -0
- data/path/gems/diff-lcs-1.2.5/autotest/discover.rb +1 -0
- data/path/gems/diff-lcs-1.2.5/bin/htmldiff +32 -0
- data/path/gems/diff-lcs-1.2.5/bin/ldiff +6 -0
- data/path/gems/diff-lcs-1.2.5/docs/COPYING.txt +339 -0
- data/path/gems/diff-lcs-1.2.5/docs/artistic.txt +127 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff-lcs.rb +3 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff/lcs.rb +805 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/array.rb +7 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/block.rb +37 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/callbacks.rb +322 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/change.rb +177 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/htmldiff.rb +149 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/hunk.rb +276 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/internals.rb +301 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/ldiff.rb +195 -0
- data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/string.rb +5 -0
- data/path/gems/diff-lcs-1.2.5/spec/change_spec.rb +65 -0
- data/path/gems/diff-lcs-1.2.5/spec/diff_spec.rb +47 -0
- data/path/gems/diff-lcs-1.2.5/spec/hunk_spec.rb +72 -0
- data/path/gems/diff-lcs-1.2.5/spec/issues_spec.rb +24 -0
- data/path/gems/diff-lcs-1.2.5/spec/lcs_spec.rb +54 -0
- data/path/gems/diff-lcs-1.2.5/spec/patch_spec.rb +414 -0
- data/path/gems/diff-lcs-1.2.5/spec/sdiff_spec.rb +214 -0
- data/path/gems/diff-lcs-1.2.5/spec/spec_helper.rb +290 -0
- data/path/gems/diff-lcs-1.2.5/spec/traverse_balanced_spec.rb +310 -0
- data/path/gems/diff-lcs-1.2.5/spec/traverse_sequences_spec.rb +139 -0
- data/path/gems/rspec-3.3.0/License.txt +24 -0
- data/path/gems/rspec-3.3.0/README.md +34 -0
- data/path/gems/rspec-3.3.0/lib/rspec.rb +3 -0
- data/path/gems/rspec-3.3.0/lib/rspec/version.rb +5 -0
- data/path/gems/rspec-core-3.3.2/.document +5 -0
- data/path/gems/rspec-core-3.3.2/.yardopts +8 -0
- data/path/gems/rspec-core-3.3.2/Changelog.md +1856 -0
- data/path/gems/rspec-core-3.3.2/License.txt +25 -0
- data/path/gems/rspec-core-3.3.2/README.md +369 -0
- data/path/gems/rspec-core-3.3.2/exe/rspec +4 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/autorun.rb +3 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core.rb +181 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/backtrace_formatter.rb +64 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/coordinator.rb +66 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/example_minimizer.rb +130 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/runner.rb +139 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/server.rb +61 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb +39 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb +1807 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/configuration_options.rb +191 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/drb.rb +111 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/dsl.rb +96 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/example.rb +573 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/example_group.rb +796 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/example_status_persister.rb +235 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/filter_manager.rb +231 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/flat_map.rb +20 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters.rb +254 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/base_formatter.rb +70 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/base_text_formatter.rb +77 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/bisect_formatter.rb +68 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/bisect_progress_formatter.rb +115 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/console_codes.rb +65 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/documentation_formatter.rb +70 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/exception_presenter.rb +393 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/helpers.rb +109 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/html_formatter.rb +151 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/html_printer.rb +415 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/json_formatter.rb +96 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/profile_formatter.rb +68 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/progress_formatter.rb +28 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/protocol.rb +172 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/snippet_extractor.rb +116 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/hooks.rb +638 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/memoized_helpers.rb +532 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/metadata.rb +490 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/metadata_filter.rb +235 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/null.rb +14 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/rr.rb +31 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/mutex.rb +63 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/notifications.rb +498 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/option_parser.rb +301 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/ordering.rb +158 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/pending.rb +165 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/profiler.rb +32 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/project_initializer.rb +48 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/project_initializer/.rspec +2 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/project_initializer/spec/spec_helper.rb +96 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/rake_task.rb +158 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/reentrant_mutex.rb +52 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/reporter.rb +220 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/ruby_project.rb +53 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb +179 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/sandbox.rb +37 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/set.rb +49 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/shared_context.rb +55 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/shared_example_group.rb +210 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/shell_escape.rb +49 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/version.rb +9 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/warnings.rb +40 -0
- data/path/gems/rspec-core-3.3.2/lib/rspec/core/world.rb +178 -0
- data/path/gems/rspec-expectations-3.3.1/.document +5 -0
- data/path/gems/rspec-expectations-3.3.1/.yardopts +6 -0
- data/path/gems/rspec-expectations-3.3.1/Changelog.md +953 -0
- data/path/gems/rspec-expectations-3.3.1/License.txt +24 -0
- data/path/gems/rspec-expectations-3.3.1/README.md +289 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations.rb +81 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/configuration.rb +164 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/expectation_target.rb +113 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/fail_with.rb +31 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/failure_aggregator.rb +194 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/handler.rb +170 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/minitest_integration.rb +31 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/syntax.rb +132 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/version.rb +8 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers.rb +1009 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/aliased_matcher.rb +116 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in.rb +52 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/all.rb +85 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/base_matcher.rb +181 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be.rb +285 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_between.rb +77 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_within.rb +72 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/change.rb +337 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/compound.rb +293 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/contain_exactly.rb +253 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/cover.rb +24 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/eq.rb +40 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/eql.rb +34 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/equal.rb +81 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/exist.rb +86 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/has.rb +103 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/include.rb +130 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/match.rb +37 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/operators.rb +128 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/output.rb +200 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/raise_error.rb +216 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/respond_to.rb +90 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/satisfy.rb +37 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/yield.rb +418 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/composable.rb +184 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/dsl.rb +453 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/english_phrasing.rb +42 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +73 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/fail_matchers.rb +42 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/generated_descriptions.rb +42 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/matcher_delegator.rb +35 -0
- data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/matcher_protocol.rb +99 -0
- data/path/gems/rspec-mocks-3.3.2/.document +5 -0
- data/path/gems/rspec-mocks-3.3.2/.yardopts +6 -0
- data/path/gems/rspec-mocks-3.3.2/Changelog.md +965 -0
- data/path/gems/rspec-mocks-3.3.2/License.txt +24 -0
- data/path/gems/rspec-mocks-3.3.2/README.md +430 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks.rb +126 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance.rb +11 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/chain.rb +110 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/expect_chain_chain.rb +35 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/expectation_chain.rb +48 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/proxy.rb +116 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/recorder.rb +264 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/stub_chain.rb +46 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/stub_chain_chain.rb +27 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/argument_list_matcher.rb +100 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/argument_matchers.rb +320 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/configuration.rb +188 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/error_generator.rb +362 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/example_methods.rb +421 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/instance_method_stasher.rb +135 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/marshal_extension.rb +41 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/have_received.rb +116 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/receive.rb +130 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/receive_message_chain.rb +80 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/receive_messages.rb +75 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/message_chain.rb +87 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/message_expectation.rb +717 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/method_double.rb +287 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/method_reference.rb +192 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/mutate_const.rb +335 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/mutex.rb +73 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/object_reference.rb +149 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/order_group.rb +81 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/proxy.rb +439 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/reentrant_mutex.rb +53 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/space.rb +238 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/standalone.rb +3 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/syntax.rb +325 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/targets.rb +97 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/test_double.rb +170 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/verifying_double.rb +129 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/verifying_message_expecation.rb +54 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/verifying_proxy.rb +213 -0
- data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/version.rb +9 -0
- data/path/gems/rspec-support-3.3.0/Changelog.md +125 -0
- data/path/gems/rspec-support-3.3.0/LICENSE.txt +22 -0
- data/path/gems/rspec-support-3.3.0/README.md +26 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support.rb +111 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/caller_filter.rb +83 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/differ.rb +215 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/directory_maker.rb +63 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/encoded_string.rb +155 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/hunk_generator.rb +47 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/matcher_definition.rb +42 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/method_signature_verifier.rb +273 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/object_formatter.rb +93 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/recursive_const_methods.rb +76 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/ruby_features.rb +118 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec.rb +81 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/formatting_support.rb +9 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/in_sub_process.rb +52 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/library_wide_checks.rb +145 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/shell_out.rb +71 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/string_matcher.rb +46 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/with_isolated_directory.rb +9 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/version.rb +7 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/version_checker.rb +53 -0
- data/path/gems/rspec-support-3.3.0/lib/rspec/support/warnings.rb +39 -0
- data/path/specifications/diff-lcs-1.2.5.gemspec +68 -0
- data/path/specifications/rspec-3.3.0.gemspec +42 -0
- data/path/specifications/rspec-core-3.3.2.gemspec +68 -0
- data/path/specifications/rspec-expectations-3.3.1.gemspec +50 -0
- data/path/specifications/rspec-mocks-3.3.2.gemspec +53 -0
- data/path/specifications/rspec-support-3.3.0.gemspec +38 -0
- data/sublimetheme.gemspec +32 -0
- metadata +363 -0
@@ -0,0 +1,52 @@
|
|
1
|
+
module RSpec
|
2
|
+
module Core
|
3
|
+
# Allows a thread to lock out other threads from a critical section of code,
|
4
|
+
# while allowing the thread with the lock to reenter that section.
|
5
|
+
#
|
6
|
+
# Based on Monitor as of 2.2 - https://github.com/ruby/ruby/blob/eb7ddaa3a47bf48045d26c72eb0f263a53524ebc/lib/monitor.rb#L9
|
7
|
+
#
|
8
|
+
# Depends on Mutex, but Mutex is only available as part of core since 1.9.1:
|
9
|
+
# exists - http://ruby-doc.org/core-1.9.1/Mutex.html
|
10
|
+
# dne - http://ruby-doc.org/core-1.9.0/Mutex.html
|
11
|
+
#
|
12
|
+
# @private
|
13
|
+
class ReentrantMutex
|
14
|
+
def initialize
|
15
|
+
@owner = nil
|
16
|
+
@count = 0
|
17
|
+
@mutex = Mutex.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def synchronize
|
21
|
+
enter
|
22
|
+
yield
|
23
|
+
ensure
|
24
|
+
exit
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def enter
|
30
|
+
@mutex.lock if @owner != Thread.current
|
31
|
+
@owner = Thread.current
|
32
|
+
@count += 1
|
33
|
+
end
|
34
|
+
|
35
|
+
def exit
|
36
|
+
@count -= 1
|
37
|
+
return unless @count == 0
|
38
|
+
@owner = nil
|
39
|
+
@mutex.unlock
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
if defined? ::Mutex
|
44
|
+
# On 1.9 and up, this is in core, so we just use the real one
|
45
|
+
Mutex = ::Mutex
|
46
|
+
else # For 1.8.7
|
47
|
+
# :nocov:
|
48
|
+
RSpec::Support.require_rspec_core "mutex"
|
49
|
+
# :nocov:
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,220 @@
|
|
1
|
+
module RSpec::Core
|
2
|
+
# A reporter will send notifications to listeners, usually formatters for the
|
3
|
+
# spec suite run.
|
4
|
+
class Reporter
|
5
|
+
# @private
|
6
|
+
RSPEC_NOTIFICATIONS = Set.new(
|
7
|
+
[
|
8
|
+
:close, :deprecation, :deprecation_summary, :dump_failures, :dump_pending,
|
9
|
+
:dump_profile, :dump_summary, :example_failed, :example_group_finished,
|
10
|
+
:example_group_started, :example_passed, :example_pending, :example_started,
|
11
|
+
:message, :seed, :start, :start_dump, :stop
|
12
|
+
])
|
13
|
+
|
14
|
+
def initialize(configuration)
|
15
|
+
@configuration = configuration
|
16
|
+
@listeners = Hash.new { |h, k| h[k] = Set.new }
|
17
|
+
@examples = []
|
18
|
+
@failed_examples = []
|
19
|
+
@pending_examples = []
|
20
|
+
@duration = @start = @load_time = nil
|
21
|
+
end
|
22
|
+
|
23
|
+
# @private
|
24
|
+
attr_reader :examples, :failed_examples, :pending_examples
|
25
|
+
|
26
|
+
# @private
|
27
|
+
def reset
|
28
|
+
@examples = []
|
29
|
+
@failed_examples = []
|
30
|
+
@pending_examples = []
|
31
|
+
@profiler = Profiler.new if defined?(@profiler)
|
32
|
+
end
|
33
|
+
|
34
|
+
# @private
|
35
|
+
def setup_profiler
|
36
|
+
@profiler = Profiler.new
|
37
|
+
register_listener @profiler, *Profiler::NOTIFICATIONS
|
38
|
+
end
|
39
|
+
|
40
|
+
# Registers a listener to a list of notifications. The reporter will send
|
41
|
+
# notification of events to all registered listeners.
|
42
|
+
#
|
43
|
+
# @param listener [Object] An obect that wishes to be notified of reporter
|
44
|
+
# events
|
45
|
+
# @param notifications [Array] Array of symbols represents the events a
|
46
|
+
# listener wishes to subscribe too
|
47
|
+
def register_listener(listener, *notifications)
|
48
|
+
notifications.each do |notification|
|
49
|
+
@listeners[notification.to_sym] << listener
|
50
|
+
end
|
51
|
+
true
|
52
|
+
end
|
53
|
+
|
54
|
+
# @private
|
55
|
+
def registered_listeners(notification)
|
56
|
+
@listeners[notification].to_a
|
57
|
+
end
|
58
|
+
|
59
|
+
# @overload report(count, &block)
|
60
|
+
# @overload report(count, &block)
|
61
|
+
# @param expected_example_count [Integer] the number of examples being run
|
62
|
+
# @yield [Block] block yields itself for further reporting.
|
63
|
+
#
|
64
|
+
# Initializes the report run and yields itself for further reporting. The
|
65
|
+
# block is required, so that the reporter can manage cleaning up after the
|
66
|
+
# run.
|
67
|
+
#
|
68
|
+
# @example
|
69
|
+
#
|
70
|
+
# reporter.report(group.examples.size) do |r|
|
71
|
+
# example_groups.map {|g| g.run(r) }
|
72
|
+
# end
|
73
|
+
#
|
74
|
+
def report(expected_example_count)
|
75
|
+
start(expected_example_count)
|
76
|
+
begin
|
77
|
+
yield self
|
78
|
+
ensure
|
79
|
+
finish
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# @private
|
84
|
+
def start(expected_example_count, time=RSpec::Core::Time.now)
|
85
|
+
@start = time
|
86
|
+
@load_time = (@start - @configuration.start_time).to_f
|
87
|
+
notify :seed, Notifications::SeedNotification.new(@configuration.seed, seed_used?)
|
88
|
+
notify :start, Notifications::StartNotification.new(expected_example_count, @load_time)
|
89
|
+
end
|
90
|
+
|
91
|
+
# @param message [#to_s] A message object to send to formatters
|
92
|
+
#
|
93
|
+
# Send a custom message to supporting formatters.
|
94
|
+
def message(message)
|
95
|
+
notify :message, Notifications::MessageNotification.new(message)
|
96
|
+
end
|
97
|
+
|
98
|
+
# @param event [Symbol] Name of the custom event to trigger on formatters
|
99
|
+
# @param options [Hash] Hash of arguments to provide via `CustomNotification`
|
100
|
+
#
|
101
|
+
# Publish a custom event to supporting registered formatters.
|
102
|
+
# @see RSpec::Core::Notifications::CustomNotification
|
103
|
+
def publish(event, options={})
|
104
|
+
if RSPEC_NOTIFICATIONS.include? event
|
105
|
+
raise "RSpec::Core::Reporter#publish is intended for sending custom " \
|
106
|
+
"events not internal RSpec ones, please rename your custom event."
|
107
|
+
end
|
108
|
+
notify event, Notifications::CustomNotification.for(options)
|
109
|
+
end
|
110
|
+
|
111
|
+
# @private
|
112
|
+
def example_group_started(group)
|
113
|
+
notify :example_group_started, Notifications::GroupNotification.new(group) unless group.descendant_filtered_examples.empty?
|
114
|
+
end
|
115
|
+
|
116
|
+
# @private
|
117
|
+
def example_group_finished(group)
|
118
|
+
notify :example_group_finished, Notifications::GroupNotification.new(group) unless group.descendant_filtered_examples.empty?
|
119
|
+
end
|
120
|
+
|
121
|
+
# @private
|
122
|
+
def example_started(example)
|
123
|
+
@examples << example
|
124
|
+
notify :example_started, Notifications::ExampleNotification.for(example)
|
125
|
+
end
|
126
|
+
|
127
|
+
# @private
|
128
|
+
def example_passed(example)
|
129
|
+
notify :example_passed, Notifications::ExampleNotification.for(example)
|
130
|
+
end
|
131
|
+
|
132
|
+
# @private
|
133
|
+
def example_failed(example)
|
134
|
+
@failed_examples << example
|
135
|
+
notify :example_failed, Notifications::ExampleNotification.for(example)
|
136
|
+
end
|
137
|
+
|
138
|
+
# @private
|
139
|
+
def example_pending(example)
|
140
|
+
@pending_examples << example
|
141
|
+
notify :example_pending, Notifications::ExampleNotification.for(example)
|
142
|
+
end
|
143
|
+
|
144
|
+
# @private
|
145
|
+
def deprecation(hash)
|
146
|
+
notify :deprecation, Notifications::DeprecationNotification.from_hash(hash)
|
147
|
+
end
|
148
|
+
|
149
|
+
# @private
|
150
|
+
def finish
|
151
|
+
close_after do
|
152
|
+
stop
|
153
|
+
notify :start_dump, Notifications::NullNotification
|
154
|
+
notify :dump_pending, Notifications::ExamplesNotification.new(self)
|
155
|
+
notify :dump_failures, Notifications::ExamplesNotification.new(self)
|
156
|
+
notify :deprecation_summary, Notifications::NullNotification
|
157
|
+
unless mute_profile_output?
|
158
|
+
notify :dump_profile, Notifications::ProfileNotification.new(@duration, @examples,
|
159
|
+
@configuration.profile_examples,
|
160
|
+
@profiler.example_groups)
|
161
|
+
end
|
162
|
+
notify :dump_summary, Notifications::SummaryNotification.new(@duration, @examples, @failed_examples,
|
163
|
+
@pending_examples, @load_time)
|
164
|
+
notify :seed, Notifications::SeedNotification.new(@configuration.seed, seed_used?)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
# @private
|
169
|
+
def close_after
|
170
|
+
yield
|
171
|
+
ensure
|
172
|
+
close
|
173
|
+
end
|
174
|
+
|
175
|
+
# @private
|
176
|
+
def stop
|
177
|
+
@duration = (RSpec::Core::Time.now - @start).to_f if @start
|
178
|
+
notify :stop, Notifications::ExamplesNotification.new(self)
|
179
|
+
end
|
180
|
+
|
181
|
+
# @private
|
182
|
+
def notify(event, notification)
|
183
|
+
registered_listeners(event).each do |formatter|
|
184
|
+
formatter.__send__(event, notification)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
# @private
|
189
|
+
def abort_with(msg, exit_status)
|
190
|
+
message(msg)
|
191
|
+
close
|
192
|
+
exit!(exit_status)
|
193
|
+
end
|
194
|
+
|
195
|
+
private
|
196
|
+
|
197
|
+
def close
|
198
|
+
notify :close, Notifications::NullNotification
|
199
|
+
end
|
200
|
+
|
201
|
+
def mute_profile_output?
|
202
|
+
# Don't print out profiled info if there are failures and `--fail-fast` is
|
203
|
+
# used, it just clutters the output.
|
204
|
+
!@configuration.profile_examples? || (@configuration.fail_fast? && @failed_examples.size > 0)
|
205
|
+
end
|
206
|
+
|
207
|
+
def seed_used?
|
208
|
+
@configuration.seed && @configuration.seed_used?
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
# @private
|
213
|
+
# # Used in place of a {Reporter} for situations where we don't want reporting output.
|
214
|
+
class NullReporter
|
215
|
+
def self.method_missing(*)
|
216
|
+
# ignore
|
217
|
+
end
|
218
|
+
private_class_method :method_missing
|
219
|
+
end
|
220
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# This is borrowed (slightly modified) from Scott Taylor's
|
2
|
+
# project_path project:
|
3
|
+
# http://github.com/smtlaissezfaire/project_path
|
4
|
+
module RSpec
|
5
|
+
module Core
|
6
|
+
# @private
|
7
|
+
module RubyProject
|
8
|
+
def add_to_load_path(*dirs)
|
9
|
+
dirs.map { |dir| add_dir_to_load_path(File.join(root, dir)) }
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_dir_to_load_path(dir)
|
13
|
+
$LOAD_PATH.unshift(dir) unless $LOAD_PATH.include?(dir)
|
14
|
+
end
|
15
|
+
|
16
|
+
def root
|
17
|
+
@project_root ||= determine_root
|
18
|
+
end
|
19
|
+
|
20
|
+
def determine_root
|
21
|
+
find_first_parent_containing('spec') || '.'
|
22
|
+
end
|
23
|
+
|
24
|
+
def find_first_parent_containing(dir)
|
25
|
+
ascend_until { |path| File.exist?(File.join(path, dir)) }
|
26
|
+
end
|
27
|
+
|
28
|
+
def ascend_until
|
29
|
+
fs = File::SEPARATOR
|
30
|
+
escaped_slash = "\\#{fs}"
|
31
|
+
special = "_RSPEC_ESCAPED_SLASH_"
|
32
|
+
project_path = File.expand_path(".")
|
33
|
+
parts = project_path.gsub(escaped_slash, special).squeeze(fs).split(fs).map do |x|
|
34
|
+
x.gsub(special, escaped_slash)
|
35
|
+
end
|
36
|
+
|
37
|
+
until parts.empty?
|
38
|
+
path = parts.join(fs)
|
39
|
+
path = fs if path == ""
|
40
|
+
return path if yield(path)
|
41
|
+
parts.pop
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
module_function :add_to_load_path
|
46
|
+
module_function :add_dir_to_load_path
|
47
|
+
module_function :root
|
48
|
+
module_function :determine_root
|
49
|
+
module_function :find_first_parent_containing
|
50
|
+
module_function :ascend_until
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,179 @@
|
|
1
|
+
module RSpec
|
2
|
+
module Core
|
3
|
+
# Provides the main entry point to run a suite of RSpec examples.
|
4
|
+
class Runner
|
5
|
+
# Register an `at_exit` hook that runs the suite when the process exits.
|
6
|
+
#
|
7
|
+
# @note This is not generally needed. The `rspec` command takes care
|
8
|
+
# of running examples for you without involving an `at_exit`
|
9
|
+
# hook. This is only needed if you are running specs using
|
10
|
+
# the `ruby` command, and even then, the normal way to invoke
|
11
|
+
# this is by requiring `rspec/autorun`.
|
12
|
+
def self.autorun
|
13
|
+
if autorun_disabled?
|
14
|
+
RSpec.deprecate("Requiring `rspec/autorun` when running RSpec via the `rspec` command")
|
15
|
+
return
|
16
|
+
elsif installed_at_exit? || running_in_drb?
|
17
|
+
return
|
18
|
+
end
|
19
|
+
|
20
|
+
at_exit { perform_at_exit }
|
21
|
+
@installed_at_exit = true
|
22
|
+
end
|
23
|
+
|
24
|
+
# @private
|
25
|
+
def self.perform_at_exit
|
26
|
+
# Don't bother running any specs and just let the program terminate
|
27
|
+
# if we got here due to an unrescued exception (anything other than
|
28
|
+
# SystemExit, which is raised when somebody calls Kernel#exit).
|
29
|
+
return unless $!.nil? || $!.is_a?(SystemExit)
|
30
|
+
|
31
|
+
# We got here because either the end of the program was reached or
|
32
|
+
# somebody called Kernel#exit. Run the specs and then override any
|
33
|
+
# existing exit status with RSpec's exit status if any specs failed.
|
34
|
+
invoke
|
35
|
+
end
|
36
|
+
|
37
|
+
# Runs the suite of specs and exits the process with an appropriate exit
|
38
|
+
# code.
|
39
|
+
def self.invoke
|
40
|
+
disable_autorun!
|
41
|
+
status = run(ARGV, $stderr, $stdout).to_i
|
42
|
+
exit(status) if status != 0
|
43
|
+
end
|
44
|
+
|
45
|
+
# Run a suite of RSpec examples. Does not exit.
|
46
|
+
#
|
47
|
+
# This is used internally by RSpec to run a suite, but is available
|
48
|
+
# for use by any other automation tool.
|
49
|
+
#
|
50
|
+
# If you want to run this multiple times in the same process, and you
|
51
|
+
# want files like `spec_helper.rb` to be reloaded, be sure to load `load`
|
52
|
+
# instead of `require`.
|
53
|
+
#
|
54
|
+
# @param args [Array] command-line-supported arguments
|
55
|
+
# @param err [IO] error stream
|
56
|
+
# @param out [IO] output stream
|
57
|
+
# @return [Fixnum] exit status code. 0 if all specs passed,
|
58
|
+
# or the configured failure exit code (1 by default) if specs
|
59
|
+
# failed.
|
60
|
+
def self.run(args, err=$stderr, out=$stdout)
|
61
|
+
trap_interrupt
|
62
|
+
options = ConfigurationOptions.new(args)
|
63
|
+
|
64
|
+
if options.options[:drb]
|
65
|
+
require 'rspec/core/drb'
|
66
|
+
begin
|
67
|
+
DRbRunner.new(options).run(err, out)
|
68
|
+
rescue DRb::DRbConnError
|
69
|
+
err.puts "No DRb server is running. Running in local process instead ..."
|
70
|
+
new(options).run(err, out)
|
71
|
+
end
|
72
|
+
else
|
73
|
+
new(options).run(err, out)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def initialize(options, configuration=RSpec.configuration, world=RSpec.world)
|
78
|
+
@options = options
|
79
|
+
@configuration = configuration
|
80
|
+
@world = world
|
81
|
+
end
|
82
|
+
|
83
|
+
# Configures and runs a spec suite.
|
84
|
+
#
|
85
|
+
# @param err [IO] error stream
|
86
|
+
# @param out [IO] output stream
|
87
|
+
def run(err, out)
|
88
|
+
setup(err, out)
|
89
|
+
run_specs(@world.ordered_example_groups).tap do
|
90
|
+
persist_example_statuses
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# Wires together the various configuration objects and state holders.
|
95
|
+
#
|
96
|
+
# @param err [IO] error stream
|
97
|
+
# @param out [IO] output stream
|
98
|
+
def setup(err, out)
|
99
|
+
@configuration.error_stream = err
|
100
|
+
@configuration.output_stream = out if @configuration.output_stream == $stdout
|
101
|
+
@options.configure(@configuration)
|
102
|
+
@configuration.load_spec_files
|
103
|
+
@world.announce_filters
|
104
|
+
end
|
105
|
+
|
106
|
+
# Runs the provided example groups.
|
107
|
+
#
|
108
|
+
# @param example_groups [Array<RSpec::Core::ExampleGroup>] groups to run
|
109
|
+
# @return [Fixnum] exit status code. 0 if all specs passed,
|
110
|
+
# or the configured failure exit code (1 by default) if specs
|
111
|
+
# failed.
|
112
|
+
def run_specs(example_groups)
|
113
|
+
@configuration.reporter.report(@world.example_count(example_groups)) do |reporter|
|
114
|
+
@configuration.with_suite_hooks do
|
115
|
+
example_groups.map { |g| g.run(reporter) }.all? ? 0 : @configuration.failure_exit_code
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
private
|
121
|
+
|
122
|
+
def persist_example_statuses
|
123
|
+
return unless (path = @configuration.example_status_persistence_file_path)
|
124
|
+
|
125
|
+
ExampleStatusPersister.persist(@world.all_examples, path)
|
126
|
+
rescue SystemCallError => e
|
127
|
+
RSpec.warning "Could not write example statuses to #{path} (configured as " \
|
128
|
+
"`config.example_status_persistence_file_path`) due to a " \
|
129
|
+
"system error: #{e.inspect}. Please check that the config " \
|
130
|
+
"option is set to an accessible, valid file path", :call_site => nil
|
131
|
+
end
|
132
|
+
|
133
|
+
# @private
|
134
|
+
def self.disable_autorun!
|
135
|
+
@autorun_disabled = true
|
136
|
+
end
|
137
|
+
|
138
|
+
# @private
|
139
|
+
def self.autorun_disabled?
|
140
|
+
@autorun_disabled ||= false
|
141
|
+
end
|
142
|
+
|
143
|
+
# @private
|
144
|
+
def self.installed_at_exit?
|
145
|
+
@installed_at_exit ||= false
|
146
|
+
end
|
147
|
+
|
148
|
+
# @private
|
149
|
+
# rubocop:disable Lint/EnsureReturn
|
150
|
+
def self.running_in_drb?
|
151
|
+
if defined?(DRb) && DRb.current_server
|
152
|
+
require 'socket'
|
153
|
+
require 'uri'
|
154
|
+
local_ipv4 = IPSocket.getaddress(Socket.gethostname)
|
155
|
+
local_drb = ["127.0.0.1", "localhost", local_ipv4].any? { |addr| addr == URI(DRb.current_server.uri).host }
|
156
|
+
end
|
157
|
+
rescue DRb::DRbServerNotFound
|
158
|
+
ensure
|
159
|
+
return local_drb || false
|
160
|
+
end
|
161
|
+
# rubocop:enable Lint/EnsureReturn
|
162
|
+
|
163
|
+
# @private
|
164
|
+
def self.trap_interrupt
|
165
|
+
trap('INT') { handle_interrupt }
|
166
|
+
end
|
167
|
+
|
168
|
+
# @private
|
169
|
+
def self.handle_interrupt
|
170
|
+
if RSpec.world.wants_to_quit
|
171
|
+
exit!(1)
|
172
|
+
else
|
173
|
+
RSpec.world.wants_to_quit = true
|
174
|
+
STDERR.puts "\nRSpec is shutting down and will print the summary report... Interrupt again to force quit."
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|