steenfest_palindrome 0.1.1b

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 (369) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.travis.yml +7 -0
  4. data/Gemfile +6 -0
  5. data/README.md +35 -0
  6. data/Rakefile +10 -0
  7. data/bin/console +14 -0
  8. data/bin/setup +8 -0
  9. data/lib/steenfest_palindrome/version.rb +3 -0
  10. data/lib/steenfest_palindrome.rb +17 -0
  11. data/ruby/2.5/bin/rake +27 -0
  12. data/ruby/2.5/cache/ansi-1.5.0.gem +0 -0
  13. data/ruby/2.5/cache/builder-3.2.3.gem +0 -0
  14. data/ruby/2.5/cache/minitest-5.11.3.gem +0 -0
  15. data/ruby/2.5/cache/minitest-reporters-1.2.0.gem +0 -0
  16. data/ruby/2.5/cache/rake-10.5.0.gem +0 -0
  17. data/ruby/2.5/cache/ruby-progressbar-1.10.0.gem +0 -0
  18. data/ruby/2.5/gems/ansi-1.5.0/.index +77 -0
  19. data/ruby/2.5/gems/ansi-1.5.0/.yardopts +8 -0
  20. data/ruby/2.5/gems/ansi-1.5.0/DEMO.md +451 -0
  21. data/ruby/2.5/gems/ansi-1.5.0/HISTORY.md +217 -0
  22. data/ruby/2.5/gems/ansi-1.5.0/LICENSE.txt +23 -0
  23. data/ruby/2.5/gems/ansi-1.5.0/NOTICE.md +170 -0
  24. data/ruby/2.5/gems/ansi-1.5.0/README.md +91 -0
  25. data/ruby/2.5/gems/ansi-1.5.0/demo/01_ansicode.md +65 -0
  26. data/ruby/2.5/gems/ansi-1.5.0/demo/02_core.md +11 -0
  27. data/ruby/2.5/gems/ansi-1.5.0/demo/03_logger.md +30 -0
  28. data/ruby/2.5/gems/ansi-1.5.0/demo/04_progressbar.md +62 -0
  29. data/ruby/2.5/gems/ansi-1.5.0/demo/05_mixin.md +37 -0
  30. data/ruby/2.5/gems/ansi-1.5.0/demo/06_string.md +56 -0
  31. data/ruby/2.5/gems/ansi-1.5.0/demo/07_columns.md +89 -0
  32. data/ruby/2.5/gems/ansi-1.5.0/demo/08_table.md +28 -0
  33. data/ruby/2.5/gems/ansi-1.5.0/demo/09_diff.md +47 -0
  34. data/ruby/2.5/gems/ansi-1.5.0/demo/10_bbcode.md +24 -0
  35. data/ruby/2.5/gems/ansi-1.5.0/demo/11_terminal.md +8 -0
  36. data/ruby/2.5/gems/ansi-1.5.0/demo/applique/ae.rb +1 -0
  37. data/ruby/2.5/gems/ansi-1.5.0/demo/applique/output.rb +5 -0
  38. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/bbcode.rb +334 -0
  39. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/chain.rb +50 -0
  40. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/chart.rb +100 -0
  41. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/code.rb +349 -0
  42. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/columns.rb +197 -0
  43. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/constants.rb +25 -0
  44. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/core.rb +30 -0
  45. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/diff.rb +215 -0
  46. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/hexdump.rb +122 -0
  47. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/logger.rb +211 -0
  48. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/mixin.rb +121 -0
  49. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/progressbar.rb +292 -0
  50. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/string.rb +254 -0
  51. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/table.rb +179 -0
  52. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/terminal/curses.rb +26 -0
  53. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/terminal/stty.rb +62 -0
  54. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/terminal/termios.rb +68 -0
  55. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/terminal/win32.rb +107 -0
  56. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/terminal.rb +44 -0
  57. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi/version.rb +15 -0
  58. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi.rb +22 -0
  59. data/ruby/2.5/gems/ansi-1.5.0/lib/ansi.yml +77 -0
  60. data/ruby/2.5/gems/ansi-1.5.0/test/case_ansicode.rb +43 -0
  61. data/ruby/2.5/gems/ansi-1.5.0/test/case_bbcode.rb +35 -0
  62. data/ruby/2.5/gems/ansi-1.5.0/test/case_mixin.rb +35 -0
  63. data/ruby/2.5/gems/ansi-1.5.0/test/case_progressbar.rb +21 -0
  64. data/ruby/2.5/gems/ansi-1.5.0/test/test_helper.rb +3 -0
  65. data/ruby/2.5/gems/builder-3.2.3/CHANGES +107 -0
  66. data/ruby/2.5/gems/builder-3.2.3/MIT-LICENSE +20 -0
  67. data/ruby/2.5/gems/builder-3.2.3/README.md +258 -0
  68. data/ruby/2.5/gems/builder-3.2.3/Rakefile +195 -0
  69. data/ruby/2.5/gems/builder-3.2.3/doc/jamis.rb +591 -0
  70. data/ruby/2.5/gems/builder-3.2.3/doc/releases/builder-1.2.4.rdoc +31 -0
  71. data/ruby/2.5/gems/builder-3.2.3/doc/releases/builder-2.0.0.rdoc +46 -0
  72. data/ruby/2.5/gems/builder-3.2.3/doc/releases/builder-2.1.1.rdoc +58 -0
  73. data/ruby/2.5/gems/builder-3.2.3/lib/blankslate.rb +137 -0
  74. data/ruby/2.5/gems/builder-3.2.3/lib/builder/blankslate.rb +23 -0
  75. data/ruby/2.5/gems/builder-3.2.3/lib/builder/version.rb +8 -0
  76. data/ruby/2.5/gems/builder-3.2.3/lib/builder/xchar.rb +197 -0
  77. data/ruby/2.5/gems/builder-3.2.3/lib/builder/xmlbase.rb +199 -0
  78. data/ruby/2.5/gems/builder-3.2.3/lib/builder/xmlevents.rb +63 -0
  79. data/ruby/2.5/gems/builder-3.2.3/lib/builder/xmlmarkup.rb +339 -0
  80. data/ruby/2.5/gems/builder-3.2.3/lib/builder.rb +13 -0
  81. data/ruby/2.5/gems/builder-3.2.3/rakelib/publish.rake +20 -0
  82. data/ruby/2.5/gems/builder-3.2.3/rakelib/tags.rake +62 -0
  83. data/ruby/2.5/gems/builder-3.2.3/rakelib/testing.rake +7 -0
  84. data/ruby/2.5/gems/builder-3.2.3/test/helper.rb +12 -0
  85. data/ruby/2.5/gems/builder-3.2.3/test/performance.rb +41 -0
  86. data/ruby/2.5/gems/builder-3.2.3/test/preload.rb +39 -0
  87. data/ruby/2.5/gems/builder-3.2.3/test/test_blankslate.rb +213 -0
  88. data/ruby/2.5/gems/builder-3.2.3/test/test_eventbuilder.rb +150 -0
  89. data/ruby/2.5/gems/builder-3.2.3/test/test_markupbuilder.rb +611 -0
  90. data/ruby/2.5/gems/builder-3.2.3/test/test_method_caching.rb +62 -0
  91. data/ruby/2.5/gems/builder-3.2.3/test/test_namecollision.rb +39 -0
  92. data/ruby/2.5/gems/builder-3.2.3/test/test_xchar.rb +78 -0
  93. data/ruby/2.5/gems/minitest-5.11.3/.autotest +34 -0
  94. data/ruby/2.5/gems/minitest-5.11.3/History.rdoc +1310 -0
  95. data/ruby/2.5/gems/minitest-5.11.3/Manifest.txt +26 -0
  96. data/ruby/2.5/gems/minitest-5.11.3/README.rdoc +746 -0
  97. data/ruby/2.5/gems/minitest-5.11.3/Rakefile +86 -0
  98. data/ruby/2.5/gems/minitest-5.11.3/design_rationale.rb +52 -0
  99. data/ruby/2.5/gems/minitest-5.11.3/lib/hoe/minitest.rb +32 -0
  100. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/assertions.rb +693 -0
  101. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/autorun.rb +13 -0
  102. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/benchmark.rb +455 -0
  103. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/expectations.rb +284 -0
  104. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/hell.rb +11 -0
  105. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/mock.rb +240 -0
  106. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/parallel.rb +70 -0
  107. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/pride.rb +4 -0
  108. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/pride_plugin.rb +142 -0
  109. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/spec.rb +331 -0
  110. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/test.rb +220 -0
  111. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest/unit.rb +45 -0
  112. data/ruby/2.5/gems/minitest-5.11.3/lib/minitest.rb +987 -0
  113. data/ruby/2.5/gems/minitest-5.11.3/test/minitest/metametameta.rb +102 -0
  114. data/ruby/2.5/gems/minitest-5.11.3/test/minitest/test_minitest_benchmark.rb +137 -0
  115. data/ruby/2.5/gems/minitest-5.11.3/test/minitest/test_minitest_mock.rb +874 -0
  116. data/ruby/2.5/gems/minitest-5.11.3/test/minitest/test_minitest_reporter.rb +299 -0
  117. data/ruby/2.5/gems/minitest-5.11.3/test/minitest/test_minitest_spec.rb +987 -0
  118. data/ruby/2.5/gems/minitest-5.11.3/test/minitest/test_minitest_test.rb +2142 -0
  119. data/ruby/2.5/gems/minitest-reporters-1.2.0/.gitignore +27 -0
  120. data/ruby/2.5/gems/minitest-reporters-1.2.0/.ruby-gemset +1 -0
  121. data/ruby/2.5/gems/minitest-reporters-1.2.0/.travis.yml +10 -0
  122. data/ruby/2.5/gems/minitest-reporters-1.2.0/.yardopts +6 -0
  123. data/ruby/2.5/gems/minitest-reporters-1.2.0/CHANGELOG.md +40 -0
  124. data/ruby/2.5/gems/minitest-reporters-1.2.0/Gemfile +2 -0
  125. data/ruby/2.5/gems/minitest-reporters-1.2.0/LICENSE +20 -0
  126. data/ruby/2.5/gems/minitest-reporters-1.2.0/README.md +115 -0
  127. data/ruby/2.5/gems/minitest-reporters-1.2.0/Rakefile +60 -0
  128. data/ruby/2.5/gems/minitest-reporters-1.2.0/assets/default-reporter.png +0 -0
  129. data/ruby/2.5/gems/minitest-reporters-1.2.0/assets/mean_time_reporter.png +0 -0
  130. data/ruby/2.5/gems/minitest-reporters-1.2.0/assets/progress-reporter.png +0 -0
  131. data/ruby/2.5/gems/minitest-reporters-1.2.0/assets/spec-reporter.png +0 -0
  132. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/extensible_backtrace_filter.rb +67 -0
  133. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/minitest_reporter_plugin.rb +75 -0
  134. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/old_activesupport_fix.rb +24 -0
  135. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/relative_position.rb +26 -0
  136. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/ansi.rb +31 -0
  137. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/base_reporter.rb +117 -0
  138. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/default_reporter.rb +228 -0
  139. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/html_reporter.rb +221 -0
  140. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/junit_reporter.rb +157 -0
  141. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/mean_time_reporter.rb +392 -0
  142. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/progress_reporter.rb +96 -0
  143. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/ruby_mate_reporter.rb +54 -0
  144. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/rubymine_reporter.rb +117 -0
  145. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/spec_reporter.rb +61 -0
  146. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters/version.rb +5 -0
  147. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/reporters.rb +89 -0
  148. data/ruby/2.5/gems/minitest-reporters-1.2.0/lib/minitest/templates/index.html.erb +83 -0
  149. data/ruby/2.5/gems/minitest-reporters-1.2.0/minitest-reporters.gemspec +31 -0
  150. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/fixtures/junit_filename_bug_example_test.rb +21 -0
  151. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/fixtures/mean_time_test.rb +8 -0
  152. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/fixtures/progress_detailed_skip_test.rb +8 -0
  153. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/fixtures/progress_test.rb +8 -0
  154. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/fixtures/sample_test.rb +15 -0
  155. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/fixtures/spec_test.rb +13 -0
  156. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/gallery/bad_test.rb +25 -0
  157. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/gallery/good_test.rb +14 -0
  158. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/integration/reporters/junit_reporter_test.rb +12 -0
  159. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/integration/reporters/mean_time_reporter_test.rb +7 -0
  160. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/integration/reporters/progress_reporter_test.rb +34 -0
  161. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/test_helper.rb +22 -0
  162. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/unit/minitest/extensible_backtrace_filter_test.rb +42 -0
  163. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/unit/minitest/mean_time_reporter_unit_test.rb +152 -0
  164. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/unit/minitest/minitest_reporter_plugin_test.rb +14 -0
  165. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/unit/minitest/reporters_test.rb +52 -0
  166. data/ruby/2.5/gems/minitest-reporters-1.2.0/test/unit/minitest/spec_reporter_test.rb +41 -0
  167. data/ruby/2.5/gems/rake-10.5.0/.autotest +7 -0
  168. data/ruby/2.5/gems/rake-10.5.0/.rubocop.yml +27 -0
  169. data/ruby/2.5/gems/rake-10.5.0/.togglerc +7 -0
  170. data/ruby/2.5/gems/rake-10.5.0/CONTRIBUTING.rdoc +38 -0
  171. data/ruby/2.5/gems/rake-10.5.0/History.rdoc +659 -0
  172. data/ruby/2.5/gems/rake-10.5.0/MIT-LICENSE +21 -0
  173. data/ruby/2.5/gems/rake-10.5.0/Manifest.txt +166 -0
  174. data/ruby/2.5/gems/rake-10.5.0/README.rdoc +139 -0
  175. data/ruby/2.5/gems/rake-10.5.0/Rakefile +81 -0
  176. data/ruby/2.5/gems/rake-10.5.0/bin/rake +33 -0
  177. data/ruby/2.5/gems/rake-10.5.0/doc/command_line_usage.rdoc +158 -0
  178. data/ruby/2.5/gems/rake-10.5.0/doc/example/Rakefile1 +38 -0
  179. data/ruby/2.5/gems/rake-10.5.0/doc/example/Rakefile2 +35 -0
  180. data/ruby/2.5/gems/rake-10.5.0/doc/example/a.c +6 -0
  181. data/ruby/2.5/gems/rake-10.5.0/doc/example/b.c +6 -0
  182. data/ruby/2.5/gems/rake-10.5.0/doc/example/main.c +11 -0
  183. data/ruby/2.5/gems/rake-10.5.0/doc/glossary.rdoc +42 -0
  184. data/ruby/2.5/gems/rake-10.5.0/doc/jamis.rb +591 -0
  185. data/ruby/2.5/gems/rake-10.5.0/doc/proto_rake.rdoc +127 -0
  186. data/ruby/2.5/gems/rake-10.5.0/doc/rake.1 +141 -0
  187. data/ruby/2.5/gems/rake-10.5.0/doc/rakefile.rdoc +624 -0
  188. data/ruby/2.5/gems/rake-10.5.0/doc/rational.rdoc +151 -0
  189. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.4.14.rdoc +23 -0
  190. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.4.15.rdoc +35 -0
  191. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.5.0.rdoc +53 -0
  192. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.5.3.rdoc +78 -0
  193. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.5.4.rdoc +46 -0
  194. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.6.0.rdoc +141 -0
  195. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.7.0.rdoc +119 -0
  196. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.7.1.rdoc +59 -0
  197. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.7.2.rdoc +121 -0
  198. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.7.3.rdoc +47 -0
  199. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.8.0.rdoc +114 -0
  200. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.8.2.rdoc +165 -0
  201. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.8.3.rdoc +112 -0
  202. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.8.4.rdoc +147 -0
  203. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.8.5.rdoc +53 -0
  204. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.8.6.rdoc +37 -0
  205. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.8.7.rdoc +55 -0
  206. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.9.0.rdoc +112 -0
  207. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.9.1.rdoc +52 -0
  208. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  209. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.rdoc +49 -0
  210. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.9.3.rdoc +102 -0
  211. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.9.4.rdoc +60 -0
  212. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.9.5.rdoc +55 -0
  213. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-0.9.6.rdoc +64 -0
  214. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-10.0.0.rdoc +178 -0
  215. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-10.0.1.rdoc +58 -0
  216. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-10.0.2.rdoc +53 -0
  217. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-10.0.3.rdoc +191 -0
  218. data/ruby/2.5/gems/rake-10.5.0/doc/release_notes/rake-10.1.0.rdoc +61 -0
  219. data/ruby/2.5/gems/rake-10.5.0/lib/rake/alt_system.rb +110 -0
  220. data/ruby/2.5/gems/rake-10.5.0/lib/rake/application.rb +790 -0
  221. data/ruby/2.5/gems/rake-10.5.0/lib/rake/backtrace.rb +23 -0
  222. data/ruby/2.5/gems/rake-10.5.0/lib/rake/clean.rb +76 -0
  223. data/ruby/2.5/gems/rake-10.5.0/lib/rake/cloneable.rb +16 -0
  224. data/ruby/2.5/gems/rake-10.5.0/lib/rake/contrib/.document +1 -0
  225. data/ruby/2.5/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb +21 -0
  226. data/ruby/2.5/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb +137 -0
  227. data/ruby/2.5/gems/rake-10.5.0/lib/rake/contrib/publisher.rb +81 -0
  228. data/ruby/2.5/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  229. data/ruby/2.5/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb +61 -0
  230. data/ruby/2.5/gems/rake-10.5.0/lib/rake/contrib/sys.rb +4 -0
  231. data/ruby/2.5/gems/rake-10.5.0/lib/rake/cpu_counter.rb +125 -0
  232. data/ruby/2.5/gems/rake-10.5.0/lib/rake/default_loader.rb +14 -0
  233. data/ruby/2.5/gems/rake-10.5.0/lib/rake/dsl_definition.rb +201 -0
  234. data/ruby/2.5/gems/rake-10.5.0/lib/rake/early_time.rb +21 -0
  235. data/ruby/2.5/gems/rake-10.5.0/lib/rake/ext/core.rb +25 -0
  236. data/ruby/2.5/gems/rake-10.5.0/lib/rake/ext/module.rb +2 -0
  237. data/ruby/2.5/gems/rake-10.5.0/lib/rake/ext/pathname.rb +25 -0
  238. data/ruby/2.5/gems/rake-10.5.0/lib/rake/ext/string.rb +175 -0
  239. data/ruby/2.5/gems/rake-10.5.0/lib/rake/ext/time.rb +18 -0
  240. data/ruby/2.5/gems/rake-10.5.0/lib/rake/file_creation_task.rb +24 -0
  241. data/ruby/2.5/gems/rake-10.5.0/lib/rake/file_list.rb +428 -0
  242. data/ruby/2.5/gems/rake-10.5.0/lib/rake/file_task.rb +46 -0
  243. data/ruby/2.5/gems/rake-10.5.0/lib/rake/file_utils.rb +128 -0
  244. data/ruby/2.5/gems/rake-10.5.0/lib/rake/file_utils_ext.rb +144 -0
  245. data/ruby/2.5/gems/rake-10.5.0/lib/rake/gempackagetask.rb +4 -0
  246. data/ruby/2.5/gems/rake-10.5.0/lib/rake/invocation_chain.rb +56 -0
  247. data/ruby/2.5/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb +16 -0
  248. data/ruby/2.5/gems/rake-10.5.0/lib/rake/late_time.rb +17 -0
  249. data/ruby/2.5/gems/rake-10.5.0/lib/rake/linked_list.rb +103 -0
  250. data/ruby/2.5/gems/rake-10.5.0/lib/rake/loaders/makefile.rb +53 -0
  251. data/ruby/2.5/gems/rake-10.5.0/lib/rake/multi_task.rb +13 -0
  252. data/ruby/2.5/gems/rake-10.5.0/lib/rake/name_space.rb +38 -0
  253. data/ruby/2.5/gems/rake-10.5.0/lib/rake/packagetask.rb +199 -0
  254. data/ruby/2.5/gems/rake-10.5.0/lib/rake/pathmap.rb +3 -0
  255. data/ruby/2.5/gems/rake-10.5.0/lib/rake/phony.rb +15 -0
  256. data/ruby/2.5/gems/rake-10.5.0/lib/rake/private_reader.rb +20 -0
  257. data/ruby/2.5/gems/rake-10.5.0/lib/rake/promise.rb +99 -0
  258. data/ruby/2.5/gems/rake-10.5.0/lib/rake/pseudo_status.rb +29 -0
  259. data/ruby/2.5/gems/rake-10.5.0/lib/rake/rake_module.rb +38 -0
  260. data/ruby/2.5/gems/rake-10.5.0/lib/rake/rake_test_loader.rb +22 -0
  261. data/ruby/2.5/gems/rake-10.5.0/lib/rake/rdoctask.rb +4 -0
  262. data/ruby/2.5/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb +29 -0
  263. data/ruby/2.5/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
  264. data/ruby/2.5/gems/rake-10.5.0/lib/rake/runtest.rb +27 -0
  265. data/ruby/2.5/gems/rake-10.5.0/lib/rake/scope.rb +42 -0
  266. data/ruby/2.5/gems/rake-10.5.0/lib/rake/task.rb +383 -0
  267. data/ruby/2.5/gems/rake-10.5.0/lib/rake/task_argument_error.rb +7 -0
  268. data/ruby/2.5/gems/rake-10.5.0/lib/rake/task_arguments.rb +98 -0
  269. data/ruby/2.5/gems/rake-10.5.0/lib/rake/task_manager.rb +307 -0
  270. data/ruby/2.5/gems/rake-10.5.0/lib/rake/tasklib.rb +24 -0
  271. data/ruby/2.5/gems/rake-10.5.0/lib/rake/testtask.rb +213 -0
  272. data/ruby/2.5/gems/rake-10.5.0/lib/rake/thread_history_display.rb +48 -0
  273. data/ruby/2.5/gems/rake-10.5.0/lib/rake/thread_pool.rb +164 -0
  274. data/ruby/2.5/gems/rake-10.5.0/lib/rake/trace_output.rb +22 -0
  275. data/ruby/2.5/gems/rake-10.5.0/lib/rake/version.rb +7 -0
  276. data/ruby/2.5/gems/rake-10.5.0/lib/rake/win32.rb +56 -0
  277. data/ruby/2.5/gems/rake-10.5.0/lib/rake.rb +79 -0
  278. data/ruby/2.5/gems/rake-10.5.0/rakelib/publish.rake +20 -0
  279. data/ruby/2.5/gems/rake-10.5.0/rakelib/test_times.rake +25 -0
  280. data/ruby/2.5/gems/rake-10.5.0/test/file_creation.rb +34 -0
  281. data/ruby/2.5/gems/rake-10.5.0/test/helper.rb +129 -0
  282. data/ruby/2.5/gems/rake-10.5.0/test/support/rakefile_definitions.rb +478 -0
  283. data/ruby/2.5/gems/rake-10.5.0/test/support/ruby_runner.rb +34 -0
  284. data/ruby/2.5/gems/rake-10.5.0/test/test_private_reader.rb +42 -0
  285. data/ruby/2.5/gems/rake-10.5.0/test/test_rake.rb +40 -0
  286. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_application.rb +643 -0
  287. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_application_options.rb +468 -0
  288. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_backtrace.rb +119 -0
  289. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_clean.rb +61 -0
  290. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_cpu_counter.rb +68 -0
  291. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_definitions.rb +84 -0
  292. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_directory_task.rb +76 -0
  293. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_dsl.rb +40 -0
  294. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_early_time.rb +31 -0
  295. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_extension.rb +59 -0
  296. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_file_creation_task.rb +56 -0
  297. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_file_list.rb +670 -0
  298. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb +8 -0
  299. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_file_task.rb +197 -0
  300. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_file_utils.rb +314 -0
  301. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_ftp_file.rb +74 -0
  302. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_functional.rb +482 -0
  303. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_invocation_chain.rb +64 -0
  304. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_late_time.rb +18 -0
  305. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_linked_list.rb +84 -0
  306. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_makefile_loader.rb +46 -0
  307. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_multi_task.rb +64 -0
  308. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_name_space.rb +57 -0
  309. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_package_task.rb +79 -0
  310. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_path_map.rb +168 -0
  311. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_path_map_explode.rb +34 -0
  312. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_path_map_partial.rb +18 -0
  313. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb +15 -0
  314. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_pseudo_status.rb +21 -0
  315. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb +20 -0
  316. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_reduce_compat.rb +26 -0
  317. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_require.rb +40 -0
  318. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_rules.rb +388 -0
  319. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_scope.rb +44 -0
  320. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_task.rb +393 -0
  321. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb +119 -0
  322. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_task_arguments.rb +127 -0
  323. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_task_lib.rb +9 -0
  324. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_task_manager.rb +178 -0
  325. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb +19 -0
  326. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb +172 -0
  327. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_test_task.rb +146 -0
  328. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_thread_pool.rb +145 -0
  329. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_top_level_functions.rb +71 -0
  330. data/ruby/2.5/gems/rake-10.5.0/test/test_rake_win32.rb +72 -0
  331. data/ruby/2.5/gems/rake-10.5.0/test/test_thread_history_display.rb +101 -0
  332. data/ruby/2.5/gems/rake-10.5.0/test/test_trace_output.rb +52 -0
  333. data/ruby/2.5/gems/ruby-progressbar-1.10.0/LICENSE.txt +19 -0
  334. data/ruby/2.5/gems/ruby-progressbar-1.10.0/README.md +38 -0
  335. data/ruby/2.5/gems/ruby-progressbar-1.10.0/Rakefile +2 -0
  336. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/base.rb +183 -0
  337. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/calculators/length.rb +100 -0
  338. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/calculators/running_average.rb +9 -0
  339. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/bar.rb +102 -0
  340. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/percentage.rb +29 -0
  341. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/rate.rb +43 -0
  342. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/time.rb +107 -0
  343. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components/title.rb +13 -0
  344. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/components.rb +5 -0
  345. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/errors/invalid_progress_error.rb +4 -0
  346. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/formatter.rb +27 -0
  347. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/molecule.rb +60 -0
  348. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format/string.rb +36 -0
  349. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/format.rb +3 -0
  350. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/output.rb +68 -0
  351. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/non_tty.rb +47 -0
  352. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/null.rb +33 -0
  353. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/outputs/tty.rb +32 -0
  354. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/progress.rb +118 -0
  355. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/refinements/enumerator.rb +23 -0
  356. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/refinements.rb +1 -0
  357. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/throttle.rb +25 -0
  358. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/time.rb +32 -0
  359. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/timer.rb +72 -0
  360. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar/version.rb +3 -0
  361. data/ruby/2.5/gems/ruby-progressbar-1.10.0/lib/ruby-progressbar.rb +18 -0
  362. data/ruby/2.5/specifications/ansi-1.5.0.gemspec +49 -0
  363. data/ruby/2.5/specifications/builder-3.2.3.gemspec +21 -0
  364. data/ruby/2.5/specifications/minitest-5.11.3.gemspec +39 -0
  365. data/ruby/2.5/specifications/minitest-reporters-1.2.0.gemspec +49 -0
  366. data/ruby/2.5/specifications/rake-10.5.0.gemspec +43 -0
  367. data/ruby/2.5/specifications/ruby-progressbar-1.10.0.gemspec +46 -0
  368. data/steenfest_palindrome.gemspec +38 -0
  369. metadata +453 -0
