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,64 @@
|
|
1
|
+
module RSpec
|
2
|
+
module Core
|
3
|
+
# @private
|
4
|
+
class BacktraceFormatter
|
5
|
+
# @private
|
6
|
+
attr_accessor :exclusion_patterns, :inclusion_patterns
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
@full_backtrace = false
|
10
|
+
|
11
|
+
patterns = %w[ /lib\d*/ruby/ bin/ exe/rspec ]
|
12
|
+
patterns << "org/jruby/" if RUBY_PLATFORM == 'java'
|
13
|
+
patterns.map! { |s| Regexp.new(s.gsub("/", File::SEPARATOR)) }
|
14
|
+
|
15
|
+
@exclusion_patterns = [Regexp.union(RSpec::CallerFilter::IGNORE_REGEX, *patterns)]
|
16
|
+
@inclusion_patterns = []
|
17
|
+
|
18
|
+
return unless matches?(@exclusion_patterns, File.join(Dir.getwd, "lib", "foo.rb:13"))
|
19
|
+
inclusion_patterns << Regexp.new(Dir.getwd)
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_writer :full_backtrace
|
23
|
+
|
24
|
+
def full_backtrace?
|
25
|
+
@full_backtrace || exclusion_patterns.empty?
|
26
|
+
end
|
27
|
+
|
28
|
+
def filter_gem(gem_name)
|
29
|
+
sep = File::SEPARATOR
|
30
|
+
exclusion_patterns << /#{sep}#{gem_name}(-[^#{sep}]+)?#{sep}/
|
31
|
+
end
|
32
|
+
|
33
|
+
def format_backtrace(backtrace, options={})
|
34
|
+
return backtrace if options[:full_backtrace] || backtrace.empty?
|
35
|
+
|
36
|
+
backtrace.map { |l| backtrace_line(l) }.compact.
|
37
|
+
tap do |filtered|
|
38
|
+
if filtered.empty?
|
39
|
+
filtered.concat backtrace
|
40
|
+
filtered << ""
|
41
|
+
filtered << " Showing full backtrace because every line was filtered out."
|
42
|
+
filtered << " See docs for RSpec::Configuration#backtrace_exclusion_patterns and"
|
43
|
+
filtered << " RSpec::Configuration#backtrace_inclusion_patterns for more information."
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def backtrace_line(line)
|
49
|
+
Metadata.relative_path(line) unless exclude?(line)
|
50
|
+
end
|
51
|
+
|
52
|
+
def exclude?(line)
|
53
|
+
return false if @full_backtrace
|
54
|
+
matches?(exclusion_patterns, line) && !matches?(inclusion_patterns, line)
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def matches?(patterns, line)
|
60
|
+
patterns.any? { |p| line =~ p }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
RSpec::Support.require_rspec_core "bisect/server"
|
2
|
+
RSpec::Support.require_rspec_core "bisect/runner"
|
3
|
+
RSpec::Support.require_rspec_core "bisect/example_minimizer"
|
4
|
+
RSpec::Support.require_rspec_core "formatters/bisect_progress_formatter"
|
5
|
+
|
6
|
+
module RSpec
|
7
|
+
module Core
|
8
|
+
module Bisect
|
9
|
+
# @private
|
10
|
+
# The main entry point into the bisect logic. Coordinates among:
|
11
|
+
# - Bisect::Server: Receives suite results.
|
12
|
+
# - Bisect::Runner: Runs a set of examples and directs the results
|
13
|
+
# to the server.
|
14
|
+
# - Bisect::ExampleMinimizer: Contains the core bisect logic.
|
15
|
+
# - Formatters::BisectProgressFormatter: provides progress updates
|
16
|
+
# to the user.
|
17
|
+
class Coordinator
|
18
|
+
def self.bisect_with(original_cli_args, configuration, formatter)
|
19
|
+
new(original_cli_args, configuration, formatter).bisect
|
20
|
+
end
|
21
|
+
|
22
|
+
def initialize(original_cli_args, configuration, formatter)
|
23
|
+
@original_cli_args = original_cli_args
|
24
|
+
@configuration = configuration
|
25
|
+
@formatter = formatter
|
26
|
+
end
|
27
|
+
|
28
|
+
def bisect
|
29
|
+
@configuration.add_formatter @formatter
|
30
|
+
|
31
|
+
reporter.close_after do
|
32
|
+
repro = Server.run do |server|
|
33
|
+
runner = Runner.new(server, @original_cli_args)
|
34
|
+
minimizer = ExampleMinimizer.new(runner, reporter)
|
35
|
+
|
36
|
+
gracefully_abort_on_sigint(minimizer)
|
37
|
+
minimizer.find_minimal_repro
|
38
|
+
minimizer.repro_command_for_currently_needed_ids
|
39
|
+
end
|
40
|
+
|
41
|
+
reporter.publish(:bisect_repro_command, :repro => repro)
|
42
|
+
end
|
43
|
+
|
44
|
+
true
|
45
|
+
rescue BisectFailedError => e
|
46
|
+
reporter.publish(:bisect_failed, :failure_explanation => e.message)
|
47
|
+
false
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def reporter
|
53
|
+
@configuration.reporter
|
54
|
+
end
|
55
|
+
|
56
|
+
def gracefully_abort_on_sigint(minimizer)
|
57
|
+
trap('INT') do
|
58
|
+
repro = minimizer.repro_command_for_currently_needed_ids
|
59
|
+
reporter.publish(:bisect_aborted, :repro => repro)
|
60
|
+
exit(1)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
RSpec::Support.require_rspec_core "bisect/subset_enumerator"
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
module Core
|
5
|
+
module Bisect
|
6
|
+
# @private
|
7
|
+
# Contains the core bisect logic. Searches for examples we can ignore by
|
8
|
+
# repeatedly running different subsets of the suite.
|
9
|
+
class ExampleMinimizer
|
10
|
+
attr_reader :runner, :reporter, :all_example_ids, :failed_example_ids
|
11
|
+
attr_accessor :remaining_ids
|
12
|
+
|
13
|
+
def initialize(runner, reporter)
|
14
|
+
@runner = runner
|
15
|
+
@reporter = reporter
|
16
|
+
end
|
17
|
+
|
18
|
+
def find_minimal_repro
|
19
|
+
prep
|
20
|
+
|
21
|
+
self.remaining_ids = non_failing_example_ids
|
22
|
+
|
23
|
+
each_bisect_round do |subsets|
|
24
|
+
ids_to_ignore = subsets.find do |ids|
|
25
|
+
get_expected_failures_for?(remaining_ids - ids)
|
26
|
+
end
|
27
|
+
|
28
|
+
next :done unless ids_to_ignore
|
29
|
+
|
30
|
+
self.remaining_ids -= ids_to_ignore
|
31
|
+
notify(:bisect_ignoring_ids, :ids_to_ignore => ids_to_ignore, :remaining_ids => remaining_ids)
|
32
|
+
end
|
33
|
+
|
34
|
+
currently_needed_ids
|
35
|
+
end
|
36
|
+
|
37
|
+
def currently_needed_ids
|
38
|
+
remaining_ids + failed_example_ids
|
39
|
+
end
|
40
|
+
|
41
|
+
def repro_command_for_currently_needed_ids
|
42
|
+
return runner.repro_command_from(currently_needed_ids) if remaining_ids
|
43
|
+
"(Not yet enough information to provide any repro command)"
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def prep
|
49
|
+
notify(:bisect_starting, :original_cli_args => runner.original_cli_args)
|
50
|
+
|
51
|
+
_, duration = track_duration do
|
52
|
+
original_results = runner.original_results
|
53
|
+
@all_example_ids = original_results.all_example_ids
|
54
|
+
@failed_example_ids = original_results.failed_example_ids
|
55
|
+
end
|
56
|
+
|
57
|
+
if @failed_example_ids.empty?
|
58
|
+
raise BisectFailedError, "\n\nNo failures found. Bisect only works " \
|
59
|
+
"in the presence of one or more failing examples."
|
60
|
+
else
|
61
|
+
notify(:bisect_original_run_complete, :failed_example_ids => failed_example_ids,
|
62
|
+
:non_failing_example_ids => non_failing_example_ids,
|
63
|
+
:duration => duration)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def non_failing_example_ids
|
68
|
+
@non_failing_example_ids ||= all_example_ids - failed_example_ids
|
69
|
+
end
|
70
|
+
|
71
|
+
def get_expected_failures_for?(ids)
|
72
|
+
ids_to_run = ids + failed_example_ids
|
73
|
+
notify(:bisect_individual_run_start, :command => runner.repro_command_from(ids_to_run))
|
74
|
+
|
75
|
+
results, duration = track_duration { runner.run(ids_to_run) }
|
76
|
+
notify(:bisect_individual_run_complete, :duration => duration, :results => results)
|
77
|
+
|
78
|
+
abort_if_ordering_inconsistent(results)
|
79
|
+
(failed_example_ids & results.failed_example_ids) == failed_example_ids
|
80
|
+
end
|
81
|
+
|
82
|
+
INFINITY = (1.0 / 0) # 1.8.7 doesn't define Float::INFINITY so we define our own...
|
83
|
+
|
84
|
+
def each_bisect_round(&block)
|
85
|
+
last_round, duration = track_duration do
|
86
|
+
1.upto(INFINITY) do |round|
|
87
|
+
break if :done == bisect_round(round, &block)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
notify(:bisect_complete, :round => last_round, :duration => duration,
|
92
|
+
:original_non_failing_count => non_failing_example_ids.size,
|
93
|
+
:remaining_count => remaining_ids.size)
|
94
|
+
end
|
95
|
+
|
96
|
+
def bisect_round(round)
|
97
|
+
value, duration = track_duration do
|
98
|
+
subsets = SubsetEnumerator.new(remaining_ids)
|
99
|
+
notify(:bisect_round_started, :round => round,
|
100
|
+
:subset_size => subsets.subset_size,
|
101
|
+
:remaining_count => remaining_ids.size)
|
102
|
+
|
103
|
+
yield subsets
|
104
|
+
end
|
105
|
+
|
106
|
+
notify(:bisect_round_finished, :duration => duration, :round => round)
|
107
|
+
value
|
108
|
+
end
|
109
|
+
|
110
|
+
def track_duration
|
111
|
+
start = ::RSpec::Core::Time.now
|
112
|
+
[yield, ::RSpec::Core::Time.now - start]
|
113
|
+
end
|
114
|
+
|
115
|
+
def abort_if_ordering_inconsistent(results)
|
116
|
+
expected_order = all_example_ids & results.all_example_ids
|
117
|
+
return if expected_order == results.all_example_ids
|
118
|
+
|
119
|
+
raise BisectFailedError, "\n\nThe example ordering is inconsistent. " \
|
120
|
+
"`--bisect` relies upon consistent ordering (e.g. by passing " \
|
121
|
+
"`--seed` if you're using random ordering) to work properly."
|
122
|
+
end
|
123
|
+
|
124
|
+
def notify(*args)
|
125
|
+
reporter.publish(*args)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
RSpec::Support.require_rspec_core "shell_escape"
|
2
|
+
require 'open3'
|
3
|
+
|
4
|
+
module RSpec
|
5
|
+
module Core
|
6
|
+
module Bisect
|
7
|
+
# Provides an API to run the suite for a set of locations, using
|
8
|
+
# the given bisect server to capture the results.
|
9
|
+
# @private
|
10
|
+
class Runner
|
11
|
+
attr_reader :original_cli_args
|
12
|
+
|
13
|
+
def initialize(server, original_cli_args)
|
14
|
+
@server = server
|
15
|
+
@original_cli_args = original_cli_args.reject { |arg| arg.start_with?("--bisect") }
|
16
|
+
end
|
17
|
+
|
18
|
+
def run(locations)
|
19
|
+
run_locations(locations, original_results.failed_example_ids)
|
20
|
+
end
|
21
|
+
|
22
|
+
def command_for(locations)
|
23
|
+
parts = []
|
24
|
+
|
25
|
+
parts << RUBY << load_path
|
26
|
+
parts << open3_safe_escape(RSpec::Core.path_to_executable)
|
27
|
+
|
28
|
+
parts << "--format" << "bisect"
|
29
|
+
parts << "--drb-port" << @server.drb_port
|
30
|
+
parts.concat reusable_cli_options
|
31
|
+
parts.concat locations.map { |l| open3_safe_escape(l) }
|
32
|
+
|
33
|
+
parts.join(" ")
|
34
|
+
end
|
35
|
+
|
36
|
+
def repro_command_from(locations)
|
37
|
+
parts = []
|
38
|
+
|
39
|
+
parts << "rspec"
|
40
|
+
parts.concat Formatters::Helpers.organize_ids(locations)
|
41
|
+
parts.concat original_cli_args_without_locations
|
42
|
+
|
43
|
+
parts.join(" ")
|
44
|
+
end
|
45
|
+
|
46
|
+
def original_results
|
47
|
+
@original_results ||= run_locations(original_locations)
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
include RSpec::Core::ShellEscape
|
53
|
+
# On JRuby, Open3.popen3 does not handle shellescaped args properly:
|
54
|
+
# https://github.com/jruby/jruby/issues/2767
|
55
|
+
if RSpec::Support::Ruby.jruby?
|
56
|
+
# :nocov:
|
57
|
+
alias open3_safe_escape quote
|
58
|
+
# :nocov:
|
59
|
+
else
|
60
|
+
alias open3_safe_escape escape
|
61
|
+
end
|
62
|
+
|
63
|
+
def run_locations(locations, *capture_args)
|
64
|
+
@server.capture_run_results(*capture_args) do
|
65
|
+
run_command command_for(locations)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
# `Open3.capture2e` does not work on JRuby:
|
70
|
+
# https://github.com/jruby/jruby/issues/2766
|
71
|
+
if Open3.respond_to?(:capture2e) && !RSpec::Support::Ruby.jruby?
|
72
|
+
def run_command(cmd)
|
73
|
+
Open3.capture2e(cmd).first
|
74
|
+
end
|
75
|
+
else # for 1.8.7
|
76
|
+
# :nocov:
|
77
|
+
def run_command(cmd)
|
78
|
+
out = err = nil
|
79
|
+
|
80
|
+
Open3.popen3(cmd) do |_, stdout, stderr|
|
81
|
+
# Reading the streams blocks until the process is complete
|
82
|
+
out = stdout.read
|
83
|
+
err = stderr.read
|
84
|
+
end
|
85
|
+
|
86
|
+
"Stdout:\n#{out}\n\nStderr:\n#{err}"
|
87
|
+
end
|
88
|
+
# :nocov:
|
89
|
+
end
|
90
|
+
|
91
|
+
def reusable_cli_options
|
92
|
+
@reusable_cli_options ||= begin
|
93
|
+
opts = original_cli_args_without_locations
|
94
|
+
|
95
|
+
if (port = parsed_original_cli_options[:drb_port])
|
96
|
+
opts -= %W[ --drb-port #{port} ]
|
97
|
+
end
|
98
|
+
|
99
|
+
parsed_original_cli_options.fetch(:formatters) { [] }.each do |(name, out)|
|
100
|
+
opts -= %W[ --format #{name} -f -f#{name} ]
|
101
|
+
opts -= %W[ --out #{out} -o -o#{out} ]
|
102
|
+
end
|
103
|
+
|
104
|
+
opts
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def original_cli_args_without_locations
|
109
|
+
@original_cli_args_without_locations ||= begin
|
110
|
+
files_or_dirs = parsed_original_cli_options.fetch(:files_or_directories_to_run)
|
111
|
+
@original_cli_args - files_or_dirs
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def parsed_original_cli_options
|
116
|
+
@parsed_original_cli_options ||= Parser.parse(@original_cli_args)
|
117
|
+
end
|
118
|
+
|
119
|
+
def original_locations
|
120
|
+
parsed_original_cli_options.fetch(:files_or_directories_to_run)
|
121
|
+
end
|
122
|
+
|
123
|
+
def load_path
|
124
|
+
@load_path ||= "-I#{$LOAD_PATH.map { |p| open3_safe_escape(p) }.join(':')}"
|
125
|
+
end
|
126
|
+
|
127
|
+
# Path to the currently running Ruby executable, borrowed from Rake:
|
128
|
+
# https://github.com/ruby/rake/blob/v10.4.2/lib/rake/file_utils.rb#L8-L12
|
129
|
+
# Note that we skip `ENV['RUBY']` because we don't have to deal with running
|
130
|
+
# RSpec from within a MRI source repository:
|
131
|
+
# https://github.com/ruby/rake/commit/968682759b3b65e42748cd2befb2ff3e982272d9
|
132
|
+
RUBY = File.join(
|
133
|
+
RbConfig::CONFIG['bindir'],
|
134
|
+
RbConfig::CONFIG['ruby_install_name'] + RbConfig::CONFIG['EXEEXT']).
|
135
|
+
sub(/.*\s.*/m, '"\&"')
|
136
|
+
end
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'drb/drb'
|
2
|
+
require 'drb/acl'
|
3
|
+
|
4
|
+
module RSpec
|
5
|
+
module Core
|
6
|
+
# @private
|
7
|
+
module Bisect
|
8
|
+
# @private
|
9
|
+
BisectFailedError = Class.new(StandardError)
|
10
|
+
|
11
|
+
# @private
|
12
|
+
# A DRb server that receives run results from a separate RSpec process
|
13
|
+
# started by the bisect process.
|
14
|
+
class Server
|
15
|
+
def self.run
|
16
|
+
server = new
|
17
|
+
server.start
|
18
|
+
yield server
|
19
|
+
ensure
|
20
|
+
server.stop
|
21
|
+
end
|
22
|
+
|
23
|
+
def capture_run_results(expected_failures=[])
|
24
|
+
self.expected_failures = expected_failures
|
25
|
+
self.latest_run_results = nil
|
26
|
+
run_output = yield
|
27
|
+
latest_run_results || raise_bisect_failed(run_output)
|
28
|
+
end
|
29
|
+
|
30
|
+
def start
|
31
|
+
# Only allow remote DRb requests from this machine.
|
32
|
+
DRb.install_acl ACL.new(%w[ deny all allow localhost allow 127.0.0.1 ])
|
33
|
+
|
34
|
+
# We pass `nil` as the first arg to allow it to pick a DRb port.
|
35
|
+
@drb = DRb.start_service(nil, self)
|
36
|
+
end
|
37
|
+
|
38
|
+
def stop
|
39
|
+
@drb.stop_service
|
40
|
+
end
|
41
|
+
|
42
|
+
def drb_port
|
43
|
+
@drb_port ||= Integer(@drb.uri[/\d+$/])
|
44
|
+
end
|
45
|
+
|
46
|
+
# Fetched via DRb by the BisectFormatter to determine when to abort.
|
47
|
+
attr_accessor :expected_failures
|
48
|
+
|
49
|
+
# Set via DRb by the BisectFormatter with the results of the run.
|
50
|
+
attr_accessor :latest_run_results
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def raise_bisect_failed(run_output)
|
55
|
+
raise BisectFailedError, "Failed to get results from the spec " \
|
56
|
+
"run. Spec run output:\n\n#{run_output}"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|