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,130 @@
|
|
1
|
+
module RSpec
|
2
|
+
module Matchers
|
3
|
+
module BuiltIn
|
4
|
+
# @api private
|
5
|
+
# Provides the implementation for `include`.
|
6
|
+
# Not intended to be instantiated directly.
|
7
|
+
class Include < BaseMatcher
|
8
|
+
def initialize(*expected)
|
9
|
+
@expected = expected
|
10
|
+
end
|
11
|
+
|
12
|
+
# @api private
|
13
|
+
# @return [Boolean]
|
14
|
+
def matches?(actual)
|
15
|
+
perform_match(actual) { |v| v }
|
16
|
+
end
|
17
|
+
|
18
|
+
# @api private
|
19
|
+
# @return [Boolean]
|
20
|
+
def does_not_match?(actual)
|
21
|
+
perform_match(actual) { |v| !v }
|
22
|
+
end
|
23
|
+
|
24
|
+
# @api private
|
25
|
+
# @return [String]
|
26
|
+
def description
|
27
|
+
improve_hash_formatting("include#{readable_list_of(expected)}")
|
28
|
+
end
|
29
|
+
|
30
|
+
# @api private
|
31
|
+
# @return [String]
|
32
|
+
def failure_message
|
33
|
+
format_failure_message("to") { super }
|
34
|
+
end
|
35
|
+
|
36
|
+
# @api private
|
37
|
+
# @return [String]
|
38
|
+
def failure_message_when_negated
|
39
|
+
format_failure_message("not to") { super }
|
40
|
+
end
|
41
|
+
|
42
|
+
# @api private
|
43
|
+
# @return [Boolean]
|
44
|
+
def diffable?
|
45
|
+
!diff_would_wrongly_highlight_matched_item?
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def format_failure_message(preposition)
|
51
|
+
if actual.respond_to?(:include?)
|
52
|
+
improve_hash_formatting("expected #{description_of @actual} #{preposition} include#{readable_list_of @divergent_items}")
|
53
|
+
else
|
54
|
+
improve_hash_formatting(yield) + ", but it does not respond to `include?`"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def readable_list_of(items)
|
59
|
+
described_items = surface_descriptions_in(items)
|
60
|
+
if described_items.all? { |item| item.is_a?(Hash) }
|
61
|
+
" #{described_items.inject(:merge).inspect}"
|
62
|
+
else
|
63
|
+
EnglishPhrasing.list(described_items)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def perform_match(actual, &block)
|
68
|
+
@actual = actual
|
69
|
+
@divergent_items = excluded_from_actual(&block)
|
70
|
+
actual.respond_to?(:include?) && @divergent_items.empty?
|
71
|
+
end
|
72
|
+
|
73
|
+
def excluded_from_actual
|
74
|
+
return [] unless @actual.respond_to?(:include?)
|
75
|
+
|
76
|
+
expected.inject([]) do |memo, expected_item|
|
77
|
+
if comparing_hash_to_a_subset?(expected_item)
|
78
|
+
expected_item.each do |(key, value)|
|
79
|
+
memo << { key => value } unless yield actual_hash_includes?(key, value)
|
80
|
+
end
|
81
|
+
elsif comparing_hash_keys?(expected_item)
|
82
|
+
memo << expected_item unless yield actual_hash_has_key?(expected_item)
|
83
|
+
else
|
84
|
+
memo << expected_item unless yield actual_collection_includes?(expected_item)
|
85
|
+
end
|
86
|
+
memo
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def comparing_hash_to_a_subset?(expected_item)
|
91
|
+
actual.is_a?(Hash) && expected_item.is_a?(Hash)
|
92
|
+
end
|
93
|
+
|
94
|
+
def actual_hash_includes?(expected_key, expected_value)
|
95
|
+
actual_value = actual.fetch(expected_key) { return false }
|
96
|
+
values_match?(expected_value, actual_value)
|
97
|
+
end
|
98
|
+
|
99
|
+
def comparing_hash_keys?(expected_item)
|
100
|
+
actual.is_a?(Hash) && !expected_item.is_a?(Hash)
|
101
|
+
end
|
102
|
+
|
103
|
+
def actual_hash_has_key?(expected_key)
|
104
|
+
# We check `key?` first for perf:
|
105
|
+
# `key?` is O(1), but `any?` is O(N).
|
106
|
+
actual.key?(expected_key) ||
|
107
|
+
actual.keys.any? { |key| values_match?(expected_key, key) }
|
108
|
+
end
|
109
|
+
|
110
|
+
def actual_collection_includes?(expected_item)
|
111
|
+
return true if actual.include?(expected_item)
|
112
|
+
|
113
|
+
# String lacks an `any?` method...
|
114
|
+
return false unless actual.respond_to?(:any?)
|
115
|
+
|
116
|
+
actual.any? { |value| values_match?(expected_item, value) }
|
117
|
+
end
|
118
|
+
|
119
|
+
def diff_would_wrongly_highlight_matched_item?
|
120
|
+
return false unless actual.is_a?(String) && expected.is_a?(Array)
|
121
|
+
|
122
|
+
lines = actual.split("\n")
|
123
|
+
expected.any? do |str|
|
124
|
+
actual.include?(str) && lines.none? { |line| line == str }
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module RSpec
|
2
|
+
module Matchers
|
3
|
+
module BuiltIn
|
4
|
+
# @api private
|
5
|
+
# Provides the implementation for `match`.
|
6
|
+
# Not intended to be instantiated directly.
|
7
|
+
class Match < BaseMatcher
|
8
|
+
# @api private
|
9
|
+
# @return [String]
|
10
|
+
def description
|
11
|
+
"match #{surface_descriptions_in(expected).inspect}"
|
12
|
+
end
|
13
|
+
|
14
|
+
# @api private
|
15
|
+
# @return [Boolean]
|
16
|
+
def diffable?
|
17
|
+
true
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def match(expected, actual)
|
23
|
+
return true if values_match?(expected, actual)
|
24
|
+
return false unless can_safely_call_match?(expected, actual)
|
25
|
+
actual.match(expected)
|
26
|
+
end
|
27
|
+
|
28
|
+
def can_safely_call_match?(expected, actual)
|
29
|
+
return false unless actual.respond_to?(:match)
|
30
|
+
|
31
|
+
!(RSpec::Matchers.is_a_matcher?(expected) &&
|
32
|
+
(String === actual || Regexp === actual))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'rspec/support'
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
module Matchers
|
5
|
+
module BuiltIn
|
6
|
+
# @api private
|
7
|
+
# Provides the implementation for operator matchers.
|
8
|
+
# Not intended to be instantiated directly.
|
9
|
+
# Only available for use with `should`.
|
10
|
+
class OperatorMatcher
|
11
|
+
class << self
|
12
|
+
# @private
|
13
|
+
def registry
|
14
|
+
@registry ||= {}
|
15
|
+
end
|
16
|
+
|
17
|
+
# @private
|
18
|
+
def register(klass, operator, matcher)
|
19
|
+
registry[klass] ||= {}
|
20
|
+
registry[klass][operator] = matcher
|
21
|
+
end
|
22
|
+
|
23
|
+
# @private
|
24
|
+
def unregister(klass, operator)
|
25
|
+
registry[klass] && registry[klass].delete(operator)
|
26
|
+
end
|
27
|
+
|
28
|
+
# @private
|
29
|
+
def get(klass, operator)
|
30
|
+
klass.ancestors.each do |ancestor|
|
31
|
+
matcher = registry[ancestor] && registry[ancestor][operator]
|
32
|
+
return matcher if matcher
|
33
|
+
end
|
34
|
+
|
35
|
+
nil
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
register Enumerable, '=~', BuiltIn::ContainExactly
|
40
|
+
|
41
|
+
def initialize(actual)
|
42
|
+
@actual = actual
|
43
|
+
end
|
44
|
+
|
45
|
+
# @private
|
46
|
+
def self.use_custom_matcher_or_delegate(operator)
|
47
|
+
define_method(operator) do |expected|
|
48
|
+
if !has_non_generic_implementation_of?(operator) && (matcher = OperatorMatcher.get(@actual.class, operator))
|
49
|
+
@actual.__send__(::RSpec::Matchers.last_expectation_handler.should_method, matcher.new(expected))
|
50
|
+
else
|
51
|
+
eval_match(@actual, operator, expected)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
negative_operator = operator.sub(/^=/, '!')
|
56
|
+
if negative_operator != operator && respond_to?(negative_operator)
|
57
|
+
define_method(negative_operator) do |_expected|
|
58
|
+
opposite_should = ::RSpec::Matchers.last_expectation_handler.opposite_should_method
|
59
|
+
raise "RSpec does not support `#{::RSpec::Matchers.last_expectation_handler.should_method} #{negative_operator} expected`. " \
|
60
|
+
"Use `#{opposite_should} #{operator} expected` instead."
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
['==', '===', '=~', '>', '>=', '<', '<='].each do |operator|
|
66
|
+
use_custom_matcher_or_delegate operator
|
67
|
+
end
|
68
|
+
|
69
|
+
# @private
|
70
|
+
def fail_with_message(message)
|
71
|
+
RSpec::Expectations.fail_with(message, @expected, @actual)
|
72
|
+
end
|
73
|
+
|
74
|
+
# @api private
|
75
|
+
# @return [String]
|
76
|
+
def description
|
77
|
+
"#{@operator} #{RSpec::Support::ObjectFormatter.format(@expected)}"
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def has_non_generic_implementation_of?(op)
|
83
|
+
Support.method_handle_for(@actual, op).owner != ::Kernel
|
84
|
+
rescue NameError
|
85
|
+
false
|
86
|
+
end
|
87
|
+
|
88
|
+
def eval_match(actual, operator, expected)
|
89
|
+
::RSpec::Matchers.last_matcher = self
|
90
|
+
@operator, @expected = operator, expected
|
91
|
+
__delegate_operator(actual, operator, expected)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
# @private
|
96
|
+
# Handles operator matcher for `should`.
|
97
|
+
class PositiveOperatorMatcher < OperatorMatcher
|
98
|
+
def __delegate_operator(actual, operator, expected)
|
99
|
+
if actual.__send__(operator, expected)
|
100
|
+
true
|
101
|
+
else
|
102
|
+
expected_formatted = RSpec::Support::ObjectFormatter.format(expected)
|
103
|
+
actual_formatted = RSpec::Support::ObjectFormatter.format(actual)
|
104
|
+
|
105
|
+
if ['==', '===', '=~'].include?(operator)
|
106
|
+
fail_with_message("expected: #{expected_formatted}\n got: #{actual_formatted} (using #{operator})")
|
107
|
+
else
|
108
|
+
fail_with_message("expected: #{operator} #{expected_formatted}\n got: #{operator.gsub(/./, ' ')} #{actual_formatted}")
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
# @private
|
115
|
+
# Handles operator matcher for `should_not`.
|
116
|
+
class NegativeOperatorMatcher < OperatorMatcher
|
117
|
+
def __delegate_operator(actual, operator, expected)
|
118
|
+
return false unless actual.__send__(operator, expected)
|
119
|
+
|
120
|
+
expected_formatted = RSpec::Support::ObjectFormatter.format(expected)
|
121
|
+
actual_formatted = RSpec::Support::ObjectFormatter.format(actual)
|
122
|
+
|
123
|
+
fail_with_message("expected not: #{operator} #{expected_formatted}\n got: #{operator.gsub(/./, ' ')} #{actual_formatted}")
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,200 @@
|
|
1
|
+
require 'stringio'
|
2
|
+
|
3
|
+
module RSpec
|
4
|
+
module Matchers
|
5
|
+
module BuiltIn
|
6
|
+
# @api private
|
7
|
+
# Provides the implementation for `output`.
|
8
|
+
# Not intended to be instantiated directly.
|
9
|
+
class Output < BaseMatcher
|
10
|
+
def initialize(expected)
|
11
|
+
@expected = expected
|
12
|
+
@actual = ""
|
13
|
+
@block = nil
|
14
|
+
@stream_capturer = NullCapture
|
15
|
+
end
|
16
|
+
|
17
|
+
def matches?(block)
|
18
|
+
@block = block
|
19
|
+
return false unless Proc === block
|
20
|
+
@actual = @stream_capturer.capture(block)
|
21
|
+
@expected ? values_match?(@expected, @actual) : captured?
|
22
|
+
end
|
23
|
+
|
24
|
+
def does_not_match?(block)
|
25
|
+
!matches?(block) && Proc === block
|
26
|
+
end
|
27
|
+
|
28
|
+
# @api public
|
29
|
+
# Tells the matcher to match against stdout.
|
30
|
+
# Works only when the main Ruby process prints to stdout
|
31
|
+
def to_stdout
|
32
|
+
@stream_capturer = CaptureStdout
|
33
|
+
self
|
34
|
+
end
|
35
|
+
|
36
|
+
# @api public
|
37
|
+
# Tells the matcher to match against stderr.
|
38
|
+
# Works only when the main Ruby process prints to stderr
|
39
|
+
def to_stderr
|
40
|
+
@stream_capturer = CaptureStderr
|
41
|
+
self
|
42
|
+
end
|
43
|
+
|
44
|
+
# @api public
|
45
|
+
# Tells the matcher to match against stdout.
|
46
|
+
# Works when subprocesses print to stdout as well.
|
47
|
+
# This is significantly (~30x) slower than `to_stdout`
|
48
|
+
def to_stdout_from_any_process
|
49
|
+
@stream_capturer = CaptureStreamToTempfile.new("stdout", $stdout)
|
50
|
+
self
|
51
|
+
end
|
52
|
+
|
53
|
+
# @api public
|
54
|
+
# Tells the matcher to match against stderr.
|
55
|
+
# Works when subprocesses print to stderr as well.
|
56
|
+
# This is significantly (~30x) slower than `to_stderr`
|
57
|
+
def to_stderr_from_any_process
|
58
|
+
@stream_capturer = CaptureStreamToTempfile.new("stderr", $stderr)
|
59
|
+
self
|
60
|
+
end
|
61
|
+
|
62
|
+
# @api private
|
63
|
+
# @return [String]
|
64
|
+
def failure_message
|
65
|
+
"expected block to #{description}, but #{positive_failure_reason}"
|
66
|
+
end
|
67
|
+
|
68
|
+
# @api private
|
69
|
+
# @return [String]
|
70
|
+
def failure_message_when_negated
|
71
|
+
"expected block to not #{description}, but #{negative_failure_reason}"
|
72
|
+
end
|
73
|
+
|
74
|
+
# @api private
|
75
|
+
# @return [String]
|
76
|
+
def description
|
77
|
+
if @expected
|
78
|
+
"output #{description_of @expected} to #{@stream_capturer.name}"
|
79
|
+
else
|
80
|
+
"output to #{@stream_capturer.name}"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# @api private
|
85
|
+
# @return [Boolean]
|
86
|
+
def diffable?
|
87
|
+
true
|
88
|
+
end
|
89
|
+
|
90
|
+
# @api private
|
91
|
+
# Indicates this matcher matches against a block.
|
92
|
+
# @return [True]
|
93
|
+
def supports_block_expectations?
|
94
|
+
true
|
95
|
+
end
|
96
|
+
|
97
|
+
private
|
98
|
+
|
99
|
+
def captured?
|
100
|
+
@actual.length > 0
|
101
|
+
end
|
102
|
+
|
103
|
+
def positive_failure_reason
|
104
|
+
return "was not a block" unless Proc === @block
|
105
|
+
return "output #{actual_output_description}" if @expected
|
106
|
+
"did not"
|
107
|
+
end
|
108
|
+
|
109
|
+
def negative_failure_reason
|
110
|
+
return "was not a block" unless Proc === @block
|
111
|
+
"output #{actual_output_description}"
|
112
|
+
end
|
113
|
+
|
114
|
+
def actual_output_description
|
115
|
+
return "nothing" unless captured?
|
116
|
+
actual_formatted
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# @private
|
121
|
+
module NullCapture
|
122
|
+
def self.name
|
123
|
+
"some stream"
|
124
|
+
end
|
125
|
+
|
126
|
+
def self.capture(_block)
|
127
|
+
raise "You must chain `to_stdout` or `to_stderr` off of the `output(...)` matcher."
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
# @private
|
132
|
+
module CaptureStdout
|
133
|
+
def self.name
|
134
|
+
'stdout'
|
135
|
+
end
|
136
|
+
|
137
|
+
def self.capture(block)
|
138
|
+
captured_stream = StringIO.new
|
139
|
+
|
140
|
+
original_stream = $stdout
|
141
|
+
$stdout = captured_stream
|
142
|
+
|
143
|
+
block.call
|
144
|
+
|
145
|
+
captured_stream.string
|
146
|
+
ensure
|
147
|
+
$stdout = original_stream
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
# @private
|
152
|
+
module CaptureStderr
|
153
|
+
def self.name
|
154
|
+
'stderr'
|
155
|
+
end
|
156
|
+
|
157
|
+
def self.capture(block)
|
158
|
+
captured_stream = StringIO.new
|
159
|
+
|
160
|
+
original_stream = $stderr
|
161
|
+
$stderr = captured_stream
|
162
|
+
|
163
|
+
block.call
|
164
|
+
|
165
|
+
captured_stream.string
|
166
|
+
ensure
|
167
|
+
$stderr = original_stream
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
# @private
|
172
|
+
class CaptureStreamToTempfile < Struct.new(:name, :stream)
|
173
|
+
def capture(block)
|
174
|
+
# We delay loading tempfile until it is actually needed because
|
175
|
+
# we want to minimize stdlibs loaded so that users who use a
|
176
|
+
# portion of the stdlib can't have passing specs while forgetting
|
177
|
+
# to load it themselves. `CaptureStreamToTempfile` is rarely used
|
178
|
+
# and `tempfile` pulls in a bunch of things (delegate, tmpdir,
|
179
|
+
# thread, fileutils, etc), so it's worth delaying it until this point.
|
180
|
+
require 'tempfile'
|
181
|
+
|
182
|
+
original_stream = stream.clone
|
183
|
+
captured_stream = Tempfile.new(name)
|
184
|
+
|
185
|
+
begin
|
186
|
+
captured_stream.sync = true
|
187
|
+
stream.reopen(captured_stream)
|
188
|
+
block.call
|
189
|
+
captured_stream.rewind
|
190
|
+
captured_stream.read
|
191
|
+
ensure
|
192
|
+
stream.reopen(original_stream)
|
193
|
+
captured_stream.close
|
194
|
+
captured_stream.unlink
|
195
|
+
end
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
200
|
+
end
|