fucknumber 0.1.3

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 (451) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +5 -0
  5. data/Gemfile +4 -0
  6. data/README.md +36 -0
  7. data/Rakefile +6 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/fucknumber.gemspec +29 -0
  11. data/lib/fucknumber.rb +12 -0
  12. data/lib/fucknumber/version.rb +3 -0
  13. data/vendor/bundle/bin/htmldiff +24 -0
  14. data/vendor/bundle/bin/ldiff +24 -0
  15. data/vendor/bundle/bin/rake +22 -0
  16. data/vendor/bundle/bin/rspec +22 -0
  17. data/vendor/bundle/build_info/diff-lcs-1.3.info +1 -0
  18. data/vendor/bundle/build_info/rake-10.5.0.info +1 -0
  19. data/vendor/bundle/build_info/rspec-3.5.0.info +1 -0
  20. data/vendor/bundle/build_info/rspec-core-3.5.4.info +1 -0
  21. data/vendor/bundle/build_info/rspec-expectations-3.5.0.info +1 -0
  22. data/vendor/bundle/build_info/rspec-mocks-3.5.0.info +1 -0
  23. data/vendor/bundle/build_info/rspec-support-3.5.0.info +1 -0
  24. data/vendor/bundle/cache/diff-lcs-1.3.gem +0 -0
  25. data/vendor/bundle/cache/rake-10.5.0.gem +0 -0
  26. data/vendor/bundle/cache/rspec-3.5.0.gem +0 -0
  27. data/vendor/bundle/cache/rspec-core-3.5.4.gem +0 -0
  28. data/vendor/bundle/cache/rspec-expectations-3.5.0.gem +0 -0
  29. data/vendor/bundle/cache/rspec-mocks-3.5.0.gem +0 -0
  30. data/vendor/bundle/cache/rspec-support-3.5.0.gem +0 -0
  31. data/vendor/bundle/gems/diff-lcs-1.3/.rspec +1 -0
  32. data/vendor/bundle/gems/diff-lcs-1.3/Code-of-Conduct.md +74 -0
  33. data/vendor/bundle/gems/diff-lcs-1.3/Contributing.md +83 -0
  34. data/vendor/bundle/gems/diff-lcs-1.3/History.md +220 -0
  35. data/vendor/bundle/gems/diff-lcs-1.3/License.md +39 -0
  36. data/vendor/bundle/gems/diff-lcs-1.3/Manifest.txt +37 -0
  37. data/vendor/bundle/gems/diff-lcs-1.3/README.rdoc +84 -0
  38. data/vendor/bundle/gems/diff-lcs-1.3/Rakefile +57 -0
  39. data/vendor/bundle/gems/diff-lcs-1.3/autotest/discover.rb +1 -0
  40. data/vendor/bundle/gems/diff-lcs-1.3/bin/htmldiff +32 -0
  41. data/vendor/bundle/gems/diff-lcs-1.3/bin/ldiff +6 -0
  42. data/vendor/bundle/gems/diff-lcs-1.3/docs/COPYING.txt +339 -0
  43. data/vendor/bundle/gems/diff-lcs-1.3/docs/artistic.txt +127 -0
  44. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff-lcs.rb +3 -0
  45. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs.rb +725 -0
  46. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/array.rb +7 -0
  47. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/block.rb +37 -0
  48. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/callbacks.rb +322 -0
  49. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/change.rb +181 -0
  50. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/htmldiff.rb +149 -0
  51. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb +276 -0
  52. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/internals.rb +307 -0
  53. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/ldiff.rb +167 -0
  54. data/vendor/bundle/gems/diff-lcs-1.3/lib/diff/lcs/string.rb +5 -0
  55. data/vendor/bundle/gems/diff-lcs-1.3/spec/change_spec.rb +65 -0
  56. data/vendor/bundle/gems/diff-lcs-1.3/spec/diff_spec.rb +47 -0
  57. data/vendor/bundle/gems/diff-lcs-1.3/spec/fixtures/ds1.csv +50 -0
  58. data/vendor/bundle/gems/diff-lcs-1.3/spec/fixtures/ds2.csv +51 -0
  59. data/vendor/bundle/gems/diff-lcs-1.3/spec/hunk_spec.rb +72 -0
  60. data/vendor/bundle/gems/diff-lcs-1.3/spec/issues_spec.rb +49 -0
  61. data/vendor/bundle/gems/diff-lcs-1.3/spec/lcs_spec.rb +56 -0
  62. data/vendor/bundle/gems/diff-lcs-1.3/spec/ldiff_spec.rb +47 -0
  63. data/vendor/bundle/gems/diff-lcs-1.3/spec/patch_spec.rb +422 -0
  64. data/vendor/bundle/gems/diff-lcs-1.3/spec/sdiff_spec.rb +214 -0
  65. data/vendor/bundle/gems/diff-lcs-1.3/spec/spec_helper.rb +321 -0
  66. data/vendor/bundle/gems/diff-lcs-1.3/spec/traverse_balanced_spec.rb +310 -0
  67. data/vendor/bundle/gems/diff-lcs-1.3/spec/traverse_sequences_spec.rb +139 -0
  68. data/vendor/bundle/gems/rake-10.5.0/.autotest +7 -0
  69. data/vendor/bundle/gems/rake-10.5.0/.rubocop.yml +27 -0
  70. data/vendor/bundle/gems/rake-10.5.0/.togglerc +7 -0
  71. data/vendor/bundle/gems/rake-10.5.0/CONTRIBUTING.rdoc +38 -0
  72. data/vendor/bundle/gems/rake-10.5.0/History.rdoc +659 -0
  73. data/vendor/bundle/gems/rake-10.5.0/MIT-LICENSE +21 -0
  74. data/vendor/bundle/gems/rake-10.5.0/Manifest.txt +166 -0
  75. data/vendor/bundle/gems/rake-10.5.0/README.rdoc +139 -0
  76. data/vendor/bundle/gems/rake-10.5.0/Rakefile +81 -0
  77. data/vendor/bundle/gems/rake-10.5.0/bin/rake +33 -0
  78. data/vendor/bundle/gems/rake-10.5.0/doc/command_line_usage.rdoc +158 -0
  79. data/vendor/bundle/gems/rake-10.5.0/doc/example/Rakefile1 +38 -0
  80. data/vendor/bundle/gems/rake-10.5.0/doc/example/Rakefile2 +35 -0
  81. data/vendor/bundle/gems/rake-10.5.0/doc/example/a.c +6 -0
  82. data/vendor/bundle/gems/rake-10.5.0/doc/example/b.c +6 -0
  83. data/vendor/bundle/gems/rake-10.5.0/doc/example/main.c +11 -0
  84. data/vendor/bundle/gems/rake-10.5.0/doc/glossary.rdoc +42 -0
  85. data/vendor/bundle/gems/rake-10.5.0/doc/jamis.rb +591 -0
  86. data/vendor/bundle/gems/rake-10.5.0/doc/proto_rake.rdoc +127 -0
  87. data/vendor/bundle/gems/rake-10.5.0/doc/rake.1 +141 -0
  88. data/vendor/bundle/gems/rake-10.5.0/doc/rakefile.rdoc +624 -0
  89. data/vendor/bundle/gems/rake-10.5.0/doc/rational.rdoc +151 -0
  90. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.4.14.rdoc +23 -0
  91. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.4.15.rdoc +35 -0
  92. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.5.0.rdoc +53 -0
  93. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.5.3.rdoc +78 -0
  94. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.5.4.rdoc +46 -0
  95. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.6.0.rdoc +141 -0
  96. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.7.0.rdoc +119 -0
  97. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.7.1.rdoc +59 -0
  98. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.7.2.rdoc +121 -0
  99. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.7.3.rdoc +47 -0
  100. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.0.rdoc +114 -0
  101. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.2.rdoc +165 -0
  102. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.3.rdoc +112 -0
  103. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.4.rdoc +147 -0
  104. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.5.rdoc +53 -0
  105. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.6.rdoc +37 -0
  106. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.8.7.rdoc +55 -0
  107. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.0.rdoc +112 -0
  108. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.1.rdoc +52 -0
  109. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  110. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.rdoc +49 -0
  111. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.3.rdoc +102 -0
  112. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.4.rdoc +60 -0
  113. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.5.rdoc +55 -0
  114. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-0.9.6.rdoc +64 -0
  115. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-10.0.0.rdoc +178 -0
  116. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-10.0.1.rdoc +58 -0
  117. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-10.0.2.rdoc +53 -0
  118. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-10.0.3.rdoc +191 -0
  119. data/vendor/bundle/gems/rake-10.5.0/doc/release_notes/rake-10.1.0.rdoc +61 -0
  120. data/vendor/bundle/gems/rake-10.5.0/lib/rake.rb +79 -0
  121. data/vendor/bundle/gems/rake-10.5.0/lib/rake/alt_system.rb +110 -0
  122. data/vendor/bundle/gems/rake-10.5.0/lib/rake/application.rb +790 -0
  123. data/vendor/bundle/gems/rake-10.5.0/lib/rake/backtrace.rb +23 -0
  124. data/vendor/bundle/gems/rake-10.5.0/lib/rake/clean.rb +76 -0
  125. data/vendor/bundle/gems/rake-10.5.0/lib/rake/cloneable.rb +16 -0
  126. data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/.document +1 -0
  127. data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb +21 -0
  128. data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb +137 -0
  129. data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/publisher.rb +81 -0
  130. data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  131. data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb +61 -0
  132. data/vendor/bundle/gems/rake-10.5.0/lib/rake/contrib/sys.rb +4 -0
  133. data/vendor/bundle/gems/rake-10.5.0/lib/rake/cpu_counter.rb +125 -0
  134. data/vendor/bundle/gems/rake-10.5.0/lib/rake/default_loader.rb +14 -0
  135. data/vendor/bundle/gems/rake-10.5.0/lib/rake/dsl_definition.rb +201 -0
  136. data/vendor/bundle/gems/rake-10.5.0/lib/rake/early_time.rb +21 -0
  137. data/vendor/bundle/gems/rake-10.5.0/lib/rake/ext/core.rb +25 -0
  138. data/vendor/bundle/gems/rake-10.5.0/lib/rake/ext/module.rb +2 -0
  139. data/vendor/bundle/gems/rake-10.5.0/lib/rake/ext/pathname.rb +25 -0
  140. data/vendor/bundle/gems/rake-10.5.0/lib/rake/ext/string.rb +175 -0
  141. data/vendor/bundle/gems/rake-10.5.0/lib/rake/ext/time.rb +18 -0
  142. data/vendor/bundle/gems/rake-10.5.0/lib/rake/file_creation_task.rb +24 -0
  143. data/vendor/bundle/gems/rake-10.5.0/lib/rake/file_list.rb +428 -0
  144. data/vendor/bundle/gems/rake-10.5.0/lib/rake/file_task.rb +46 -0
  145. data/vendor/bundle/gems/rake-10.5.0/lib/rake/file_utils.rb +128 -0
  146. data/vendor/bundle/gems/rake-10.5.0/lib/rake/file_utils_ext.rb +144 -0
  147. data/vendor/bundle/gems/rake-10.5.0/lib/rake/gempackagetask.rb +4 -0
  148. data/vendor/bundle/gems/rake-10.5.0/lib/rake/invocation_chain.rb +56 -0
  149. data/vendor/bundle/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb +16 -0
  150. data/vendor/bundle/gems/rake-10.5.0/lib/rake/late_time.rb +17 -0
  151. data/vendor/bundle/gems/rake-10.5.0/lib/rake/linked_list.rb +103 -0
  152. data/vendor/bundle/gems/rake-10.5.0/lib/rake/loaders/makefile.rb +53 -0
  153. data/vendor/bundle/gems/rake-10.5.0/lib/rake/multi_task.rb +13 -0
  154. data/vendor/bundle/gems/rake-10.5.0/lib/rake/name_space.rb +38 -0
  155. data/vendor/bundle/gems/rake-10.5.0/lib/rake/packagetask.rb +199 -0
  156. data/vendor/bundle/gems/rake-10.5.0/lib/rake/pathmap.rb +3 -0
  157. data/vendor/bundle/gems/rake-10.5.0/lib/rake/phony.rb +15 -0
  158. data/vendor/bundle/gems/rake-10.5.0/lib/rake/private_reader.rb +20 -0
  159. data/vendor/bundle/gems/rake-10.5.0/lib/rake/promise.rb +99 -0
  160. data/vendor/bundle/gems/rake-10.5.0/lib/rake/pseudo_status.rb +29 -0
  161. data/vendor/bundle/gems/rake-10.5.0/lib/rake/rake_module.rb +38 -0
  162. data/vendor/bundle/gems/rake-10.5.0/lib/rake/rake_test_loader.rb +22 -0
  163. data/vendor/bundle/gems/rake-10.5.0/lib/rake/rdoctask.rb +4 -0
  164. data/vendor/bundle/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb +29 -0
  165. data/vendor/bundle/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
  166. data/vendor/bundle/gems/rake-10.5.0/lib/rake/runtest.rb +27 -0
  167. data/vendor/bundle/gems/rake-10.5.0/lib/rake/scope.rb +42 -0
  168. data/vendor/bundle/gems/rake-10.5.0/lib/rake/task.rb +383 -0
  169. data/vendor/bundle/gems/rake-10.5.0/lib/rake/task_argument_error.rb +7 -0
  170. data/vendor/bundle/gems/rake-10.5.0/lib/rake/task_arguments.rb +98 -0
  171. data/vendor/bundle/gems/rake-10.5.0/lib/rake/task_manager.rb +307 -0
  172. data/vendor/bundle/gems/rake-10.5.0/lib/rake/tasklib.rb +24 -0
  173. data/vendor/bundle/gems/rake-10.5.0/lib/rake/testtask.rb +213 -0
  174. data/vendor/bundle/gems/rake-10.5.0/lib/rake/thread_history_display.rb +48 -0
  175. data/vendor/bundle/gems/rake-10.5.0/lib/rake/thread_pool.rb +164 -0
  176. data/vendor/bundle/gems/rake-10.5.0/lib/rake/trace_output.rb +22 -0
  177. data/vendor/bundle/gems/rake-10.5.0/lib/rake/version.rb +7 -0
  178. data/vendor/bundle/gems/rake-10.5.0/lib/rake/win32.rb +56 -0
  179. data/vendor/bundle/gems/rake-10.5.0/rakelib/publish.rake +20 -0
  180. data/vendor/bundle/gems/rake-10.5.0/rakelib/test_times.rake +25 -0
  181. data/vendor/bundle/gems/rake-10.5.0/test/file_creation.rb +34 -0
  182. data/vendor/bundle/gems/rake-10.5.0/test/helper.rb +129 -0
  183. data/vendor/bundle/gems/rake-10.5.0/test/support/rakefile_definitions.rb +478 -0
  184. data/vendor/bundle/gems/rake-10.5.0/test/support/ruby_runner.rb +34 -0
  185. data/vendor/bundle/gems/rake-10.5.0/test/test_private_reader.rb +42 -0
  186. data/vendor/bundle/gems/rake-10.5.0/test/test_rake.rb +40 -0
  187. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_application.rb +643 -0
  188. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_application_options.rb +468 -0
  189. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_backtrace.rb +119 -0
  190. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_clean.rb +61 -0
  191. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_cpu_counter.rb +68 -0
  192. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_definitions.rb +84 -0
  193. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_directory_task.rb +76 -0
  194. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_dsl.rb +40 -0
  195. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_early_time.rb +31 -0
  196. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_extension.rb +59 -0
  197. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_file_creation_task.rb +56 -0
  198. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_file_list.rb +670 -0
  199. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb +8 -0
  200. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_file_task.rb +197 -0
  201. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_file_utils.rb +314 -0
  202. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_ftp_file.rb +74 -0
  203. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_functional.rb +482 -0
  204. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_invocation_chain.rb +64 -0
  205. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_late_time.rb +18 -0
  206. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_linked_list.rb +84 -0
  207. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_makefile_loader.rb +46 -0
  208. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_multi_task.rb +64 -0
  209. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_name_space.rb +57 -0
  210. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_package_task.rb +79 -0
  211. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_path_map.rb +168 -0
  212. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_path_map_explode.rb +34 -0
  213. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_path_map_partial.rb +18 -0
  214. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb +15 -0
  215. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_pseudo_status.rb +21 -0
  216. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb +20 -0
  217. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_reduce_compat.rb +26 -0
  218. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_require.rb +40 -0
  219. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_rules.rb +388 -0
  220. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_scope.rb +44 -0
  221. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task.rb +393 -0
  222. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb +119 -0
  223. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_arguments.rb +127 -0
  224. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_lib.rb +9 -0
  225. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_manager.rb +178 -0
  226. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb +19 -0
  227. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb +172 -0
  228. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_test_task.rb +146 -0
  229. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_thread_pool.rb +145 -0
  230. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_top_level_functions.rb +71 -0
  231. data/vendor/bundle/gems/rake-10.5.0/test/test_rake_win32.rb +72 -0
  232. data/vendor/bundle/gems/rake-10.5.0/test/test_thread_history_display.rb +101 -0
  233. data/vendor/bundle/gems/rake-10.5.0/test/test_trace_output.rb +52 -0
  234. data/vendor/bundle/gems/rspec-3.5.0/LICENSE.md +27 -0
  235. data/vendor/bundle/gems/rspec-3.5.0/README.md +39 -0
  236. data/vendor/bundle/gems/rspec-3.5.0/lib/rspec.rb +3 -0
  237. data/vendor/bundle/gems/rspec-3.5.0/lib/rspec/version.rb +5 -0
  238. data/vendor/bundle/gems/rspec-core-3.5.4/.document +5 -0
  239. data/vendor/bundle/gems/rspec-core-3.5.4/.yardopts +8 -0
  240. data/vendor/bundle/gems/rspec-core-3.5.4/Changelog.md +2102 -0
  241. data/vendor/bundle/gems/rspec-core-3.5.4/LICENSE.md +26 -0
  242. data/vendor/bundle/gems/rspec-core-3.5.4/README.md +384 -0
  243. data/vendor/bundle/gems/rspec-core-3.5.4/exe/rspec +4 -0
  244. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/autorun.rb +3 -0
  245. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core.rb +185 -0
  246. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/backtrace_formatter.rb +65 -0
  247. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/bisect/coordinator.rb +66 -0
  248. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/bisect/example_minimizer.rb +169 -0
  249. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/bisect/runner.rb +169 -0
  250. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/bisect/server.rb +65 -0
  251. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb +2100 -0
  252. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/configuration_options.rb +194 -0
  253. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/drb.rb +111 -0
  254. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/dsl.rb +98 -0
  255. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/example.rb +649 -0
  256. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb +879 -0
  257. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/example_status_persister.rb +235 -0
  258. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/filter_manager.rb +231 -0
  259. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/flat_map.rb +20 -0
  260. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters.rb +255 -0
  261. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/base_formatter.rb +70 -0
  262. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/base_text_formatter.rb +77 -0
  263. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/bisect_formatter.rb +69 -0
  264. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/bisect_progress_formatter.rb +144 -0
  265. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/console_codes.rb +65 -0
  266. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/deprecation_formatter.rb +223 -0
  267. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/documentation_formatter.rb +69 -0
  268. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/exception_presenter.rb +491 -0
  269. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/fallback_message_formatter.rb +28 -0
  270. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/helpers.rb +110 -0
  271. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/html_formatter.rb +151 -0
  272. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/html_printer.rb +414 -0
  273. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/html_snippet_extractor.rb +116 -0
  274. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/json_formatter.rb +96 -0
  275. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/profile_formatter.rb +68 -0
  276. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/progress_formatter.rb +28 -0
  277. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/protocol.rb +181 -0
  278. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/formatters/snippet_extractor.rb +136 -0
  279. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/hooks.rb +624 -0
  280. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/invocations.rb +67 -0
  281. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/memoized_helpers.rb +532 -0
  282. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/metadata.rb +499 -0
  283. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/metadata_filter.rb +243 -0
  284. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/minitest_assertions_adapter.rb +31 -0
  285. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/mocking_adapters/flexmock.rb +31 -0
  286. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/mocking_adapters/mocha.rb +57 -0
  287. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/mocking_adapters/null.rb +14 -0
  288. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/mocking_adapters/rr.rb +31 -0
  289. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/mocking_adapters/rspec.rb +32 -0
  290. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/notifications.rb +498 -0
  291. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/option_parser.rb +289 -0
  292. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/ordering.rb +158 -0
  293. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/pending.rb +165 -0
  294. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/profiler.rb +32 -0
  295. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/project_initializer.rb +48 -0
  296. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/project_initializer/.rspec +2 -0
  297. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/project_initializer/spec/spec_helper.rb +103 -0
  298. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/rake_task.rb +168 -0
  299. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/reporter.rb +248 -0
  300. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/ruby_project.rb +53 -0
  301. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb +188 -0
  302. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/sandbox.rb +37 -0
  303. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/set.rb +49 -0
  304. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/shared_context.rb +55 -0
  305. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/shared_example_group.rb +247 -0
  306. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/shell_escape.rb +49 -0
  307. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/source.rb +86 -0
  308. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/source/location.rb +13 -0
  309. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/source/node.rb +93 -0
  310. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/source/syntax_highlighter.rb +71 -0
  311. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/source/token.rb +87 -0
  312. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/test_unit_assertions_adapter.rb +30 -0
  313. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/version.rb +9 -0
  314. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/warnings.rb +40 -0
  315. data/vendor/bundle/gems/rspec-core-3.5.4/lib/rspec/core/world.rb +256 -0
  316. data/vendor/bundle/gems/rspec-expectations-3.5.0/.document +5 -0
  317. data/vendor/bundle/gems/rspec-expectations-3.5.0/.yardopts +6 -0
  318. data/vendor/bundle/gems/rspec-expectations-3.5.0/Changelog.md +1034 -0
  319. data/vendor/bundle/gems/rspec-expectations-3.5.0/LICENSE.md +25 -0
  320. data/vendor/bundle/gems/rspec-expectations-3.5.0/README.md +303 -0
  321. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations.rb +81 -0
  322. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/configuration.rb +201 -0
  323. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/expectation_target.rb +127 -0
  324. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/fail_with.rb +31 -0
  325. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/failure_aggregator.rb +194 -0
  326. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/handler.rb +170 -0
  327. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/minitest_integration.rb +58 -0
  328. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/syntax.rb +132 -0
  329. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/expectations/version.rb +8 -0
  330. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers.rb +1038 -0
  331. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/aliased_matcher.rb +116 -0
  332. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in.rb +52 -0
  333. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/all.rb +85 -0
  334. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/base_matcher.rb +181 -0
  335. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be.rb +288 -0
  336. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be_between.rb +77 -0
  337. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be_instance_of.rb +22 -0
  338. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be_kind_of.rb +16 -0
  339. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/be_within.rb +72 -0
  340. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/change.rb +354 -0
  341. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/compound.rb +272 -0
  342. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/contain_exactly.rb +286 -0
  343. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/cover.rb +24 -0
  344. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/eq.rb +40 -0
  345. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/eql.rb +34 -0
  346. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/equal.rb +81 -0
  347. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/exist.rb +86 -0
  348. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/has.rb +103 -0
  349. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/have_attributes.rb +114 -0
  350. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/include.rb +143 -0
  351. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/match.rb +106 -0
  352. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/operators.rb +128 -0
  353. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/output.rb +200 -0
  354. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/raise_error.rb +230 -0
  355. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/respond_to.rb +165 -0
  356. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/satisfy.rb +37 -0
  357. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/start_or_end_with.rb +94 -0
  358. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/throw_symbol.rb +132 -0
  359. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/built_in/yield.rb +419 -0
  360. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/composable.rb +185 -0
  361. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/dsl.rb +466 -0
  362. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/english_phrasing.rb +58 -0
  363. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/expecteds_for_multiple_diffs.rb +73 -0
  364. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/fail_matchers.rb +42 -0
  365. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/generated_descriptions.rb +42 -0
  366. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/matcher_delegator.rb +35 -0
  367. data/vendor/bundle/gems/rspec-expectations-3.5.0/lib/rspec/matchers/matcher_protocol.rb +99 -0
  368. data/vendor/bundle/gems/rspec-mocks-3.5.0/.document +5 -0
  369. data/vendor/bundle/gems/rspec-mocks-3.5.0/.yardopts +6 -0
  370. data/vendor/bundle/gems/rspec-mocks-3.5.0/Changelog.md +1043 -0
  371. data/vendor/bundle/gems/rspec-mocks-3.5.0/LICENSE.md +25 -0
  372. data/vendor/bundle/gems/rspec-mocks-3.5.0/README.md +445 -0
  373. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks.rb +130 -0
  374. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance.rb +11 -0
  375. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/chain.rb +110 -0
  376. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/error_generator.rb +31 -0
  377. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/expect_chain_chain.rb +35 -0
  378. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/expectation_chain.rb +48 -0
  379. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/message_chains.rb +83 -0
  380. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/proxy.rb +116 -0
  381. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/recorder.rb +289 -0
  382. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/stub_chain.rb +47 -0
  383. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/stub_chain_chain.rb +28 -0
  384. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/argument_list_matcher.rb +100 -0
  385. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/argument_matchers.rb +320 -0
  386. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/configuration.rb +205 -0
  387. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/error_generator.rb +369 -0
  388. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/example_methods.rb +422 -0
  389. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/instance_method_stasher.rb +135 -0
  390. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/marshal_extension.rb +41 -0
  391. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/expectation_customization.rb +20 -0
  392. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/have_received.rb +130 -0
  393. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive.rb +132 -0
  394. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive_message_chain.rb +82 -0
  395. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive_messages.rb +77 -0
  396. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/message_chain.rb +87 -0
  397. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/message_expectation.rb +740 -0
  398. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/method_double.rb +287 -0
  399. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/method_reference.rb +202 -0
  400. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/minitest_integration.rb +68 -0
  401. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/mutate_const.rb +335 -0
  402. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/object_reference.rb +149 -0
  403. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/order_group.rb +81 -0
  404. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/proxy.rb +489 -0
  405. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/space.rb +238 -0
  406. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/standalone.rb +3 -0
  407. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/syntax.rb +325 -0
  408. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/targets.rb +124 -0
  409. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/test_double.rb +170 -0
  410. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/verifying_double.rb +129 -0
  411. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/verifying_message_expectation.rb +54 -0
  412. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/verifying_proxy.rb +213 -0
  413. data/vendor/bundle/gems/rspec-mocks-3.5.0/lib/rspec/mocks/version.rb +9 -0
  414. data/vendor/bundle/gems/rspec-support-3.5.0/Changelog.md +192 -0
  415. data/vendor/bundle/gems/rspec-support-3.5.0/LICENSE.md +23 -0
  416. data/vendor/bundle/gems/rspec-support-3.5.0/README.md +40 -0
  417. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support.rb +139 -0
  418. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/caller_filter.rb +83 -0
  419. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/comparable_version.rb +46 -0
  420. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/differ.rb +215 -0
  421. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/directory_maker.rb +63 -0
  422. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/encoded_string.rb +165 -0
  423. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/fuzzy_matcher.rb +48 -0
  424. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/hunk_generator.rb +47 -0
  425. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/matcher_definition.rb +42 -0
  426. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/method_signature_verifier.rb +392 -0
  427. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/mutex.rb +73 -0
  428. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/object_formatter.rb +249 -0
  429. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/recursive_const_methods.rb +76 -0
  430. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/reentrant_mutex.rb +53 -0
  431. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/ruby_features.rb +149 -0
  432. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec.rb +81 -0
  433. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/deprecation_helpers.rb +64 -0
  434. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/formatting_support.rb +9 -0
  435. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/in_sub_process.rb +52 -0
  436. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/library_wide_checks.rb +150 -0
  437. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/shell_out.rb +82 -0
  438. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/stderr_splitter.rb +63 -0
  439. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/string_matcher.rb +46 -0
  440. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/with_isolated_directory.rb +13 -0
  441. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/spec/with_isolated_stderr.rb +13 -0
  442. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/version.rb +7 -0
  443. data/vendor/bundle/gems/rspec-support-3.5.0/lib/rspec/support/warnings.rb +39 -0
  444. data/vendor/bundle/specifications/diff-lcs-1.3.gemspec +61 -0
  445. data/vendor/bundle/specifications/rake-10.5.0.gemspec +43 -0
  446. data/vendor/bundle/specifications/rspec-3.5.0.gemspec +42 -0
  447. data/vendor/bundle/specifications/rspec-core-3.5.4.gemspec +62 -0
  448. data/vendor/bundle/specifications/rspec-expectations-3.5.0.gemspec +50 -0
  449. data/vendor/bundle/specifications/rspec-mocks-3.5.0.gemspec +50 -0
  450. data/vendor/bundle/specifications/rspec-support-3.5.0.gemspec +41 -0
  451. metadata +534 -0
