lgrgic_palindrome_detector 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 (376) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +8 -0
  5. data/Gemfile.lock +31 -0
  6. data/README.md +39 -0
  7. data/Rakefile +10 -0
  8. data/bin/console +14 -0
  9. data/bin/setup +8 -0
  10. data/lgrgic_palindrome_detector.gemspec +37 -0
  11. data/lib/lgrgic_palindrome_detector.rb +16 -0
  12. data/lib/lgrgic_palindrome_detector/version.rb +3 -0
  13. data/vendor/cache/ansi-1.5.0.gem +0 -0
  14. data/vendor/cache/bin/rake +27 -0
  15. data/vendor/cache/builder-3.2.3.gem +0 -0
  16. data/vendor/cache/cache/ansi-1.5.0.gem +0 -0
  17. data/vendor/cache/cache/builder-3.2.3.gem +0 -0
  18. data/vendor/cache/cache/minitest-5.11.3.gem +0 -0
  19. data/vendor/cache/cache/minitest-reporters-1.2.0.gem +0 -0
  20. data/vendor/cache/cache/rake-10.5.0.gem +0 -0
  21. data/vendor/cache/cache/ruby-progressbar-1.10.0.gem +0 -0
  22. data/vendor/cache/gems/ansi-1.5.0/.index +77 -0
  23. data/vendor/cache/gems/ansi-1.5.0/.yardopts +8 -0
  24. data/vendor/cache/gems/ansi-1.5.0/DEMO.md +451 -0
  25. data/vendor/cache/gems/ansi-1.5.0/HISTORY.md +217 -0
  26. data/vendor/cache/gems/ansi-1.5.0/LICENSE.txt +23 -0
  27. data/vendor/cache/gems/ansi-1.5.0/NOTICE.md +170 -0
  28. data/vendor/cache/gems/ansi-1.5.0/README.md +91 -0
  29. data/vendor/cache/gems/ansi-1.5.0/demo/01_ansicode.md +65 -0
  30. data/vendor/cache/gems/ansi-1.5.0/demo/02_core.md +11 -0
  31. data/vendor/cache/gems/ansi-1.5.0/demo/03_logger.md +30 -0
  32. data/vendor/cache/gems/ansi-1.5.0/demo/04_progressbar.md +62 -0
  33. data/vendor/cache/gems/ansi-1.5.0/demo/05_mixin.md +37 -0
  34. data/vendor/cache/gems/ansi-1.5.0/demo/06_string.md +56 -0
  35. data/vendor/cache/gems/ansi-1.5.0/demo/07_columns.md +89 -0
  36. data/vendor/cache/gems/ansi-1.5.0/demo/08_table.md +28 -0
  37. data/vendor/cache/gems/ansi-1.5.0/demo/09_diff.md +47 -0
  38. data/vendor/cache/gems/ansi-1.5.0/demo/10_bbcode.md +24 -0
  39. data/vendor/cache/gems/ansi-1.5.0/demo/11_terminal.md +8 -0
  40. data/vendor/cache/gems/ansi-1.5.0/demo/applique/ae.rb +1 -0
  41. data/vendor/cache/gems/ansi-1.5.0/demo/applique/output.rb +5 -0
  42. data/vendor/cache/gems/ansi-1.5.0/lib/ansi.rb +22 -0
  43. data/vendor/cache/gems/ansi-1.5.0/lib/ansi.yml +77 -0
  44. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/bbcode.rb +334 -0
  45. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/chain.rb +50 -0
  46. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/chart.rb +100 -0
  47. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/code.rb +349 -0
  48. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/columns.rb +197 -0
  49. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/constants.rb +25 -0
  50. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/core.rb +30 -0
  51. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/diff.rb +215 -0
  52. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/hexdump.rb +122 -0
  53. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/logger.rb +211 -0
  54. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/mixin.rb +121 -0
  55. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/progressbar.rb +292 -0
  56. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/string.rb +254 -0
  57. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/table.rb +179 -0
  58. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/terminal.rb +44 -0
  59. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/terminal/curses.rb +26 -0
  60. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/terminal/stty.rb +62 -0
  61. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/terminal/termios.rb +68 -0
  62. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/terminal/win32.rb +107 -0
  63. data/vendor/cache/gems/ansi-1.5.0/lib/ansi/version.rb +15 -0
  64. data/vendor/cache/gems/ansi-1.5.0/test/case_ansicode.rb +43 -0
  65. data/vendor/cache/gems/ansi-1.5.0/test/case_bbcode.rb +35 -0
  66. data/vendor/cache/gems/ansi-1.5.0/test/case_mixin.rb +35 -0
  67. data/vendor/cache/gems/ansi-1.5.0/test/case_progressbar.rb +21 -0
  68. data/vendor/cache/gems/ansi-1.5.0/test/test_helper.rb +3 -0
  69. data/vendor/cache/gems/builder-3.2.3/CHANGES +107 -0
  70. data/vendor/cache/gems/builder-3.2.3/MIT-LICENSE +20 -0
  71. data/vendor/cache/gems/builder-3.2.3/README.md +258 -0
  72. data/vendor/cache/gems/builder-3.2.3/Rakefile +195 -0
  73. data/vendor/cache/gems/builder-3.2.3/doc/jamis.rb +591 -0
  74. data/vendor/cache/gems/builder-3.2.3/doc/releases/builder-1.2.4.rdoc +31 -0
  75. data/vendor/cache/gems/builder-3.2.3/doc/releases/builder-2.0.0.rdoc +46 -0
  76. data/vendor/cache/gems/builder-3.2.3/doc/releases/builder-2.1.1.rdoc +58 -0
  77. data/vendor/cache/gems/builder-3.2.3/lib/blankslate.rb +137 -0
  78. data/vendor/cache/gems/builder-3.2.3/lib/builder.rb +13 -0
  79. data/vendor/cache/gems/builder-3.2.3/lib/builder/blankslate.rb +23 -0
  80. data/vendor/cache/gems/builder-3.2.3/lib/builder/version.rb +8 -0
  81. data/vendor/cache/gems/builder-3.2.3/lib/builder/xchar.rb +197 -0
  82. data/vendor/cache/gems/builder-3.2.3/lib/builder/xmlbase.rb +199 -0
  83. data/vendor/cache/gems/builder-3.2.3/lib/builder/xmlevents.rb +63 -0
  84. data/vendor/cache/gems/builder-3.2.3/lib/builder/xmlmarkup.rb +339 -0
  85. data/vendor/cache/gems/builder-3.2.3/rakelib/publish.rake +20 -0
  86. data/vendor/cache/gems/builder-3.2.3/rakelib/tags.rake +62 -0
  87. data/vendor/cache/gems/builder-3.2.3/rakelib/testing.rake +7 -0
  88. data/vendor/cache/gems/builder-3.2.3/test/helper.rb +12 -0
  89. data/vendor/cache/gems/builder-3.2.3/test/performance.rb +41 -0
  90. data/vendor/cache/gems/builder-3.2.3/test/preload.rb +39 -0
  91. data/vendor/cache/gems/builder-3.2.3/test/test_blankslate.rb +213 -0
  92. data/vendor/cache/gems/builder-3.2.3/test/test_eventbuilder.rb +150 -0
  93. data/vendor/cache/gems/builder-3.2.3/test/test_markupbuilder.rb +611 -0
  94. data/vendor/cache/gems/builder-3.2.3/test/test_method_caching.rb +62 -0
  95. data/vendor/cache/gems/builder-3.2.3/test/test_namecollision.rb +39 -0
  96. data/vendor/cache/gems/builder-3.2.3/test/test_xchar.rb +78 -0
  97. data/vendor/cache/gems/minitest-5.11.3/.autotest +34 -0
  98. data/vendor/cache/gems/minitest-5.11.3/History.rdoc +1310 -0
  99. data/vendor/cache/gems/minitest-5.11.3/Manifest.txt +26 -0
  100. data/vendor/cache/gems/minitest-5.11.3/README.rdoc +746 -0
  101. data/vendor/cache/gems/minitest-5.11.3/Rakefile +86 -0
  102. data/vendor/cache/gems/minitest-5.11.3/design_rationale.rb +52 -0
  103. data/vendor/cache/gems/minitest-5.11.3/lib/hoe/minitest.rb +32 -0
  104. data/vendor/cache/gems/minitest-5.11.3/lib/minitest.rb +987 -0
  105. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/assertions.rb +693 -0
  106. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/autorun.rb +13 -0
  107. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/benchmark.rb +455 -0
  108. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/expectations.rb +284 -0
  109. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/hell.rb +11 -0
  110. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/mock.rb +240 -0
  111. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/parallel.rb +70 -0
  112. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/pride.rb +4 -0
  113. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/pride_plugin.rb +142 -0
  114. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/spec.rb +331 -0
  115. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/test.rb +220 -0
  116. data/vendor/cache/gems/minitest-5.11.3/lib/minitest/unit.rb +45 -0
  117. data/vendor/cache/gems/minitest-5.11.3/test/minitest/metametameta.rb +102 -0
  118. data/vendor/cache/gems/minitest-5.11.3/test/minitest/test_minitest_benchmark.rb +137 -0
  119. data/vendor/cache/gems/minitest-5.11.3/test/minitest/test_minitest_mock.rb +874 -0
  120. data/vendor/cache/gems/minitest-5.11.3/test/minitest/test_minitest_reporter.rb +299 -0
  121. data/vendor/cache/gems/minitest-5.11.3/test/minitest/test_minitest_spec.rb +987 -0
  122. data/vendor/cache/gems/minitest-5.11.3/test/minitest/test_minitest_test.rb +2142 -0
  123. data/vendor/cache/gems/minitest-reporters-1.2.0/.gitignore +27 -0
  124. data/vendor/cache/gems/minitest-reporters-1.2.0/.ruby-gemset +1 -0
  125. data/vendor/cache/gems/minitest-reporters-1.2.0/.travis.yml +10 -0
  126. data/vendor/cache/gems/minitest-reporters-1.2.0/.yardopts +6 -0
  127. data/vendor/cache/gems/minitest-reporters-1.2.0/CHANGELOG.md +40 -0
  128. data/vendor/cache/gems/minitest-reporters-1.2.0/Gemfile +2 -0
  129. data/vendor/cache/gems/minitest-reporters-1.2.0/LICENSE +20 -0
  130. data/vendor/cache/gems/minitest-reporters-1.2.0/README.md +115 -0
  131. data/vendor/cache/gems/minitest-reporters-1.2.0/Rakefile +60 -0
  132. data/vendor/cache/gems/minitest-reporters-1.2.0/assets/default-reporter.png +0 -0
  133. data/vendor/cache/gems/minitest-reporters-1.2.0/assets/mean_time_reporter.png +0 -0
  134. data/vendor/cache/gems/minitest-reporters-1.2.0/assets/progress-reporter.png +0 -0
  135. data/vendor/cache/gems/minitest-reporters-1.2.0/assets/spec-reporter.png +0 -0
  136. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/extensible_backtrace_filter.rb +67 -0
  137. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/minitest_reporter_plugin.rb +75 -0
  138. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/old_activesupport_fix.rb +24 -0
  139. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/relative_position.rb +26 -0
  140. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters.rb +89 -0
  141. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/ansi.rb +31 -0
  142. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/base_reporter.rb +117 -0
  143. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/default_reporter.rb +228 -0
  144. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/html_reporter.rb +221 -0
  145. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/junit_reporter.rb +157 -0
  146. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/mean_time_reporter.rb +392 -0
  147. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/progress_reporter.rb +96 -0
  148. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/ruby_mate_reporter.rb +54 -0
  149. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/rubymine_reporter.rb +117 -0
  150. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/spec_reporter.rb +61 -0
  151. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/reporters/version.rb +5 -0
  152. data/vendor/cache/gems/minitest-reporters-1.2.0/lib/minitest/templates/index.html.erb +83 -0
  153. data/vendor/cache/gems/minitest-reporters-1.2.0/minitest-reporters.gemspec +31 -0
  154. data/vendor/cache/gems/minitest-reporters-1.2.0/test/fixtures/junit_filename_bug_example_test.rb +21 -0
  155. data/vendor/cache/gems/minitest-reporters-1.2.0/test/fixtures/mean_time_test.rb +8 -0
  156. data/vendor/cache/gems/minitest-reporters-1.2.0/test/fixtures/progress_detailed_skip_test.rb +8 -0
  157. data/vendor/cache/gems/minitest-reporters-1.2.0/test/fixtures/progress_test.rb +8 -0
  158. data/vendor/cache/gems/minitest-reporters-1.2.0/test/fixtures/sample_test.rb +15 -0
  159. data/vendor/cache/gems/minitest-reporters-1.2.0/test/fixtures/spec_test.rb +13 -0
  160. data/vendor/cache/gems/minitest-reporters-1.2.0/test/gallery/bad_test.rb +25 -0
  161. data/vendor/cache/gems/minitest-reporters-1.2.0/test/gallery/good_test.rb +14 -0
  162. data/vendor/cache/gems/minitest-reporters-1.2.0/test/integration/reporters/junit_reporter_test.rb +12 -0
  163. data/vendor/cache/gems/minitest-reporters-1.2.0/test/integration/reporters/mean_time_reporter_test.rb +7 -0
  164. data/vendor/cache/gems/minitest-reporters-1.2.0/test/integration/reporters/progress_reporter_test.rb +34 -0
  165. data/vendor/cache/gems/minitest-reporters-1.2.0/test/test_helper.rb +22 -0
  166. data/vendor/cache/gems/minitest-reporters-1.2.0/test/unit/minitest/extensible_backtrace_filter_test.rb +42 -0
  167. data/vendor/cache/gems/minitest-reporters-1.2.0/test/unit/minitest/mean_time_reporter_unit_test.rb +152 -0
  168. data/vendor/cache/gems/minitest-reporters-1.2.0/test/unit/minitest/minitest_reporter_plugin_test.rb +14 -0
  169. data/vendor/cache/gems/minitest-reporters-1.2.0/test/unit/minitest/reporters_test.rb +52 -0
  170. data/vendor/cache/gems/minitest-reporters-1.2.0/test/unit/minitest/spec_reporter_test.rb +41 -0
  171. data/vendor/cache/gems/rake-10.5.0/.autotest +7 -0
  172. data/vendor/cache/gems/rake-10.5.0/.rubocop.yml +27 -0
  173. data/vendor/cache/gems/rake-10.5.0/.togglerc +7 -0
  174. data/vendor/cache/gems/rake-10.5.0/CONTRIBUTING.rdoc +38 -0
  175. data/vendor/cache/gems/rake-10.5.0/History.rdoc +659 -0
  176. data/vendor/cache/gems/rake-10.5.0/MIT-LICENSE +21 -0
  177. data/vendor/cache/gems/rake-10.5.0/Manifest.txt +166 -0
  178. data/vendor/cache/gems/rake-10.5.0/README.rdoc +139 -0
  179. data/vendor/cache/gems/rake-10.5.0/Rakefile +81 -0
  180. data/vendor/cache/gems/rake-10.5.0/bin/rake +33 -0
  181. data/vendor/cache/gems/rake-10.5.0/doc/command_line_usage.rdoc +158 -0
  182. data/vendor/cache/gems/rake-10.5.0/doc/example/Rakefile1 +38 -0
  183. data/vendor/cache/gems/rake-10.5.0/doc/example/Rakefile2 +35 -0
  184. data/vendor/cache/gems/rake-10.5.0/doc/example/a.c +6 -0
  185. data/vendor/cache/gems/rake-10.5.0/doc/example/b.c +6 -0
  186. data/vendor/cache/gems/rake-10.5.0/doc/example/main.c +11 -0
  187. data/vendor/cache/gems/rake-10.5.0/doc/glossary.rdoc +42 -0
  188. data/vendor/cache/gems/rake-10.5.0/doc/jamis.rb +591 -0
  189. data/vendor/cache/gems/rake-10.5.0/doc/proto_rake.rdoc +127 -0
  190. data/vendor/cache/gems/rake-10.5.0/doc/rake.1 +141 -0
  191. data/vendor/cache/gems/rake-10.5.0/doc/rakefile.rdoc +624 -0
  192. data/vendor/cache/gems/rake-10.5.0/doc/rational.rdoc +151 -0
  193. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.4.14.rdoc +23 -0
  194. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.4.15.rdoc +35 -0
  195. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.5.0.rdoc +53 -0
  196. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.5.3.rdoc +78 -0
  197. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.5.4.rdoc +46 -0
  198. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.6.0.rdoc +141 -0
  199. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.7.0.rdoc +119 -0
  200. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.7.1.rdoc +59 -0
  201. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.7.2.rdoc +121 -0
  202. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.7.3.rdoc +47 -0
  203. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.8.0.rdoc +114 -0
  204. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.8.2.rdoc +165 -0
  205. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.8.3.rdoc +112 -0
  206. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.8.4.rdoc +147 -0
  207. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.8.5.rdoc +53 -0
  208. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.8.6.rdoc +37 -0
  209. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.8.7.rdoc +55 -0
  210. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.9.0.rdoc +112 -0
  211. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.9.1.rdoc +52 -0
  212. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  213. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.rdoc +49 -0
  214. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.9.3.rdoc +102 -0
  215. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.9.4.rdoc +60 -0
  216. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.9.5.rdoc +55 -0
  217. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-0.9.6.rdoc +64 -0
  218. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-10.0.0.rdoc +178 -0
  219. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-10.0.1.rdoc +58 -0
  220. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-10.0.2.rdoc +53 -0
  221. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-10.0.3.rdoc +191 -0
  222. data/vendor/cache/gems/rake-10.5.0/doc/release_notes/rake-10.1.0.rdoc +61 -0
  223. data/vendor/cache/gems/rake-10.5.0/lib/rake.rb +79 -0
  224. data/vendor/cache/gems/rake-10.5.0/lib/rake/alt_system.rb +110 -0
  225. data/vendor/cache/gems/rake-10.5.0/lib/rake/application.rb +790 -0
  226. data/vendor/cache/gems/rake-10.5.0/lib/rake/backtrace.rb +23 -0
  227. data/vendor/cache/gems/rake-10.5.0/lib/rake/clean.rb +76 -0
  228. data/vendor/cache/gems/rake-10.5.0/lib/rake/cloneable.rb +16 -0
  229. data/vendor/cache/gems/rake-10.5.0/lib/rake/contrib/.document +1 -0
  230. data/vendor/cache/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb +21 -0
  231. data/vendor/cache/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb +137 -0
  232. data/vendor/cache/gems/rake-10.5.0/lib/rake/contrib/publisher.rb +81 -0
  233. data/vendor/cache/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  234. data/vendor/cache/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb +61 -0
  235. data/vendor/cache/gems/rake-10.5.0/lib/rake/contrib/sys.rb +4 -0
  236. data/vendor/cache/gems/rake-10.5.0/lib/rake/cpu_counter.rb +125 -0
  237. data/vendor/cache/gems/rake-10.5.0/lib/rake/default_loader.rb +14 -0
  238. data/vendor/cache/gems/rake-10.5.0/lib/rake/dsl_definition.rb +201 -0
  239. data/vendor/cache/gems/rake-10.5.0/lib/rake/early_time.rb +21 -0
  240. data/vendor/cache/gems/rake-10.5.0/lib/rake/ext/core.rb +25 -0
  241. data/vendor/cache/gems/rake-10.5.0/lib/rake/ext/module.rb +2 -0
  242. data/vendor/cache/gems/rake-10.5.0/lib/rake/ext/pathname.rb +25 -0
  243. data/vendor/cache/gems/rake-10.5.0/lib/rake/ext/string.rb +175 -0
  244. data/vendor/cache/gems/rake-10.5.0/lib/rake/ext/time.rb +18 -0
  245. data/vendor/cache/gems/rake-10.5.0/lib/rake/file_creation_task.rb +24 -0
  246. data/vendor/cache/gems/rake-10.5.0/lib/rake/file_list.rb +428 -0
  247. data/vendor/cache/gems/rake-10.5.0/lib/rake/file_task.rb +46 -0
  248. data/vendor/cache/gems/rake-10.5.0/lib/rake/file_utils.rb +128 -0
  249. data/vendor/cache/gems/rake-10.5.0/lib/rake/file_utils_ext.rb +144 -0
  250. data/vendor/cache/gems/rake-10.5.0/lib/rake/gempackagetask.rb +4 -0
  251. data/vendor/cache/gems/rake-10.5.0/lib/rake/invocation_chain.rb +56 -0
  252. data/vendor/cache/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb +16 -0
  253. data/vendor/cache/gems/rake-10.5.0/lib/rake/late_time.rb +17 -0
  254. data/vendor/cache/gems/rake-10.5.0/lib/rake/linked_list.rb +103 -0
  255. data/vendor/cache/gems/rake-10.5.0/lib/rake/loaders/makefile.rb +53 -0
  256. data/vendor/cache/gems/rake-10.5.0/lib/rake/multi_task.rb +13 -0
  257. data/vendor/cache/gems/rake-10.5.0/lib/rake/name_space.rb +38 -0
  258. data/vendor/cache/gems/rake-10.5.0/lib/rake/packagetask.rb +199 -0
  259. data/vendor/cache/gems/rake-10.5.0/lib/rake/pathmap.rb +3 -0
  260. data/vendor/cache/gems/rake-10.5.0/lib/rake/phony.rb +15 -0
  261. data/vendor/cache/gems/rake-10.5.0/lib/rake/private_reader.rb +20 -0
  262. data/vendor/cache/gems/rake-10.5.0/lib/rake/promise.rb +99 -0
  263. data/vendor/cache/gems/rake-10.5.0/lib/rake/pseudo_status.rb +29 -0
  264. data/vendor/cache/gems/rake-10.5.0/lib/rake/rake_module.rb +38 -0
  265. data/vendor/cache/gems/rake-10.5.0/lib/rake/rake_test_loader.rb +22 -0
  266. data/vendor/cache/gems/rake-10.5.0/lib/rake/rdoctask.rb +4 -0
  267. data/vendor/cache/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb +29 -0
  268. data/vendor/cache/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
  269. data/vendor/cache/gems/rake-10.5.0/lib/rake/runtest.rb +27 -0
  270. data/vendor/cache/gems/rake-10.5.0/lib/rake/scope.rb +42 -0
  271. data/vendor/cache/gems/rake-10.5.0/lib/rake/task.rb +383 -0
  272. data/vendor/cache/gems/rake-10.5.0/lib/rake/task_argument_error.rb +7 -0
  273. data/vendor/cache/gems/rake-10.5.0/lib/rake/task_arguments.rb +98 -0
  274. data/vendor/cache/gems/rake-10.5.0/lib/rake/task_manager.rb +307 -0
  275. data/vendor/cache/gems/rake-10.5.0/lib/rake/tasklib.rb +24 -0
  276. data/vendor/cache/gems/rake-10.5.0/lib/rake/testtask.rb +213 -0
  277. data/vendor/cache/gems/rake-10.5.0/lib/rake/thread_history_display.rb +48 -0
  278. data/vendor/cache/gems/rake-10.5.0/lib/rake/thread_pool.rb +164 -0
  279. data/vendor/cache/gems/rake-10.5.0/lib/rake/trace_output.rb +22 -0
  280. data/vendor/cache/gems/rake-10.5.0/lib/rake/version.rb +7 -0
  281. data/vendor/cache/gems/rake-10.5.0/lib/rake/win32.rb +56 -0
  282. data/vendor/cache/gems/rake-10.5.0/rakelib/publish.rake +20 -0
  283. data/vendor/cache/gems/rake-10.5.0/rakelib/test_times.rake +25 -0
  284. data/vendor/cache/gems/rake-10.5.0/test/file_creation.rb +34 -0
  285. data/vendor/cache/gems/rake-10.5.0/test/helper.rb +129 -0
  286. data/vendor/cache/gems/rake-10.5.0/test/support/rakefile_definitions.rb +478 -0
  287. data/vendor/cache/gems/rake-10.5.0/test/support/ruby_runner.rb +34 -0
  288. data/vendor/cache/gems/rake-10.5.0/test/test_private_reader.rb +42 -0
  289. data/vendor/cache/gems/rake-10.5.0/test/test_rake.rb +40 -0
  290. data/vendor/cache/gems/rake-10.5.0/test/test_rake_application.rb +643 -0
  291. data/vendor/cache/gems/rake-10.5.0/test/test_rake_application_options.rb +468 -0
  292. data/vendor/cache/gems/rake-10.5.0/test/test_rake_backtrace.rb +119 -0
  293. data/vendor/cache/gems/rake-10.5.0/test/test_rake_clean.rb +61 -0
  294. data/vendor/cache/gems/rake-10.5.0/test/test_rake_cpu_counter.rb +68 -0
  295. data/vendor/cache/gems/rake-10.5.0/test/test_rake_definitions.rb +84 -0
  296. data/vendor/cache/gems/rake-10.5.0/test/test_rake_directory_task.rb +76 -0
  297. data/vendor/cache/gems/rake-10.5.0/test/test_rake_dsl.rb +40 -0
  298. data/vendor/cache/gems/rake-10.5.0/test/test_rake_early_time.rb +31 -0
  299. data/vendor/cache/gems/rake-10.5.0/test/test_rake_extension.rb +59 -0
  300. data/vendor/cache/gems/rake-10.5.0/test/test_rake_file_creation_task.rb +56 -0
  301. data/vendor/cache/gems/rake-10.5.0/test/test_rake_file_list.rb +670 -0
  302. data/vendor/cache/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb +8 -0
  303. data/vendor/cache/gems/rake-10.5.0/test/test_rake_file_task.rb +197 -0
  304. data/vendor/cache/gems/rake-10.5.0/test/test_rake_file_utils.rb +314 -0
  305. data/vendor/cache/gems/rake-10.5.0/test/test_rake_ftp_file.rb +74 -0
  306. data/vendor/cache/gems/rake-10.5.0/test/test_rake_functional.rb +482 -0
  307. data/vendor/cache/gems/rake-10.5.0/test/test_rake_invocation_chain.rb +64 -0
  308. data/vendor/cache/gems/rake-10.5.0/test/test_rake_late_time.rb +18 -0
  309. data/vendor/cache/gems/rake-10.5.0/test/test_rake_linked_list.rb +84 -0
  310. data/vendor/cache/gems/rake-10.5.0/test/test_rake_makefile_loader.rb +46 -0
  311. data/vendor/cache/gems/rake-10.5.0/test/test_rake_multi_task.rb +64 -0
  312. data/vendor/cache/gems/rake-10.5.0/test/test_rake_name_space.rb +57 -0
  313. data/vendor/cache/gems/rake-10.5.0/test/test_rake_package_task.rb +79 -0
  314. data/vendor/cache/gems/rake-10.5.0/test/test_rake_path_map.rb +168 -0
  315. data/vendor/cache/gems/rake-10.5.0/test/test_rake_path_map_explode.rb +34 -0
  316. data/vendor/cache/gems/rake-10.5.0/test/test_rake_path_map_partial.rb +18 -0
  317. data/vendor/cache/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb +15 -0
  318. data/vendor/cache/gems/rake-10.5.0/test/test_rake_pseudo_status.rb +21 -0
  319. data/vendor/cache/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb +20 -0
  320. data/vendor/cache/gems/rake-10.5.0/test/test_rake_reduce_compat.rb +26 -0
  321. data/vendor/cache/gems/rake-10.5.0/test/test_rake_require.rb +40 -0
  322. data/vendor/cache/gems/rake-10.5.0/test/test_rake_rules.rb +388 -0
  323. data/vendor/cache/gems/rake-10.5.0/test/test_rake_scope.rb +44 -0
  324. data/vendor/cache/gems/rake-10.5.0/test/test_rake_task.rb +393 -0
  325. data/vendor/cache/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb +119 -0
  326. data/vendor/cache/gems/rake-10.5.0/test/test_rake_task_arguments.rb +127 -0
  327. data/vendor/cache/gems/rake-10.5.0/test/test_rake_task_lib.rb +9 -0
  328. data/vendor/cache/gems/rake-10.5.0/test/test_rake_task_manager.rb +178 -0
  329. data/vendor/cache/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb +19 -0
  330. data/vendor/cache/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb +172 -0
  331. data/vendor/cache/gems/rake-10.5.0/test/test_rake_test_task.rb +146 -0
  332. data/vendor/cache/gems/rake-10.5.0/test/test_rake_thread_pool.rb +145 -0
  333. data/vendor/cache/gems/rake-10.5.0/test/test_rake_top_level_functions.rb +71 -0
  334. data/vendor/cache/gems/rake-10.5.0/test/test_rake_win32.rb +72 -0
  335. data/vendor/cache/gems/rake-10.5.0/test/test_thread_history_display.rb +101 -0
  336. data/vendor/cache/gems/rake-10.5.0/test/test_trace_output.rb +52 -0
  337. data/vendor/cache/gems/ruby-progressbar-1.10.0/LICENSE.txt +19 -0
  338. data/vendor/cache/gems/ruby-progressbar-1.10.0/README.md +38 -0
  339. data/vendor/cache/gems/ruby-progressbar-1.10.0/Rakefile +2 -0
  340. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar.rb +18 -0
  341. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/base.rb +183 -0
  342. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/calculators/length.rb +100 -0
  343. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/calculators/running_average.rb +9 -0
  344. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components.rb +5 -0
  345. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/bar.rb +102 -0
  346. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/percentage.rb +29 -0
  347. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/rate.rb +43 -0
  348. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/time.rb +107 -0
  349. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/title.rb +13 -0
  350. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/errors/invalid_progress_error.rb +4 -0
  351. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format.rb +3 -0
  352. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/formatter.rb +27 -0
  353. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/molecule.rb +60 -0
  354. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/string.rb +36 -0
  355. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/output.rb +68 -0
  356. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/non_tty.rb +47 -0
  357. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/null.rb +33 -0
  358. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/tty.rb +32 -0
  359. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/progress.rb +118 -0
  360. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/refinements.rb +1 -0
  361. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/refinements/enumerator.rb +23 -0
  362. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/throttle.rb +25 -0
  363. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/time.rb +32 -0
  364. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/timer.rb +72 -0
  365. data/vendor/cache/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/version.rb +3 -0
  366. data/vendor/cache/minitest-5.11.3.gem +0 -0
  367. data/vendor/cache/minitest-reporters-1.2.0.gem +0 -0
  368. data/vendor/cache/rake-10.5.0.gem +0 -0
  369. data/vendor/cache/ruby-progressbar-1.10.0.gem +0 -0
  370. data/vendor/cache/specifications/ansi-1.5.0.gemspec +49 -0
  371. data/vendor/cache/specifications/builder-3.2.3.gemspec +21 -0
  372. data/vendor/cache/specifications/minitest-5.11.3.gemspec +39 -0
  373. data/vendor/cache/specifications/minitest-reporters-1.2.0.gemspec +49 -0
  374. data/vendor/cache/specifications/rake-10.5.0.gemspec +43 -0
  375. data/vendor/cache/specifications/ruby-progressbar-1.10.0.gemspec +46 -0
  376. metadata +460 -0
