hatena_bookmark_client_for_ruby 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +7 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +35 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +39 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/hatena_bookmark_client_for_ruby.gemspec +30 -0
  13. data/lib/hatena_bookmark_client_for_ruby.rb +10 -0
  14. data/lib/hatena_bookmark_client_for_ruby/version.rb +3 -0
  15. data/shell/exe/sample +5 -0
  16. data/vendor/bundle/ruby/2.6.0/bin/htmldiff +29 -0
  17. data/vendor/bundle/ruby/2.6.0/bin/ldiff +29 -0
  18. data/vendor/bundle/ruby/2.6.0/bin/rake +27 -0
  19. data/vendor/bundle/ruby/2.6.0/bin/rspec +27 -0
  20. data/vendor/bundle/ruby/2.6.0/cache/diff-lcs-1.3.gem +0 -0
  21. data/vendor/bundle/ruby/2.6.0/cache/rake-10.5.0.gem +0 -0
  22. data/vendor/bundle/ruby/2.6.0/cache/rspec-3.8.0.gem +0 -0
  23. data/vendor/bundle/ruby/2.6.0/cache/rspec-core-3.8.0.gem +0 -0
  24. data/vendor/bundle/ruby/2.6.0/cache/rspec-expectations-3.8.2.gem +0 -0
  25. data/vendor/bundle/ruby/2.6.0/cache/rspec-mocks-3.8.0.gem +0 -0
  26. data/vendor/bundle/ruby/2.6.0/cache/rspec-support-3.8.0.gem +0 -0
  27. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/.rspec +1 -0
  28. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/Code-of-Conduct.md +74 -0
  29. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/Contributing.md +83 -0
  30. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/History.md +220 -0
  31. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/License.md +39 -0
  32. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/Manifest.txt +37 -0
  33. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/README.rdoc +84 -0
  34. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/Rakefile +57 -0
  35. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/autotest/discover.rb +1 -0
  36. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/bin/htmldiff +32 -0
  37. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/bin/ldiff +6 -0
  38. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/docs/COPYING.txt +339 -0
  39. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/docs/artistic.txt +127 -0
  40. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff-lcs.rb +3 -0
  41. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs.rb +725 -0
  42. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/array.rb +7 -0
  43. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/block.rb +37 -0
  44. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/callbacks.rb +322 -0
  45. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/change.rb +181 -0
  46. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/htmldiff.rb +149 -0
  47. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb +276 -0
  48. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/internals.rb +307 -0
  49. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/ldiff.rb +167 -0
  50. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/lib/diff/lcs/string.rb +5 -0
  51. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/change_spec.rb +65 -0
  52. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/diff_spec.rb +47 -0
  53. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/fixtures/ds1.csv +50 -0
  54. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/fixtures/ds2.csv +51 -0
  55. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/hunk_spec.rb +72 -0
  56. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/issues_spec.rb +49 -0
  57. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/lcs_spec.rb +56 -0
  58. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/ldiff_spec.rb +47 -0
  59. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/patch_spec.rb +422 -0
  60. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/sdiff_spec.rb +214 -0
  61. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/spec_helper.rb +321 -0
  62. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb +310 -0
  63. data/vendor/bundle/ruby/2.6.0/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb +139 -0
  64. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/.autotest +7 -0
  65. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/.rubocop.yml +27 -0
  66. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/.togglerc +7 -0
  67. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/CONTRIBUTING.rdoc +38 -0
  68. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/History.rdoc +659 -0
  69. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/MIT-LICENSE +21 -0
  70. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/Manifest.txt +166 -0
  71. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/README.rdoc +139 -0
  72. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/Rakefile +81 -0
  73. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/bin/rake +33 -0
  74. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/command_line_usage.rdoc +158 -0
  75. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/example/Rakefile1 +38 -0
  76. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/example/Rakefile2 +35 -0
  77. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/example/a.c +6 -0
  78. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/example/b.c +6 -0
  79. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/example/main.c +11 -0
  80. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/glossary.rdoc +42 -0
  81. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/jamis.rb +591 -0
  82. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/proto_rake.rdoc +127 -0
  83. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/rake.1 +141 -0
  84. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/rakefile.rdoc +624 -0
  85. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/rational.rdoc +151 -0
  86. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.4.14.rdoc +23 -0
  87. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.4.15.rdoc +35 -0
  88. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.5.0.rdoc +53 -0
  89. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.5.3.rdoc +78 -0
  90. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.5.4.rdoc +46 -0
  91. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.6.0.rdoc +141 -0
  92. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.7.0.rdoc +119 -0
  93. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.7.1.rdoc +59 -0
  94. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.7.2.rdoc +121 -0
  95. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.7.3.rdoc +47 -0
  96. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.0.rdoc +114 -0
  97. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.2.rdoc +165 -0
  98. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.3.rdoc +112 -0
  99. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.4.rdoc +147 -0
  100. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.5.rdoc +53 -0
  101. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.6.rdoc +37 -0
  102. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.7.rdoc +55 -0
  103. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.0.rdoc +112 -0
  104. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.1.rdoc +52 -0
  105. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  106. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.rdoc +49 -0
  107. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.3.rdoc +102 -0
  108. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.4.rdoc +60 -0
  109. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.5.rdoc +55 -0
  110. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.6.rdoc +64 -0
  111. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-10.0.0.rdoc +178 -0
  112. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-10.0.1.rdoc +58 -0
  113. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-10.0.2.rdoc +53 -0
  114. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-10.0.3.rdoc +191 -0
  115. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-10.1.0.rdoc +61 -0
  116. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake.rb +79 -0
  117. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/alt_system.rb +110 -0
  118. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/application.rb +790 -0
  119. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/backtrace.rb +23 -0
  120. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/clean.rb +76 -0
  121. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/cloneable.rb +16 -0
  122. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/.document +1 -0
  123. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb +21 -0
  124. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb +137 -0
  125. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/publisher.rb +81 -0
  126. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  127. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb +61 -0
  128. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/sys.rb +4 -0
  129. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/cpu_counter.rb +125 -0
  130. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/default_loader.rb +14 -0
  131. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/dsl_definition.rb +201 -0
  132. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/early_time.rb +21 -0
  133. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ext/core.rb +25 -0
  134. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ext/module.rb +2 -0
  135. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ext/pathname.rb +25 -0
  136. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ext/string.rb +175 -0
  137. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ext/time.rb +18 -0
  138. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/file_creation_task.rb +24 -0
  139. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/file_list.rb +428 -0
  140. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/file_task.rb +46 -0
  141. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/file_utils.rb +128 -0
  142. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/file_utils_ext.rb +144 -0
  143. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/gempackagetask.rb +4 -0
  144. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/invocation_chain.rb +56 -0
  145. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb +16 -0
  146. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/late_time.rb +17 -0
  147. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/linked_list.rb +103 -0
  148. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/loaders/makefile.rb +53 -0
  149. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/multi_task.rb +13 -0
  150. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/name_space.rb +38 -0
  151. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/packagetask.rb +199 -0
  152. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/pathmap.rb +3 -0
  153. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/phony.rb +15 -0
  154. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/private_reader.rb +20 -0
  155. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/promise.rb +99 -0
  156. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/pseudo_status.rb +29 -0
  157. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/rake_module.rb +38 -0
  158. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb +22 -0
  159. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/rdoctask.rb +4 -0
  160. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb +29 -0
  161. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
  162. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/runtest.rb +27 -0
  163. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/scope.rb +42 -0
  164. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/task.rb +383 -0
  165. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/task_argument_error.rb +7 -0
  166. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/task_arguments.rb +98 -0
  167. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/task_manager.rb +307 -0
  168. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/tasklib.rb +24 -0
  169. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/testtask.rb +213 -0
  170. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/thread_history_display.rb +48 -0
  171. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/thread_pool.rb +164 -0
  172. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/trace_output.rb +22 -0
  173. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/version.rb +7 -0
  174. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/win32.rb +56 -0
  175. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/rakelib/publish.rake +20 -0
  176. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/rakelib/test_times.rake +25 -0
  177. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/file_creation.rb +34 -0
  178. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/helper.rb +129 -0
  179. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/support/rakefile_definitions.rb +478 -0
  180. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/support/ruby_runner.rb +34 -0
  181. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_private_reader.rb +42 -0
  182. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake.rb +40 -0
  183. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_application.rb +643 -0
  184. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_application_options.rb +468 -0
  185. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_backtrace.rb +119 -0
  186. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_clean.rb +61 -0
  187. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_cpu_counter.rb +68 -0
  188. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_definitions.rb +84 -0
  189. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_directory_task.rb +76 -0
  190. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_dsl.rb +40 -0
  191. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_early_time.rb +31 -0
  192. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_extension.rb +59 -0
  193. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_file_creation_task.rb +56 -0
  194. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_file_list.rb +670 -0
  195. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb +8 -0
  196. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_file_task.rb +197 -0
  197. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_file_utils.rb +314 -0
  198. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_ftp_file.rb +74 -0
  199. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_functional.rb +482 -0
  200. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_invocation_chain.rb +64 -0
  201. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_late_time.rb +18 -0
  202. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_linked_list.rb +84 -0
  203. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_makefile_loader.rb +46 -0
  204. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_multi_task.rb +64 -0
  205. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_name_space.rb +57 -0
  206. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_package_task.rb +79 -0
  207. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_path_map.rb +168 -0
  208. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_path_map_explode.rb +34 -0
  209. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_path_map_partial.rb +18 -0
  210. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb +15 -0
  211. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_pseudo_status.rb +21 -0
  212. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb +20 -0
  213. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_reduce_compat.rb +26 -0
  214. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_require.rb +40 -0
  215. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_rules.rb +388 -0
  216. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_scope.rb +44 -0
  217. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task.rb +393 -0
  218. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb +119 -0
  219. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_arguments.rb +127 -0
  220. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_lib.rb +9 -0
  221. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_manager.rb +178 -0
  222. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb +19 -0
  223. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb +172 -0
  224. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_test_task.rb +146 -0
  225. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_thread_pool.rb +145 -0
  226. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_top_level_functions.rb +71 -0
  227. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_win32.rb +72 -0
  228. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_thread_history_display.rb +101 -0
  229. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_trace_output.rb +52 -0
  230. data/vendor/bundle/ruby/2.6.0/gems/rspec-3.8.0/LICENSE.md +27 -0
  231. data/vendor/bundle/ruby/2.6.0/gems/rspec-3.8.0/README.md +43 -0
  232. data/vendor/bundle/ruby/2.6.0/gems/rspec-3.8.0/lib/rspec.rb +3 -0
  233. data/vendor/bundle/ruby/2.6.0/gems/rspec-3.8.0/lib/rspec/version.rb +5 -0
  234. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/.document +5 -0
  235. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/.yardopts +8 -0
  236. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/Changelog.md +2221 -0
  237. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/LICENSE.md +26 -0
  238. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/README.md +384 -0
  239. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/exe/rspec +4 -0
  240. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/autorun.rb +3 -0
  241. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core.rb +185 -0
  242. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/backtrace_formatter.rb +65 -0
  243. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/coordinator.rb +62 -0
  244. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/example_minimizer.rb +173 -0
  245. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/fork_runner.rb +134 -0
  246. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/server.rb +61 -0
  247. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/shell_command.rb +126 -0
  248. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/shell_runner.rb +73 -0
  249. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/bisect/utilities.rb +58 -0
  250. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb +2289 -0
  251. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration_options.rb +233 -0
  252. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/drb.rb +113 -0
  253. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/dsl.rb +98 -0
  254. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example.rb +653 -0
  255. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_group.rb +885 -0
  256. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/example_status_persister.rb +235 -0
  257. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/filter_manager.rb +231 -0
  258. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/flat_map.rb +20 -0
  259. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters.rb +269 -0
  260. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/base_bisect_formatter.rb +45 -0
  261. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/base_formatter.rb +70 -0
  262. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/base_text_formatter.rb +75 -0
  263. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/bisect_drb_formatter.rb +29 -0
  264. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/bisect_progress_formatter.rb +157 -0
  265. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/console_codes.rb +68 -0
  266. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  267. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/documentation_formatter.rb +70 -0
  268. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/exception_presenter.rb +497 -0
  269. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  270. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/helpers.rb +110 -0
  271. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/html_formatter.rb +153 -0
  272. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/html_printer.rb +414 -0
  273. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/html_snippet_extractor.rb +120 -0
  274. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/json_formatter.rb +102 -0
  275. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  276. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/progress_formatter.rb +29 -0
  277. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/protocol.rb +182 -0
  278. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/snippet_extractor.rb +134 -0
  279. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/formatters/syntax_highlighter.rb +91 -0
  280. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/hooks.rb +624 -0
  281. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/invocations.rb +87 -0
  282. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/memoized_helpers.rb +535 -0
  283. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/metadata.rb +499 -0
  284. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/metadata_filter.rb +255 -0
  285. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  286. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  287. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  288. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/null.rb +14 -0
  289. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  290. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  291. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/notifications.rb +521 -0
  292. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/option_parser.rb +309 -0
  293. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/ordering.rb +158 -0
  294. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/output_wrapper.rb +29 -0
  295. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/pending.rb +165 -0
  296. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/profiler.rb +34 -0
  297. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/project_initializer.rb +48 -0
  298. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/project_initializer/.rspec +1 -0
  299. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/project_initializer/spec/spec_helper.rb +100 -0
  300. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/rake_task.rb +168 -0
  301. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/reporter.rb +257 -0
  302. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/ruby_project.rb +53 -0
  303. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb +199 -0
  304. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/sandbox.rb +37 -0
  305. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/set.rb +54 -0
  306. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/shared_context.rb +55 -0
  307. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/shared_example_group.rb +269 -0
  308. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/shell_escape.rb +49 -0
  309. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  310. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/version.rb +9 -0
  311. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/warnings.rb +40 -0
  312. data/vendor/bundle/ruby/2.6.0/gems/rspec-core-3.8.0/lib/rspec/core/world.rb +275 -0
  313. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/.document +5 -0
  314. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/.yardopts +6 -0
  315. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/Changelog.md +1120 -0
  316. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/LICENSE.md +25 -0
  317. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/README.md +305 -0
  318. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/expectations.rb +82 -0
  319. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/expectations/block_snippet_extractor.rb +253 -0
  320. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/expectations/configuration.rb +215 -0
  321. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/expectations/expectation_target.rb +127 -0
  322. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/expectations/fail_with.rb +39 -0
  323. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/expectations/failure_aggregator.rb +194 -0
  324. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/expectations/handler.rb +170 -0
  325. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/expectations/minitest_integration.rb +58 -0
  326. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/expectations/syntax.rb +132 -0
  327. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/expectations/version.rb +8 -0
  328. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers.rb +1034 -0
  329. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/aliased_matcher.rb +116 -0
  330. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in.rb +52 -0
  331. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/all.rb +85 -0
  332. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/base_matcher.rb +193 -0
  333. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/be.rb +288 -0
  334. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/be_between.rb +77 -0
  335. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
  336. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
  337. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/be_within.rb +72 -0
  338. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/change.rb +426 -0
  339. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/compound.rb +271 -0
  340. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/contain_exactly.rb +302 -0
  341. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/cover.rb +24 -0
  342. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/eq.rb +40 -0
  343. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/eql.rb +34 -0
  344. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/equal.rb +81 -0
  345. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/exist.rb +90 -0
  346. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/has.rb +103 -0
  347. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  348. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/include.rb +149 -0
  349. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/match.rb +106 -0
  350. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/operators.rb +128 -0
  351. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/output.rb +200 -0
  352. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  353. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/respond_to.rb +165 -0
  354. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/satisfy.rb +60 -0
  355. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  356. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  357. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/built_in/yield.rb +432 -0
  358. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/composable.rb +171 -0
  359. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/dsl.rb +527 -0
  360. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/english_phrasing.rb +58 -0
  361. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +73 -0
  362. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/fail_matchers.rb +42 -0
  363. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/generated_descriptions.rb +41 -0
  364. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/matcher_delegator.rb +35 -0
  365. data/vendor/bundle/ruby/2.6.0/gems/rspec-expectations-3.8.2/lib/rspec/matchers/matcher_protocol.rb +99 -0
  366. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/.document +5 -0
  367. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/.yardopts +6 -0
  368. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/Changelog.md +1100 -0
  369. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/LICENSE.md +25 -0
  370. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/README.md +460 -0
  371. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks.rb +130 -0
  372. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance.rb +11 -0
  373. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/chain.rb +110 -0
  374. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  375. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/expect_chain_chain.rb +31 -0
  376. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/expectation_chain.rb +50 -0
  377. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  378. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  379. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/recorder.rb +289 -0
  380. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/stub_chain.rb +51 -0
  381. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +23 -0
  382. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  383. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/argument_matchers.rb +320 -0
  384. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/configuration.rb +212 -0
  385. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/error_generator.rb +369 -0
  386. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/example_methods.rb +434 -0
  387. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/instance_method_stasher.rb +146 -0
  388. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/marshal_extension.rb +41 -0
  389. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  390. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/have_received.rb +134 -0
  391. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/receive.rb +132 -0
  392. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  393. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  394. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/message_chain.rb +87 -0
  395. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/message_expectation.rb +741 -0
  396. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/method_double.rb +287 -0
  397. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/method_reference.rb +202 -0
  398. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/minitest_integration.rb +68 -0
  399. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/mutate_const.rb +339 -0
  400. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/object_reference.rb +149 -0
  401. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/order_group.rb +81 -0
  402. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/proxy.rb +485 -0
  403. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/space.rb +238 -0
  404. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/standalone.rb +3 -0
  405. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/syntax.rb +325 -0
  406. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/targets.rb +124 -0
  407. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/test_double.rb +171 -0
  408. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_double.rb +129 -0
  409. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  410. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/verifying_proxy.rb +220 -0
  411. data/vendor/bundle/ruby/2.6.0/gems/rspec-mocks-3.8.0/lib/rspec/mocks/version.rb +9 -0
  412. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/Changelog.md +242 -0
  413. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/LICENSE.md +23 -0
  414. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/README.md +40 -0
  415. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support.rb +149 -0
  416. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/caller_filter.rb +83 -0
  417. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/comparable_version.rb +46 -0
  418. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/differ.rb +215 -0
  419. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/directory_maker.rb +63 -0
  420. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/encoded_string.rb +165 -0
  421. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
  422. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/hunk_generator.rb +47 -0
  423. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/matcher_definition.rb +42 -0
  424. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/method_signature_verifier.rb +426 -0
  425. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/mutex.rb +73 -0
  426. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/object_formatter.rb +275 -0
  427. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/recursive_const_methods.rb +76 -0
  428. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/reentrant_mutex.rb +53 -0
  429. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/ruby_features.rb +176 -0
  430. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/source.rb +75 -0
  431. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/source/location.rb +21 -0
  432. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/source/node.rb +110 -0
  433. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/source/token.rb +87 -0
  434. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/spec.rb +81 -0
  435. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  436. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/formatting_support.rb +9 -0
  437. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/in_sub_process.rb +69 -0
  438. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  439. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/shell_out.rb +84 -0
  440. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
  441. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/string_matcher.rb +46 -0
  442. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  443. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  444. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/version.rb +7 -0
  445. data/vendor/bundle/ruby/2.6.0/gems/rspec-support-3.8.0/lib/rspec/support/warnings.rb +39 -0
  446. data/vendor/bundle/ruby/2.6.0/specifications/diff-lcs-1.3.gemspec +61 -0
  447. data/vendor/bundle/ruby/2.6.0/specifications/rake-10.5.0.gemspec +43 -0
  448. data/vendor/bundle/ruby/2.6.0/specifications/rspec-3.8.0.gemspec +42 -0
  449. data/vendor/bundle/ruby/2.6.0/specifications/rspec-core-3.8.0.gemspec +62 -0
  450. data/vendor/bundle/ruby/2.6.0/specifications/rspec-expectations-3.8.2.gemspec +50 -0
  451. data/vendor/bundle/ruby/2.6.0/specifications/rspec-mocks-3.8.0.gemspec +50 -0
  452. data/vendor/bundle/ruby/2.6.0/specifications/rspec-support-3.8.0.gemspec +41 -0
  453. metadata +536 -0
