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.
Files changed (276) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/CODE_OF_CONDUCT.md +13 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +230 -0
  9. data/Rakefile +8 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +7 -0
  12. data/lib/sublimetheme.rb +6832 -0
  13. data/lib/sublimetheme/version.rb +3 -0
  14. data/path/bin/htmldiff +25 -0
  15. data/path/bin/htmldiff.bat +6 -0
  16. data/path/bin/ldiff +25 -0
  17. data/path/bin/ldiff.bat +6 -0
  18. data/path/bin/rspec +23 -0
  19. data/path/bin/rspec.bat +6 -0
  20. data/path/cache/diff-lcs-1.2.5.gem +0 -0
  21. data/path/cache/rspec-3.3.0.gem +0 -0
  22. data/path/cache/rspec-core-3.3.2.gem +0 -0
  23. data/path/cache/rspec-expectations-3.3.1.gem +0 -0
  24. data/path/cache/rspec-mocks-3.3.2.gem +0 -0
  25. data/path/cache/rspec-support-3.3.0.gem +0 -0
  26. data/path/gems/diff-lcs-1.2.5/.autotest +3 -0
  27. data/path/gems/diff-lcs-1.2.5/.gemtest +0 -0
  28. data/path/gems/diff-lcs-1.2.5/.hoerc +2 -0
  29. data/path/gems/diff-lcs-1.2.5/.rspec +2 -0
  30. data/path/gems/diff-lcs-1.2.5/.travis.yml +22 -0
  31. data/path/gems/diff-lcs-1.2.5/Contributing.rdoc +64 -0
  32. data/path/gems/diff-lcs-1.2.5/Gemfile +20 -0
  33. data/path/gems/diff-lcs-1.2.5/History.rdoc +152 -0
  34. data/path/gems/diff-lcs-1.2.5/License.rdoc +39 -0
  35. data/path/gems/diff-lcs-1.2.5/Manifest.txt +38 -0
  36. data/path/gems/diff-lcs-1.2.5/README.rdoc +85 -0
  37. data/path/gems/diff-lcs-1.2.5/Rakefile +41 -0
  38. data/path/gems/diff-lcs-1.2.5/autotest/discover.rb +1 -0
  39. data/path/gems/diff-lcs-1.2.5/bin/htmldiff +32 -0
  40. data/path/gems/diff-lcs-1.2.5/bin/ldiff +6 -0
  41. data/path/gems/diff-lcs-1.2.5/docs/COPYING.txt +339 -0
  42. data/path/gems/diff-lcs-1.2.5/docs/artistic.txt +127 -0
  43. data/path/gems/diff-lcs-1.2.5/lib/diff-lcs.rb +3 -0
  44. data/path/gems/diff-lcs-1.2.5/lib/diff/lcs.rb +805 -0
  45. data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/array.rb +7 -0
  46. data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/block.rb +37 -0
  47. data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/callbacks.rb +322 -0
  48. data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/change.rb +177 -0
  49. data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/htmldiff.rb +149 -0
  50. data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/hunk.rb +276 -0
  51. data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/internals.rb +301 -0
  52. data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/ldiff.rb +195 -0
  53. data/path/gems/diff-lcs-1.2.5/lib/diff/lcs/string.rb +5 -0
  54. data/path/gems/diff-lcs-1.2.5/spec/change_spec.rb +65 -0
  55. data/path/gems/diff-lcs-1.2.5/spec/diff_spec.rb +47 -0
  56. data/path/gems/diff-lcs-1.2.5/spec/hunk_spec.rb +72 -0
  57. data/path/gems/diff-lcs-1.2.5/spec/issues_spec.rb +24 -0
  58. data/path/gems/diff-lcs-1.2.5/spec/lcs_spec.rb +54 -0
  59. data/path/gems/diff-lcs-1.2.5/spec/patch_spec.rb +414 -0
  60. data/path/gems/diff-lcs-1.2.5/spec/sdiff_spec.rb +214 -0
  61. data/path/gems/diff-lcs-1.2.5/spec/spec_helper.rb +290 -0
  62. data/path/gems/diff-lcs-1.2.5/spec/traverse_balanced_spec.rb +310 -0
  63. data/path/gems/diff-lcs-1.2.5/spec/traverse_sequences_spec.rb +139 -0
  64. data/path/gems/rspec-3.3.0/License.txt +24 -0
  65. data/path/gems/rspec-3.3.0/README.md +34 -0
  66. data/path/gems/rspec-3.3.0/lib/rspec.rb +3 -0
  67. data/path/gems/rspec-3.3.0/lib/rspec/version.rb +5 -0
  68. data/path/gems/rspec-core-3.3.2/.document +5 -0
  69. data/path/gems/rspec-core-3.3.2/.yardopts +8 -0
  70. data/path/gems/rspec-core-3.3.2/Changelog.md +1856 -0
  71. data/path/gems/rspec-core-3.3.2/License.txt +25 -0
  72. data/path/gems/rspec-core-3.3.2/README.md +369 -0
  73. data/path/gems/rspec-core-3.3.2/exe/rspec +4 -0
  74. data/path/gems/rspec-core-3.3.2/lib/rspec/autorun.rb +3 -0
  75. data/path/gems/rspec-core-3.3.2/lib/rspec/core.rb +181 -0
  76. data/path/gems/rspec-core-3.3.2/lib/rspec/core/backtrace_formatter.rb +64 -0
  77. data/path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/coordinator.rb +66 -0
  78. data/path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/example_minimizer.rb +130 -0
  79. data/path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/runner.rb +139 -0
  80. data/path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/server.rb +61 -0
  81. data/path/gems/rspec-core-3.3.2/lib/rspec/core/bisect/subset_enumerator.rb +39 -0
  82. data/path/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb +1807 -0
  83. data/path/gems/rspec-core-3.3.2/lib/rspec/core/configuration_options.rb +191 -0
  84. data/path/gems/rspec-core-3.3.2/lib/rspec/core/drb.rb +111 -0
  85. data/path/gems/rspec-core-3.3.2/lib/rspec/core/dsl.rb +96 -0
  86. data/path/gems/rspec-core-3.3.2/lib/rspec/core/example.rb +573 -0
  87. data/path/gems/rspec-core-3.3.2/lib/rspec/core/example_group.rb +796 -0
  88. data/path/gems/rspec-core-3.3.2/lib/rspec/core/example_status_persister.rb +235 -0
  89. data/path/gems/rspec-core-3.3.2/lib/rspec/core/filter_manager.rb +231 -0
  90. data/path/gems/rspec-core-3.3.2/lib/rspec/core/flat_map.rb +20 -0
  91. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters.rb +254 -0
  92. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/base_formatter.rb +70 -0
  93. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/base_text_formatter.rb +77 -0
  94. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/bisect_formatter.rb +68 -0
  95. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/bisect_progress_formatter.rb +115 -0
  96. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/console_codes.rb +65 -0
  97. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  98. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/documentation_formatter.rb +70 -0
  99. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/exception_presenter.rb +393 -0
  100. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  101. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/helpers.rb +109 -0
  102. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/html_formatter.rb +151 -0
  103. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/html_printer.rb +415 -0
  104. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/json_formatter.rb +96 -0
  105. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  106. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/progress_formatter.rb +28 -0
  107. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/protocol.rb +172 -0
  108. data/path/gems/rspec-core-3.3.2/lib/rspec/core/formatters/snippet_extractor.rb +116 -0
  109. data/path/gems/rspec-core-3.3.2/lib/rspec/core/hooks.rb +638 -0
  110. data/path/gems/rspec-core-3.3.2/lib/rspec/core/memoized_helpers.rb +532 -0
  111. data/path/gems/rspec-core-3.3.2/lib/rspec/core/metadata.rb +490 -0
  112. data/path/gems/rspec-core-3.3.2/lib/rspec/core/metadata_filter.rb +235 -0
  113. data/path/gems/rspec-core-3.3.2/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  114. data/path/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  115. data/path/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  116. data/path/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/null.rb +14 -0
  117. data/path/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  118. data/path/gems/rspec-core-3.3.2/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  119. data/path/gems/rspec-core-3.3.2/lib/rspec/core/mutex.rb +63 -0
  120. data/path/gems/rspec-core-3.3.2/lib/rspec/core/notifications.rb +498 -0
  121. data/path/gems/rspec-core-3.3.2/lib/rspec/core/option_parser.rb +301 -0
  122. data/path/gems/rspec-core-3.3.2/lib/rspec/core/ordering.rb +158 -0
  123. data/path/gems/rspec-core-3.3.2/lib/rspec/core/pending.rb +165 -0
  124. data/path/gems/rspec-core-3.3.2/lib/rspec/core/profiler.rb +32 -0
  125. data/path/gems/rspec-core-3.3.2/lib/rspec/core/project_initializer.rb +48 -0
  126. data/path/gems/rspec-core-3.3.2/lib/rspec/core/project_initializer/.rspec +2 -0
  127. data/path/gems/rspec-core-3.3.2/lib/rspec/core/project_initializer/spec/spec_helper.rb +96 -0
  128. data/path/gems/rspec-core-3.3.2/lib/rspec/core/rake_task.rb +158 -0
  129. data/path/gems/rspec-core-3.3.2/lib/rspec/core/reentrant_mutex.rb +52 -0
  130. data/path/gems/rspec-core-3.3.2/lib/rspec/core/reporter.rb +220 -0
  131. data/path/gems/rspec-core-3.3.2/lib/rspec/core/ruby_project.rb +53 -0
  132. data/path/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb +179 -0
  133. data/path/gems/rspec-core-3.3.2/lib/rspec/core/sandbox.rb +37 -0
  134. data/path/gems/rspec-core-3.3.2/lib/rspec/core/set.rb +49 -0
  135. data/path/gems/rspec-core-3.3.2/lib/rspec/core/shared_context.rb +55 -0
  136. data/path/gems/rspec-core-3.3.2/lib/rspec/core/shared_example_group.rb +210 -0
  137. data/path/gems/rspec-core-3.3.2/lib/rspec/core/shell_escape.rb +49 -0
  138. data/path/gems/rspec-core-3.3.2/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  139. data/path/gems/rspec-core-3.3.2/lib/rspec/core/version.rb +9 -0
  140. data/path/gems/rspec-core-3.3.2/lib/rspec/core/warnings.rb +40 -0
  141. data/path/gems/rspec-core-3.3.2/lib/rspec/core/world.rb +178 -0
  142. data/path/gems/rspec-expectations-3.3.1/.document +5 -0
  143. data/path/gems/rspec-expectations-3.3.1/.yardopts +6 -0
  144. data/path/gems/rspec-expectations-3.3.1/Changelog.md +953 -0
  145. data/path/gems/rspec-expectations-3.3.1/License.txt +24 -0
  146. data/path/gems/rspec-expectations-3.3.1/README.md +289 -0
  147. data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations.rb +81 -0
  148. data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/configuration.rb +164 -0
  149. data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/expectation_target.rb +113 -0
  150. data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/fail_with.rb +31 -0
  151. data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/failure_aggregator.rb +194 -0
  152. data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/handler.rb +170 -0
  153. data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/minitest_integration.rb +31 -0
  154. data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/syntax.rb +132 -0
  155. data/path/gems/rspec-expectations-3.3.1/lib/rspec/expectations/version.rb +8 -0
  156. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers.rb +1009 -0
  157. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/aliased_matcher.rb +116 -0
  158. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in.rb +52 -0
  159. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/all.rb +85 -0
  160. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/base_matcher.rb +181 -0
  161. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be.rb +285 -0
  162. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_between.rb +77 -0
  163. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
  164. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
  165. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/be_within.rb +72 -0
  166. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/change.rb +337 -0
  167. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/compound.rb +293 -0
  168. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/contain_exactly.rb +253 -0
  169. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/cover.rb +24 -0
  170. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/eq.rb +40 -0
  171. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/eql.rb +34 -0
  172. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/equal.rb +81 -0
  173. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/exist.rb +86 -0
  174. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/has.rb +103 -0
  175. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  176. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/include.rb +130 -0
  177. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/match.rb +37 -0
  178. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/operators.rb +128 -0
  179. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/output.rb +200 -0
  180. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/raise_error.rb +216 -0
  181. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/respond_to.rb +90 -0
  182. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/satisfy.rb +37 -0
  183. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  184. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  185. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/built_in/yield.rb +418 -0
  186. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/composable.rb +184 -0
  187. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/dsl.rb +453 -0
  188. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/english_phrasing.rb +42 -0
  189. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +73 -0
  190. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/fail_matchers.rb +42 -0
  191. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/generated_descriptions.rb +42 -0
  192. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/matcher_delegator.rb +35 -0
  193. data/path/gems/rspec-expectations-3.3.1/lib/rspec/matchers/matcher_protocol.rb +99 -0
  194. data/path/gems/rspec-mocks-3.3.2/.document +5 -0
  195. data/path/gems/rspec-mocks-3.3.2/.yardopts +6 -0
  196. data/path/gems/rspec-mocks-3.3.2/Changelog.md +965 -0
  197. data/path/gems/rspec-mocks-3.3.2/License.txt +24 -0
  198. data/path/gems/rspec-mocks-3.3.2/README.md +430 -0
  199. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks.rb +126 -0
  200. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance.rb +11 -0
  201. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/chain.rb +110 -0
  202. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  203. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/expect_chain_chain.rb +35 -0
  204. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/expectation_chain.rb +48 -0
  205. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  206. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  207. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/recorder.rb +264 -0
  208. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/stub_chain.rb +46 -0
  209. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/any_instance/stub_chain_chain.rb +27 -0
  210. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  211. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/argument_matchers.rb +320 -0
  212. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/configuration.rb +188 -0
  213. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/error_generator.rb +362 -0
  214. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/example_methods.rb +421 -0
  215. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/instance_method_stasher.rb +135 -0
  216. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/marshal_extension.rb +41 -0
  217. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  218. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/have_received.rb +116 -0
  219. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/receive.rb +130 -0
  220. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/receive_message_chain.rb +80 -0
  221. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/matchers/receive_messages.rb +75 -0
  222. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/message_chain.rb +87 -0
  223. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/message_expectation.rb +717 -0
  224. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/method_double.rb +287 -0
  225. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/method_reference.rb +192 -0
  226. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/mutate_const.rb +335 -0
  227. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/mutex.rb +73 -0
  228. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/object_reference.rb +149 -0
  229. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/order_group.rb +81 -0
  230. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/proxy.rb +439 -0
  231. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/reentrant_mutex.rb +53 -0
  232. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/space.rb +238 -0
  233. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/standalone.rb +3 -0
  234. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/syntax.rb +325 -0
  235. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/targets.rb +97 -0
  236. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/test_double.rb +170 -0
  237. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/verifying_double.rb +129 -0
  238. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/verifying_message_expecation.rb +54 -0
  239. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/verifying_proxy.rb +213 -0
  240. data/path/gems/rspec-mocks-3.3.2/lib/rspec/mocks/version.rb +9 -0
  241. data/path/gems/rspec-support-3.3.0/Changelog.md +125 -0
  242. data/path/gems/rspec-support-3.3.0/LICENSE.txt +22 -0
  243. data/path/gems/rspec-support-3.3.0/README.md +26 -0
  244. data/path/gems/rspec-support-3.3.0/lib/rspec/support.rb +111 -0
  245. data/path/gems/rspec-support-3.3.0/lib/rspec/support/caller_filter.rb +83 -0
  246. data/path/gems/rspec-support-3.3.0/lib/rspec/support/differ.rb +215 -0
  247. data/path/gems/rspec-support-3.3.0/lib/rspec/support/directory_maker.rb +63 -0
  248. data/path/gems/rspec-support-3.3.0/lib/rspec/support/encoded_string.rb +155 -0
  249. data/path/gems/rspec-support-3.3.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
  250. data/path/gems/rspec-support-3.3.0/lib/rspec/support/hunk_generator.rb +47 -0
  251. data/path/gems/rspec-support-3.3.0/lib/rspec/support/matcher_definition.rb +42 -0
  252. data/path/gems/rspec-support-3.3.0/lib/rspec/support/method_signature_verifier.rb +273 -0
  253. data/path/gems/rspec-support-3.3.0/lib/rspec/support/object_formatter.rb +93 -0
  254. data/path/gems/rspec-support-3.3.0/lib/rspec/support/recursive_const_methods.rb +76 -0
  255. data/path/gems/rspec-support-3.3.0/lib/rspec/support/ruby_features.rb +118 -0
  256. data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec.rb +81 -0
  257. data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  258. data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/formatting_support.rb +9 -0
  259. data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/in_sub_process.rb +52 -0
  260. data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/library_wide_checks.rb +145 -0
  261. data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/shell_out.rb +71 -0
  262. data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
  263. data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/string_matcher.rb +46 -0
  264. data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/with_isolated_directory.rb +9 -0
  265. data/path/gems/rspec-support-3.3.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  266. data/path/gems/rspec-support-3.3.0/lib/rspec/support/version.rb +7 -0
  267. data/path/gems/rspec-support-3.3.0/lib/rspec/support/version_checker.rb +53 -0
  268. data/path/gems/rspec-support-3.3.0/lib/rspec/support/warnings.rb +39 -0
  269. data/path/specifications/diff-lcs-1.2.5.gemspec +68 -0
  270. data/path/specifications/rspec-3.3.0.gemspec +42 -0
  271. data/path/specifications/rspec-core-3.3.2.gemspec +68 -0
  272. data/path/specifications/rspec-expectations-3.3.1.gemspec +50 -0
  273. data/path/specifications/rspec-mocks-3.3.2.gemspec +53 -0
  274. data/path/specifications/rspec-support-3.3.0.gemspec +38 -0
  275. data/sublimetheme.gemspec +32 -0
  276. metadata +363 -0