@@ -0,0 +1,693 @@
1
+ # encoding: UTF-8
2
+
3
+ require "rbconfig"
4
+ require "tempfile"
5
+ require "stringio"
6
+
7
+ module Minitest
8
+ ##
9
+ # Minitest Assertions. All assertion methods accept a +msg+ which is
10
+ # printed if the assertion fails.
11
+ #
12
+ # Protocol: Nearly everything here boils up to +assert+, which
13
+ # expects to be able to increment an instance accessor named
14
+ # +assertions+. This is not provided by Assertions and must be
15
+ # provided by the thing including Assertions. See Minitest::Runnable
16
+ # for an example.
17
+
18
+ module Assertions
19
+ UNDEFINED = Object.new # :nodoc:
20
+
21
+ def UNDEFINED.inspect # :nodoc:
22
+ "UNDEFINED" # again with the rdoc bugs... :(
23
+ end
24
+
25
+ ##
26
+ # Returns the diff command to use in #diff. Tries to intelligently
27
+ # figure out what diff to use.
28
+
29
+ def self.diff
30
+ @diff = if (RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ &&
31
+ system("diff.exe", __FILE__, __FILE__)) then
32
+ "diff.exe -u"
33
+ elsif Minitest::Test.maglev? then
34
+ "diff -u"
35
+ elsif system("gdiff", __FILE__, __FILE__)
36
+ "gdiff -u" # solaris and kin suck
37
+ elsif system("diff", __FILE__, __FILE__)
38
+ "diff -u"
39
+ else
40
+ nil
41
+ end unless defined? @diff
42
+
43
+ @diff
44
+ end
45
+
46
+ ##
47
+ # Set the diff command to use in #diff.
48
+
49
+ def self.diff= o
50
+ @diff = o
51
+ end
52
+
53
+ ##
54
+ # Returns a diff between +exp+ and +act+. If there is no known
55
+ # diff command or if it doesn't make sense to diff the output
56
+ # (single line, short output), then it simply returns a basic
57
+ # comparison between the two.
58
+
59
+ def diff exp, act
60
+ expect = mu_pp_for_diff exp
61
+ butwas = mu_pp_for_diff act
62
+ result = nil
63
+
64
+ need_to_diff =
65
+ (expect.include?("\n") ||
66
+ butwas.include?("\n") ||
67
+ expect.size > 30 ||
68
+ butwas.size > 30 ||
69
+ expect == butwas) &&
70
+ Minitest::Assertions.diff
71
+
72
+ return "Expected: #{mu_pp exp}\n Actual: #{mu_pp act}" unless
73
+ need_to_diff
74
+
75
+ Tempfile.open("expect") do |a|
76
+ a.puts expect
77
+ a.flush
78
+
79
+ Tempfile.open("butwas") do |b|
80
+ b.puts butwas
81
+ b.flush
82
+
83
+ result = `#{Minitest::Assertions.diff} #{a.path} #{b.path}`
84
+ result.sub!(/^\-\-\- .+/, "--- expected")
85
+ result.sub!(/^\+\+\+ .+/, "+++ actual")
86
+
87
+ if result.empty? then
88
+ klass = exp.class
89
+ result = [
90
+ "No visible difference in the #{klass}#inspect output.\n",
91
+ "You should look at the implementation of #== on ",
92
+ "#{klass} or its members.\n",
93
+ expect,
94
+ ].join
95
+ end
96
+ end
97
+ end
98
+
99
+ result
100
+ end
101
+
102
+ ##
103
+ # This returns a human-readable version of +obj+. By default
104
+ # #inspect is called. You can override this to use #pretty_print
105
+ # if you want.
106
+
107
+ def mu_pp obj
108
+ s = obj.inspect
109
+
110
+ if defined? Encoding then
111
+ s = s.encode Encoding.default_external
112
+
113
+ if String === obj && obj.encoding != Encoding.default_external then
114
+ s = "# encoding: #{obj.encoding}\n#{s}"
115
+ end
116
+ end
117
+
118
+ s
119
+ end
120
+
121
+ ##
122
+ # This returns a diff-able human-readable version of +obj+. This
123
+ # differs from the regular mu_pp because it expands escaped
124
+ # newlines and makes hex-values generic (like object_ids). This
125
+ # uses mu_pp to do the first pass and then cleans it up.
126
+
127
+ def mu_pp_for_diff obj
128
+ mu_pp(obj).gsub(/\\n/, "\n").gsub(/:0x[a-fA-F0-9]{4,}/m, ":0xXXXXXX")
129
+ end
130
+
131
+ ##
132
+ # Fails unless +test+ is truthy.
133
+
134
+ def assert test, msg = nil
135
+ self.assertions += 1
136
+ unless test then
137
+ msg ||= "Expected #{mu_pp test} to be truthy."
138
+ msg = msg.call if Proc === msg
139
+ raise Minitest::Assertion, msg
140
+ end
141
+ true
142
+ end
143
+
144
+ def _synchronize # :nodoc:
145
+ yield
146
+ end
147
+
148
+ ##
149
+ # Fails unless +obj+ is empty.
150
+
151
+ def assert_empty obj, msg = nil
152
+ msg = message(msg) { "Expected #{mu_pp(obj)} to be empty" }
153
+ assert_respond_to obj, :empty?
154
+ assert obj.empty?, msg
155
+ end
156
+
157
+ E = "" # :nodoc:
158
+
159
+ ##
160
+ # Fails unless <tt>exp == act</tt> printing the difference between
161
+ # the two, if possible.
162
+ #
163
+ # If there is no visible difference but the assertion fails, you
164
+ # should suspect that your #== is buggy, or your inspect output is
165
+ # missing crucial details. For nicer structural diffing, set
166
+ # Minitest::Test.make_my_diffs_pretty!
167
+ #
168
+ # For floats use assert_in_delta.
169
+ #
170
+ # See also: Minitest::Assertions.diff
171
+
172
+ def assert_equal exp, act, msg = nil
173
+ msg = message(msg, E) { diff exp, act }
174
+ result = assert exp == act, msg
175
+
176
+ if nil == exp then
177
+ if Minitest::VERSION =~ /^6/ then
178
+ refute_nil exp, "Use assert_nil if expecting nil."
179
+ else
180
+ where = Minitest.filter_backtrace(caller).first
181
+ where = where.split(/:in /, 2).first # clean up noise
182
+
183
+ warn "DEPRECATED: Use assert_nil if expecting nil from #{where}. This will fail in Minitest 6."
184
+ end
185
+ end
186
+
187
+ result
188
+ end
189
+
190
+ ##
191
+ # For comparing Floats. Fails unless +exp+ and +act+ are within +delta+
192
+ # of each other.
193
+ #
194
+ # assert_in_delta Math::PI, (22.0 / 7.0), 0.01
195
+
196
+ def assert_in_delta exp, act, delta = 0.001, msg = nil
197
+ n = (exp - act).abs
198
+ msg = message(msg) {
199
+ "Expected |#{exp} - #{act}| (#{n}) to be <= #{delta}"
200
+ }
201
+ assert delta >= n, msg
202
+ end
203
+
204
+ ##
205
+ # For comparing Floats. Fails unless +exp+ and +act+ have a relative
206
+ # error less than +epsilon+.
207
+
208
+ def assert_in_epsilon exp, act, epsilon = 0.001, msg = nil
209
+ assert_in_delta exp, act, [exp.abs, act.abs].min * epsilon, msg
210
+ end
211
+
212
+ ##
213
+ # Fails unless +collection+ includes +obj+.
214
+
215
+ def assert_includes collection, obj, msg = nil
216
+ msg = message(msg) {
217
+ "Expected #{mu_pp(collection)} to include #{mu_pp(obj)}"
218
+ }
219
+ assert_respond_to collection, :include?
220
+ assert collection.include?(obj), msg
221
+ end
222
+
223
+ ##
224
+ # Fails unless +obj+ is an instance of +cls+.
225
+
226
+ def assert_instance_of cls, obj, msg = nil
227
+ msg = message(msg) {
228
+ "Expected #{mu_pp(obj)} to be an instance of #{cls}, not #{obj.class}"
229
+ }
230
+
231
+ assert obj.instance_of?(cls), msg
232
+ end
233
+
234
+ ##
235
+ # Fails unless +obj+ is a kind of +cls+.
236
+
237
+ def assert_kind_of cls, obj, msg = nil
238
+ msg = message(msg) {
239
+ "Expected #{mu_pp(obj)} to be a kind of #{cls}, not #{obj.class}" }
240
+
241
+ assert obj.kind_of?(cls), msg
242
+ end
243
+
244
+ ##
245
+ # Fails unless +matcher+ <tt>=~</tt> +obj+.
246
+
247
+ def assert_match matcher, obj, msg = nil
248
+ msg = message(msg) { "Expected #{mu_pp matcher} to match #{mu_pp obj}" }
249
+ assert_respond_to matcher, :"=~"
250
+ matcher = Regexp.new Regexp.escape matcher if String === matcher
251
+ assert matcher =~ obj, msg
252
+ end
253
+
254
+ ##
255
+ # Fails unless +obj+ is nil
256
+
257
+ def assert_nil obj, msg = nil
258
+ msg = message(msg) { "Expected #{mu_pp(obj)} to be nil" }
259
+ assert obj.nil?, msg
260
+ end
261
+
262
+ ##
263
+ # For testing with binary operators. Eg:
264
+ #
265
+ # assert_operator 5, :<=, 4
266
+
267
+ def assert_operator o1, op, o2 = UNDEFINED, msg = nil
268
+ return assert_predicate o1, op, msg if UNDEFINED == o2
269
+ msg = message(msg) { "Expected #{mu_pp(o1)} to be #{op} #{mu_pp(o2)}" }
270
+ assert o1.__send__(op, o2), msg
271
+ end
272
+
273
+ ##
274
+ # Fails if stdout or stderr do not output the expected results.
275
+ # Pass in nil if you don't care about that streams output. Pass in
276
+ # "" if you require it to be silent. Pass in a regexp if you want
277
+ # to pattern match.
278
+ #
279
+ # assert_output(/hey/) { method_with_output }
280
+ #
281
+ # NOTE: this uses #capture_io, not #capture_subprocess_io.
282
+ #
283
+ # See also: #assert_silent
284
+
285
+ def assert_output stdout = nil, stderr = nil
286
+ out, err = capture_io do
287
+ yield
288
+ end
289
+
290
+ err_msg = Regexp === stderr ? :assert_match : :assert_equal if stderr
291
+ out_msg = Regexp === stdout ? :assert_match : :assert_equal if stdout
292
+
293
+ y = send err_msg, stderr, err, "In stderr" if err_msg
294
+ x = send out_msg, stdout, out, "In stdout" if out_msg
295
+
296
+ (!stdout || x) && (!stderr || y)
297
+ end
298
+
299
+ ##
300
+ # For testing with predicates. Eg:
301
+ #
302
+ # assert_predicate str, :empty?
303
+ #
304
+ # This is really meant for specs and is front-ended by assert_operator:
305
+ #
306
+ # str.must_be :empty?
307
+
308
+ def assert_predicate o1, op, msg = nil
309
+ msg = message(msg) { "Expected #{mu_pp(o1)} to be #{op}" }
310
+ assert o1.__send__(op), msg
311
+ end
312
+
313
+ ##
314
+ # Fails unless the block raises one of +exp+. Returns the
315
+ # exception matched so you can check the message, attributes, etc.
316
+ #
317
+ # +exp+ takes an optional message on the end to help explain
318
+ # failures and defaults to StandardError if no exception class is
319
+ # passed.
320
+
321
+ def assert_raises *exp
322
+ msg = "#{exp.pop}.\n" if String === exp.last
323
+ exp << StandardError if exp.empty?
324
+
325
+ begin
326
+ yield
327
+ rescue *exp => e
328
+ pass # count assertion
329
+ return e
330
+ rescue Minitest::Skip, Minitest::Assertion
331
+ # don't count assertion
332
+ raise
333
+ rescue SignalException, SystemExit
334
+ raise
335
+ rescue Exception => e
336
+ flunk proc {
337
+ exception_details(e, "#{msg}#{mu_pp(exp)} exception expected, not")
338
+ }
339
+ end
340
+
341
+ exp = exp.first if exp.size == 1
342
+
343
+ flunk "#{msg}#{mu_pp(exp)} expected but nothing was raised."
344
+ end
345
+
346
+ ##
347
+ # Fails unless +obj+ responds to +meth+.
348
+
349
+ def assert_respond_to obj, meth, msg = nil
350
+ msg = message(msg) {
351
+ "Expected #{mu_pp(obj)} (#{obj.class}) to respond to ##{meth}"
352
+ }
353
+ assert obj.respond_to?(meth), msg
354
+ end
355
+
356
+ ##
357
+ # Fails unless +exp+ and +act+ are #equal?
358
+
359
+ def assert_same exp, act, msg = nil
360
+ msg = message(msg) {
361
+ data = [mu_pp(act), act.object_id, mu_pp(exp), exp.object_id]
362
+ "Expected %s (oid=%d) to be the same as %s (oid=%d)" % data
363
+ }
364
+ assert exp.equal?(act), msg
365
+ end
366
+
367
+ ##
368
+ # +send_ary+ is a receiver, message and arguments.
369
+ #
370
+ # Fails unless the call returns a true value
371
+
372
+ def assert_send send_ary, m = nil
373
+ where = Minitest.filter_backtrace(caller).first
374
+ where = where.split(/:in /, 2).first # clean up noise
375
+ warn "DEPRECATED: assert_send. From #{where}"
376
+
377
+ recv, msg, *args = send_ary
378
+ m = message(m) {
379
+ "Expected #{mu_pp(recv)}.#{msg}(*#{mu_pp(args)}) to return true" }
380
+ assert recv.__send__(msg, *args), m
381
+ end
382
+
383
+ ##
384
+ # Fails if the block outputs anything to stderr or stdout.
385
+ #
386
+ # See also: #assert_output
387
+
388
+ def assert_silent
389
+ assert_output "", "" do
390
+ yield
391
+ end
392
+ end
393
+
394
+ ##
395
+ # Fails unless the block throws +sym+
396
+
397
+ def assert_throws sym, msg = nil
398
+ default = "Expected #{mu_pp(sym)} to have been thrown"
399
+ caught = true
400
+ catch(sym) do
401
+ begin
402
+ yield
403
+ rescue ThreadError => e # wtf?!? 1.8 + threads == suck
404
+ default += ", not \:#{e.message[/uncaught throw \`(\w+?)\'/, 1]}"
405
+ rescue ArgumentError => e # 1.9 exception
406
+ raise e unless e.message.include?("uncaught throw")
407
+ default += ", not #{e.message.split(/ /).last}"
408
+ rescue NameError => e # 1.8 exception
409
+ raise e unless e.name == sym
410
+ default += ", not #{e.name.inspect}"
411
+ end
412
+ caught = false
413
+ end
414
+
415
+ assert caught, message(msg) { default }
416
+ end
417
+
418
+ ##
419
+ # Captures $stdout and $stderr into strings:
420
+ #
421
+ # out, err = capture_io do
422
+ # puts "Some info"
423
+ # warn "You did a bad thing"
424
+ # end
425
+ #
426
+ # assert_match %r%info%, out
427
+ # assert_match %r%bad%, err
428
+ #
429
+ # NOTE: For efficiency, this method uses StringIO and does not
430
+ # capture IO for subprocesses. Use #capture_subprocess_io for
431
+ # that.
432
+
433
+ def capture_io
434
+ _synchronize do
435
+ begin
436
+ captured_stdout, captured_stderr = StringIO.new, StringIO.new
437
+
438
+ orig_stdout, orig_stderr = $stdout, $stderr
439
+ $stdout, $stderr = captured_stdout, captured_stderr
440
+
441
+ yield
442
+
443
+ return captured_stdout.string, captured_stderr.string
444
+ ensure
445
+ $stdout = orig_stdout
446
+ $stderr = orig_stderr
447
+ end
448
+ end
449
+ end
450
+
451
+ ##
452
+ # Captures $stdout and $stderr into strings, using Tempfile to
453
+ # ensure that subprocess IO is captured as well.
454
+ #
455
+ # out, err = capture_subprocess_io do
456
+ # system "echo Some info"
457
+ # system "echo You did a bad thing 1>&2"
458
+ # end
459
+ #
460
+ # assert_match %r%info%, out
461
+ # assert_match %r%bad%, err
462
+ #
463
+ # NOTE: This method is approximately 10x slower than #capture_io so
464
+ # only use it when you need to test the output of a subprocess.
465
+
466
+ def capture_subprocess_io
467
+ _synchronize do
468
+ begin
469
+ require "tempfile"
470
+
471
+ captured_stdout, captured_stderr = Tempfile.new("out"), Tempfile.new("err")
472
+
473
+ orig_stdout, orig_stderr = $stdout.dup, $stderr.dup
474
+ $stdout.reopen captured_stdout
475
+ $stderr.reopen captured_stderr
476
+
477
+ yield
478
+
479
+ $stdout.rewind
480
+ $stderr.rewind
481
+
482
+ return captured_stdout.read, captured_stderr.read
483
+ ensure
484
+ captured_stdout.unlink
485
+ captured_stderr.unlink
486
+ $stdout.reopen orig_stdout
487
+ $stderr.reopen orig_stderr
488
+ end
489
+ end
490
+ end
491
+
492
+ ##
493
+ # Returns details for exception +e+
494
+
495
+ def exception_details e, msg
496
+ [
497
+ "#{msg}",
498
+ "Class: <#{e.class}>",
499
+ "Message: <#{e.message.inspect}>",
500
+ "---Backtrace---",
501
+ "#{Minitest.filter_backtrace(e.backtrace).join("\n")}",
502
+ "---------------",
503
+ ].join "\n"
504
+ end
505
+
506
+ ##
507
+ # Fails with +msg+
508
+
509
+ def flunk msg = nil
510
+ msg ||= "Epic Fail!"
511
+ assert false, msg
512
+ end
513
+
514
+ ##
515
+ # Returns a proc that will output +msg+ along with the default message.
516
+
517
+ def message msg = nil, ending = nil, &default
518
+ proc {
519
+ msg = msg.call.chomp(".") if Proc === msg
520
+ custom_message = "#{msg}.\n" unless msg.nil? or msg.to_s.empty?
521
+ "#{custom_message}#{default.call}#{ending || "."}"
522
+ }
523
+ end
524
+
525
+ ##
526
+ # used for counting assertions
527
+
528
+ def pass _msg = nil
529
+ assert true
530
+ end
531
+
532
+ ##
533
+ # Fails if +test+ is truthy.
534
+
535
+ def refute test, msg = nil
536
+ msg ||= message { "Expected #{mu_pp(test)} to not be truthy" }
537
+ not assert !test, msg
538
+ end
539
+
540
+ ##
541
+ # Fails if +obj+ is empty.
542
+
543
+ def refute_empty obj, msg = nil
544
+ msg = message(msg) { "Expected #{mu_pp(obj)} to not be empty" }
545
+ assert_respond_to obj, :empty?
546
+ refute obj.empty?, msg
547
+ end
548
+
549
+ ##
550
+ # Fails if <tt>exp == act</tt>.
551
+ #
552
+ # For floats use refute_in_delta.
553
+
554
+ def refute_equal exp, act, msg = nil
555
+ msg = message(msg) {
556
+ "Expected #{mu_pp(act)} to not be equal to #{mu_pp(exp)}"
557
+ }
558
+ refute exp == act, msg
559
+ end
560
+
561
+ ##
562
+ # For comparing Floats. Fails if +exp+ is within +delta+ of +act+.
563
+ #
564
+ # refute_in_delta Math::PI, (22.0 / 7.0)
565
+
566
+ def refute_in_delta exp, act, delta = 0.001, msg = nil
567
+ n = (exp - act).abs
568
+ msg = message(msg) {
569
+ "Expected |#{exp} - #{act}| (#{n}) to not be <= #{delta}"
570
+ }
571
+ refute delta >= n, msg
572
+ end
573
+
574
+ ##
575
+ # For comparing Floats. Fails if +exp+ and +act+ have a relative error
576
+ # less than +epsilon+.
577
+
578
+ def refute_in_epsilon a, b, epsilon = 0.001, msg = nil
579
+ refute_in_delta a, b, a * epsilon, msg
580
+ end
581
+
582
+ ##
583
+ # Fails if +collection+ includes +obj+.
584
+
585
+ def refute_includes collection, obj, msg = nil
586
+ msg = message(msg) {
587
+ "Expected #{mu_pp(collection)} to not include #{mu_pp(obj)}"
588
+ }
589
+ assert_respond_to collection, :include?
590
+ refute collection.include?(obj), msg
591
+ end
592
+
593
+ ##
594
+ # Fails if +obj+ is an instance of +cls+.
595
+
596
+ def refute_instance_of cls, obj, msg = nil
597
+ msg = message(msg) {
598
+ "Expected #{mu_pp(obj)} to not be an instance of #{cls}"
599
+ }
600
+ refute obj.instance_of?(cls), msg
601
+ end
602
+
603
+ ##
604
+ # Fails if +obj+ is a kind of +cls+.
605
+
606
+ def refute_kind_of cls, obj, msg = nil
607
+ msg = message(msg) { "Expected #{mu_pp(obj)} to not be a kind of #{cls}" }
608
+ refute obj.kind_of?(cls), msg
609
+ end
610
+
611
+ ##
612
+ # Fails if +matcher+ <tt>=~</tt> +obj+.
613
+
614
+ def refute_match matcher, obj, msg = nil
615
+ msg = message(msg) { "Expected #{mu_pp matcher} to not match #{mu_pp obj}" }
616
+ assert_respond_to matcher, :"=~"
617
+ matcher = Regexp.new Regexp.escape matcher if String === matcher
618
+ refute matcher =~ obj, msg
619
+ end
620
+
621
+ ##
622
+ # Fails if +obj+ is nil.
623
+
624
+ def refute_nil obj, msg = nil
625
+ msg = message(msg) { "Expected #{mu_pp(obj)} to not be nil" }
626
+ refute obj.nil?, msg
627
+ end
628
+
629
+ ##
630
+ # Fails if +o1+ is not +op+ +o2+. Eg:
631
+ #
632
+ # refute_operator 1, :>, 2 #=> pass
633
+ # refute_operator 1, :<, 2 #=> fail
634
+
635
+ def refute_operator o1, op, o2 = UNDEFINED, msg = nil
636
+ return refute_predicate o1, op, msg if UNDEFINED == o2
637
+ msg = message(msg) { "Expected #{mu_pp(o1)} to not be #{op} #{mu_pp(o2)}" }
638
+ refute o1.__send__(op, o2), msg
639
+ end
640
+
641
+ ##
642
+ # For testing with predicates.
643
+ #
644
+ # refute_predicate str, :empty?
645
+ #
646
+ # This is really meant for specs and is front-ended by refute_operator:
647
+ #
648
+ # str.wont_be :empty?
649
+
650
+ def refute_predicate o1, op, msg = nil
651
+ msg = message(msg) { "Expected #{mu_pp(o1)} to not be #{op}" }
652
+ refute o1.__send__(op), msg
653
+ end
654
+
655
+ ##
656
+ # Fails if +obj+ responds to the message +meth+.
657
+
658
+ def refute_respond_to obj, meth, msg = nil
659
+ msg = message(msg) { "Expected #{mu_pp(obj)} to not respond to #{meth}" }
660
+
661
+ refute obj.respond_to?(meth), msg
662
+ end
663
+
664
+ ##
665
+ # Fails if +exp+ is the same (by object identity) as +act+.
666
+
667
+ def refute_same exp, act, msg = nil
668
+ msg = message(msg) {
669
+ data = [mu_pp(act), act.object_id, mu_pp(exp), exp.object_id]
670
+ "Expected %s (oid=%d) to not be the same as %s (oid=%d)" % data
671
+ }
672
+ refute exp.equal?(act), msg
673
+ end
674
+
675
+ ##
676
+ # Skips the current run. If run in verbose-mode, the skipped run
677
+ # gets listed at the end of the run but doesn't cause a failure
678
+ # exit code.
679
+
680
+ def skip msg = nil, bt = caller
681
+ msg ||= "Skipped, no message given"
682
+ @skip = true
683
+ raise Minitest::Skip, msg, bt
684
+ end
685
+
686
+ ##
687
+ # Was this testcase skipped? Meant for #teardown.
688
+
689
+ def skipped?
690
+ defined?(@skip) and @skip
691
+ end
692
+ end
693
+ end