guesswhat 0.1.0

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