@@ -0,0 +1,185 @@
1
+ RSpec::Support.require_rspec_support "fuzzy_matcher"
2
+
3
+ module RSpec
4
+ module Matchers
5
+ # Mixin designed to support the composable matcher features
6
+ # of RSpec 3+. Mix it into your custom matcher classes to
7
+ # allow them to be used in a composable fashion.
8
+ #
9
+ # @api public
10
+ module Composable
11
+ # Creates a compound `and` expectation. The matcher will
12
+ # only pass if both sub-matchers pass.
13
+ # This can be chained together to form an arbitrarily long
14
+ # chain of matchers.
15
+ #
16
+ # @example
17
+ # expect(alphabet).to start_with("a").and end_with("z")
18
+ # expect(alphabet).to start_with("a") & end_with("z")
19
+ #
20
+ # @note The negative form (`expect(...).not_to matcher.and other`)
21
+ # is not supported at this time.
22
+ def and(matcher)
23
+ BuiltIn::Compound::And.new self, matcher
24
+ end
25
+ alias & and
26
+
27
+ # Creates a compound `or` expectation. The matcher will
28
+ # pass if either sub-matcher passes.
29
+ # This can be chained together to form an arbitrarily long
30
+ # chain of matchers.
31
+ #
32
+ # @example
33
+ # expect(stoplight.color).to eq("red").or eq("green").or eq("yellow")
34
+ # expect(stoplight.color).to eq("red") | eq("green") | eq("yellow")
35
+ #
36
+ # @note The negative form (`expect(...).not_to matcher.or other`)
37
+ # is not supported at this time.
38
+ def or(matcher)
39
+ BuiltIn::Compound::Or.new self, matcher
40
+ end
41
+ alias | or
42
+
43
+ # Delegates to `#matches?`. Allows matchers to be used in composable
44
+ # fashion and also supports using matchers in case statements.
45
+ def ===(value)
46
+ matches?(value)
47
+ end
48
+
49
+ private
50
+
51
+ # This provides a generic way to fuzzy-match an expected value against
52
+ # an actual value. It understands nested data structures (e.g. hashes
53
+ # and arrays) and is able to match against a matcher being used as
54
+ # the expected value or within the expected value at any level of
55
+ # nesting.
56
+ #
57
+ # Within a custom matcher you are encouraged to use this whenever your
58
+ # matcher needs to match two values, unless it needs more precise semantics.
59
+ # For example, the `eq` matcher _does not_ use this as it is meant to
60
+ # use `==` (and only `==`) for matching.
61
+ #
62
+ # @param expected [Object] what is expected
63
+ # @param actual [Object] the actual value
64
+ #
65
+ # @!visibility public
66
+ def values_match?(expected, actual)
67
+ expected = with_matchers_cloned(expected)
68
+ Support::FuzzyMatcher.values_match?(expected, actual)
69
+ end
70
+
71
+ # Returns the description of the given object in a way that is
72
+ # aware of composed matchers. If the object is a matcher with
73
+ # a `description` method, returns the description; otherwise
74
+ # returns `object.inspect`.
75
+ #
76
+ # You are encouraged to use this in your custom matcher's
77
+ # `description`, `failure_message` or
78
+ # `failure_message_when_negated` implementation if you are
79
+ # supporting matcher arguments.
80
+ #
81
+ # @!visibility public
82
+ def description_of(object)
83
+ RSpec::Support::ObjectFormatter.format(object)
84
+ end
85
+
86
+ # Transforms the given data structue (typically a hash or array)
87
+ # into a new data structure that, when `#inspect` is called on it,
88
+ # will provide descriptions of any contained matchers rather than
89
+ # the normal `#inspect` output.
90
+ #
91
+ # You are encouraged to use this in your custom matcher's
92
+ # `description`, `failure_message` or
93
+ # `failure_message_when_negated` implementation if you are
94
+ # supporting any arguments which may be a data structure
95
+ # containing matchers.
96
+ #
97
+ # @!visibility public
98
+ def surface_descriptions_in(item)
99
+ if Matchers.is_a_describable_matcher?(item)
100
+ DescribableItem.new(item)
101
+ elsif Hash === item
102
+ Hash[surface_descriptions_in(item.to_a)]
103
+ elsif Struct === item || unreadable_io?(item)
104
+ RSpec::Support::ObjectFormatter.format(item)
105
+ elsif should_enumerate?(item)
106
+ item.map { |subitem| surface_descriptions_in(subitem) }
107
+ else
108
+ item
109
+ end
110
+ end
111
+
112
+ # @private
113
+ # Historically, a single matcher instance was only checked
114
+ # against a single value. Given that the matcher was only
115
+ # used once, it's been common to memoize some intermediate
116
+ # calculation that is derived from the `actual` value in
117
+ # order to reuse that intermediate result in the failure
118
+ # message.
119
+ #
120
+ # This can cause a problem when using such a matcher as an
121
+ # argument to another matcher in a composed matcher expression,
122
+ # since the matcher instance may be checked against multiple
123
+ # values and produce invalid results due to the memoization.
124
+ #
125
+ # To deal with this, we clone any matchers in `expected` via
126
+ # this method when using `values_match?`, so that any memoization
127
+ # does not "leak" between checks.
128
+ def with_matchers_cloned(object)
129
+ if Matchers.is_a_matcher?(object)
130
+ object.clone
131
+ elsif Hash === object
132
+ Hash[with_matchers_cloned(object.to_a)]
133
+ elsif Struct === object || unreadable_io?(object)
134
+ object
135
+ elsif should_enumerate?(object)
136
+ object.map { |subobject| with_matchers_cloned(subobject) }
137
+ else
138
+ object
139
+ end
140
+ end
141
+
142
+ if String.ancestors.include?(Enumerable) # 1.8.7
143
+ # :nocov:
144
+ # Strings are not enumerable on 1.9, and on 1.8 they are an infinitely
145
+ # nested enumerable: since ruby lacks a character class, it yields
146
+ # 1-character strings, which are themselves enumerable, composed of a
147
+ # a single 1-character string, which is an enumerable, etc.
148
+ #
149
+ # @api private
150
+ def should_enumerate?(item)
151
+ return false if String === item
152
+ Enumerable === item && !(Range === item) && item.none? { |subitem| subitem.equal?(item) }
153
+ end
154
+ # :nocov:
155
+ else
156
+ # @api private
157
+ def should_enumerate?(item)
158
+ Enumerable === item && !(Range === item) && item.none? { |subitem| subitem.equal?(item) }
159
+ end
160
+ end
161
+
162
+ # @api private
163
+ def unreadable_io?(object)
164
+ return false unless IO === object
165
+ object.each {} # STDOUT is enumerable but raises an error
166
+ false
167
+ rescue IOError
168
+ true
169
+ end
170
+ module_function :surface_descriptions_in, :should_enumerate?, :unreadable_io?
171
+
172
+ # Wraps an item in order to surface its `description` via `inspect`.
173
+ # @api private
174
+ DescribableItem = Struct.new(:item) do
175
+ def inspect
176
+ "(#{item.description})"
177
+ end
178
+
179
+ def pretty_print(pp)
180
+ pp.text "(#{item.description})"
181
+ end
182
+ end
183
+ end
184
+ end
185
+ end
@@ -0,0 +1,466 @@
1
+ module RSpec
2
+ module Matchers
3
+ # Defines the custom matcher DSL.
4
+ module DSL
5
+ # Defines a custom matcher.
6
+ # @see RSpec::Matchers
7
+ def define(name, &declarations)
8
+ warn_about_block_args(name, declarations)
9
+ define_method name do |*expected, &block_arg|
10
+ RSpec::Matchers::DSL::Matcher.new(name, declarations, self, *expected, &block_arg)
11
+ end
12
+ end
13
+ alias_method :matcher, :define
14
+
15
+ private
16
+
17
+ if Proc.method_defined?(:parameters)
18
+ def warn_about_block_args(name, declarations)
19
+ declarations.parameters.each do |type, arg_name|
20
+ next unless type == :block
21
+ RSpec.warning("Your `#{name}` custom matcher receives a block argument (`#{arg_name}`), " \
22
+ "but due to limitations in ruby, RSpec cannot provide the block. Instead, " \
23
+ "use the `block_arg` method to access the block")
24
+ end
25
+ end
26
+ else
27
+ # :nocov:
28
+ def warn_about_block_args(*)
29
+ # There's no way to detect block params on 1.8 since the method reflection APIs don't expose it
30
+ end
31
+ # :nocov:
32
+ end
33
+
34
+ RSpec.configure { |c| c.extend self } if RSpec.respond_to?(:configure)
35
+
36
+ # Contains the methods that are available from within the
37
+ # `RSpec::Matchers.define` DSL for creating custom matchers.
38
+ module Macros
39
+ # Stores the block that is used to determine whether this matcher passes
40
+ # or fails. The block should return a boolean value. When the matcher is
41
+ # passed to `expect(...).to` and the block returns `true`, then the expectation
42
+ # passes. Similarly, when the matcher is passed to `expect(...).not_to` and the
43
+ # block returns `false`, then the expectation passes.
44
+ #
45
+ # @example
46
+ #
47
+ # RSpec::Matchers.define :be_even do
48
+ # match do |actual|
49
+ # actual.even?
50
+ # end
51
+ # end
52
+ #
53
+ # expect(4).to be_even # passes
54
+ # expect(3).not_to be_even # passes
55
+ # expect(3).to be_even # fails
56
+ # expect(4).not_to be_even # fails
57
+ #
58
+ # By default the match block will swallow expectation errors (e.g.
59
+ # caused by using an expectation such as `expect(1).to eq 2`), if you
60
+ # with to allow these to bubble up, pass in the option
61
+ # `:notify_expectation_failures => true`.
62
+ #
63
+ # @param [Hash] options for defining the behavior of the match block.
64
+ # @yield [Object] actual the actual value (i.e. the value wrapped by `expect`)
65
+ def match(options={}, &match_block)
66
+ define_user_override(:matches?, match_block) do |actual|
67
+ @actual = actual
68
+ RSpec::Support.with_failure_notifier(RAISE_NOTIFIER) do
69
+ begin
70
+ super(*actual_arg_for(match_block))
71
+ rescue RSpec::Expectations::ExpectationNotMetError
72
+ raise if options[:notify_expectation_failures]
73
+ false
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ # @private
80
+ RAISE_NOTIFIER = Proc.new { |err, _opts| raise err }
81
+
82
+ # Use this to define the block for a negative expectation (`expect(...).not_to`)
83
+ # when the positive and negative forms require different handling. This
84
+ # is rarely necessary, but can be helpful, for example, when specifying
85
+ # asynchronous processes that require different timeouts.
86
+ #
87
+ # @yield [Object] actual the actual value (i.e. the value wrapped by `expect`)
88
+ def match_when_negated(&match_block)
89
+ define_user_override(:does_not_match?, match_block) do |actual|
90
+ begin
91
+ @actual = actual
92
+ RSpec::Support.with_failure_notifier(RAISE_NOTIFIER) do
93
+ super(*actual_arg_for(match_block))
94
+ end
95
+ rescue RSpec::Expectations::ExpectationNotMetError
96
+ false
97
+ end
98
+ end
99
+ end
100
+
101
+ # Use this instead of `match` when the block will raise an exception
102
+ # rather than returning false to indicate a failure.
103
+ #
104
+ # @example
105
+ #
106
+ # RSpec::Matchers.define :accept_as_valid do |candidate_address|
107
+ # match_unless_raises ValidationException do |validator|
108
+ # validator.validate(candidate_address)
109
+ # end
110
+ # end
111
+ #
112
+ # expect(email_validator).to accept_as_valid("person@company.com")
113
+ #
114
+ # @yield [Object] actual the actual object (i.e. the value wrapped by `expect`)
115
+ def match_unless_raises(expected_exception=Exception, &match_block)
116
+ define_user_override(:matches?, match_block) do |actual|
117
+ @actual = actual
118
+ begin
119
+ super(*actual_arg_for(match_block))
120
+ rescue expected_exception => @rescued_exception
121
+ false
122
+ else
123
+ true
124
+ end
125
+ end
126
+ end
127
+
128
+ # Customizes the failure messsage to use when this matcher is
129
+ # asked to positively match. Only use this when the message
130
+ # generated by default doesn't suit your needs.
131
+ #
132
+ # @example
133
+ #
134
+ # RSpec::Matchers.define :have_strength do |expected|
135
+ # match { your_match_logic }
136
+ #
137
+ # failure_message do |actual|
138
+ # "Expected strength of #{expected}, but had #{actual.strength}"
139
+ # end
140
+ # end
141
+ #
142
+ # @yield [Object] actual the actual object (i.e. the value wrapped by `expect`)
143
+ def failure_message(&definition)
144
+ define_user_override(__method__, definition)
145
+ end
146
+
147
+ # Customize the failure messsage to use when this matcher is asked
148
+ # to negatively match. Only use this when the message generated by
149
+ # default doesn't suit your needs.
150
+ #
151
+ # @example
152
+ #
153
+ # RSpec::Matchers.define :have_strength do |expected|
154
+ # match { your_match_logic }
155
+ #
156
+ # failure_message_when_negated do |actual|
157
+ # "Expected not to have strength of #{expected}, but did"
158
+ # end
159
+ # end
160
+ #
161
+ # @yield [Object] actual the actual object (i.e. the value wrapped by `expect`)
162
+ def failure_message_when_negated(&definition)
163
+ define_user_override(__method__, definition)
164
+ end
165
+
166
+ # Customize the description to use for one-liners. Only use this when
167
+ # the description generated by default doesn't suit your needs.
168
+ #
169
+ # @example
170
+ #
171
+ # RSpec::Matchers.define :qualify_for do |expected|
172
+ # match { your_match_logic }
173
+ #
174
+ # description do
175
+ # "qualify for #{expected}"
176
+ # end
177
+ # end
178
+ #
179
+ # @yield [Object] actual the actual object (i.e. the value wrapped by `expect`)
180
+ def description(&definition)
181
+ define_user_override(__method__, definition)
182
+ end
183
+
184
+ # Tells the matcher to diff the actual and expected values in the failure
185
+ # message.
186
+ def diffable
187
+ define_method(:diffable?) { true }
188
+ end
189
+
190
+ # Declares that the matcher can be used in a block expectation.
191
+ # Users will not be able to use your matcher in a block
192
+ # expectation without declaring this.
193
+ # (e.g. `expect { do_something }.to matcher`).
194
+ def supports_block_expectations
195
+ define_method(:supports_block_expectations?) { true }
196
+ end
197
+
198
+ # Convenience for defining methods on this matcher to create a fluent
199
+ # interface. The trick about fluent interfaces is that each method must
200
+ # return self in order to chain methods together. `chain` handles that
201
+ # for you. If the method is invoked and the
202
+ # `include_chain_clauses_in_custom_matcher_descriptions` config option
203
+ # hash been enabled, the chained method name and args will be added to the
204
+ # default description and failure message.
205
+ #
206
+ # In the common case where you just want the chained method to store some
207
+ # value(s) for later use (e.g. in `match`), you can provide one or more
208
+ # attribute names instead of a block; the chained method will store its
209
+ # arguments in instance variables with those names, and the values will
210
+ # be exposed via getters.
211
+ #
212
+ # @example
213
+ #
214
+ # RSpec::Matchers.define :have_errors_on do |key|
215
+ # chain :with do |message|
216
+ # @message = message
217
+ # end
218
+ #
219
+ # match do |actual|
220
+ # actual.errors[key] == @message
221
+ # end
222
+ # end
223
+ #
224
+ # expect(minor).to have_errors_on(:age).with("Not old enough to participate")
225
+ def chain(method_name, *attr_names, &definition)
226
+ unless block_given? ^ attr_names.any?
227
+ raise ArgumentError, "You must pass either a block or some attribute names (but not both) to `chain`."
228
+ end
229
+
230
+ definition = assign_attributes(attr_names) if attr_names.any?
231
+
232
+ define_user_override(method_name, definition) do |*args, &block|
233
+ super(*args, &block)
234
+ @chained_method_clauses.push([method_name, args])
235
+ self
236
+ end
237
+ end
238
+
239
+ def assign_attributes(attr_names)
240
+ attr_reader(*attr_names)
241
+ private(*attr_names)
242
+
243
+ lambda do |*attr_values|
244
+ attr_names.zip(attr_values) do |attr_name, attr_value|
245
+ instance_variable_set(:"@#{attr_name}", attr_value)
246
+ end
247
+ end
248
+ end
249
+
250
+ # assign_attributes isn't defined in the private section below because
251
+ # that makes MRI 1.9.2 emit a warning about private attributes.
252
+ private :assign_attributes
253
+
254
+ private
255
+
256
+ # Does the following:
257
+ #
258
+ # - Defines the named method using a user-provided block
259
+ # in @user_method_defs, which is included as an ancestor
260
+ # in the singleton class in which we eval the `define` block.
261
+ # - Defines an overriden definition for the same method
262
+ # usign the provided `our_def` block.
263
+ # - Provides a default `our_def` block for the common case
264
+ # of needing to call the user's definition with `@actual`
265
+ # as an arg, but only if their block's arity can handle it.
266
+ #
267
+ # This compiles the user block into an actual method, allowing
268
+ # them to use normal method constructs like `return`
269
+ # (e.g. for a early guard statement), while allowing us to define
270
+ # an override that can provide the wrapped handling
271
+ # (e.g. assigning `@actual`, rescueing errors, etc) and
272
+ # can `super` to the user's definition.
273
+ def define_user_override(method_name, user_def, &our_def)
274
+ @user_method_defs.__send__(:define_method, method_name, &user_def)
275
+ our_def ||= lambda { super(*actual_arg_for(user_def)) }
276
+ define_method(method_name, &our_def)
277
+ end
278
+
279
+ # Defines deprecated macro methods from RSpec 2 for backwards compatibility.
280
+ # @deprecated Use the methods from {Macros} instead.
281
+ module Deprecated
282
+ # @deprecated Use {Macros#match} instead.
283
+ def match_for_should(&definition)
284
+ RSpec.deprecate("`match_for_should`", :replacement => "`match`")
285
+ match(&definition)
286
+ end
287
+
288
+ # @deprecated Use {Macros#match_when_negated} instead.
289
+ def match_for_should_not(&definition)
290
+ RSpec.deprecate("`match_for_should_not`", :replacement => "`match_when_negated`")
291
+ match_when_negated(&definition)
292
+ end
293
+
294
+ # @deprecated Use {Macros#failure_message} instead.
295
+ def failure_message_for_should(&definition)
296
+ RSpec.deprecate("`failure_message_for_should`", :replacement => "`failure_message`")
297
+ failure_message(&definition)
298
+ end
299
+
300
+ # @deprecated Use {Macros#failure_message_when_negated} instead.
301
+ def failure_message_for_should_not(&definition)
302
+ RSpec.deprecate("`failure_message_for_should_not`", :replacement => "`failure_message_when_negated`")
303
+ failure_message_when_negated(&definition)
304
+ end
305
+ end
306
+ end
307
+
308
+ # Defines default implementations of the matcher
309
+ # protocol methods for custom matchers. You can
310
+ # override any of these using the {RSpec::Matchers::DSL::Macros Macros} methods
311
+ # from within an `RSpec::Matchers.define` block.
312
+ module DefaultImplementations
313
+ include BuiltIn::BaseMatcher::DefaultFailureMessages
314
+
315
+ # @api private
316
+ # Used internally by objects returns by `should` and `should_not`.
317
+ def diffable?
318
+ false
319
+ end
320
+
321
+ # The default description.
322
+ def description
323
+ english_name = EnglishPhrasing.split_words(name)
324
+ expected_list = EnglishPhrasing.list(expected)
325
+ "#{english_name}#{expected_list}#{chained_method_clause_sentences}"
326
+ end
327
+
328
+ # Matchers do not support block expectations by default. You
329
+ # must opt-in.
330
+ def supports_block_expectations?
331
+ false
332
+ end
333
+
334
+ # Most matchers do not expect call stack jumps.
335
+ def expects_call_stack_jump?
336
+ false
337
+ end
338
+
339
+ private
340
+
341
+ def chained_method_clause_sentences
342
+ return '' unless Expectations.configuration.include_chain_clauses_in_custom_matcher_descriptions?
343
+
344
+ @chained_method_clauses.map do |(method_name, method_args)|
345
+ english_name = EnglishPhrasing.split_words(method_name)
346
+ arg_list = EnglishPhrasing.list(method_args)
347
+ " #{english_name}#{arg_list}"
348
+ end.join
349
+ end
350
+ end
351
+
352
+ # The class used for custom matchers. The block passed to
353
+ # `RSpec::Matchers.define` will be evaluated in the context
354
+ # of the singleton class of an instance, and will have the
355
+ # {RSpec::Matchers::DSL::Macros Macros} methods available.
356
+ class Matcher
357
+ # Provides default implementations for the matcher protocol methods.
358
+ include DefaultImplementations
359
+
360
+ # Allows expectation expressions to be used in the match block.
361
+ include RSpec::Matchers
362
+
363
+ # Supports the matcher composability features of RSpec 3+.
364
+ include Composable
365
+
366
+ # Makes the macro methods available to an `RSpec::Matchers.define` block.
367
+ extend Macros
368
+ extend Macros::Deprecated
369
+
370
+ # Exposes the value being matched against -- generally the object
371
+ # object wrapped by `expect`.
372
+ attr_reader :actual
373
+
374
+ # Exposes the exception raised during the matching by `match_unless_raises`.
375
+ # Could be useful to extract details for a failure message.
376
+ attr_reader :rescued_exception
377
+
378
+ # The block parameter used in the expectation
379
+ attr_reader :block_arg
380
+
381
+ # The name of the matcher.
382
+ attr_reader :name
383
+
384
+ # @api private
385
+ def initialize(name, declarations, matcher_execution_context, *expected, &block_arg)
386
+ @name = name
387
+ @actual = nil
388
+ @expected_as_array = expected
389
+ @matcher_execution_context = matcher_execution_context
390
+ @chained_method_clauses = []
391
+ @block_arg = block_arg
392
+
393
+ class << self
394
+ # See `Macros#define_user_override` above, for an explanation.
395
+ include(@user_method_defs = Module.new)
396
+ self
397
+ end.class_exec(*expected, &declarations)
398
+ end
399
+
400
+ # Provides the expected value. This will return an array if
401
+ # multiple arguments were passed to the matcher; otherwise it
402
+ # will return a single value.
403
+ # @see #expected_as_array
404
+ def expected
405
+ if expected_as_array.size == 1
406
+ expected_as_array[0]
407
+ else
408
+ expected_as_array
409
+ end
410
+ end
411
+
412
+ # Returns the expected value as an an array. This exists primarily
413
+ # to aid in upgrading from RSpec 2.x, since in RSpec 2, `expected`
414
+ # always returned an array.
415
+ # @see #expected
416
+ attr_reader :expected_as_array
417
+
418
+ # Adds the name (rather than a cryptic hex number)
419
+ # so we can identify an instance of
420
+ # the matcher in error messages (e.g. for `NoMethodError`)
421
+ def inspect
422
+ "#<#{self.class.name} #{name}>"
423
+ end
424
+
425
+ if RUBY_VERSION.to_f >= 1.9
426
+ # Indicates that this matcher responds to messages
427
+ # from the `@matcher_execution_context` as well.
428
+ # Also, supports getting a method object for such methods.
429
+ def respond_to_missing?(method, include_private=false)
430
+ super || @matcher_execution_context.respond_to?(method, include_private)
431
+ end
432
+ else # for 1.8.7
433
+ # :nocov:
434
+ # Indicates that this matcher responds to messages
435
+ # from the `@matcher_execution_context` as well.
436
+ def respond_to?(method, include_private=false)
437
+ super || @matcher_execution_context.respond_to?(method, include_private)
438
+ end
439
+ # :nocov:
440
+ end
441
+
442
+ private
443
+
444
+ def actual_arg_for(block)
445
+ block.arity.zero? ? [] : [@actual]
446
+ end
447
+
448
+ # Takes care of forwarding unhandled messages to the
449
+ # `@matcher_execution_context` (typically the current
450
+ # running `RSpec::Core::Example`). This is needed by
451
+ # rspec-rails so that it can define matchers that wrap
452
+ # Rails' test helper methods, but it's also a useful
453
+ # feature in its own right.
454
+ def method_missing(method, *args, &block)
455
+ if @matcher_execution_context.respond_to?(method)
456
+ @matcher_execution_context.__send__ method, *args, &block
457
+ else
458
+ super(method, *args, &block)
459
+ end
460
+ end
461
+ end
462
+ end
463
+ end
464
+ end
465
+
466
+ RSpec::Matchers.extend RSpec::Matchers::DSL