coingecko_client 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (407) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/Gemfile.lock +38 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +44 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/coingecko_client.gemspec +34 -0
  14. data/lib/coingecko_client.rb +61 -0
  15. data/lib/coingecko_client/version.rb +3 -0
  16. data/vendor/bundle/ruby/2.7.0/bin/htmldiff +27 -0
  17. data/vendor/bundle/ruby/2.7.0/bin/ldiff +27 -0
  18. data/vendor/bundle/ruby/2.7.0/bin/rake +27 -0
  19. data/vendor/bundle/ruby/2.7.0/bin/rspec +27 -0
  20. data/vendor/bundle/ruby/2.7.0/bin/ruby_executable_hooks +25 -0
  21. data/vendor/bundle/ruby/2.7.0/cache/diff-lcs-1.4.3.gem +0 -0
  22. data/vendor/bundle/ruby/2.7.0/cache/excon-0.75.0.gem +0 -0
  23. data/vendor/bundle/ruby/2.7.0/cache/rake-12.3.3.gem +0 -0
  24. data/vendor/bundle/ruby/2.7.0/cache/rspec-3.9.0.gem +0 -0
  25. data/vendor/bundle/ruby/2.7.0/cache/rspec-core-3.9.2.gem +0 -0
  26. data/vendor/bundle/ruby/2.7.0/cache/rspec-expectations-3.9.2.gem +0 -0
  27. data/vendor/bundle/ruby/2.7.0/cache/rspec-mocks-3.9.1.gem +0 -0
  28. data/vendor/bundle/ruby/2.7.0/cache/rspec-support-3.9.3.gem +0 -0
  29. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/.rspec +1 -0
  30. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/Code-of-Conduct.md +74 -0
  31. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/Contributing.md +84 -0
  32. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/History.md +278 -0
  33. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/License.md +39 -0
  34. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/Manifest.txt +45 -0
  35. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/README.rdoc +84 -0
  36. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/Rakefile +57 -0
  37. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/autotest/discover.rb +3 -0
  38. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/bin/htmldiff +35 -0
  39. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/bin/ldiff +9 -0
  40. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/docs/COPYING.txt +339 -0
  41. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/docs/artistic.txt +127 -0
  42. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff-lcs.rb +3 -0
  43. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs.rb +732 -0
  44. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/array.rb +7 -0
  45. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/backports.rb +9 -0
  46. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/block.rb +37 -0
  47. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/callbacks.rb +325 -0
  48. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/change.rb +174 -0
  49. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/htmldiff.rb +150 -0
  50. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/hunk.rb +291 -0
  51. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/internals.rb +304 -0
  52. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/ldiff.rb +175 -0
  53. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/lib/diff/lcs/string.rb +5 -0
  54. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/change_spec.rb +89 -0
  55. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/diff_spec.rb +51 -0
  56. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/fixtures/aX +1 -0
  57. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/fixtures/bXaX +1 -0
  58. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/fixtures/ds1.csv +50 -0
  59. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/fixtures/ds2.csv +51 -0
  60. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/fixtures/ldiff/output.diff +4 -0
  61. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/fixtures/ldiff/output.diff-c +7 -0
  62. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/fixtures/ldiff/output.diff-e +3 -0
  63. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/fixtures/ldiff/output.diff-f +3 -0
  64. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/fixtures/ldiff/output.diff-u +5 -0
  65. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/hunk_spec.rb +72 -0
  66. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/issues_spec.rb +98 -0
  67. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/lcs_spec.rb +56 -0
  68. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/ldiff_spec.rb +86 -0
  69. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/patch_spec.rb +416 -0
  70. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/sdiff_spec.rb +214 -0
  71. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/spec_helper.rb +375 -0
  72. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/traverse_balanced_spec.rb +310 -0
  73. data/vendor/bundle/ruby/2.7.0/gems/diff-lcs-1.4.3/spec/traverse_sequences_spec.rb +139 -0
  74. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/CONTRIBUTING.md +23 -0
  75. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/CONTRIBUTORS.md +140 -0
  76. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/LICENSE.md +20 -0
  77. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/README.md +492 -0
  78. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/data/cacert.pem +3466 -0
  79. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/excon.gemspec +43 -0
  80. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon.rb +255 -0
  81. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/connection.rb +594 -0
  82. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/constants.rb +169 -0
  83. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/error.rb +229 -0
  84. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/extensions/uri.rb +34 -0
  85. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/headers.rb +84 -0
  86. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/instrumentors/logging_instrumentor.rb +48 -0
  87. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/instrumentors/standard_instrumentor.rb +21 -0
  88. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/middlewares/base.rb +31 -0
  89. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/middlewares/capture_cookies.rb +32 -0
  90. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/middlewares/decompress.rb +37 -0
  91. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/middlewares/escape_path.rb +12 -0
  92. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/middlewares/expects.rb +25 -0
  93. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/middlewares/idempotent.rb +57 -0
  94. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/middlewares/instrumentor.rb +49 -0
  95. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/middlewares/mock.rb +61 -0
  96. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/middlewares/redirect_follower.rb +87 -0
  97. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/middlewares/response_parser.rb +16 -0
  98. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/pretty_printer.rb +39 -0
  99. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/response.rb +231 -0
  100. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/socket.rb +306 -0
  101. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/ssl_socket.rb +184 -0
  102. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/test/plugin/server/exec.rb +23 -0
  103. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/test/plugin/server/puma.rb +20 -0
  104. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/test/plugin/server/unicorn.rb +35 -0
  105. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/test/plugin/server/webrick.rb +23 -0
  106. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/test/server.rb +106 -0
  107. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/unix_socket.rb +41 -0
  108. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/utils.rb +125 -0
  109. data/vendor/bundle/ruby/2.7.0/gems/excon-0.75.0/lib/excon/version.rb +4 -0
  110. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
  111. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/Gemfile +3 -0
  112. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/History.rdoc +2344 -0
  113. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/MIT-LICENSE +21 -0
  114. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/README.rdoc +156 -0
  115. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/Rakefile +41 -0
  116. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/azure-pipelines.yml +11 -0
  117. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/bundle +105 -0
  118. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/console +7 -0
  119. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/rake +29 -0
  120. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/rdoc +29 -0
  121. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/rubocop +29 -0
  122. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/bin/setup +6 -0
  123. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
  124. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
  125. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
  126. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/example/a.c +6 -0
  127. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/example/b.c +6 -0
  128. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/example/main.c +11 -0
  129. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
  130. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/jamis.rb +592 -0
  131. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
  132. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/rake.1 +156 -0
  133. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
  134. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/doc/rational.rdoc +151 -0
  135. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/exe/rake +27 -0
  136. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake.rb +71 -0
  137. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/application.rb +824 -0
  138. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
  139. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
  140. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
  141. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
  142. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
  143. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
  144. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
  145. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
  146. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
  147. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
  148. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
  149. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
  150. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
  151. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
  152. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
  153. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
  154. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
  155. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
  156. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
  157. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
  158. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
  159. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
  160. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
  161. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
  162. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
  163. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
  164. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
  165. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
  166. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  167. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
  168. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task.rb +413 -0
  169. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
  170. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
  171. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
  172. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
  173. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
  174. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
  175. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
  176. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
  177. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/version.rb +10 -0
  178. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
  179. data/vendor/bundle/ruby/2.7.0/gems/rake-12.3.3/rake.gemspec +42 -0
  180. data/vendor/bundle/ruby/2.7.0/gems/rspec-3.9.0/LICENSE.md +27 -0
  181. data/vendor/bundle/ruby/2.7.0/gems/rspec-3.9.0/README.md +43 -0
  182. data/vendor/bundle/ruby/2.7.0/gems/rspec-3.9.0/lib/rspec.rb +3 -0
  183. data/vendor/bundle/ruby/2.7.0/gems/rspec-3.9.0/lib/rspec/version.rb +5 -0
  184. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/.document +5 -0
  185. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/.yardopts +8 -0
  186. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/Changelog.md +2291 -0
  187. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/LICENSE.md +26 -0
  188. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/README.md +384 -0
  189. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/exe/rspec +4 -0
  190. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/autorun.rb +3 -0
  191. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core.rb +186 -0
  192. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/backtrace_formatter.rb +65 -0
  193. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/bisect/coordinator.rb +62 -0
  194. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  195. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/bisect/fork_runner.rb +135 -0
  196. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/bisect/server.rb +61 -0
  197. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/bisect/shell_command.rb +126 -0
  198. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/bisect/shell_runner.rb +73 -0
  199. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/bisect/utilities.rb +58 -0
  200. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/configuration.rb +2363 -0
  201. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/configuration_options.rb +233 -0
  202. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/did_you_mean.rb +46 -0
  203. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/drb.rb +113 -0
  204. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/dsl.rb +98 -0
  205. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/example.rb +656 -0
  206. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/example_group.rb +900 -0
  207. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/example_status_persister.rb +235 -0
  208. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/filter_manager.rb +231 -0
  209. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/flat_map.rb +20 -0
  210. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters.rb +273 -0
  211. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  212. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/base_formatter.rb +70 -0
  213. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  214. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  215. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  216. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/console_codes.rb +68 -0
  217. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  218. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/documentation_formatter.rb +102 -0
  219. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb +511 -0
  220. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/failure_list_formatter.rb +23 -0
  221. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  222. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/helpers.rb +110 -0
  223. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/html_formatter.rb +153 -0
  224. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/html_printer.rb +414 -0
  225. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  226. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/json_formatter.rb +102 -0
  227. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  228. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  229. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/protocol.rb +182 -0
  230. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  231. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  232. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/hooks.rb +641 -0
  233. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/invocations.rb +87 -0
  234. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/memoized_helpers.rb +554 -0
  235. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/metadata.rb +498 -0
  236. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/metadata_filter.rb +255 -0
  237. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  238. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  239. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  240. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/mocking_adapters/null.rb +14 -0
  241. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  242. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  243. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb +521 -0
  244. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/option_parser.rb +316 -0
  245. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/ordering.rb +158 -0
  246. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/output_wrapper.rb +29 -0
  247. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/pending.rb +165 -0
  248. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/profiler.rb +34 -0
  249. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/project_initializer.rb +48 -0
  250. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/project_initializer/.rspec +1 -0
  251. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
  252. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/rake_task.rb +188 -0
  253. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb +265 -0
  254. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/ruby_project.rb +53 -0
  255. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb +204 -0
  256. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/sandbox.rb +37 -0
  257. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/set.rb +54 -0
  258. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/shared_context.rb +55 -0
  259. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/shared_example_group.rb +271 -0
  260. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/shell_escape.rb +49 -0
  261. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  262. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/version.rb +9 -0
  263. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/warnings.rb +40 -0
  264. data/vendor/bundle/ruby/2.7.0/gems/rspec-core-3.9.2/lib/rspec/core/world.rb +276 -0
  265. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/.document +5 -0
  266. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/.yardopts +6 -0
  267. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/Changelog.md +1191 -0
  268. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/LICENSE.md +25 -0
  269. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/README.md +320 -0
  270. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations.rb +82 -0
  271. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  272. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations/configuration.rb +215 -0
  273. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations/expectation_target.rb +127 -0
  274. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations/fail_with.rb +39 -0
  275. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations/failure_aggregator.rb +194 -0
  276. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations/handler.rb +170 -0
  277. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations/minitest_integration.rb +58 -0
  278. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations/syntax.rb +132 -0
  279. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/expectations/version.rb +8 -0
  280. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers.rb +1038 -0
  281. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/aliased_matcher.rb +116 -0
  282. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in.rb +52 -0
  283. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/all.rb +86 -0
  284. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  285. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/be.rb +288 -0
  286. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/be_between.rb +77 -0
  287. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/be_instance_of.rb +26 -0
  288. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/be_kind_of.rb +20 -0
  289. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/be_within.rb +72 -0
  290. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/change.rb +428 -0
  291. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/compound.rb +276 -0
  292. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  293. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/cover.rb +24 -0
  294. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/eq.rb +40 -0
  295. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/eql.rb +34 -0
  296. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/equal.rb +81 -0
  297. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/exist.rb +90 -0
  298. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/has.rb +103 -0
  299. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  300. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/include.rb +149 -0
  301. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/match.rb +106 -0
  302. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/operators.rb +128 -0
  303. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/output.rb +200 -0
  304. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  305. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/respond_to.rb +199 -0
  306. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  307. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  308. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  309. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/built_in/yield.rb +441 -0
  310. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/composable.rb +171 -0
  311. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/dsl.rb +540 -0
  312. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/english_phrasing.rb +58 -0
  313. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +82 -0
  314. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/fail_matchers.rb +42 -0
  315. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/generated_descriptions.rb +41 -0
  316. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/matcher_delegator.rb +35 -0
  317. data/vendor/bundle/ruby/2.7.0/gems/rspec-expectations-3.9.2/lib/rspec/matchers/matcher_protocol.rb +99 -0
  318. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/.document +5 -0
  319. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/.yardopts +6 -0
  320. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/Changelog.md +1133 -0
  321. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/LICENSE.md +25 -0
  322. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/README.md +463 -0
  323. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks.rb +130 -0
  324. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance.rb +11 -0
  325. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/chain.rb +111 -0
  326. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  327. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  328. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  329. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  330. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  331. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/recorder.rb +294 -0
  332. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  333. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  334. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  335. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/argument_matchers.rb +322 -0
  336. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/configuration.rb +212 -0
  337. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/error_generator.rb +369 -0
  338. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/example_methods.rb +434 -0
  339. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  340. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/marshal_extension.rb +41 -0
  341. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  342. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/have_received.rb +134 -0
  343. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive.rb +132 -0
  344. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  345. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  346. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/message_chain.rb +87 -0
  347. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/message_expectation.rb +751 -0
  348. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_double.rb +287 -0
  349. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/method_reference.rb +202 -0
  350. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/minitest_integration.rb +68 -0
  351. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/mutate_const.rb +339 -0
  352. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/object_reference.rb +149 -0
  353. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/order_group.rb +81 -0
  354. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/proxy.rb +503 -0
  355. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/space.rb +238 -0
  356. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/standalone.rb +3 -0
  357. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/syntax.rb +325 -0
  358. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/targets.rb +124 -0
  359. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/test_double.rb +171 -0
  360. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_double.rb +129 -0
  361. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  362. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/verifying_proxy.rb +220 -0
  363. data/vendor/bundle/ruby/2.7.0/gems/rspec-mocks-3.9.1/lib/rspec/mocks/version.rb +9 -0
  364. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/Changelog.md +302 -0
  365. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/LICENSE.md +23 -0
  366. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/README.md +40 -0
  367. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support.rb +149 -0
  368. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/caller_filter.rb +83 -0
  369. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/comparable_version.rb +46 -0
  370. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/differ.rb +215 -0
  371. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/directory_maker.rb +63 -0
  372. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/encoded_string.rb +161 -0
  373. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/fuzzy_matcher.rb +48 -0
  374. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/hunk_generator.rb +47 -0
  375. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/matcher_definition.rb +42 -0
  376. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/method_signature_verifier.rb +438 -0
  377. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/mutex.rb +73 -0
  378. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/object_formatter.rb +275 -0
  379. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/recursive_const_methods.rb +76 -0
  380. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/reentrant_mutex.rb +61 -0
  381. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/ruby_features.rb +190 -0
  382. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/source.rb +75 -0
  383. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/source/location.rb +21 -0
  384. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/source/node.rb +110 -0
  385. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/source/token.rb +87 -0
  386. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec.rb +81 -0
  387. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  388. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec/formatting_support.rb +9 -0
  389. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec/in_sub_process.rb +69 -0
  390. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  391. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec/shell_out.rb +89 -0
  392. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec/stderr_splitter.rb +75 -0
  393. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec/string_matcher.rb +46 -0
  394. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  395. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  396. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/version.rb +7 -0
  397. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/warnings.rb +39 -0
  398. data/vendor/bundle/ruby/2.7.0/gems/rspec-support-3.9.3/lib/rspec/support/with_keywords_when_needed.rb +33 -0
  399. data/vendor/bundle/ruby/2.7.0/specifications/diff-lcs-1.4.3.gemspec +50 -0
  400. data/vendor/bundle/ruby/2.7.0/specifications/excon-0.75.0.gemspec +56 -0
  401. data/vendor/bundle/ruby/2.7.0/specifications/rake-12.3.3.gemspec +43 -0
  402. data/vendor/bundle/ruby/2.7.0/specifications/rspec-3.9.0.gemspec +39 -0
  403. data/vendor/bundle/ruby/2.7.0/specifications/rspec-core-3.9.2.gemspec +53 -0
  404. data/vendor/bundle/ruby/2.7.0/specifications/rspec-expectations-3.9.2.gemspec +44 -0
  405. data/vendor/bundle/ruby/2.7.0/specifications/rspec-mocks-3.9.1.gemspec +44 -0
  406. data/vendor/bundle/ruby/2.7.0/specifications/rspec-support-3.9.3.gemspec +36 -0
  407. metadata +480 -0
