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,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