@@ -0,0 +1,149 @@
1
+ module RSpec
2
+ module Matchers
3
+ module BuiltIn
4
+ # @api private
5
+ # Provides the implementation for `include`.
6
+ # Not intended to be instantiated directly.
7
+ class Include < BaseMatcher
8
+ # @private
9
+ attr_reader :expecteds
10
+
11
+ def initialize(*expecteds)
12
+ @expecteds = expecteds
13
+ end
14
+
15
+ # @api private
16
+ # @return [Boolean]
17
+ def matches?(actual)
18
+ actual = actual.to_hash if convert_to_hash?(actual)
19
+ perform_match(actual) { |v| v }
20
+ end
21
+
22
+ # @api private
23
+ # @return [Boolean]
24
+ def does_not_match?(actual)
25
+ actual = actual.to_hash if convert_to_hash?(actual)
26
+ perform_match(actual) { |v| !v }
27
+ end
28
+
29
+ # @api private
30
+ # @return [String]
31
+ def description
32
+ improve_hash_formatting("include#{readable_list_of(expecteds)}")
33
+ end
34
+
35
+ # @api private
36
+ # @return [String]
37
+ def failure_message
38
+ format_failure_message("to") { super }
39
+ end
40
+
41
+ # @api private
42
+ # @return [String]
43
+ def failure_message_when_negated
44
+ format_failure_message("not to") { super }
45
+ end
46
+
47
+ # @api private
48
+ # @return [Boolean]
49
+ def diffable?
50
+ !diff_would_wrongly_highlight_matched_item?
51
+ end
52
+
53
+ # @api private
54
+ # @return [Array, Hash]
55
+ def expected
56
+ if expecteds.one? && Hash === expecteds.first
57
+ expecteds.first
58
+ else
59
+ expecteds
60
+ end
61
+ end
62
+
63
+ private
64
+
65
+ def format_failure_message(preposition)
66
+ if actual.respond_to?(:include?)
67
+ improve_hash_formatting("expected #{description_of @actual} #{preposition} include#{readable_list_of @divergent_items}")
68
+ else
69
+ improve_hash_formatting(yield) + ", but it does not respond to `include?`"
70
+ end
71
+ end
72
+
73
+ def readable_list_of(items)
74
+ described_items = surface_descriptions_in(items)
75
+ if described_items.all? { |item| item.is_a?(Hash) }
76
+ " #{described_items.inject(:merge).inspect}"
77
+ else
78
+ EnglishPhrasing.list(described_items)
79
+ end
80
+ end
81
+
82
+ def perform_match(actual, &block)
83
+ @actual = actual
84
+ @divergent_items = excluded_from_actual(&block)
85
+ actual.respond_to?(:include?) && @divergent_items.empty?
86
+ end
87
+
88
+ def excluded_from_actual
89
+ return [] unless @actual.respond_to?(:include?)
90
+
91
+ expecteds.inject([]) do |memo, expected_item|
92
+ if comparing_hash_to_a_subset?(expected_item)
93
+ expected_item.each do |(key, value)|
94
+ memo << { key => value } unless yield actual_hash_includes?(key, value)
95
+ end
96
+ elsif comparing_hash_keys?(expected_item)
97
+ memo << expected_item unless yield actual_hash_has_key?(expected_item)
98
+ else
99
+ memo << expected_item unless yield actual_collection_includes?(expected_item)
100
+ end
101
+ memo
102
+ end
103
+ end
104
+
105
+ def comparing_hash_to_a_subset?(expected_item)
106
+ actual.is_a?(Hash) && expected_item.is_a?(Hash)
107
+ end
108
+
109
+ def actual_hash_includes?(expected_key, expected_value)
110
+ actual_value = actual.fetch(expected_key) { return false }
111
+ values_match?(expected_value, actual_value)
112
+ end
113
+
114
+ def comparing_hash_keys?(expected_item)
115
+ actual.is_a?(Hash) && !expected_item.is_a?(Hash)
116
+ end
117
+
118
+ def actual_hash_has_key?(expected_key)
119
+ # We check `key?` first for perf:
120
+ # `key?` is O(1), but `any?` is O(N).
121
+ actual.key?(expected_key) ||
122
+ actual.keys.any? { |key| values_match?(expected_key, key) }
123
+ end
124
+
125
+ def actual_collection_includes?(expected_item)
126
+ return true if actual.include?(expected_item)
127
+
128
+ # String lacks an `any?` method...
129
+ return false unless actual.respond_to?(:any?)
130
+
131
+ actual.any? { |value| values_match?(expected_item, value) }
132
+ end
133
+
134
+ def diff_would_wrongly_highlight_matched_item?
135
+ return false unless actual.is_a?(String) && expected.is_a?(Array)
136
+
137
+ lines = actual.split("\n")
138
+ expected.any? do |str|
139
+ actual.include?(str) && lines.none? { |line| line == str }
140
+ end
141
+ end
142
+
143
+ def convert_to_hash?(obj)
144
+ !obj.respond_to?(:include?) && obj.respond_to?(:to_hash)
145
+ end
146
+ end
147
+ end
148
+ end
149
+ end
@@ -0,0 +1,106 @@
1
+ module RSpec
2
+ module Matchers
3
+ module BuiltIn
4
+ # @api private
5
+ # Provides the implementation for `match`.
6
+ # Not intended to be instantiated directly.
7
+ class Match < BaseMatcher
8
+ def initialize(expected)
9
+ super(expected)
10
+
11
+ @expected_captures = nil
12
+ end
13
+ # @api private
14
+ # @return [String]
15
+ def description
16
+ if @expected_captures && @expected.match(actual)
17
+ "match #{surface_descriptions_in(expected).inspect} with captures #{surface_descriptions_in(@expected_captures).inspect}"
18
+ else
19
+ "match #{surface_descriptions_in(expected).inspect}"
20
+ end
21
+ end
22
+
23
+ # @api private
24
+ # @return [Boolean]
25
+ def diffable?
26
+ true
27
+ end
28
+
29
+ # Used to specify the captures we match against
30
+ # @return [self]
31
+ def with_captures(*captures)
32
+ @expected_captures = captures
33
+ self
34
+ end
35
+
36
+ private
37
+
38
+ def match(expected, actual)
39
+ return match_captures(expected, actual) if @expected_captures
40
+ return true if values_match?(expected, actual)
41
+ return false unless can_safely_call_match?(expected, actual)
42
+ actual.match(expected)
43
+ end
44
+
45
+ def can_safely_call_match?(expected, actual)
46
+ return false unless actual.respond_to?(:match)
47
+
48
+ !(RSpec::Matchers.is_a_matcher?(expected) &&
49
+ (String === actual || Regexp === actual))
50
+ end
51
+
52
+ def match_captures(expected, actual)
53
+ match = actual.match(expected)
54
+ if match
55
+ match = ReliableMatchData.new(match)
56
+ if match.names.empty?
57
+ values_match?(@expected_captures, match.captures)
58
+ else
59
+ expected_matcher = @expected_captures.last
60
+ values_match?(expected_matcher, Hash[match.names.zip(match.captures)]) ||
61
+ values_match?(expected_matcher, Hash[match.names.map(&:to_sym).zip(match.captures)]) ||
62
+ values_match?(@expected_captures, match.captures)
63
+ end
64
+ else
65
+ false
66
+ end
67
+ end
68
+ end
69
+
70
+ # @api private
71
+ # Used to wrap match data and make it reliable for 1.8.7
72
+ class ReliableMatchData
73
+ def initialize(match_data)
74
+ @match_data = match_data
75
+ end
76
+
77
+ if RUBY_VERSION == "1.8.7"
78
+ # @api private
79
+ # Returns match data names for named captures
80
+ # @return Array
81
+ def names
82
+ []
83
+ end
84
+ else
85
+ # @api private
86
+ # Returns match data names for named captures
87
+ # @return Array
88
+ def names
89
+ match_data.names
90
+ end
91
+ end
92
+
93
+ # @api private
94
+ # returns an array of captures from the match data
95
+ # @return Array
96
+ def captures
97
+ match_data.captures
98
+ end
99
+
100
+ protected
101
+
102
+ attr_reader :match_data
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,128 @@
1
+ require 'rspec/support'
2
+
3
+ module RSpec
4
+ module Matchers
5
+ module BuiltIn
6
+ # @api private
7
+ # Provides the implementation for operator matchers.
8
+ # Not intended to be instantiated directly.
9
+ # Only available for use with `should`.
10
+ class OperatorMatcher
11
+ class << self
12
+ # @private
13
+ def registry
14
+ @registry ||= {}
15
+ end
16
+
17
+ # @private
18
+ def register(klass, operator, matcher)
19
+ registry[klass] ||= {}
20
+ registry[klass][operator] = matcher
21
+ end
22
+
23
+ # @private
24
+ def unregister(klass, operator)
25
+ registry[klass] && registry[klass].delete(operator)
26
+ end
27
+
28
+ # @private
29
+ def get(klass, operator)
30
+ klass.ancestors.each do |ancestor|
31
+ matcher = registry[ancestor] && registry[ancestor][operator]
32
+ return matcher if matcher
33
+ end
34
+
35
+ nil
36
+ end
37
+ end
38
+
39
+ register Enumerable, '=~', BuiltIn::ContainExactly
40
+
41
+ def initialize(actual)
42
+ @actual = actual
43
+ end
44
+
45
+ # @private
46
+ def self.use_custom_matcher_or_delegate(operator)
47
+ define_method(operator) do |expected|
48
+ if !has_non_generic_implementation_of?(operator) && (matcher = OperatorMatcher.get(@actual.class, operator))
49
+ @actual.__send__(::RSpec::Matchers.last_expectation_handler.should_method, matcher.new(expected))
50
+ else
51
+ eval_match(@actual, operator, expected)
52
+ end
53
+ end
54
+
55
+ negative_operator = operator.sub(/^=/, '!')
56
+ if negative_operator != operator && respond_to?(negative_operator)
57
+ define_method(negative_operator) do |_expected|
58
+ opposite_should = ::RSpec::Matchers.last_expectation_handler.opposite_should_method
59
+ raise "RSpec does not support `#{::RSpec::Matchers.last_expectation_handler.should_method} #{negative_operator} expected`. " \
60
+ "Use `#{opposite_should} #{operator} expected` instead."
61
+ end
62
+ end
63
+ end
64
+
65
+ ['==', '===', '=~', '>', '>=', '<', '<='].each do |operator|
66
+ use_custom_matcher_or_delegate operator
67
+ end
68
+
69
+ # @private
70
+ def fail_with_message(message)
71
+ RSpec::Expectations.fail_with(message, @expected, @actual)
72
+ end
73
+
74
+ # @api private
75
+ # @return [String]
76
+ def description
77
+ "#{@operator} #{RSpec::Support::ObjectFormatter.format(@expected)}"
78
+ end
79
+
80
+ private
81
+
82
+ def has_non_generic_implementation_of?(op)
83
+ Support.method_handle_for(@actual, op).owner != ::Kernel
84
+ rescue NameError
85
+ false
86
+ end
87
+
88
+ def eval_match(actual, operator, expected)
89
+ ::RSpec::Matchers.last_matcher = self
90
+ @operator, @expected = operator, expected
91
+ __delegate_operator(actual, operator, expected)
92
+ end
93
+ end
94
+
95
+ # @private
96
+ # Handles operator matcher for `should`.
97
+ class PositiveOperatorMatcher < OperatorMatcher
98
+ def __delegate_operator(actual, operator, expected)
99
+ if actual.__send__(operator, expected)
100
+ true
101
+ else
102
+ expected_formatted = RSpec::Support::ObjectFormatter.format(expected)
103
+ actual_formatted = RSpec::Support::ObjectFormatter.format(actual)
104
+
105
+ if ['==', '===', '=~'].include?(operator)
106
+ fail_with_message("expected: #{expected_formatted}\n got: #{actual_formatted} (using #{operator})")
107
+ else
108
+ fail_with_message("expected: #{operator} #{expected_formatted}\n got: #{operator.gsub(/./, ' ')} #{actual_formatted}")
109
+ end
110
+ end
111
+ end
112
+ end
113
+
114
+ # @private
115
+ # Handles operator matcher for `should_not`.
116
+ class NegativeOperatorMatcher < OperatorMatcher
117
+ def __delegate_operator(actual, operator, expected)
118
+ return false unless actual.__send__(operator, expected)
119
+
120
+ expected_formatted = RSpec::Support::ObjectFormatter.format(expected)
121
+ actual_formatted = RSpec::Support::ObjectFormatter.format(actual)
122
+
123
+ fail_with_message("expected not: #{operator} #{expected_formatted}\n got: #{operator.gsub(/./, ' ')} #{actual_formatted}")
124
+ end
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,200 @@
1
+ require 'stringio'
2
+
3
+ module RSpec
4
+ module Matchers
5
+ module BuiltIn
6
+ # @api private
7
+ # Provides the implementation for `output`.
8
+ # Not intended to be instantiated directly.
9
+ class Output < BaseMatcher
10
+ def initialize(expected)
11
+ @expected = expected
12
+ @actual = ""
13
+ @block = nil
14
+ @stream_capturer = NullCapture
15
+ end
16
+
17
+ def matches?(block)
18
+ @block = block
19
+ return false unless Proc === block
20
+ @actual = @stream_capturer.capture(block)
21
+ @expected ? values_match?(@expected, @actual) : captured?
22
+ end
23
+
24
+ def does_not_match?(block)
25
+ !matches?(block) && Proc === block
26
+ end
27
+
28
+ # @api public
29
+ # Tells the matcher to match against stdout.
30
+ # Works only when the main Ruby process prints to stdout
31
+ def to_stdout
32
+ @stream_capturer = CaptureStdout
33
+ self
34
+ end
35
+
36
+ # @api public
37
+ # Tells the matcher to match against stderr.
38
+ # Works only when the main Ruby process prints to stderr
39
+ def to_stderr
40
+ @stream_capturer = CaptureStderr
41
+ self
42
+ end
43
+
44
+ # @api public
45
+ # Tells the matcher to match against stdout.
46
+ # Works when subprocesses print to stdout as well.
47
+ # This is significantly (~30x) slower than `to_stdout`
48
+ def to_stdout_from_any_process
49
+ @stream_capturer = CaptureStreamToTempfile.new("stdout", $stdout)
50
+ self
51
+ end
52
+
53
+ # @api public
54
+ # Tells the matcher to match against stderr.
55
+ # Works when subprocesses print to stderr as well.
56
+ # This is significantly (~30x) slower than `to_stderr`
57
+ def to_stderr_from_any_process
58
+ @stream_capturer = CaptureStreamToTempfile.new("stderr", $stderr)
59
+ self
60
+ end
61
+
62
+ # @api private
63
+ # @return [String]
64
+ def failure_message
65
+ "expected block to #{description}, but #{positive_failure_reason}"
66
+ end
67
+
68
+ # @api private
69
+ # @return [String]
70
+ def failure_message_when_negated
71
+ "expected block to not #{description}, but #{negative_failure_reason}"
72
+ end
73
+
74
+ # @api private
75
+ # @return [String]
76
+ def description
77
+ if @expected
78
+ "output #{description_of @expected} to #{@stream_capturer.name}"
79
+ else
80
+ "output to #{@stream_capturer.name}"
81
+ end
82
+ end
83
+
84
+ # @api private
85
+ # @return [Boolean]
86
+ def diffable?
87
+ true
88
+ end
89
+
90
+ # @api private
91
+ # Indicates this matcher matches against a block.
92
+ # @return [True]
93
+ def supports_block_expectations?
94
+ true
95
+ end
96
+
97
+ private
98
+
99
+ def captured?
100
+ @actual.length > 0
101
+ end
102
+
103
+ def positive_failure_reason
104
+ return "was not a block" unless Proc === @block
105
+ return "output #{actual_output_description}" if @expected
106
+ "did not"
107
+ end
108
+
109
+ def negative_failure_reason
110
+ return "was not a block" unless Proc === @block
111
+ "output #{actual_output_description}"
112
+ end
113
+
114
+ def actual_output_description
115
+ return "nothing" unless captured?
116
+ actual_formatted
117
+ end
118
+ end
119
+
120
+ # @private
121
+ module NullCapture
122
+ def self.name
123
+ "some stream"
124
+ end
125
+
126
+ def self.capture(_block)
127
+ raise "You must chain `to_stdout` or `to_stderr` off of the `output(...)` matcher."
128
+ end
129
+ end
130
+
131
+ # @private
132
+ module CaptureStdout
133
+ def self.name
134
+ 'stdout'
135
+ end
136
+
137
+ def self.capture(block)
138
+ captured_stream = StringIO.new
139
+
140
+ original_stream = $stdout
141
+ $stdout = captured_stream
142
+
143
+ block.call
144
+
145
+ captured_stream.string
146
+ ensure
147
+ $stdout = original_stream
148
+ end
149
+ end
150
+
151
+ # @private
152
+ module CaptureStderr
153
+ def self.name
154
+ 'stderr'
155
+ end
156
+
157
+ def self.capture(block)
158
+ captured_stream = StringIO.new
159
+
160
+ original_stream = $stderr
161
+ $stderr = captured_stream
162
+
163
+ block.call
164
+
165
+ captured_stream.string
166
+ ensure
167
+ $stderr = original_stream
168
+ end
169
+ end
170
+
171
+ # @private
172
+ class CaptureStreamToTempfile < Struct.new(:name, :stream)
173
+ def capture(block)
174
+ # We delay loading tempfile until it is actually needed because
175
+ # we want to minimize stdlibs loaded so that users who use a
176
+ # portion of the stdlib can't have passing specs while forgetting
177
+ # to load it themselves. `CaptureStreamToTempfile` is rarely used
178
+ # and `tempfile` pulls in a bunch of things (delegate, tmpdir,
179
+ # thread, fileutils, etc), so it's worth delaying it until this point.
180
+ require 'tempfile'
181
+
182
+ original_stream = stream.clone
183
+ captured_stream = Tempfile.new(name)
184
+
185
+ begin
186
+ captured_stream.sync = true
187
+ stream.reopen(captured_stream)
188
+ block.call
189
+ captured_stream.rewind
190
+ captured_stream.read
191
+ ensure
192
+ stream.reopen(original_stream)
193
+ captured_stream.close
194
+ captured_stream.unlink
195
+ end
196
+ end
197
+ end
198
+ end
199
+ end
200
+ end