@@ -0,0 +1,142 @@
1
+ require "minitest"
2
+
3
+ module Minitest
4
+ def self.plugin_pride_options opts, _options # :nodoc:
5
+ opts.on "-p", "--pride", "Pride. Show your testing pride!" do
6
+ PrideIO.pride!
7
+ end
8
+ end
9
+
10
+ def self.plugin_pride_init options # :nodoc:
11
+ if PrideIO.pride? then
12
+ klass = ENV["TERM"] =~ /^xterm|-256color$/ ? PrideLOL : PrideIO
13
+ io = klass.new options[:io]
14
+
15
+ self.reporter.reporters.grep(Minitest::Reporter).each do |rep|
16
+ rep.io = io if rep.io.tty?
17
+ end
18
+ end
19
+ end
20
+
21
+ ##
22
+ # Show your testing pride!
23
+
24
+ class PrideIO
25
+ ##
26
+ # Activate the pride plugin. Called from both -p option and minitest/pride
27
+
28
+ def self.pride!
29
+ @pride = true
30
+ end
31
+
32
+ ##
33
+ # Are we showing our testing pride?
34
+
35
+ def self.pride?
36
+ @pride ||= false
37
+ end
38
+
39
+ # Start an escape sequence
40
+ ESC = "\e["
41
+
42
+ # End the escape sequence
43
+ NND = "#{ESC}0m"
44
+
45
+ # The IO we're going to pipe through.
46
+ attr_reader :io
47
+
48
+ def initialize io # :nodoc:
49
+ @io = io
50
+ # stolen from /System/Library/Perl/5.10.0/Term/ANSIColor.pm
51
+ # also reference http://en.wikipedia.org/wiki/ANSI_escape_code
52
+ @colors ||= (31..36).to_a
53
+ @size = @colors.size
54
+ @index = 0
55
+ end
56
+
57
+ ##
58
+ # Wrap print to colorize the output.
59
+
60
+ def print o
61
+ case o
62
+ when "." then
63
+ io.print pride o
64
+ when "E", "F" then
65
+ io.print "#{ESC}41m#{ESC}37m#{o}#{NND}"
66
+ when "S" then
67
+ io.print pride o
68
+ else
69
+ io.print o
70
+ end
71
+ end
72
+
73
+ def puts *o # :nodoc:
74
+ o.map! { |s|
75
+ s.to_s.sub(/Finished/) {
76
+ @index = 0
77
+ "Fabulous run".split(//).map { |c|
78
+ pride(c)
79
+ }.join
80
+ }
81
+ }
82
+
83
+ io.puts(*o)
84
+ end
85
+
86
+ ##
87
+ # Color a string.
88
+
89
+ def pride string
90
+ string = "*" if string == "."
91
+ c = @colors[@index % @size]
92
+ @index += 1
93
+ "#{ESC}#{c}m#{string}#{NND}"
94
+ end
95
+
96
+ def method_missing msg, *args # :nodoc:
97
+ io.send(msg, *args)
98
+ end
99
+ end
100
+
101
+ ##
102
+ # If you thought the PrideIO was colorful...
103
+ #
104
+ # (Inspired by lolcat, but with clean math)
105
+
106
+ class PrideLOL < PrideIO
107
+ PI_3 = Math::PI / 3 # :nodoc:
108
+
109
+ def initialize io # :nodoc:
110
+ # walk red, green, and blue around a circle separated by equal thirds.
111
+ #
112
+ # To visualize, type this into wolfram-alpha:
113
+ #
114
+ # plot (3*sin(x)+3), (3*sin(x+2*pi/3)+3), (3*sin(x+4*pi/3)+3)
115
+
116
+ # 6 has wide pretty gradients. 3 == lolcat, about half the width
117
+ @colors = (0...(6 * 7)).map { |n|
118
+ n *= 1.0 / 6
119
+ r = (3 * Math.sin(n ) + 3).to_i
120
+ g = (3 * Math.sin(n + 2 * PI_3) + 3).to_i
121
+ b = (3 * Math.sin(n + 4 * PI_3) + 3).to_i
122
+
123
+ # Then we take rgb and encode them in a single number using base 6.
124
+ # For some mysterious reason, we add 16... to clear the bottom 4 bits?
125
+ # Yes... they're ugly.
126
+
127
+ 36 * r + 6 * g + b + 16
128
+ }
129
+
130
+ super
131
+ end
132
+
133
+ ##
134
+ # Make the string even more colorful. Damnit.
135
+
136
+ def pride string
137
+ c = @colors[@index % @size]
138
+ @index += 1
139
+ "#{ESC}38;5;#{c}m#{string}#{NND}"
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,331 @@
1
+ require "minitest/test"
2
+
3
+ class Module # :nodoc:
4
+ def infect_an_assertion meth, new_name, dont_flip = false # :nodoc:
5
+ block = dont_flip == :block
6
+ dont_flip = false if block
7
+
8
+ # warn "%-22p -> %p %p" % [meth, new_name, dont_flip]
9
+ self.class_eval <<-EOM, __FILE__, __LINE__ + 1
10
+ def #{new_name} *args
11
+ Minitest::Expectation.new(self, Minitest::Spec.current).#{new_name}(*args)
12
+ end
13
+ EOM
14
+
15
+ Minitest::Expectation.class_eval <<-EOM, __FILE__, __LINE__ + 1
16
+ def #{new_name} *args
17
+ case
18
+ when #{!!dont_flip} then
19
+ ctx.#{meth}(target, *args)
20
+ when #{block} && Proc === target then
21
+ ctx.#{meth}(*args, &target)
22
+ else
23
+ ctx.#{meth}(args.first, target, *args[1..-1])
24
+ end
25
+ end
26
+ EOM
27
+ end
28
+ end
29
+
30
+ Minitest::Expectation = Struct.new :target, :ctx # :nodoc:
31
+
32
+ ##
33
+ # Kernel extensions for minitest
34
+
35
+ module Kernel
36
+ ##
37
+ # Describe a series of expectations for a given target +desc+.
38
+ #
39
+ # Defines a test class subclassing from either Minitest::Spec or
40
+ # from the surrounding describe's class. The surrounding class may
41
+ # subclass Minitest::Spec manually in order to easily share code:
42
+ #
43
+ # class MySpec < Minitest::Spec
44
+ # # ... shared code ...
45
+ # end
46
+ #
47
+ # class TestStuff < MySpec
48
+ # it "does stuff" do
49
+ # # shared code available here
50
+ # end
51
+ # describe "inner stuff" do
52
+ # it "still does stuff" do
53
+ # # ...and here
54
+ # end
55
+ # end
56
+ # end
57
+ #
58
+ # For more information on getting started with writing specs, see:
59
+ #
60
+ # http://www.rubyinside.com/a-minitestspec-tutorial-elegant-spec-style-testing-that-comes-with-ruby-5354.html
61
+ #
62
+ # For some suggestions on how to improve your specs, try:
63
+ #
64
+ # http://betterspecs.org
65
+ #
66
+ # but do note that several items there are debatable or specific to
67
+ # rspec.
68
+ #
69
+ # For more information about expectations, see Minitest::Expectations.
70
+
71
+ def describe desc, *additional_desc, &block # :doc:
72
+ stack = Minitest::Spec.describe_stack
73
+ name = [stack.last, desc, *additional_desc].compact.join("::")
74
+ sclas = stack.last || if Class === self && kind_of?(Minitest::Spec::DSL) then
75
+ self
76
+ else
77
+ Minitest::Spec.spec_type desc, *additional_desc
78
+ end
79
+
80
+ cls = sclas.create name, desc
81
+
82
+ stack.push cls
83
+ cls.class_eval(&block)
84
+ stack.pop
85
+ cls
86
+ end
87
+ private :describe
88
+ end
89
+
90
+ ##
91
+ # Minitest::Spec -- The faster, better, less-magical spec framework!
92
+ #
93
+ # For a list of expectations, see Minitest::Expectations.
94
+
95
+ class Minitest::Spec < Minitest::Test
96
+
97
+ def self.current # :nodoc:
98
+ Thread.current[:current_spec]
99
+ end
100
+
101
+ def initialize name # :nodoc:
102
+ super
103
+ Thread.current[:current_spec] = self
104
+ end
105
+
106
+ ##
107
+ # Oh look! A Minitest::Spec::DSL module! Eat your heart out DHH.
108
+
109
+ module DSL
110
+ ##
111
+ # Contains pairs of matchers and Spec classes to be used to
112
+ # calculate the superclass of a top-level describe. This allows for
113
+ # automatically customizable spec types.
114
+ #
115
+ # See: register_spec_type and spec_type
116
+
117
+ TYPES = [[//, Minitest::Spec]]
118
+
119
+ ##
120
+ # Register a new type of spec that matches the spec's description.
121
+ # This method can take either a Regexp and a spec class or a spec
122
+ # class and a block that takes the description and returns true if
123
+ # it matches.
124
+ #
125
+ # Eg:
126
+ #
127
+ # register_spec_type(/Controller$/, Minitest::Spec::Rails)
128
+ #
129
+ # or:
130
+ #
131
+ # register_spec_type(Minitest::Spec::RailsModel) do |desc|
132
+ # desc.superclass == ActiveRecord::Base
133
+ # end
134
+
135
+ def register_spec_type *args, &block
136
+ if block then
137
+ matcher, klass = block, args.first
138
+ else
139
+ matcher, klass = *args
140
+ end
141
+ TYPES.unshift [matcher, klass]
142
+ end
143
+
144
+ ##
145
+ # Figure out the spec class to use based on a spec's description. Eg:
146
+ #
147
+ # spec_type("BlahController") # => Minitest::Spec::Rails
148
+
149
+ def spec_type desc, *additional
150
+ TYPES.find { |matcher, _klass|
151
+ if matcher.respond_to? :call then
152
+ matcher.call desc, *additional
153
+ else
154
+ matcher === desc.to_s
155
+ end
156
+ }.last
157
+ end
158
+
159
+ def describe_stack # :nodoc:
160
+ Thread.current[:describe_stack] ||= []
161
+ end
162
+
163
+ def children # :nodoc:
164
+ @children ||= []
165
+ end
166
+
167
+ def nuke_test_methods! # :nodoc:
168
+ self.public_instance_methods.grep(/^test_/).each do |name|
169
+ self.send :undef_method, name
170
+ end
171
+ end
172
+
173
+ ##
174
+ # Define a 'before' action. Inherits the way normal methods should.
175
+ #
176
+ # NOTE: +type+ is ignored and is only there to make porting easier.
177
+ #
178
+ # Equivalent to Minitest::Test#setup.
179
+
180
+ def before _type = nil, &block
181
+ define_method :setup do
182
+ super()
183
+ self.instance_eval(&block)
184
+ end
185
+ end
186
+
187
+ ##
188
+ # Define an 'after' action. Inherits the way normal methods should.
189
+ #
190
+ # NOTE: +type+ is ignored and is only there to make porting easier.
191
+ #
192
+ # Equivalent to Minitest::Test#teardown.
193
+
194
+ def after _type = nil, &block
195
+ define_method :teardown do
196
+ self.instance_eval(&block)
197
+ super()
198
+ end
199
+ end
200
+
201
+ ##
202
+ # Define an expectation with name +desc+. Name gets morphed to a
203
+ # proper test method name. For some freakish reason, people who
204
+ # write specs don't like class inheritance, so this goes way out of
205
+ # its way to make sure that expectations aren't inherited.
206
+ #
207
+ # This is also aliased to #specify and doesn't require a +desc+ arg.
208
+ #
209
+ # Hint: If you _do_ want inheritance, use minitest/test. You can mix
210
+ # and match between assertions and expectations as much as you want.
211
+
212
+ def it desc = "anonymous", &block
213
+ block ||= proc { skip "(no tests defined)" }
214
+
215
+ @specs ||= 0
216
+ @specs += 1
217
+
218
+ name = "test_%04d_%s" % [ @specs, desc ]
219
+
220
+ undef_klasses = self.children.reject { |c| c.public_method_defined? name }
221
+
222
+ define_method name, &block
223
+
224
+ undef_klasses.each do |undef_klass|
225
+ undef_klass.send :undef_method, name
226
+ end
227
+
228
+ name
229
+ end
230
+
231
+ ##
232
+ # Essentially, define an accessor for +name+ with +block+.
233
+ #
234
+ # Why use let instead of def? I honestly don't know.
235
+
236
+ def let name, &block
237
+ name = name.to_s
238
+ pre, post = "let '#{name}' cannot ", ". Please use another name."
239
+ methods = Minitest::Spec.instance_methods.map(&:to_s) - %w[subject]
240
+ raise ArgumentError, "#{pre}begin with 'test'#{post}" if
241
+ name =~ /\Atest/
242
+ raise ArgumentError, "#{pre}override a method in Minitest::Spec#{post}" if
243
+ methods.include? name
244
+
245
+ define_method name do
246
+ @_memoized ||= {}
247
+ @_memoized.fetch(name) { |k| @_memoized[k] = instance_eval(&block) }
248
+ end
249
+ end
250
+
251
+ ##
252
+ # Another lazy man's accessor generator. Made even more lazy by
253
+ # setting the name for you to +subject+.
254
+
255
+ def subject &block
256
+ let :subject, &block
257
+ end
258
+
259
+ def create name, desc # :nodoc:
260
+ cls = Class.new(self) do
261
+ @name = name
262
+ @desc = desc
263
+
264
+ nuke_test_methods!
265
+ end
266
+
267
+ children << cls
268
+
269
+ cls
270
+ end
271
+
272
+ def name # :nodoc:
273
+ defined?(@name) ? @name : super
274
+ end
275
+
276
+ def to_s # :nodoc:
277
+ name # Can't alias due to 1.8.7, not sure why
278
+ end
279
+
280
+ attr_reader :desc # :nodoc:
281
+ alias :specify :it
282
+
283
+ ##
284
+ # Rdoc... why are you so dumb?
285
+
286
+ module InstanceMethods
287
+ ##
288
+ # Returns a value monad that has all of Expectations methods
289
+ # available to it.
290
+ #
291
+ # Also aliased to #value and #expect for your aesthetic pleasure:
292
+ #
293
+ # _(1 + 1).must_equal 2
294
+ # value(1 + 1).must_equal 2
295
+ # expect(1 + 1).must_equal 2
296
+ #
297
+ # This method of expectation-based testing is preferable to
298
+ # straight-expectation methods (on Object) because it stores its
299
+ # test context, bypassing our hacky use of thread-local variables.
300
+ #
301
+ # At some point, the methods on Object will be deprecated and then
302
+ # removed.
303
+
304
+ def _ value = nil, &block
305
+ Minitest::Expectation.new block || value, self
306
+ end
307
+
308
+ alias value _
309
+ alias expect _
310
+
311
+ def before_setup # :nodoc:
312
+ super
313
+ Thread.current[:current_spec] = self
314
+ end
315
+ end
316
+
317
+ def self.extended obj # :nodoc:
318
+ obj.send :include, InstanceMethods
319
+ end
320
+ end
321
+
322
+ extend DSL
323
+
324
+ TYPES = DSL::TYPES # :nodoc:
325
+ end
326
+
327
+ require "minitest/expectations"
328
+
329
+ class Object # :nodoc:
330
+ include Minitest::Expectations unless ENV["MT_NO_EXPECTATIONS"]
331
+ end
@@ -0,0 +1,220 @@
1
+ require "minitest" unless defined? Minitest::Runnable
2
+
3
+ module Minitest
4
+ ##
5
+ # Subclass Test to create your own tests. Typically you'll want a
6
+ # Test subclass per implementation class.
7
+ #
8
+ # See Minitest::Assertions
9
+
10
+ class Test < Runnable
11
+ require "minitest/assertions"
12
+ include Minitest::Assertions
13
+ include Minitest::Reportable
14
+
15
+ def class_name # :nodoc:
16
+ self.class.name # for Minitest::Reportable
17
+ end
18
+
19
+ PASSTHROUGH_EXCEPTIONS = [NoMemoryError, SignalException, SystemExit] # :nodoc:
20
+
21
+ # :stopdoc:
22
+ class << self; attr_accessor :io_lock; end
23
+ self.io_lock = Mutex.new
24
+ # :startdoc:
25
+
26
+ ##
27
+ # Call this at the top of your tests when you absolutely
28
+ # positively need to have ordered tests. In doing so, you're
29
+ # admitting that you suck and your tests are weak.
30
+
31
+ def self.i_suck_and_my_tests_are_order_dependent!
32
+ class << self
33
+ undef_method :test_order if method_defined? :test_order
34
+ define_method :test_order do :alpha end
35
+ end
36
+ end
37
+
38
+ ##
39
+ # Make diffs for this Test use #pretty_inspect so that diff
40
+ # in assert_equal can have more details. NOTE: this is much slower
41
+ # than the regular inspect but much more usable for complex
42
+ # objects.
43
+
44
+ def self.make_my_diffs_pretty!
45
+ require "pp"
46
+
47
+ define_method :mu_pp, &:pretty_inspect
48
+ end
49
+
50
+ ##
51
+ # Call this at the top of your tests when you want to run your
52
+ # tests in parallel. In doing so, you're admitting that you rule
53
+ # and your tests are awesome.
54
+
55
+ def self.parallelize_me!
56
+ include Minitest::Parallel::Test
57
+ extend Minitest::Parallel::Test::ClassMethods
58
+ end
59
+
60
+ ##
61
+ # Returns all instance methods starting with "test_". Based on
62
+ # #test_order, the methods are either sorted, randomized
63
+ # (default), or run in parallel.
64
+
65
+ def self.runnable_methods
66
+ methods = methods_matching(/^test_/)
67
+
68
+ case self.test_order
69
+ when :random, :parallel then
70
+ max = methods.size
71
+ methods.sort.sort_by { rand max }
72
+ when :alpha, :sorted then
73
+ methods.sort
74
+ else
75
+ raise "Unknown test_order: #{self.test_order.inspect}"
76
+ end
77
+ end
78
+
79
+ ##
80
+ # Defines the order to run tests (:random by default). Override
81
+ # this or use a convenience method to change it for your tests.
82
+
83
+ def self.test_order
84
+ :random
85
+ end
86
+
87
+ TEARDOWN_METHODS = %w[ before_teardown teardown after_teardown ] # :nodoc:
88
+
89
+ ##
90
+ # Runs a single test with setup/teardown hooks.
91
+
92
+ def run
93
+ with_info_handler do
94
+ time_it do
95
+ capture_exceptions do
96
+ before_setup; setup; after_setup
97
+
98
+ self.send self.name
99
+ end
100
+
101
+ TEARDOWN_METHODS.each do |hook|
102
+ capture_exceptions do
103
+ self.send hook
104
+ end
105
+ end
106
+ end
107
+ end
108
+
109
+ Result.from self # per contract
110
+ end
111
+
112
+ ##
113
+ # Provides before/after hooks for setup and teardown. These are
114
+ # meant for library writers, NOT for regular test authors. See
115
+ # #before_setup for an example.
116
+
117
+ module LifecycleHooks
118
+
119
+ ##
120
+ # Runs before every test, before setup. This hook is meant for
121
+ # libraries to extend minitest. It is not meant to be used by
122
+ # test developers.
123
+ #
124
+ # As a simplistic example:
125
+ #
126
+ # module MyMinitestPlugin
127
+ # def before_setup
128
+ # super
129
+ # # ... stuff to do before setup is run
130
+ # end
131
+ #
132
+ # def after_setup
133
+ # # ... stuff to do after setup is run
134
+ # super
135
+ # end
136
+ #
137
+ # def before_teardown
138
+ # super
139
+ # # ... stuff to do before teardown is run
140
+ # end
141
+ #
142
+ # def after_teardown
143
+ # # ... stuff to do after teardown is run
144
+ # super
145
+ # end
146
+ # end
147
+ #
148
+ # class MiniTest::Test
149
+ # include MyMinitestPlugin
150
+ # end
151
+
152
+ def before_setup; end
153
+
154
+ ##
155
+ # Runs before every test. Use this to set up before each test
156
+ # run.
157
+
158
+ def setup; end
159
+
160
+ ##
161
+ # Runs before every test, after setup. This hook is meant for
162
+ # libraries to extend minitest. It is not meant to be used by
163
+ # test developers.
164
+ #
165
+ # See #before_setup for an example.
166
+
167
+ def after_setup; end
168
+
169
+ ##
170
+ # Runs after every test, before teardown. This hook is meant for
171
+ # libraries to extend minitest. It is not meant to be used by
172
+ # test developers.
173
+ #
174
+ # See #before_setup for an example.
175
+
176
+ def before_teardown; end
177
+
178
+ ##
179
+ # Runs after every test. Use this to clean up after each test
180
+ # run.
181
+
182
+ def teardown; end
183
+
184
+ ##
185
+ # Runs after every test, after teardown. This hook is meant for
186
+ # libraries to extend minitest. It is not meant to be used by
187
+ # test developers.
188
+ #
189
+ # See #before_setup for an example.
190
+
191
+ def after_teardown; end
192
+ end # LifecycleHooks
193
+
194
+ def capture_exceptions # :nodoc:
195
+ yield
196
+ rescue *PASSTHROUGH_EXCEPTIONS
197
+ raise
198
+ rescue Assertion => e
199
+ self.failures << e
200
+ rescue Exception => e
201
+ self.failures << UnexpectedError.new(e)
202
+ end
203
+
204
+ def with_info_handler &block # :nodoc:
205
+ t0 = Minitest.clock_time
206
+
207
+ handler = lambda do
208
+ warn "\nCurrent: %s#%s %.2fs" % [self.class, self.name, Minitest.clock_time - t0]
209
+ end
210
+
211
+ self.class.on_signal ::Minitest.info_signal, handler, &block
212
+ end
213
+
214
+ include LifecycleHooks
215
+ include Guard
216
+ extend Guard
217
+ end # Test
218
+ end
219
+
220
+ require "minitest/unit" unless defined?(MiniTest) # compatibility layer only