@@ -0,0 +1,900 @@
1
+ RSpec::Support.require_rspec_support 'recursive_const_methods'
2
+
3
+ module RSpec
4
+ module Core
5
+ # rubocop:disable Metrics/ClassLength
6
+
7
+ # ExampleGroup and {Example} are the main structural elements of
8
+ # rspec-core. Consider this example:
9
+ #
10
+ # RSpec.describe Thing do
11
+ # it "does something" do
12
+ # end
13
+ # end
14
+ #
15
+ # The object returned by `describe Thing` is a subclass of ExampleGroup.
16
+ # The object returned by `it "does something"` is an instance of Example,
17
+ # which serves as a wrapper for an instance of the ExampleGroup in which it
18
+ # is declared.
19
+ #
20
+ # Example group bodies (e.g. `describe` or `context` blocks) are evaluated
21
+ # in the context of a new subclass of ExampleGroup. Individual examples are
22
+ # evaluated in the context of an instance of the specific ExampleGroup
23
+ # subclass to which they belong.
24
+ #
25
+ # Besides the class methods defined here, there are other interesting macros
26
+ # defined in {Hooks}, {MemoizedHelpers::ClassMethods} and
27
+ # {SharedExampleGroup}. There are additional instance methods available to
28
+ # your examples defined in {MemoizedHelpers} and {Pending}.
29
+ class ExampleGroup
30
+ extend Hooks
31
+
32
+ include MemoizedHelpers
33
+ extend MemoizedHelpers::ClassMethods
34
+ include Pending
35
+ extend SharedExampleGroup
36
+
37
+ # Define a singleton method for the singleton class (remove the method if
38
+ # it's already been defined).
39
+ # @private
40
+ def self.idempotently_define_singleton_method(name, &definition)
41
+ (class << self; self; end).module_exec do
42
+ remove_method(name) if method_defined?(name) && instance_method(name).owner == self
43
+ define_method(name, &definition)
44
+ end
45
+ end
46
+
47
+ # @!group Metadata
48
+
49
+ # The [Metadata](Metadata) object associated with this group.
50
+ # @see Metadata
51
+ def self.metadata
52
+ @metadata ||= nil
53
+ end
54
+
55
+ # Temporarily replace the provided metadata.
56
+ # Intended primarily to allow an example group's singleton class
57
+ # to return the metadata of the example that it exists for. This
58
+ # is necessary for shared example group inclusion to work properly
59
+ # with singleton example groups.
60
+ # @private
61
+ def self.with_replaced_metadata(meta)
62
+ orig_metadata = metadata
63
+ @metadata = meta
64
+ yield
65
+ ensure
66
+ @metadata = orig_metadata
67
+ end
68
+
69
+ # @private
70
+ # @return [Metadata] belonging to the parent of a nested {ExampleGroup}
71
+ def self.superclass_metadata
72
+ @superclass_metadata ||= superclass.respond_to?(:metadata) ? superclass.metadata : nil
73
+ end
74
+
75
+ # @private
76
+ def self.delegate_to_metadata(*names)
77
+ names.each do |name|
78
+ idempotently_define_singleton_method(name) { metadata.fetch(name) }
79
+ end
80
+ end
81
+
82
+ delegate_to_metadata :described_class, :file_path, :location
83
+
84
+ # @return [String] the current example group description
85
+ def self.description
86
+ description = metadata[:description]
87
+ RSpec.configuration.format_docstrings_block.call(description)
88
+ end
89
+
90
+ # Returns the class or module passed to the `describe` method (or alias).
91
+ # Returns nil if the subject is not a class or module.
92
+ # @example
93
+ # RSpec.describe Thing do
94
+ # it "does something" do
95
+ # described_class == Thing
96
+ # end
97
+ # end
98
+ #
99
+ def described_class
100
+ self.class.described_class
101
+ end
102
+
103
+ # @!endgroup
104
+
105
+ # @!group Defining Examples
106
+
107
+ # @private
108
+ # @macro [attach] define_example_method
109
+ # @!scope class
110
+ # @method $1
111
+ # @overload $1
112
+ # @overload $1(&example_implementation)
113
+ # @param example_implementation [Block] The implementation of the example.
114
+ # @overload $1(doc_string, *metadata)
115
+ # @param doc_string [String] The example's doc string.
116
+ # @param metadata [Array<Symbol>, Hash] Metadata for the example.
117
+ # Symbols will be transformed into hash entries with `true` values.
118
+ # @overload $1(doc_string, *metadata, &example_implementation)
119
+ # @param doc_string [String] The example's doc string.
120
+ # @param metadata [Array<Symbol>, Hash] Metadata for the example.
121
+ # Symbols will be transformed into hash entries with `true` values.
122
+ # @param example_implementation [Block] The implementation of the example.
123
+ # @yield [Example] the example object
124
+ # @example
125
+ # $1 do
126
+ # end
127
+ #
128
+ # $1 "does something" do
129
+ # end
130
+ #
131
+ # $1 "does something", :slow, :uses_js do
132
+ # end
133
+ #
134
+ # $1 "does something", :with => 'additional metadata' do
135
+ # end
136
+ #
137
+ # $1 "does something" do |ex|
138
+ # # ex is the Example object that contains metadata about the example
139
+ # end
140
+ #
141
+ # @example
142
+ # $1 "does something", :slow, :load_factor => 100 do
143
+ # end
144
+ #
145
+ def self.define_example_method(name, extra_options={})
146
+ idempotently_define_singleton_method(name) do |*all_args, &block|
147
+ desc, *args = *all_args
148
+
149
+ options = Metadata.build_hash_from(args)
150
+ options.update(:skip => RSpec::Core::Pending::NOT_YET_IMPLEMENTED) unless block
151
+ options.update(extra_options)
152
+
153
+ RSpec::Core::Example.new(self, desc, options, block)
154
+ end
155
+ end
156
+
157
+ # Defines an example within a group.
158
+ define_example_method :example
159
+ # Defines an example within a group.
160
+ # This is the primary API to define a code example.
161
+ define_example_method :it
162
+ # Defines an example within a group.
163
+ # Useful for when your docstring does not read well off of `it`.
164
+ # @example
165
+ # RSpec.describe MyClass do
166
+ # specify "#do_something is deprecated" do
167
+ # # ...
168
+ # end
169
+ # end
170
+ define_example_method :specify
171
+
172
+ # Shortcut to define an example with `:focus => true`.
173
+ # @see example
174
+ define_example_method :focus, :focus => true
175
+ # Shortcut to define an example with `:focus => true`.
176
+ # @see example
177
+ define_example_method :fexample, :focus => true
178
+ # Shortcut to define an example with `:focus => true`.
179
+ # @see example
180
+ define_example_method :fit, :focus => true
181
+ # Shortcut to define an example with `:focus => true`.
182
+ # @see example
183
+ define_example_method :fspecify, :focus => true
184
+ # Shortcut to define an example with `:skip => 'Temporarily skipped with xexample'`.
185
+ # @see example
186
+ define_example_method :xexample, :skip => 'Temporarily skipped with xexample'
187
+ # Shortcut to define an example with `:skip => 'Temporarily skipped with xit'`.
188
+ # @see example
189
+ define_example_method :xit, :skip => 'Temporarily skipped with xit'
190
+ # Shortcut to define an example with `:skip => 'Temporarily skipped with xspecify'`.
191
+ # @see example
192
+ define_example_method :xspecify, :skip => 'Temporarily skipped with xspecify'
193
+ # Shortcut to define an example with `:skip => true`
194
+ # @see example
195
+ define_example_method :skip, :skip => true
196
+ # Shortcut to define an example with `:pending => true`
197
+ # @see example
198
+ define_example_method :pending, :pending => true
199
+
200
+ # @!endgroup
201
+
202
+ # @!group Defining Example Groups
203
+
204
+ # @private
205
+ # @macro [attach] define_example_group_method
206
+ # @!scope class
207
+ # @overload $1
208
+ # @overload $1(&example_group_definition)
209
+ # @param example_group_definition [Block] The definition of the example group.
210
+ # @overload $1(doc_string, *metadata, &example_implementation)
211
+ # @param doc_string [String] The group's doc string.
212
+ # @param metadata [Array<Symbol>, Hash] Metadata for the group.
213
+ # Symbols will be transformed into hash entries with `true` values.
214
+ # @param example_group_definition [Block] The definition of the example group.
215
+ #
216
+ # Generates a subclass of this example group which inherits
217
+ # everything except the examples themselves.
218
+ #
219
+ # @example
220
+ #
221
+ # RSpec.describe "something" do # << This describe method is defined in
222
+ # # << RSpec::Core::DSL, included in the
223
+ # # << global namespace (optional)
224
+ # before do
225
+ # do_something_before
226
+ # end
227
+ #
228
+ # before(:example, :clean_env) do
229
+ # env.clear!
230
+ # end
231
+ #
232
+ # let(:thing) { Thing.new }
233
+ #
234
+ # $1 "attribute (of something)" do
235
+ # # examples in the group get the before hook
236
+ # # declared above, and can access `thing`
237
+ # end
238
+ #
239
+ # $1 "needs additional setup", :clean_env, :implementation => JSON do
240
+ # # specifies that hooks with matching metadata
241
+ # # should be be run additionally
242
+ # end
243
+ # end
244
+ #
245
+ # @see DSL#describe
246
+ def self.define_example_group_method(name, metadata={})
247
+ idempotently_define_singleton_method(name) do |*args, &example_group_block|
248
+ thread_data = RSpec::Support.thread_local_data
249
+ top_level = self == ExampleGroup
250
+
251
+ registration_collection =
252
+ if top_level
253
+ if thread_data[:in_example_group]
254
+ raise "Creating an isolated context from within a context is " \
255
+ "not allowed. Change `RSpec.#{name}` to `#{name}` or " \
256
+ "move this to a top-level scope."
257
+ end
258
+
259
+ thread_data[:in_example_group] = true
260
+ RSpec.world.example_groups
261
+ else
262
+ children
263
+ end
264
+
265
+ begin
266
+ description = args.shift
267
+ combined_metadata = metadata.dup
268
+ combined_metadata.merge!(args.pop) if args.last.is_a? Hash
269
+ args << combined_metadata
270
+
271
+ subclass(self, description, args, registration_collection, &example_group_block)
272
+ ensure
273
+ thread_data.delete(:in_example_group) if top_level
274
+ end
275
+ end
276
+
277
+ RSpec::Core::DSL.expose_example_group_alias(name)
278
+ end
279
+
280
+ define_example_group_method :example_group
281
+
282
+ # An alias of `example_group`. Generally used when grouping examples by a
283
+ # thing you are describing (e.g. an object, class or method).
284
+ # @see example_group
285
+ define_example_group_method :describe
286
+
287
+ # An alias of `example_group`. Generally used when grouping examples
288
+ # contextually (e.g. "with xyz", "when xyz" or "if xyz").
289
+ # @see example_group
290
+ define_example_group_method :context
291
+
292
+ # Shortcut to temporarily make an example group skipped.
293
+ # @see example_group
294
+ define_example_group_method :xdescribe, :skip => "Temporarily skipped with xdescribe"
295
+
296
+ # Shortcut to temporarily make an example group skipped.
297
+ # @see example_group
298
+ define_example_group_method :xcontext, :skip => "Temporarily skipped with xcontext"
299
+
300
+ # Shortcut to define an example group with `:focus => true`.
301
+ # @see example_group
302
+ define_example_group_method :fdescribe, :focus => true
303
+
304
+ # Shortcut to define an example group with `:focus => true`.
305
+ # @see example_group
306
+ define_example_group_method :fcontext, :focus => true
307
+
308
+ # @!endgroup
309
+
310
+ # @!group Including Shared Example Groups
311
+
312
+ # @private
313
+ # @macro [attach] define_nested_shared_group_method
314
+ # @!scope class
315
+ #
316
+ # @see SharedExampleGroup
317
+ def self.define_nested_shared_group_method(new_name, report_label="it should behave like")
318
+ idempotently_define_singleton_method(new_name) do |name, *args, &customization_block|
319
+ # Pass :caller so the :location metadata is set properly.
320
+ # Otherwise, it'll be set to the next line because that's
321
+ # the block's source_location.
322
+ group = example_group("#{report_label} #{name}", :caller => (the_caller = caller)) do
323
+ find_and_eval_shared("examples", name, the_caller.first, *args, &customization_block)
324
+ end
325
+ group.metadata[:shared_group_name] = name
326
+ group
327
+ end
328
+ end
329
+
330
+ # Generates a nested example group and includes the shared content
331
+ # mapped to `name` in the nested group.
332
+ define_nested_shared_group_method :it_behaves_like, "behaves like"
333
+ # Generates a nested example group and includes the shared content
334
+ # mapped to `name` in the nested group.
335
+ define_nested_shared_group_method :it_should_behave_like
336
+
337
+ # Includes shared content mapped to `name` directly in the group in which
338
+ # it is declared, as opposed to `it_behaves_like`, which creates a nested
339
+ # group. If given a block, that block is also eval'd in the current
340
+ # context.
341
+ #
342
+ # @see SharedExampleGroup
343
+ def self.include_context(name, *args, &block)
344
+ find_and_eval_shared("context", name, caller.first, *args, &block)
345
+ end
346
+
347
+ # Includes shared content mapped to `name` directly in the group in which
348
+ # it is declared, as opposed to `it_behaves_like`, which creates a nested
349
+ # group. If given a block, that block is also eval'd in the current
350
+ # context.
351
+ #
352
+ # @see SharedExampleGroup
353
+ def self.include_examples(name, *args, &block)
354
+ find_and_eval_shared("examples", name, caller.first, *args, &block)
355
+ end
356
+
357
+ # Clear memoized values when adding/removing examples
358
+ # @private
359
+ def self.reset_memoized
360
+ @descendant_filtered_examples = nil
361
+ @_descendants = nil
362
+ @parent_groups = nil
363
+ @declaration_locations = nil
364
+ end
365
+
366
+ # Adds an example to the example group
367
+ def self.add_example(example)
368
+ reset_memoized
369
+ examples << example
370
+ end
371
+
372
+ # Removes an example from the example group
373
+ def self.remove_example(example)
374
+ reset_memoized
375
+ examples.delete example
376
+ end
377
+
378
+ # @private
379
+ def self.find_and_eval_shared(label, name, inclusion_location, *args, &customization_block)
380
+ shared_module = RSpec.world.shared_example_group_registry.find(parent_groups, name)
381
+
382
+ unless shared_module
383
+ raise ArgumentError, "Could not find shared #{label} #{name.inspect}"
384
+ end
385
+
386
+ shared_module.include_in(
387
+ self, Metadata.relative_path(inclusion_location),
388
+ args, customization_block
389
+ )
390
+ end
391
+
392
+ # @!endgroup
393
+
394
+ # @private
395
+ def self.subclass(parent, description, args, registration_collection, &example_group_block)
396
+ subclass = Class.new(parent)
397
+ subclass.set_it_up(description, args, registration_collection, &example_group_block)
398
+ subclass.module_exec(&example_group_block) if example_group_block
399
+
400
+ # The LetDefinitions module must be included _after_ other modules
401
+ # to ensure that it takes precedence when there are name collisions.
402
+ # Thus, we delay including it until after the example group block
403
+ # has been eval'd.
404
+ MemoizedHelpers.define_helpers_on(subclass)
405
+
406
+ subclass
407
+ end
408
+
409
+ # @private
410
+ def self.set_it_up(description, args, registration_collection, &example_group_block)
411
+ # Ruby 1.9 has a bug that can lead to infinite recursion and a
412
+ # SystemStackError if you include a module in a superclass after
413
+ # including it in a subclass: https://gist.github.com/845896
414
+ # To prevent this, we must include any modules in
415
+ # RSpec::Core::ExampleGroup before users create example groups and have
416
+ # a chance to include the same module in a subclass of
417
+ # RSpec::Core::ExampleGroup. So we need to configure example groups
418
+ # here.
419
+ ensure_example_groups_are_configured
420
+
421
+ # Register the example with the group before creating the metadata hash.
422
+ # This is necessary since creating the metadata hash triggers
423
+ # `when_first_matching_example_defined` callbacks, in which users can
424
+ # load RSpec support code which defines hooks. For that to work, the
425
+ # examples and example groups must be registered at the time the
426
+ # support code is called or be defined afterwards.
427
+ # Begin defined beforehand but registered afterwards causes hooks to
428
+ # not be applied where they should.
429
+ registration_collection << self
430
+
431
+ @user_metadata = Metadata.build_hash_from(args)
432
+
433
+ @metadata = Metadata::ExampleGroupHash.create(
434
+ superclass_metadata, @user_metadata,
435
+ superclass.method(:next_runnable_index_for),
436
+ description, *args, &example_group_block
437
+ )
438
+
439
+ config = RSpec.configuration
440
+ config.apply_derived_metadata_to(@metadata)
441
+
442
+ ExampleGroups.assign_const(self)
443
+
444
+ @currently_executing_a_context_hook = false
445
+
446
+ config.configure_group(self)
447
+ end
448
+
449
+ # @private
450
+ def self.examples
451
+ @examples ||= []
452
+ end
453
+
454
+ # @private
455
+ def self.filtered_examples
456
+ RSpec.world.filtered_examples[self]
457
+ end
458
+
459
+ # @private
460
+ def self.descendant_filtered_examples
461
+ @descendant_filtered_examples ||= filtered_examples +
462
+ FlatMap.flat_map(children, &:descendant_filtered_examples)
463
+ end
464
+
465
+ # @private
466
+ def self.children
467
+ @children ||= []
468
+ end
469
+
470
+ # @private
471
+ # Traverses the tree of groups, starting with `self`, then the children, recursively.
472
+ # Halts the traversal of a branch of the tree as soon as the passed block returns true.
473
+ # Note that siblings groups and their sub-trees will continue to be explored.
474
+ # This is intended to make it easy to find the top-most group that satisfies some
475
+ # condition.
476
+ def self.traverse_tree_until(&block)
477
+ return if yield self
478
+
479
+ children.each do |child|
480
+ child.traverse_tree_until(&block)
481
+ end
482
+ end
483
+
484
+ # @private
485
+ def self.next_runnable_index_for(file)
486
+ if self == ExampleGroup
487
+ # We add 1 so the ids start at 1 instead of 0. This is
488
+ # necessary for this branch (but not for the other one)
489
+ # because we register examples and groups with the
490
+ # `children` and `examples` collection BEFORE this
491
+ # method is called as part of metadata hash creation,
492
+ # but the example group is recorded with
493
+ # `RSpec.world.example_group_counts_by_spec_file` AFTER
494
+ # the metadata hash is created and the group is returned
495
+ # to the caller.
496
+ RSpec.world.num_example_groups_defined_in(file) + 1
497
+ else
498
+ children.count + examples.count
499
+ end
500
+ end
501
+
502
+ # @private
503
+ def self.descendants
504
+ @_descendants ||= [self] + FlatMap.flat_map(children, &:descendants)
505
+ end
506
+
507
+ ## @private
508
+ def self.parent_groups
509
+ @parent_groups ||= ancestors.select { |a| a < RSpec::Core::ExampleGroup }
510
+ end
511
+
512
+ # @private
513
+ def self.top_level?
514
+ superclass == ExampleGroup
515
+ end
516
+
517
+ # @private
518
+ def self.ensure_example_groups_are_configured
519
+ unless defined?(@@example_groups_configured)
520
+ RSpec.configuration.configure_mock_framework
521
+ RSpec.configuration.configure_expectation_framework
522
+ # rubocop:disable Style/ClassVars
523
+ @@example_groups_configured = true
524
+ # rubocop:enable Style/ClassVars
525
+ end
526
+ end
527
+
528
+ # @private
529
+ def self.before_context_ivars
530
+ @before_context_ivars ||= {}
531
+ end
532
+
533
+ # @private
534
+ def self.store_before_context_ivars(example_group_instance)
535
+ each_instance_variable_for_example(example_group_instance) do |ivar|
536
+ before_context_ivars[ivar] = example_group_instance.instance_variable_get(ivar)
537
+ end
538
+ end
539
+
540
+ # Returns true if a `before(:context)` or `after(:context)`
541
+ # hook is currently executing.
542
+ def self.currently_executing_a_context_hook?
543
+ @currently_executing_a_context_hook
544
+ end
545
+
546
+ # @private
547
+ def self.run_before_context_hooks(example_group_instance)
548
+ set_ivars(example_group_instance, superclass_before_context_ivars)
549
+
550
+ @currently_executing_a_context_hook = true
551
+
552
+ ContextHookMemoized::Before.isolate_for_context_hook(example_group_instance) do
553
+ hooks.run(:before, :context, example_group_instance)
554
+ end
555
+ ensure
556
+ store_before_context_ivars(example_group_instance)
557
+ @currently_executing_a_context_hook = false
558
+ end
559
+
560
+ if RUBY_VERSION.to_f >= 1.9
561
+ # @private
562
+ def self.superclass_before_context_ivars
563
+ superclass.before_context_ivars
564
+ end
565
+ else # 1.8.7
566
+ # :nocov:
567
+ # @private
568
+ def self.superclass_before_context_ivars
569
+ if superclass.respond_to?(:before_context_ivars)
570
+ superclass.before_context_ivars
571
+ else
572
+ # `self` must be the singleton class of an ExampleGroup instance.
573
+ # On 1.8.7, the superclass of a singleton class of an instance of A
574
+ # is A's singleton class. On 1.9+, it's A. On 1.8.7, the first ancestor
575
+ # is A, so we can mirror 1.8.7's behavior here. Note that we have to
576
+ # search for the first that responds to `before_context_ivars`
577
+ # in case a module has been included in the singleton class.
578
+ ancestors.find { |a| a.respond_to?(:before_context_ivars) }.before_context_ivars
579
+ end
580
+ end
581
+ # :nocov:
582
+ end
583
+
584
+ # @private
585
+ def self.run_after_context_hooks(example_group_instance)
586
+ set_ivars(example_group_instance, before_context_ivars)
587
+
588
+ @currently_executing_a_context_hook = true
589
+
590
+ ContextHookMemoized::After.isolate_for_context_hook(example_group_instance) do
591
+ hooks.run(:after, :context, example_group_instance)
592
+ end
593
+ ensure
594
+ before_context_ivars.clear
595
+ @currently_executing_a_context_hook = false
596
+ end
597
+
598
+ # Runs all the examples in this group.
599
+ def self.run(reporter=RSpec::Core::NullReporter)
600
+ return if RSpec.world.wants_to_quit
601
+ reporter.example_group_started(self)
602
+
603
+ should_run_context_hooks = descendant_filtered_examples.any?
604
+ begin
605
+ run_before_context_hooks(new('before(:context) hook')) if should_run_context_hooks
606
+ result_for_this_group = run_examples(reporter)
607
+ results_for_descendants = ordering_strategy.order(children).map { |child| child.run(reporter) }.all?
608
+ result_for_this_group && results_for_descendants
609
+ rescue Pending::SkipDeclaredInExample => ex
610
+ for_filtered_examples(reporter) { |example| example.skip_with_exception(reporter, ex) }
611
+ true
612
+ rescue Support::AllExceptionsExceptOnesWeMustNotRescue => ex
613
+ for_filtered_examples(reporter) { |example| example.fail_with_exception(reporter, ex) }
614
+ RSpec.world.wants_to_quit = true if reporter.fail_fast_limit_met?
615
+ false
616
+ ensure
617
+ run_after_context_hooks(new('after(:context) hook')) if should_run_context_hooks
618
+ reporter.example_group_finished(self)
619
+ end
620
+ end
621
+
622
+ # @private
623
+ def self.ordering_strategy
624
+ order = metadata.fetch(:order, :global)
625
+ registry = RSpec.configuration.ordering_registry
626
+
627
+ registry.fetch(order) do
628
+ warn <<-WARNING.gsub(/^ +\|/, '')
629
+ |WARNING: Ignoring unknown ordering specified using `:order => #{order.inspect}` metadata.
630
+ | Falling back to configured global ordering.
631
+ | Unrecognized ordering specified at: #{location}
632
+ WARNING
633
+
634
+ registry.fetch(:global)
635
+ end
636
+ end
637
+
638
+ # @private
639
+ def self.run_examples(reporter)
640
+ ordering_strategy.order(filtered_examples).map do |example|
641
+ next if RSpec.world.wants_to_quit
642
+ instance = new(example.inspect_output)
643
+ set_ivars(instance, before_context_ivars)
644
+ succeeded = example.run(instance, reporter)
645
+ if !succeeded && reporter.fail_fast_limit_met?
646
+ RSpec.world.wants_to_quit = true
647
+ end
648
+ succeeded
649
+ end.all?
650
+ end
651
+
652
+ # @private
653
+ def self.for_filtered_examples(reporter, &block)
654
+ filtered_examples.each(&block)
655
+
656
+ children.each do |child|
657
+ reporter.example_group_started(child)
658
+ child.for_filtered_examples(reporter, &block)
659
+ reporter.example_group_finished(child)
660
+ end
661
+ false
662
+ end
663
+
664
+ # @private
665
+ def self.declaration_locations
666
+ @declaration_locations ||= [Metadata.location_tuple_from(metadata)] +
667
+ examples.map { |e| Metadata.location_tuple_from(e.metadata) } +
668
+ FlatMap.flat_map(children, &:declaration_locations)
669
+ end
670
+
671
+ # @return [String] the unique id of this example group. Pass
672
+ # this at the command line to re-run this exact example group.
673
+ def self.id
674
+ Metadata.id_from(metadata)
675
+ end
676
+
677
+ # @private
678
+ def self.top_level_description
679
+ parent_groups.last.description
680
+ end
681
+
682
+ # @private
683
+ def self.set_ivars(instance, ivars)
684
+ ivars.each { |name, value| instance.instance_variable_set(name, value) }
685
+ end
686
+
687
+ if RUBY_VERSION.to_f < 1.9
688
+ # :nocov:
689
+ # @private
690
+ INSTANCE_VARIABLE_TO_IGNORE = '@__inspect_output'.freeze
691
+ # :nocov:
692
+ else
693
+ # @private
694
+ INSTANCE_VARIABLE_TO_IGNORE = :@__inspect_output
695
+ end
696
+
697
+ # @private
698
+ def self.each_instance_variable_for_example(group)
699
+ group.instance_variables.each do |ivar|
700
+ yield ivar unless ivar == INSTANCE_VARIABLE_TO_IGNORE
701
+ end
702
+ end
703
+
704
+ def initialize(inspect_output=nil)
705
+ @__inspect_output = inspect_output || '(no description provided)'
706
+ super() # no args get passed
707
+ end
708
+
709
+ # @private
710
+ def inspect
711
+ "#<#{self.class} #{@__inspect_output}>"
712
+ end
713
+
714
+ unless method_defined?(:singleton_class) # for 1.8.7
715
+ # :nocov:
716
+ # @private
717
+ def singleton_class
718
+ class << self; self; end
719
+ end
720
+ # :nocov:
721
+ end
722
+
723
+ # @private
724
+ def self.update_inherited_metadata(updates)
725
+ metadata.update(updates) do |key, existing_group_value, new_inherited_value|
726
+ @user_metadata.key?(key) ? existing_group_value : new_inherited_value
727
+ end
728
+
729
+ RSpec.configuration.configure_group(self)
730
+ examples.each { |ex| ex.update_inherited_metadata(updates) }
731
+ children.each { |group| group.update_inherited_metadata(updates) }
732
+ end
733
+
734
+ # Raised when an RSpec API is called in the wrong scope, such as `before`
735
+ # being called from within an example rather than from within an example
736
+ # group block.
737
+ WrongScopeError = Class.new(NoMethodError)
738
+
739
+ def self.method_missing(name, *args)
740
+ if method_defined?(name)
741
+ raise WrongScopeError,
742
+ "`#{name}` is not available on an example group (e.g. a " \
743
+ "`describe` or `context` block). It is only available from " \
744
+ "within individual examples (e.g. `it` blocks) or from " \
745
+ "constructs that run in the scope of an example (e.g. " \
746
+ "`before`, `let`, etc)."
747
+ end
748
+
749
+ super
750
+ end
751
+ private_class_method :method_missing
752
+
753
+ private
754
+
755
+ def method_missing(name, *args)
756
+ if self.class.respond_to?(name)
757
+ raise WrongScopeError,
758
+ "`#{name}` is not available from within an example (e.g. an " \
759
+ "`it` block) or from constructs that run in the scope of an " \
760
+ "example (e.g. `before`, `let`, etc). It is only available " \
761
+ "on an example group (e.g. a `describe` or `context` block)."
762
+ end
763
+
764
+ super
765
+ end
766
+ end
767
+ # rubocop:enable Metrics/ClassLength
768
+
769
+ # @private
770
+ # Unnamed example group used by `SuiteHookContext`.
771
+ class AnonymousExampleGroup < ExampleGroup
772
+ def self.metadata
773
+ {}
774
+ end
775
+ end
776
+
777
+ # Contains information about the inclusion site of a shared example group.
778
+ class SharedExampleGroupInclusionStackFrame
779
+ # @return [String] the name of the shared example group
780
+ attr_reader :shared_group_name
781
+ # @return [String] the location where the shared example was included
782
+ attr_reader :inclusion_location
783
+
784
+ def initialize(shared_group_name, inclusion_location)
785
+ @shared_group_name = shared_group_name
786
+ @inclusion_location = inclusion_location
787
+ end
788
+
789
+ # @return [String] The {#inclusion_location}, formatted for display by a formatter.
790
+ def formatted_inclusion_location
791
+ @formatted_inclusion_location ||= begin
792
+ RSpec.configuration.backtrace_formatter.backtrace_line(
793
+ inclusion_location.sub(/(:\d+):in .+$/, '\1')
794
+ )
795
+ end
796
+ end
797
+
798
+ # @return [String] Description of this stack frame, in the form used by
799
+ # RSpec's built-in formatters.
800
+ def description
801
+ @description ||= "Shared Example Group: #{shared_group_name.inspect} " \
802
+ "called from #{formatted_inclusion_location}"
803
+ end
804
+
805
+ # @private
806
+ def self.current_backtrace
807
+ shared_example_group_inclusions.reverse
808
+ end
809
+
810
+ # @private
811
+ def self.with_frame(name, location)
812
+ current_stack = shared_example_group_inclusions
813
+ if current_stack.any? { |frame| frame.shared_group_name == name }
814
+ raise ArgumentError, "can't include shared examples recursively"
815
+ else
816
+ current_stack << new(name, location)
817
+ yield
818
+ end
819
+ ensure
820
+ current_stack.pop
821
+ end
822
+
823
+ # @private
824
+ def self.shared_example_group_inclusions
825
+ RSpec::Support.thread_local_data[:shared_example_group_inclusions] ||= []
826
+ end
827
+ end
828
+ end
829
+
830
+ # @private
831
+ #
832
+ # Namespace for the example group subclasses generated by top-level
833
+ # `describe`.
834
+ module ExampleGroups
835
+ extend Support::RecursiveConstMethods
836
+
837
+ def self.assign_const(group)
838
+ base_name = base_name_for(group)
839
+ const_scope = constant_scope_for(group)
840
+ name = disambiguate(base_name, const_scope)
841
+
842
+ const_scope.const_set(name, group)
843
+ end
844
+
845
+ def self.constant_scope_for(group)
846
+ const_scope = group.superclass
847
+ const_scope = self if const_scope == ::RSpec::Core::ExampleGroup
848
+ const_scope
849
+ end
850
+
851
+ def self.remove_all_constants
852
+ constants.each do |constant|
853
+ __send__(:remove_const, constant)
854
+ end
855
+ end
856
+
857
+ def self.base_name_for(group)
858
+ return "Anonymous".dup if group.description.empty?
859
+
860
+ # Convert to CamelCase.
861
+ name = ' ' + group.description
862
+ name.gsub!(/[^0-9a-zA-Z]+([0-9a-zA-Z])/) do
863
+ match = ::Regexp.last_match[1]
864
+ match.upcase!
865
+ match
866
+ end
867
+
868
+ name.lstrip! # Remove leading whitespace
869
+ name.gsub!(/\W/, ''.freeze) # JRuby, RBX and others don't like non-ascii in const names
870
+
871
+ # Ruby requires first const letter to be A-Z. Use `Nested`
872
+ # as necessary to enforce that.
873
+ name.gsub!(/\A([^A-Z]|\z)/, 'Nested\1'.freeze)
874
+
875
+ name
876
+ end
877
+
878
+ if RUBY_VERSION == '1.9.2'
879
+ # :nocov:
880
+ class << self
881
+ alias _base_name_for base_name_for
882
+ def base_name_for(group)
883
+ _base_name_for(group) + '_'
884
+ end
885
+ end
886
+ private_class_method :_base_name_for
887
+ # :nocov:
888
+ end
889
+
890
+ def self.disambiguate(name, const_scope)
891
+ return name unless const_defined_on?(const_scope, name)
892
+
893
+ # Add a trailing number if needed to disambiguate from an existing
894
+ # constant.
895
+ name << "_2"
896
+ name.next! while const_defined_on?(const_scope, name)
897
+ name
898
+ end
899
+ end
900
+ end