@@ -0,0 +1,293 @@
1
+ module RSpec
2
+ module Matchers
3
+ module BuiltIn
4
+ # @api private
5
+ # Base class for `and` and `or` compound matchers.
6
+ # rubocop:disable ClassLength
7
+ class Compound < BaseMatcher
8
+ # @private
9
+ attr_reader :matcher_1, :matcher_2, :evaluator
10
+
11
+ def initialize(matcher_1, matcher_2)
12
+ @matcher_1 = matcher_1
13
+ @matcher_2 = matcher_2
14
+ end
15
+
16
+ # @private
17
+ def does_not_match?(_actual)
18
+ raise NotImplementedError, "`expect(...).not_to matcher.#{conjunction} matcher` " \
19
+ "is not supported, since it creates a bit of an ambiguity. Instead, define negated versions " \
20
+ "of whatever matchers you wish to negate with `RSpec::Matchers.define_negated_matcher` and " \
21
+ "use `expect(...).to matcher.#{conjunction} matcher`."
22
+ end
23
+
24
+ # @api private
25
+ # @return [String]
26
+ def description
27
+ singleline_message(matcher_1.description, matcher_2.description)
28
+ end
29
+
30
+ def supports_block_expectations?
31
+ matcher_supports_block_expectations?(matcher_1) &&
32
+ matcher_supports_block_expectations?(matcher_2)
33
+ end
34
+
35
+ def expects_call_stack_jump?
36
+ NestedEvaluator.matcher_expects_call_stack_jump?(matcher_1) ||
37
+ NestedEvaluator.matcher_expects_call_stack_jump?(matcher_2)
38
+ end
39
+
40
+ # @api private
41
+ # @return [Boolean]
42
+ def diffable?
43
+ matcher_is_diffable?(matcher_1) || matcher_is_diffable?(matcher_2)
44
+ end
45
+
46
+ # @api private
47
+ # @return [RSpec::Matchers::ExpectedsForMultipleDiffs]
48
+ def expected
49
+ return nil unless evaluator
50
+ ::RSpec::Matchers::ExpectedsForMultipleDiffs.for_many_matchers(diffable_matcher_list)
51
+ end
52
+
53
+ protected
54
+
55
+ def diffable_matcher_list
56
+ list = []
57
+ list.concat(diffable_matcher_list_for(matcher_1)) unless matcher_1_matches?
58
+ list.concat(diffable_matcher_list_for(matcher_2)) unless matcher_2_matches?
59
+ list
60
+ end
61
+
62
+ private
63
+
64
+ def initialize_copy(other)
65
+ @matcher_1 = @matcher_1.clone
66
+ @matcher_2 = @matcher_2.clone
67
+ super
68
+ end
69
+
70
+ def match(_expected, actual)
71
+ evaluator_klass = if supports_block_expectations? && Proc === actual
72
+ NestedEvaluator
73
+ else
74
+ SequentialEvaluator
75
+ end
76
+
77
+ @evaluator = evaluator_klass.new(actual, matcher_1, matcher_2)
78
+ end
79
+
80
+ def indent_multiline_message(message)
81
+ message.lines.map do |line|
82
+ line =~ /\S/ ? ' ' + line : line
83
+ end.join
84
+ end
85
+
86
+ def compound_failure_message
87
+ message_1 = matcher_1.failure_message
88
+ message_2 = matcher_2.failure_message
89
+
90
+ if multiline?(message_1) || multiline?(message_2)
91
+ multiline_message(message_1, message_2)
92
+ else
93
+ singleline_message(message_1, message_2)
94
+ end
95
+ end
96
+
97
+ def multiline_message(message_1, message_2)
98
+ [
99
+ indent_multiline_message(message_1.sub(/\n+\z/, '')),
100
+ "...#{conjunction}:",
101
+ indent_multiline_message(message_2.sub(/\A\n+/, ''))
102
+ ].join("\n\n")
103
+ end
104
+
105
+ def multiline?(message)
106
+ message.lines.count > 1
107
+ end
108
+
109
+ def singleline_message(message_1, message_2)
110
+ [message_1, conjunction, message_2].join(' ')
111
+ end
112
+
113
+ def matcher_1_matches?
114
+ evaluator.matcher_matches?(matcher_1)
115
+ end
116
+
117
+ def matcher_2_matches?
118
+ evaluator.matcher_matches?(matcher_2)
119
+ end
120
+
121
+ def matcher_supports_block_expectations?(matcher)
122
+ matcher.supports_block_expectations?
123
+ rescue NoMethodError
124
+ false
125
+ end
126
+
127
+ def matcher_is_diffable?(matcher)
128
+ matcher.diffable?
129
+ rescue NoMethodError
130
+ false
131
+ end
132
+
133
+ def diffable_matcher_list_for(matcher)
134
+ return [] unless matcher_is_diffable?(matcher)
135
+ return matcher.diffable_matcher_list if Compound === matcher
136
+ [matcher]
137
+ end
138
+
139
+ # For value expectations, we can evaluate the matchers sequentially.
140
+ class SequentialEvaluator
141
+ def initialize(actual, *)
142
+ @actual = actual
143
+ end
144
+
145
+ def matcher_matches?(matcher)
146
+ matcher.matches?(@actual)
147
+ end
148
+ end
149
+
150
+ # Normally, we evaluate the matching sequentially. For an expression like
151
+ # `expect(x).to foo.and bar`, this becomes:
152
+ #
153
+ # expect(x).to foo
154
+ # expect(x).to bar
155
+ #
156
+ # For block expectations, we need to nest them instead, so that
157
+ # `expect { x }.to foo.and bar` becomes:
158
+ #
159
+ # expect {
160
+ # expect { x }.to foo
161
+ # }.to bar
162
+ #
163
+ # This is necessary so that the `expect` block is only executed once.
164
+ class NestedEvaluator
165
+ def initialize(actual, matcher_1, matcher_2)
166
+ @actual = actual
167
+ @matcher_1 = matcher_1
168
+ @matcher_2 = matcher_2
169
+ @match_results = {}
170
+
171
+ inner, outer = order_block_matchers
172
+
173
+ @match_results[outer] = outer.matches?(Proc.new do |*args|
174
+ @match_results[inner] = inner.matches?(inner_matcher_block(args))
175
+ end)
176
+ end
177
+
178
+ def matcher_matches?(matcher)
179
+ @match_results.fetch(matcher)
180
+ end
181
+
182
+ private
183
+
184
+ # Some block matchers (such as `yield_xyz`) pass args to the `expect` block.
185
+ # When such a matcher is used as the outer matcher, we need to forward the
186
+ # the args on to the `expect` block.
187
+ def inner_matcher_block(outer_args)
188
+ return @actual if outer_args.empty?
189
+
190
+ Proc.new do |*inner_args|
191
+ unless inner_args.empty?
192
+ raise ArgumentError, "(#{@matcher_1.description}) and " \
193
+ "(#{@matcher_2.description}) cannot be combined in a compound expectation " \
194
+ "since both matchers pass arguments to the block."
195
+ end
196
+
197
+ @actual.call(*outer_args)
198
+ end
199
+ end
200
+
201
+ # For a matcher like `raise_error` or `throw_symbol`, where the block will jump
202
+ # up the call stack, we need to order things so that it is the inner matcher.
203
+ # For example, we need it to be this:
204
+ #
205
+ # expect {
206
+ # expect {
207
+ # x += 1
208
+ # raise "boom"
209
+ # }.to raise_error("boom")
210
+ # }.to change { x }.by(1)
211
+ #
212
+ # ...rather than:
213
+ #
214
+ # expect {
215
+ # expect {
216
+ # x += 1
217
+ # raise "boom"
218
+ # }.to change { x }.by(1)
219
+ # }.to raise_error("boom")
220
+ #
221
+ # In the latter case, the after-block logic in the `change` matcher would never
222
+ # get executed because the `raise "boom"` line would jump to the `rescue` in the
223
+ # `raise_error` logic, so only the former case will work properly.
224
+ #
225
+ # This method figures out which matcher should be the inner matcher and which
226
+ # should be the outer matcher.
227
+ def order_block_matchers
228
+ return @matcher_1, @matcher_2 unless self.class.matcher_expects_call_stack_jump?(@matcher_2)
229
+ return @matcher_2, @matcher_1 unless self.class.matcher_expects_call_stack_jump?(@matcher_1)
230
+
231
+ raise ArgumentError, "(#{@matcher_1.description}) and " \
232
+ "(#{@matcher_2.description}) cannot be combined in a compound expectation " \
233
+ "because they both expect a call stack jump."
234
+ end
235
+
236
+ def self.matcher_expects_call_stack_jump?(matcher)
237
+ matcher.expects_call_stack_jump?
238
+ rescue NoMethodError
239
+ false
240
+ end
241
+ end
242
+
243
+ # @api public
244
+ # Matcher used to represent a compound `and` expectation.
245
+ class And < self
246
+ # @api private
247
+ # @return [String]
248
+ def failure_message
249
+ if matcher_1_matches?
250
+ matcher_2.failure_message
251
+ elsif matcher_2_matches?
252
+ matcher_1.failure_message
253
+ else
254
+ compound_failure_message
255
+ end
256
+ end
257
+
258
+ private
259
+
260
+ def match(*)
261
+ super
262
+ matcher_1_matches? && matcher_2_matches?
263
+ end
264
+
265
+ def conjunction
266
+ "and"
267
+ end
268
+ end
269
+
270
+ # @api public
271
+ # Matcher used to represent a compound `or` expectation.
272
+ class Or < self
273
+ # @api private
274
+ # @return [String]
275
+ def failure_message
276
+ compound_failure_message
277
+ end
278
+
279
+ private
280
+
281
+ def match(*)
282
+ super
283
+ matcher_1_matches? || matcher_2_matches?
284
+ end
285
+
286
+ def conjunction
287
+ "or"
288
+ end
289
+ end
290
+ end
291
+ end
292
+ end
293
+ end
@@ -0,0 +1,253 @@
1
+ module RSpec
2
+ module Matchers
3
+ module BuiltIn
4
+ # @api private
5
+ # Provides the implementation for `contain_exactly` and `match_array`.
6
+ # Not intended to be instantiated directly.
7
+ class ContainExactly < BaseMatcher
8
+ # @api private
9
+ # @return [String]
10
+ def failure_message
11
+ if Array === actual
12
+ message = "expected collection contained: #{description_of(safe_sort(surface_descriptions_in expected))}\n"
13
+ message += "actual collection contained: #{description_of(safe_sort(actual))}\n"
14
+ message += "the missing elements were: #{description_of(safe_sort(surface_descriptions_in missing_items))}\n" unless missing_items.empty?
15
+ message += "the extra elements were: #{description_of(safe_sort(extra_items))}\n" unless extra_items.empty?
16
+ message
17
+ else
18
+ "expected a collection that can be converted to an array with " \
19
+ "`#to_ary` or `#to_a`, but got #{actual_formatted}"
20
+ end
21
+ end
22
+
23
+ # @api private
24
+ # @return [String]
25
+ def failure_message_when_negated
26
+ list = EnglishPhrasing.list(surface_descriptions_in(expected))
27
+ "expected #{actual_formatted} not to contain exactly#{list}"
28
+ end
29
+
30
+ # @api private
31
+ # @return [String]
32
+ def description
33
+ list = EnglishPhrasing.list(surface_descriptions_in(expected))
34
+ "contain exactly#{list}"
35
+ end
36
+
37
+ private
38
+
39
+ def match(_expected, _actual)
40
+ return false unless convert_actual_to_an_array
41
+ match_when_sorted? || (extra_items.empty? && missing_items.empty?)
42
+ end
43
+
44
+ # This cannot always work (e.g. when dealing with unsortable items,
45
+ # or matchers as expected items), but it's practically free compared to
46
+ # the slowness of the full matching algorithm, and in common cases this
47
+ # works, so it's worth a try.
48
+ def match_when_sorted?
49
+ values_match?(safe_sort(expected), safe_sort(actual))
50
+ end
51
+
52
+ def convert_actual_to_an_array
53
+ if actual.respond_to?(:to_ary)
54
+ @actual = actual.to_ary
55
+ elsif should_enumerate?(actual) && actual.respond_to?(:to_a)
56
+ @actual = actual.to_a
57
+ else
58
+ return false
59
+ end
60
+ end
61
+
62
+ def safe_sort(array)
63
+ array.sort
64
+ rescue Exception
65
+ array
66
+ end
67
+
68
+ def missing_items
69
+ @missing_items ||= best_solution.unmatched_expected_indexes.map do |index|
70
+ expected[index]
71
+ end
72
+ end
73
+
74
+ def extra_items
75
+ @extra_items ||= best_solution.unmatched_actual_indexes.map do |index|
76
+ actual[index]
77
+ end
78
+ end
79
+
80
+ def best_solution
81
+ @best_solution ||= pairings_maximizer.find_best_solution
82
+ end
83
+
84
+ def pairings_maximizer
85
+ @pairings_maximizer ||= begin
86
+ expected_matches = Hash[Array.new(expected.size) { |i| [i, []] }]
87
+ actual_matches = Hash[Array.new(actual.size) { |i| [i, []] }]
88
+
89
+ expected.each_with_index do |e, ei|
90
+ actual.each_with_index do |a, ai|
91
+ next unless values_match?(e, a)
92
+
93
+ expected_matches[ei] << ai
94
+ actual_matches[ai] << ei
95
+ end
96
+ end
97
+
98
+ PairingsMaximizer.new(expected_matches, actual_matches)
99
+ end
100
+ end
101
+
102
+ # Once we started supporting composing matchers, the algorithm for this matcher got
103
+ # much more complicated. Consider this expression:
104
+ #
105
+ # expect(["fool", "food"]).to contain_exactly(/foo/, /fool/)
106
+ #
107
+ # This should pass (because we can pair /fool/ with "fool" and /foo/ with "food"), but
108
+ # the original algorithm used by this matcher would pair the first elements it could
109
+ # (/foo/ with "fool"), which would leave /fool/ and "food" unmatched. When we have
110
+ # an expected element which is a matcher that matches a superset of actual items
111
+ # compared to another expected element matcher, we need to consider every possible pairing.
112
+ #
113
+ # This class is designed to maximize the number of actual/expected pairings -- or,
114
+ # conversely, to minimize the number of unpaired items. It's essentially a brute
115
+ # force solution, but with a few heuristics applied to reduce the size of the
116
+ # problem space:
117
+ #
118
+ # * Any items which match none of the items in the other list are immediately
119
+ # placed into the `unmatched_expected_indexes` or `unmatched_actual_indexes` array.
120
+ # The extra items and missing items in the matcher failure message are derived
121
+ # from these arrays.
122
+ # * Any items which reciprocally match only each other are paired up and not
123
+ # considered further.
124
+ #
125
+ # What's left is only the items which match multiple items from the other list
126
+ # (or vice versa). From here, it performs a brute-force depth-first search,
127
+ # looking for a solution which pairs all elements in both lists, or, barring that,
128
+ # that produces the fewest unmatched items.
129
+ #
130
+ # @private
131
+ class PairingsMaximizer
132
+ Solution = Struct.new(:unmatched_expected_indexes, :unmatched_actual_indexes,
133
+ :indeterminate_expected_indexes, :indeterminate_actual_indexes) do
134
+ def worse_than?(other)
135
+ unmatched_item_count > other.unmatched_item_count
136
+ end
137
+
138
+ def candidate?
139
+ indeterminate_expected_indexes.empty? &&
140
+ indeterminate_actual_indexes.empty?
141
+ end
142
+
143
+ def ideal?
144
+ candidate? && (
145
+ unmatched_expected_indexes.empty? ||
146
+ unmatched_actual_indexes.empty?
147
+ )
148
+ end
149
+
150
+ def unmatched_item_count
151
+ unmatched_expected_indexes.count + unmatched_actual_indexes.count
152
+ end
153
+
154
+ def +(derived_candidate_solution)
155
+ self.class.new(
156
+ unmatched_expected_indexes + derived_candidate_solution.unmatched_expected_indexes,
157
+ unmatched_actual_indexes + derived_candidate_solution.unmatched_actual_indexes,
158
+ # Ignore the indeterminate indexes: by the time we get here,
159
+ # we've dealt with all indeterminates.
160
+ [], []
161
+ )
162
+ end
163
+ end
164
+
165
+ attr_reader :expected_to_actual_matched_indexes, :actual_to_expected_matched_indexes, :solution
166
+
167
+ def initialize(expected_to_actual_matched_indexes, actual_to_expected_matched_indexes)
168
+ @expected_to_actual_matched_indexes = expected_to_actual_matched_indexes
169
+ @actual_to_expected_matched_indexes = actual_to_expected_matched_indexes
170
+
171
+ unmatched_expected_indexes, indeterminate_expected_indexes =
172
+ categorize_indexes(expected_to_actual_matched_indexes, actual_to_expected_matched_indexes)
173
+
174
+ unmatched_actual_indexes, indeterminate_actual_indexes =
175
+ categorize_indexes(actual_to_expected_matched_indexes, expected_to_actual_matched_indexes)
176
+
177
+ @solution = Solution.new(unmatched_expected_indexes, unmatched_actual_indexes,
178
+ indeterminate_expected_indexes, indeterminate_actual_indexes)
179
+ end
180
+
181
+ def find_best_solution
182
+ return solution if solution.candidate?
183
+ best_solution_so_far = NullSolution
184
+
185
+ expected_index = solution.indeterminate_expected_indexes.first
186
+ actuals = expected_to_actual_matched_indexes[expected_index]
187
+
188
+ actuals.each do |actual_index|
189
+ solution = best_solution_for_pairing(expected_index, actual_index)
190
+ return solution if solution.ideal?
191
+ best_solution_so_far = solution if best_solution_so_far.worse_than?(solution)
192
+ end
193
+
194
+ best_solution_so_far
195
+ end
196
+
197
+ private
198
+
199
+ # @private
200
+ # Starting solution that is worse than any other real solution.
201
+ NullSolution = Class.new do
202
+ def self.worse_than?(_other)
203
+ true
204
+ end
205
+ end
206
+
207
+ def categorize_indexes(indexes_to_categorize, other_indexes)
208
+ unmatched = []
209
+ indeterminate = []
210
+
211
+ indexes_to_categorize.each_pair do |index, matches|
212
+ if matches.empty?
213
+ unmatched << index
214
+ elsif !reciprocal_single_match?(matches, index, other_indexes)
215
+ indeterminate << index
216
+ end
217
+ end
218
+
219
+ return unmatched, indeterminate
220
+ end
221
+
222
+ def reciprocal_single_match?(matches, index, other_list)
223
+ return false unless matches.one?
224
+ other_list[matches.first] == [index]
225
+ end
226
+
227
+ def best_solution_for_pairing(expected_index, actual_index)
228
+ modified_expecteds = apply_pairing_to(
229
+ solution.indeterminate_expected_indexes,
230
+ expected_to_actual_matched_indexes, actual_index)
231
+
232
+ modified_expecteds.delete(expected_index)
233
+
234
+ modified_actuals = apply_pairing_to(
235
+ solution.indeterminate_actual_indexes,
236
+ actual_to_expected_matched_indexes, expected_index)
237
+
238
+ modified_actuals.delete(actual_index)
239
+
240
+ solution + self.class.new(modified_expecteds, modified_actuals).find_best_solution
241
+ end
242
+
243
+ def apply_pairing_to(indeterminates, original_matches, other_list_index)
244
+ indeterminates.inject({}) do |accum, index|
245
+ accum[index] = original_matches[index] - [other_list_index]
246
+ accum
247
+ end
248
+ end
249
+ end
250
+ end
251
+ end
252
+ end
253
+ end