sublimetheme 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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,796 @@
1
+ RSpec::Support.require_rspec_support 'recursive_const_methods'
2
+
3
+ module RSpec
4
+ module Core
5
+ # ExampleGroup and {Example} are the main structural elements of
6
+ # rspec-core. Consider this example:
7
+ #
8
+ # describe Thing do
9
+ # it "does something" do
10
+ # end
11
+ # end
12
+ #
13
+ # The object returned by `describe Thing` is a subclass of ExampleGroup.
14
+ # The object returned by `it "does something"` is an instance of Example,
15
+ # which serves as a wrapper for an instance of the ExampleGroup in which it
16
+ # is declared.
17
+ #
18
+ # Example group bodies (e.g. `describe` or `context` blocks) are evaluated
19
+ # in the context of a new subclass of ExampleGroup. Individual examples are
20
+ # evaluated in the context of an instance of the specific ExampleGroup
21
+ # subclass to which they belong.
22
+ #
23
+ # Besides the class methods defined here, there are other interesting macros
24
+ # defined in {Hooks}, {MemoizedHelpers::ClassMethods} and
25
+ # {SharedExampleGroup}. There are additional instance methods available to
26
+ # your examples defined in {MemoizedHelpers} and {Pending}.
27
+ class ExampleGroup
28
+ extend Hooks
29
+
30
+ include MemoizedHelpers
31
+ extend MemoizedHelpers::ClassMethods
32
+ include Pending
33
+ extend SharedExampleGroup
34
+
35
+ # @private
36
+ def self.idempotently_define_singleton_method(name, &definition)
37
+ (class << self; self; end).module_exec do
38
+ remove_method(name) if method_defined?(name) && instance_method(name).owner == self
39
+ define_method(name, &definition)
40
+ end
41
+ end
42
+
43
+ # @!group Metadata
44
+
45
+ # The [Metadata](Metadata) object associated with this group.
46
+ # @see Metadata
47
+ def self.metadata
48
+ @metadata ||= nil
49
+ end
50
+
51
+ # Temporarily replace the provided metadata.
52
+ # Intended primarily to allow an example group's singleton class
53
+ # to return the metadata of the example that it exists for. This
54
+ # is necessary for shared example group inclusion to work properly
55
+ # with singleton example groups.
56
+ # @private
57
+ def self.with_replaced_metadata(meta)
58
+ orig_metadata = metadata
59
+ @metadata = meta
60
+ yield
61
+ ensure
62
+ @metadata = orig_metadata
63
+ end
64
+
65
+ # @private
66
+ # @return [Metadata] belonging to the parent of a nested {ExampleGroup}
67
+ def self.superclass_metadata
68
+ @superclass_metadata ||= superclass.respond_to?(:metadata) ? superclass.metadata : nil
69
+ end
70
+
71
+ # @private
72
+ def self.delegate_to_metadata(*names)
73
+ names.each do |name|
74
+ idempotently_define_singleton_method(name) { metadata.fetch(name) }
75
+ end
76
+ end
77
+
78
+ delegate_to_metadata :described_class, :file_path, :location
79
+
80
+ # @return [String] the current example group description
81
+ def self.description
82
+ description = metadata[:description]
83
+ RSpec.configuration.format_docstrings_block.call(description)
84
+ end
85
+
86
+ # Returns the class or module passed to the `describe` method (or alias).
87
+ # Returns nil if the subject is not a class or module.
88
+ # @example
89
+ # describe Thing do
90
+ # it "does something" do
91
+ # described_class == Thing
92
+ # end
93
+ # end
94
+ #
95
+ def described_class
96
+ self.class.described_class
97
+ end
98
+
99
+ # @!endgroup
100
+
101
+ # @!group Defining Examples
102
+
103
+ # @private
104
+ # @macro [attach] define_example_method
105
+ # @!scope class
106
+ # @overload $1
107
+ # @overload $1(&example_implementation)
108
+ # @param example_implementation [Block] The implementation of the example.
109
+ # @overload $1(doc_string, *metadata_keys, metadata={})
110
+ # @param doc_string [String] The example's doc string.
111
+ # @param metadata [Hash] Metadata for the example.
112
+ # @param metadata_keys [Array<Symbol>] Metadata tags for the example.
113
+ # Will be transformed into hash entries with `true` values.
114
+ # @overload $1(doc_string, *metadata_keys, metadata={}, &example_implementation)
115
+ # @param doc_string [String] The example's doc string.
116
+ # @param metadata [Hash] Metadata for the example.
117
+ # @param metadata_keys [Array<Symbol>] Metadata tags for the example.
118
+ # Will be transformed into hash entries with `true` values.
119
+ # @param example_implementation [Block] The implementation of the example.
120
+ # @yield [Example] the example object
121
+ # @example
122
+ # $1 do
123
+ # end
124
+ #
125
+ # $1 "does something" do
126
+ # end
127
+ #
128
+ # $1 "does something", :slow, :uses_js do
129
+ # end
130
+ #
131
+ # $1 "does something", :with => 'additional metadata' do
132
+ # end
133
+ #
134
+ # $1 "does something" do |ex|
135
+ # # ex is the Example object that contains metadata about the example
136
+ # end
137
+ def self.define_example_method(name, extra_options={})
138
+ idempotently_define_singleton_method(name) do |*all_args, &block|
139
+ desc, *args = *all_args
140
+
141
+ options = Metadata.build_hash_from(args)
142
+ options.update(:skip => RSpec::Core::Pending::NOT_YET_IMPLEMENTED) unless block
143
+ options.update(extra_options)
144
+
145
+ example = RSpec::Core::Example.new(self, desc, options, block)
146
+ examples << example
147
+ example
148
+ end
149
+ end
150
+
151
+ # Defines an example within a group.
152
+ define_example_method :example
153
+ # Defines an example within a group.
154
+ # This is the primary API to define a code example.
155
+ define_example_method :it
156
+ # Defines an example within a group.
157
+ # Useful for when your docstring does not read well off of `it`.
158
+ # @example
159
+ # RSpec.describe MyClass do
160
+ # specify "#do_something is deprecated" do
161
+ # # ...
162
+ # end
163
+ # end
164
+ define_example_method :specify
165
+
166
+ # Shortcut to define an example with `:focus => true`.
167
+ # @see example
168
+ define_example_method :focus, :focus => true
169
+ # Shortcut to define an example with `:focus => true`.
170
+ # @see example
171
+ define_example_method :fexample, :focus => true
172
+ # Shortcut to define an example with `:focus => true`.
173
+ # @see example
174
+ define_example_method :fit, :focus => true
175
+ # Shortcut to define an example with `:focus => true`.
176
+ # @see example
177
+ define_example_method :fspecify, :focus => true
178
+ # Shortcut to define an example with `:skip => 'Temporarily skipped with xexample'`.
179
+ # @see example
180
+ define_example_method :xexample, :skip => 'Temporarily skipped with xexample'
181
+ # Shortcut to define an example with `:skip => 'Temporarily skipped with xit'`.
182
+ # @see example
183
+ define_example_method :xit, :skip => 'Temporarily skipped with xit'
184
+ # Shortcut to define an example with `:skip => 'Temporarily skipped with xspecify'`.
185
+ # @see example
186
+ define_example_method :xspecify, :skip => 'Temporarily skipped with xspecify'
187
+ # Shortcut to define an example with `:skip => true`
188
+ # @see example
189
+ define_example_method :skip, :skip => true
190
+ # Shortcut to define an example with `:pending => true`
191
+ # @see example
192
+ define_example_method :pending, :pending => true
193
+
194
+ # @!endgroup
195
+
196
+ # @!group Defining Example Groups
197
+
198
+ # @private
199
+ # @macro [attach] define_example_group_method
200
+ # @!scope class
201
+ # @overload $1
202
+ # @overload $1(&example_group_definition)
203
+ # @param example_group_definition [Block] The definition of the example group.
204
+ # @overload $1(doc_string, *metadata_keys, metadata={}, &example_implementation)
205
+ # @param doc_string [String] The group's doc string.
206
+ # @param metadata [Hash] Metadata for the group.
207
+ # @param metadata_keys [Array<Symbol>] Metadata tags for the group.
208
+ # Will be transformed into hash entries with `true` values.
209
+ # @param example_group_definition [Block] The definition of the example group.
210
+ #
211
+ # Generates a subclass of this example group which inherits
212
+ # everything except the examples themselves.
213
+ #
214
+ # @example
215
+ #
216
+ # RSpec.describe "something" do # << This describe method is defined in
217
+ # # << RSpec::Core::DSL, included in the
218
+ # # << global namespace (optional)
219
+ # before do
220
+ # do_something_before
221
+ # end
222
+ #
223
+ # let(:thing) { Thing.new }
224
+ #
225
+ # $1 "attribute (of something)" do
226
+ # # examples in the group get the before hook
227
+ # # declared above, and can access `thing`
228
+ # end
229
+ # end
230
+ #
231
+ # @see DSL#describe
232
+ def self.define_example_group_method(name, metadata={})
233
+ idempotently_define_singleton_method(name) do |*args, &example_group_block|
234
+ thread_data = RSpec::Support.thread_local_data
235
+ top_level = self == ExampleGroup
236
+
237
+ if top_level
238
+ if thread_data[:in_example_group]
239
+ raise "Creating an isolated context from within a context is " \
240
+ "not allowed. Change `RSpec.#{name}` to `#{name}` or " \
241
+ "move this to a top-level scope."
242
+ end
243
+
244
+ thread_data[:in_example_group] = true
245
+ end
246
+
247
+ begin
248
+
249
+ description = args.shift
250
+ combined_metadata = metadata.dup
251
+ combined_metadata.merge!(args.pop) if args.last.is_a? Hash
252
+ args << combined_metadata
253
+
254
+ subclass(self, description, args, &example_group_block).tap do |child|
255
+ children << child
256
+ end
257
+
258
+ ensure
259
+ thread_data.delete(:in_example_group) if top_level
260
+ end
261
+ end
262
+
263
+ RSpec::Core::DSL.expose_example_group_alias(name)
264
+ end
265
+
266
+ define_example_group_method :example_group
267
+
268
+ # An alias of `example_group`. Generally used when grouping examples by a
269
+ # thing you are describing (e.g. an object, class or method).
270
+ # @see example_group
271
+ define_example_group_method :describe
272
+
273
+ # An alias of `example_group`. Generally used when grouping examples
274
+ # contextually (e.g. "with xyz", "when xyz" or "if xyz").
275
+ # @see example_group
276
+ define_example_group_method :context
277
+
278
+ # Shortcut to temporarily make an example group skipped.
279
+ # @see example_group
280
+ define_example_group_method :xdescribe, :skip => "Temporarily skipped with xdescribe"
281
+
282
+ # Shortcut to temporarily make an example group skipped.
283
+ # @see example_group
284
+ define_example_group_method :xcontext, :skip => "Temporarily skipped with xcontext"
285
+
286
+ # Shortcut to define an example group with `:focus => true`.
287
+ # @see example_group
288
+ define_example_group_method :fdescribe, :focus => true
289
+
290
+ # Shortcut to define an example group with `:focus => true`.
291
+ # @see example_group
292
+ define_example_group_method :fcontext, :focus => true
293
+
294
+ # @!endgroup
295
+
296
+ # @!group Including Shared Example Groups
297
+
298
+ # @private
299
+ # @macro [attach] define_nested_shared_group_method
300
+ # @!scope class
301
+ #
302
+ # @see SharedExampleGroup
303
+ def self.define_nested_shared_group_method(new_name, report_label="it should behave like")
304
+ idempotently_define_singleton_method(new_name) do |name, *args, &customization_block|
305
+ # Pass :caller so the :location metadata is set properly.
306
+ # Otherwise, it'll be set to the next line because that's
307
+ # the block's source_location.
308
+ group = example_group("#{report_label} #{name}", :caller => (the_caller = caller)) do
309
+ find_and_eval_shared("examples", name, the_caller.first, *args, &customization_block)
310
+ end
311
+ group.metadata[:shared_group_name] = name
312
+ group
313
+ end
314
+ end
315
+
316
+ # Generates a nested example group and includes the shared content
317
+ # mapped to `name` in the nested group.
318
+ define_nested_shared_group_method :it_behaves_like, "behaves like"
319
+ # Generates a nested example group and includes the shared content
320
+ # mapped to `name` in the nested group.
321
+ define_nested_shared_group_method :it_should_behave_like
322
+
323
+ # Includes shared content mapped to `name` directly in the group in which
324
+ # it is declared, as opposed to `it_behaves_like`, which creates a nested
325
+ # group. If given a block, that block is also eval'd in the current
326
+ # context.
327
+ #
328
+ # @see SharedExampleGroup
329
+ def self.include_context(name, *args, &block)
330
+ find_and_eval_shared("context", name, caller.first, *args, &block)
331
+ end
332
+
333
+ # Includes shared content mapped to `name` directly in the group in which
334
+ # it is declared, as opposed to `it_behaves_like`, which creates a nested
335
+ # group. If given a block, that block is also eval'd in the current
336
+ # context.
337
+ #
338
+ # @see SharedExampleGroup
339
+ def self.include_examples(name, *args, &block)
340
+ find_and_eval_shared("examples", name, caller.first, *args, &block)
341
+ end
342
+
343
+ # @private
344
+ def self.find_and_eval_shared(label, name, inclusion_location, *args, &customization_block)
345
+ shared_block = RSpec.world.shared_example_group_registry.find(parent_groups, name)
346
+
347
+ unless shared_block
348
+ raise ArgumentError, "Could not find shared #{label} #{name.inspect}"
349
+ end
350
+
351
+ SharedExampleGroupInclusionStackFrame.with_frame(name, Metadata.relative_path(inclusion_location)) do
352
+ module_exec(*args, &shared_block)
353
+ module_exec(&customization_block) if customization_block
354
+ end
355
+ end
356
+
357
+ # @!endgroup
358
+
359
+ # @private
360
+ def self.subclass(parent, description, args, &example_group_block)
361
+ subclass = Class.new(parent)
362
+ subclass.set_it_up(description, *args, &example_group_block)
363
+ subclass.module_exec(&example_group_block) if example_group_block
364
+
365
+ # The LetDefinitions module must be included _after_ other modules
366
+ # to ensure that it takes precedence when there are name collisions.
367
+ # Thus, we delay including it until after the example group block
368
+ # has been eval'd.
369
+ MemoizedHelpers.define_helpers_on(subclass)
370
+
371
+ subclass
372
+ end
373
+
374
+ # @private
375
+ def self.set_it_up(description, *args, &example_group_block)
376
+ # Ruby 1.9 has a bug that can lead to infinite recursion and a
377
+ # SystemStackError if you include a module in a superclass after
378
+ # including it in a subclass: https://gist.github.com/845896
379
+ # To prevent this, we must include any modules in
380
+ # RSpec::Core::ExampleGroup before users create example groups and have
381
+ # a chance to include the same module in a subclass of
382
+ # RSpec::Core::ExampleGroup. So we need to configure example groups
383
+ # here.
384
+ ensure_example_groups_are_configured
385
+
386
+ user_metadata = Metadata.build_hash_from(args)
387
+
388
+ @metadata = Metadata::ExampleGroupHash.create(
389
+ superclass_metadata, user_metadata,
390
+ superclass.method(:next_runnable_index_for),
391
+ description, *args, &example_group_block
392
+ )
393
+ ExampleGroups.assign_const(self)
394
+
395
+ hooks.register_globals(self, RSpec.configuration.hooks)
396
+ RSpec.configuration.configure_group(self)
397
+ end
398
+
399
+ # @private
400
+ def self.examples
401
+ @examples ||= []
402
+ end
403
+
404
+ # @private
405
+ def self.filtered_examples
406
+ RSpec.world.filtered_examples[self]
407
+ end
408
+
409
+ # @private
410
+ def self.descendant_filtered_examples
411
+ @descendant_filtered_examples ||= filtered_examples +
412
+ FlatMap.flat_map(children, &:descendant_filtered_examples)
413
+ end
414
+
415
+ # @private
416
+ def self.children
417
+ @children ||= []
418
+ end
419
+
420
+ # @private
421
+ def self.next_runnable_index_for(file)
422
+ if self == ExampleGroup
423
+ RSpec.world.num_example_groups_defined_in(file)
424
+ else
425
+ children.count + examples.count
426
+ end + 1
427
+ end
428
+
429
+ # @private
430
+ def self.descendants
431
+ @_descendants ||= [self] + FlatMap.flat_map(children, &:descendants)
432
+ end
433
+
434
+ ## @private
435
+ def self.parent_groups
436
+ @parent_groups ||= ancestors.select { |a| a < RSpec::Core::ExampleGroup }
437
+ end
438
+
439
+ # @private
440
+ def self.top_level?
441
+ superclass == ExampleGroup
442
+ end
443
+
444
+ # @private
445
+ def self.ensure_example_groups_are_configured
446
+ unless defined?(@@example_groups_configured)
447
+ RSpec.configuration.configure_mock_framework
448
+ RSpec.configuration.configure_expectation_framework
449
+ # rubocop:disable Style/ClassVars
450
+ @@example_groups_configured = true
451
+ # rubocop:enable Style/ClassVars
452
+ end
453
+ end
454
+
455
+ # @private
456
+ def self.before_context_ivars
457
+ @before_context_ivars ||= {}
458
+ end
459
+
460
+ # @private
461
+ def self.store_before_context_ivars(example_group_instance)
462
+ each_instance_variable_for_example(example_group_instance) do |ivar|
463
+ before_context_ivars[ivar] = example_group_instance.instance_variable_get(ivar)
464
+ end
465
+ end
466
+
467
+ # @private
468
+ def self.run_before_context_hooks(example_group_instance)
469
+ set_ivars(example_group_instance, superclass_before_context_ivars)
470
+
471
+ ContextHookMemoized::Before.isolate_for_context_hook(example_group_instance) do
472
+ hooks.run(:before, :context, example_group_instance)
473
+ end
474
+ ensure
475
+ store_before_context_ivars(example_group_instance)
476
+ end
477
+
478
+ if RUBY_VERSION.to_f >= 1.9
479
+ # @private
480
+ def self.superclass_before_context_ivars
481
+ superclass.before_context_ivars
482
+ end
483
+ else # 1.8.7
484
+ # :nocov:
485
+ # @private
486
+ def self.superclass_before_context_ivars
487
+ if superclass.respond_to?(:before_context_ivars)
488
+ superclass.before_context_ivars
489
+ else
490
+ # `self` must be the singleton class of an ExampleGroup instance.
491
+ # On 1.8.7, the superclass of a singleton class of an instance of A
492
+ # is A's singleton class. On 1.9+, it's A. On 1.8.7, the first ancestor
493
+ # is A, so we can mirror 1.8.7's behavior here. Note that we have to
494
+ # search for the first that responds to `before_context_ivars`
495
+ # in case a module has been included in the singleton class.
496
+ ancestors.find { |a| a.respond_to?(:before_context_ivars) }.before_context_ivars
497
+ end
498
+ end
499
+ # :nocov:
500
+ end
501
+
502
+ # @private
503
+ def self.run_after_context_hooks(example_group_instance)
504
+ set_ivars(example_group_instance, before_context_ivars)
505
+
506
+ ContextHookMemoized::After.isolate_for_context_hook(example_group_instance) do
507
+ hooks.run(:after, :context, example_group_instance)
508
+ end
509
+ ensure
510
+ before_context_ivars.clear
511
+ end
512
+
513
+ # Runs all the examples in this group.
514
+ def self.run(reporter=RSpec::Core::NullReporter)
515
+ return if RSpec.world.wants_to_quit
516
+ reporter.example_group_started(self)
517
+
518
+ should_run_context_hooks = descendant_filtered_examples.any?
519
+ begin
520
+ run_before_context_hooks(new('before(:context) hook')) if should_run_context_hooks
521
+ result_for_this_group = run_examples(reporter)
522
+ results_for_descendants = ordering_strategy.order(children).map { |child| child.run(reporter) }.all?
523
+ result_for_this_group && results_for_descendants
524
+ rescue Pending::SkipDeclaredInExample => ex
525
+ for_filtered_examples(reporter) { |example| example.skip_with_exception(reporter, ex) }
526
+ true
527
+ rescue Exception => ex
528
+ RSpec.world.wants_to_quit = true if fail_fast?
529
+ for_filtered_examples(reporter) { |example| example.fail_with_exception(reporter, ex) }
530
+ false
531
+ ensure
532
+ run_after_context_hooks(new('after(:context) hook')) if should_run_context_hooks
533
+ reporter.example_group_finished(self)
534
+ end
535
+ end
536
+
537
+ # @private
538
+ def self.ordering_strategy
539
+ order = metadata.fetch(:order, :global)
540
+ registry = RSpec.configuration.ordering_registry
541
+
542
+ registry.fetch(order) do
543
+ warn <<-WARNING.gsub(/^ +\|/, '')
544
+ |WARNING: Ignoring unknown ordering specified using `:order => #{order.inspect}` metadata.
545
+ | Falling back to configured global ordering.
546
+ | Unrecognized ordering specified at: #{location}
547
+ WARNING
548
+
549
+ registry.fetch(:global)
550
+ end
551
+ end
552
+
553
+ # @private
554
+ def self.run_examples(reporter)
555
+ ordering_strategy.order(filtered_examples).map do |example|
556
+ next if RSpec.world.wants_to_quit
557
+ instance = new(example.inspect_output)
558
+ set_ivars(instance, before_context_ivars)
559
+ succeeded = example.run(instance, reporter)
560
+ RSpec.world.wants_to_quit = true if fail_fast? && !succeeded
561
+ succeeded
562
+ end.all?
563
+ end
564
+
565
+ # @private
566
+ def self.for_filtered_examples(reporter, &block)
567
+ filtered_examples.each(&block)
568
+
569
+ children.each do |child|
570
+ reporter.example_group_started(child)
571
+ child.for_filtered_examples(reporter, &block)
572
+ reporter.example_group_finished(child)
573
+ end
574
+ false
575
+ end
576
+
577
+ # @private
578
+ def self.fail_fast?
579
+ RSpec.configuration.fail_fast?
580
+ end
581
+
582
+ # @private
583
+ def self.declaration_line_numbers
584
+ @declaration_line_numbers ||= [metadata[:line_number]] +
585
+ examples.map { |e| e.metadata[:line_number] } +
586
+ FlatMap.flat_map(children, &:declaration_line_numbers)
587
+ end
588
+
589
+ # @return [String] the unique id of this example group. Pass
590
+ # this at the command line to re-run this exact example group.
591
+ def self.id
592
+ Metadata.id_from(metadata)
593
+ end
594
+
595
+ # @private
596
+ def self.top_level_description
597
+ parent_groups.last.description
598
+ end
599
+
600
+ # @private
601
+ def self.set_ivars(instance, ivars)
602
+ ivars.each { |name, value| instance.instance_variable_set(name, value) }
603
+ end
604
+
605
+ if RUBY_VERSION.to_f < 1.9
606
+ # :nocov:
607
+ # @private
608
+ INSTANCE_VARIABLE_TO_IGNORE = '@__inspect_output'.freeze
609
+ # :nocov:
610
+ else
611
+ # @private
612
+ INSTANCE_VARIABLE_TO_IGNORE = :@__inspect_output
613
+ end
614
+
615
+ # @private
616
+ def self.each_instance_variable_for_example(group)
617
+ group.instance_variables.each do |ivar|
618
+ yield ivar unless ivar == INSTANCE_VARIABLE_TO_IGNORE
619
+ end
620
+ end
621
+
622
+ def initialize(inspect_output=nil)
623
+ @__inspect_output = inspect_output || '(no description provided)'
624
+ super() # no args get passed
625
+ end
626
+
627
+ # @private
628
+ def inspect
629
+ "#<#{self.class} #{@__inspect_output}>"
630
+ end
631
+
632
+ unless method_defined?(:singleton_class) # for 1.8.7
633
+ # :nocov:
634
+ # @private
635
+ def singleton_class
636
+ class << self; self; end
637
+ end
638
+ # :nocov:
639
+ end
640
+
641
+ # Raised when an RSpec API is called in the wrong scope, such as `before`
642
+ # being called from within an example rather than from within an example
643
+ # group block.
644
+ WrongScopeError = Class.new(NoMethodError)
645
+
646
+ def self.method_missing(name, *args)
647
+ if method_defined?(name)
648
+ raise WrongScopeError,
649
+ "`#{name}` is not available on an example group (e.g. a " \
650
+ "`describe` or `context` block). It is only available from " \
651
+ "within individual examples (e.g. `it` blocks) or from " \
652
+ "constructs that run in the scope of an example (e.g. " \
653
+ "`before`, `let`, etc)."
654
+ end
655
+
656
+ super
657
+ end
658
+ private_class_method :method_missing
659
+
660
+ private
661
+
662
+ def method_missing(name, *args)
663
+ if self.class.respond_to?(name)
664
+ raise WrongScopeError,
665
+ "`#{name}` is not available from within an example (e.g. an " \
666
+ "`it` block) or from constructs that run in the scope of an " \
667
+ "example (e.g. `before`, `let`, etc). It is only available " \
668
+ "on an example group (e.g. a `describe` or `context` block)."
669
+ end
670
+
671
+ super
672
+ end
673
+ end
674
+
675
+ # @private
676
+ # Unnamed example group used by `SuiteHookContext`.
677
+ class AnonymousExampleGroup < ExampleGroup
678
+ def self.metadata
679
+ {}
680
+ end
681
+ end
682
+
683
+ # Contains information about the inclusion site of a shared example group.
684
+ class SharedExampleGroupInclusionStackFrame
685
+ # @return [String] the name of the shared example group
686
+ attr_reader :shared_group_name
687
+ # @return [String] the location where the shared example was included
688
+ attr_reader :inclusion_location
689
+
690
+ def initialize(shared_group_name, inclusion_location)
691
+ @shared_group_name = shared_group_name
692
+ @inclusion_location = inclusion_location
693
+ end
694
+
695
+ # @return [String] The {#inclusion_location}, formatted for display by a formatter.
696
+ def formatted_inclusion_location
697
+ @formatted_inclusion_location ||= begin
698
+ RSpec.configuration.backtrace_formatter.backtrace_line(
699
+ inclusion_location.sub(/(:\d+):in .+$/, '\1')
700
+ )
701
+ end
702
+ end
703
+
704
+ # @return [String] Description of this stack frame, in the form used by
705
+ # RSpec's built-in formatters.
706
+ def description
707
+ @description ||= "Shared Example Group: #{shared_group_name.inspect} " \
708
+ "called from #{formatted_inclusion_location}"
709
+ end
710
+
711
+ # @private
712
+ def self.current_backtrace
713
+ shared_example_group_inclusions.reverse
714
+ end
715
+
716
+ # @private
717
+ def self.with_frame(name, location)
718
+ current_stack = shared_example_group_inclusions
719
+ current_stack << new(name, location)
720
+ yield
721
+ ensure
722
+ current_stack.pop
723
+ end
724
+
725
+ # @private
726
+ def self.shared_example_group_inclusions
727
+ RSpec::Support.thread_local_data[:shared_example_group_inclusions] ||= []
728
+ end
729
+ end
730
+ end
731
+
732
+ # @private
733
+ #
734
+ # Namespace for the example group subclasses generated by top-level
735
+ # `describe`.
736
+ module ExampleGroups
737
+ extend Support::RecursiveConstMethods
738
+
739
+ def self.assign_const(group)
740
+ base_name = base_name_for(group)
741
+ const_scope = constant_scope_for(group)
742
+ name = disambiguate(base_name, const_scope)
743
+
744
+ const_scope.const_set(name, group)
745
+ end
746
+
747
+ def self.constant_scope_for(group)
748
+ const_scope = group.superclass
749
+ const_scope = self if const_scope == ::RSpec::Core::ExampleGroup
750
+ const_scope
751
+ end
752
+
753
+ def self.base_name_for(group)
754
+ return "Anonymous" if group.description.empty?
755
+
756
+ # Convert to CamelCase.
757
+ name = ' ' << group.description
758
+ name.gsub!(/[^0-9a-zA-Z]+([0-9a-zA-Z])/) do
759
+ match = ::Regexp.last_match[1]
760
+ match.upcase!
761
+ match
762
+ end
763
+
764
+ name.lstrip! # Remove leading whitespace
765
+ name.gsub!(/\W/, ''.freeze) # JRuby, RBX and others don't like non-ascii in const names
766
+
767
+ # Ruby requires first const letter to be A-Z. Use `Nested`
768
+ # as necessary to enforce that.
769
+ name.gsub!(/\A([^A-Z]|\z)/, 'Nested\1'.freeze)
770
+
771
+ name
772
+ end
773
+
774
+ if RUBY_VERSION == '1.9.2'
775
+ # :nocov:
776
+ class << self
777
+ alias _base_name_for base_name_for
778
+ def base_name_for(group)
779
+ _base_name_for(group) + '_'
780
+ end
781
+ end
782
+ private_class_method :_base_name_for
783
+ # :nocov:
784
+ end
785
+
786
+ def self.disambiguate(name, const_scope)
787
+ return name unless const_defined_on?(const_scope, name)
788
+
789
+ # Add a trailing number if needed to disambiguate from an existing
790
+ # constant.
791
+ name << "_2"
792
+ name.next! while const_defined_on?(const_scope, name)
793
+ name
794
+ end
795
+ end
796
+ end