hirohig_palindrome 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 (283) hide show
  1. checksums.yaml +7 -0
  2. data/.DS_Store +0 -0
  3. data/.gitignore +8 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +8 -0
  6. data/Gemfile.lock +30 -0
  7. data/README.md +36 -0
  8. data/Rakefile +10 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/hirohig_palindrome.gemspec +33 -0
  12. data/lib/hirohig_palindrome/version.rb +3 -0
  13. data/lib/hirohig_palindrome.rb +17 -0
  14. data/vendor/.DS_Store +0 -0
  15. data/vendor/bundle/.DS_Store +0 -0
  16. data/vendor/bundle/ruby/.DS_Store +0 -0
  17. data/vendor/bundle/ruby/2.6.0/.DS_Store +0 -0
  18. data/vendor/bundle/ruby/2.6.0/bin/rake +27 -0
  19. data/vendor/bundle/ruby/2.6.0/cache/ansi-1.5.0.gem +0 -0
  20. data/vendor/bundle/ruby/2.6.0/cache/builder-3.2.4.gem +0 -0
  21. data/vendor/bundle/ruby/2.6.0/cache/minitest-5.14.0.gem +0 -0
  22. data/vendor/bundle/ruby/2.6.0/cache/minitest-reporters-1.2.0.gem +0 -0
  23. data/vendor/bundle/ruby/2.6.0/cache/rake-12.3.3.gem +0 -0
  24. data/vendor/bundle/ruby/2.6.0/cache/ruby-progressbar-1.10.1.gem +0 -0
  25. data/vendor/bundle/ruby/2.6.0/gems/.DS_Store +0 -0
  26. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/.index +77 -0
  27. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/.yardopts +8 -0
  28. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/DEMO.md +451 -0
  29. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/HISTORY.md +217 -0
  30. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/LICENSE.txt +23 -0
  31. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/NOTICE.md +170 -0
  32. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/README.md +91 -0
  33. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/01_ansicode.md +65 -0
  34. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/02_core.md +11 -0
  35. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/03_logger.md +30 -0
  36. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/04_progressbar.md +62 -0
  37. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/05_mixin.md +37 -0
  38. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/06_string.md +56 -0
  39. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/07_columns.md +89 -0
  40. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/08_table.md +28 -0
  41. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/09_diff.md +47 -0
  42. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/10_bbcode.md +24 -0
  43. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/11_terminal.md +8 -0
  44. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/applique/ae.rb +1 -0
  45. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/demo/applique/output.rb +5 -0
  46. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/bbcode.rb +334 -0
  47. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/chain.rb +50 -0
  48. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/chart.rb +100 -0
  49. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/code.rb +349 -0
  50. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/columns.rb +197 -0
  51. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/constants.rb +25 -0
  52. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/core.rb +30 -0
  53. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/diff.rb +215 -0
  54. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/hexdump.rb +122 -0
  55. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/logger.rb +211 -0
  56. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/mixin.rb +121 -0
  57. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/progressbar.rb +292 -0
  58. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/string.rb +254 -0
  59. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/table.rb +179 -0
  60. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/curses.rb +26 -0
  61. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/stty.rb +62 -0
  62. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/termios.rb +68 -0
  63. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal/win32.rb +107 -0
  64. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/terminal.rb +44 -0
  65. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi/version.rb +15 -0
  66. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi.rb +22 -0
  67. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/lib/ansi.yml +77 -0
  68. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_ansicode.rb +43 -0
  69. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_bbcode.rb +35 -0
  70. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_mixin.rb +35 -0
  71. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/case_progressbar.rb +21 -0
  72. data/vendor/bundle/ruby/2.6.0/gems/ansi-1.5.0/test/test_helper.rb +3 -0
  73. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/CHANGES +119 -0
  74. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/MIT-LICENSE +20 -0
  75. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/README.md +258 -0
  76. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/Rakefile +194 -0
  77. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/builder.blurb +27 -0
  78. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/builder.gemspec +45 -0
  79. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/jamis.rb +592 -0
  80. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/releases/builder-1.2.4.rdoc +31 -0
  81. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/releases/builder-2.0.0.rdoc +46 -0
  82. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/doc/releases/builder-2.1.1.rdoc +58 -0
  83. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/blankslate.rb +138 -0
  84. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/blankslate.rb +24 -0
  85. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/version.rb +9 -0
  86. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xchar.rb +198 -0
  87. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xmlbase.rb +200 -0
  88. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xmlevents.rb +64 -0
  89. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder/xmlmarkup.rb +345 -0
  90. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/lib/builder.rb +14 -0
  91. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/rakelib/publish.rake +21 -0
  92. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/rakelib/tags.rake +63 -0
  93. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/rakelib/testing.rake +8 -0
  94. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/helper.rb +13 -0
  95. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/performance.rb +42 -0
  96. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/preload.rb +40 -0
  97. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_blankslate.rb +208 -0
  98. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_eventbuilder.rb +151 -0
  99. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_markupbuilder.rb +617 -0
  100. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_method_caching.rb +63 -0
  101. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_namecollision.rb +40 -0
  102. data/vendor/bundle/ruby/2.6.0/gems/builder-3.2.4/test/test_xchar.rb +85 -0
  103. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/.autotest +34 -0
  104. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/History.rdoc +1380 -0
  105. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/Manifest.txt +27 -0
  106. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/README.rdoc +764 -0
  107. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/Rakefile +72 -0
  108. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/design_rationale.rb +52 -0
  109. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/hoe/minitest.rb +32 -0
  110. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/assertions.rb +807 -0
  111. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/autorun.rb +13 -0
  112. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/benchmark.rb +455 -0
  113. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/expectations.rb +303 -0
  114. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/hell.rb +11 -0
  115. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/mock.rb +240 -0
  116. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/parallel.rb +70 -0
  117. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/pride.rb +4 -0
  118. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/pride_plugin.rb +142 -0
  119. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/spec.rb +342 -0
  120. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/test.rb +220 -0
  121. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/unit.rb +45 -0
  122. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest.rb +1053 -0
  123. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/metametameta.rb +117 -0
  124. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_assertions.rb +1567 -0
  125. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_benchmark.rb +137 -0
  126. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_mock.rb +872 -0
  127. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_reporter.rb +299 -0
  128. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_spec.rb +1041 -0
  129. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_test.rb +1080 -0
  130. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.gitignore +27 -0
  131. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.ruby-gemset +1 -0
  132. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.travis.yml +10 -0
  133. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/.yardopts +6 -0
  134. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/CHANGELOG.md +40 -0
  135. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/Gemfile +2 -0
  136. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/LICENSE +20 -0
  137. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/README.md +115 -0
  138. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/Rakefile +60 -0
  139. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/default-reporter.png +0 -0
  140. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/mean_time_reporter.png +0 -0
  141. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/progress-reporter.png +0 -0
  142. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/assets/spec-reporter.png +0 -0
  143. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/extensible_backtrace_filter.rb +67 -0
  144. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/minitest_reporter_plugin.rb +75 -0
  145. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/old_activesupport_fix.rb +24 -0
  146. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/relative_position.rb +26 -0
  147. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/ansi.rb +31 -0
  148. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/base_reporter.rb +117 -0
  149. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/default_reporter.rb +228 -0
  150. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/html_reporter.rb +221 -0
  151. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/junit_reporter.rb +157 -0
  152. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/mean_time_reporter.rb +392 -0
  153. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/progress_reporter.rb +96 -0
  154. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/ruby_mate_reporter.rb +54 -0
  155. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/rubymine_reporter.rb +117 -0
  156. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/spec_reporter.rb +61 -0
  157. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters/version.rb +5 -0
  158. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/reporters.rb +89 -0
  159. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/lib/minitest/templates/index.html.erb +83 -0
  160. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/minitest-reporters.gemspec +31 -0
  161. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/junit_filename_bug_example_test.rb +21 -0
  162. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/mean_time_test.rb +8 -0
  163. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/progress_detailed_skip_test.rb +8 -0
  164. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/progress_test.rb +8 -0
  165. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/sample_test.rb +15 -0
  166. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/fixtures/spec_test.rb +13 -0
  167. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/gallery/bad_test.rb +25 -0
  168. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/gallery/good_test.rb +14 -0
  169. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/integration/reporters/junit_reporter_test.rb +12 -0
  170. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/integration/reporters/mean_time_reporter_test.rb +7 -0
  171. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/integration/reporters/progress_reporter_test.rb +34 -0
  172. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/test_helper.rb +22 -0
  173. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/extensible_backtrace_filter_test.rb +42 -0
  174. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/mean_time_reporter_unit_test.rb +152 -0
  175. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/minitest_reporter_plugin_test.rb +14 -0
  176. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/reporters_test.rb +52 -0
  177. data/vendor/bundle/ruby/2.6.0/gems/minitest-reporters-1.2.0/test/unit/minitest/spec_reporter_test.rb +41 -0
  178. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/CONTRIBUTING.rdoc +43 -0
  179. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/Gemfile +3 -0
  180. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/History.rdoc +2344 -0
  181. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/MIT-LICENSE +21 -0
  182. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/README.rdoc +156 -0
  183. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/Rakefile +41 -0
  184. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/azure-pipelines.yml +11 -0
  185. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/bundle +105 -0
  186. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/console +7 -0
  187. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/rake +29 -0
  188. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/rdoc +29 -0
  189. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/rubocop +29 -0
  190. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/bin/setup +6 -0
  191. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/command_line_usage.rdoc +158 -0
  192. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/Rakefile1 +38 -0
  193. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/Rakefile2 +35 -0
  194. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/a.c +6 -0
  195. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/b.c +6 -0
  196. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/example/main.c +11 -0
  197. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/glossary.rdoc +42 -0
  198. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/jamis.rb +592 -0
  199. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/proto_rake.rdoc +127 -0
  200. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/rake.1 +156 -0
  201. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/rakefile.rdoc +622 -0
  202. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/doc/rational.rdoc +151 -0
  203. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/exe/rake +27 -0
  204. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/application.rb +824 -0
  205. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/backtrace.rb +24 -0
  206. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/clean.rb +78 -0
  207. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/cloneable.rb +17 -0
  208. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/cpu_counter.rb +107 -0
  209. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/default_loader.rb +15 -0
  210. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/dsl_definition.rb +195 -0
  211. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/early_time.rb +22 -0
  212. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/ext/core.rb +26 -0
  213. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/ext/string.rb +176 -0
  214. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_creation_task.rb +25 -0
  215. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_list.rb +435 -0
  216. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_task.rb +54 -0
  217. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_utils.rb +137 -0
  218. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/file_utils_ext.rb +145 -0
  219. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/invocation_chain.rb +57 -0
  220. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/invocation_exception_mixin.rb +17 -0
  221. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/late_time.rb +18 -0
  222. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/linked_list.rb +112 -0
  223. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/loaders/makefile.rb +54 -0
  224. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/multi_task.rb +14 -0
  225. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/name_space.rb +38 -0
  226. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/packagetask.rb +207 -0
  227. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/phony.rb +16 -0
  228. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/private_reader.rb +21 -0
  229. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/promise.rb +100 -0
  230. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/pseudo_status.rb +30 -0
  231. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rake_module.rb +67 -0
  232. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rake_test_loader.rb +27 -0
  233. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  234. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/scope.rb +43 -0
  235. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task.rb +413 -0
  236. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_argument_error.rb +8 -0
  237. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_arguments.rb +109 -0
  238. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/task_manager.rb +324 -0
  239. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/tasklib.rb +12 -0
  240. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/testtask.rb +224 -0
  241. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/thread_history_display.rb +49 -0
  242. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/thread_pool.rb +163 -0
  243. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/trace_output.rb +23 -0
  244. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/version.rb +10 -0
  245. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake/win32.rb +51 -0
  246. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/lib/rake.rb +71 -0
  247. data/vendor/bundle/ruby/2.6.0/gems/rake-12.3.3/rake.gemspec +42 -0
  248. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/LICENSE.txt +19 -0
  249. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/README.md +38 -0
  250. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/Rakefile +2 -0
  251. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/base.rb +183 -0
  252. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/calculators/length.rb +100 -0
  253. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/calculators/running_average.rb +9 -0
  254. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/bar.rb +102 -0
  255. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/percentage.rb +29 -0
  256. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/rate.rb +43 -0
  257. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/time.rb +107 -0
  258. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components/title.rb +13 -0
  259. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/components.rb +5 -0
  260. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/errors/invalid_progress_error.rb +4 -0
  261. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/formatter.rb +27 -0
  262. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/molecule.rb +60 -0
  263. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format/string.rb +36 -0
  264. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/format.rb +3 -0
  265. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/output.rb +68 -0
  266. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/non_tty.rb +47 -0
  267. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/null.rb +33 -0
  268. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/outputs/tty.rb +32 -0
  269. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/progress.rb +118 -0
  270. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/refinements/enumerator.rb +23 -0
  271. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/refinements.rb +1 -0
  272. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/throttle.rb +25 -0
  273. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/time.rb +32 -0
  274. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/timer.rb +72 -0
  275. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar/version.rb +3 -0
  276. data/vendor/bundle/ruby/2.6.0/gems/ruby-progressbar-1.10.1/lib/ruby-progressbar.rb +22 -0
  277. data/vendor/bundle/ruby/2.6.0/specifications/ansi-1.5.0.gemspec +49 -0
  278. data/vendor/bundle/ruby/2.6.0/specifications/builder-3.2.4.gemspec +23 -0
  279. data/vendor/bundle/ruby/2.6.0/specifications/minitest-5.14.0.gemspec +41 -0
  280. data/vendor/bundle/ruby/2.6.0/specifications/minitest-reporters-1.2.0.gemspec +48 -0
  281. data/vendor/bundle/ruby/2.6.0/specifications/rake-12.3.3.gemspec +49 -0
  282. data/vendor/bundle/ruby/2.6.0/specifications/ruby-progressbar-1.10.1.gemspec +46 -0
  283. metadata +326 -0
@@ -0,0 +1,392 @@
1
+ require 'minitest/reporters'
2
+ require 'yaml'
3
+
4
+ module Minitest
5
+ module Reporters
6
+
7
+ # This reporter creates a report providing the average (mean), minimum and
8
+ # maximum times for a test to run. Running this for all your tests will
9
+ # allow you to:
10
+ #
11
+ # 1) Identify the slowest running tests over time as potential candidates
12
+ # for improvements or refactoring.
13
+ # 2) Identify (and fix) regressions in test run speed caused by changes to
14
+ # your tests or algorithms in your code.
15
+ # 3) Provide an abundance of statistics to enjoy.
16
+ #
17
+ # This is achieved by creating a (configurable) 'previous runs' statistics
18
+ # file which is parsed at the end of each run to provide a new
19
+ # (configurable) report. These statistics can be reset at any time by using
20
+ # a simple rake task:
21
+ #
22
+ # rake reset_statistics
23
+ #
24
+ class MeanTimeReporter < Minitest::Reporters::DefaultReporter
25
+
26
+ class InvalidOrder < StandardError; end
27
+ class InvalidSortColumn < StandardError; end
28
+
29
+ # Reset the statistics file for this reporter. Called via a rake task:
30
+ #
31
+ # rake reset_statistics
32
+ #
33
+ # @return [Boolean]
34
+ def self.reset_statistics!
35
+ new.reset_statistics!
36
+ end
37
+
38
+ # @param options [Hash]
39
+ # @option previous_runs_filename [String] Contains the times for each test
40
+ # by description. Defaults to '/tmp/minitest_reporters_previous_run'.
41
+ # @option report_filename [String] Contains the parsed results for the
42
+ # last test run. Defaults to '/tmp/minitest_reporters_report'.
43
+ # @option show_count [Fixnum] The number of tests to show in the report
44
+ # summary at the end of the test run. Default is 15.
45
+ # @option show_progress [Boolean] If true it prints pass/skip/fail marks.
46
+ # Default is true.
47
+ # @option show_all_runs [Boolean] If true it shows all recorded suit results.
48
+ # Default is true.
49
+ # @option sort_column [Symbol] One of :avg (default), :min, :max, :last.
50
+ # Determines the column by which the report summary is sorted.
51
+ # @option order [Symbol] One of :desc (default), or :asc. By default the
52
+ # report summary is listed slowest to fastest (:desc). :asc will order
53
+ # the report summary as fastest to slowest.
54
+ # @return [Minitest::Reporters::MeanTimeReporter]
55
+ def initialize(options = {})
56
+ super
57
+
58
+ @all_suite_times = []
59
+ end
60
+
61
+ # Copies the suite times from the
62
+ # {Minitest::Reporters::DefaultReporter#after_suite} method, making them
63
+ # available to this class.
64
+ #
65
+ # @return [Hash<String => Float>]
66
+ def after_suite(suite)
67
+ super
68
+
69
+ @all_suite_times = @suite_times
70
+ end
71
+
72
+ # Runs the {Minitest::Reporters::DefaultReporter#report} method and then
73
+ # enhances it by storing the results to the 'previous_runs_filename' and
74
+ # outputs the parsed results to both the 'report_filename' and the
75
+ # terminal.
76
+ #
77
+ def report
78
+ super
79
+
80
+ create_or_update_previous_runs!
81
+
82
+ create_new_report!
83
+
84
+ write_to_screen!
85
+ end
86
+
87
+ def on_start
88
+ super if options[:show_progress]
89
+ end
90
+
91
+ def on_record(test)
92
+ super if options[:show_progress]
93
+ end
94
+
95
+ def on_report
96
+ super if options[:show_progress]
97
+ end
98
+
99
+ # Resets the 'previous runs' file, essentially removing all previous
100
+ # statistics gathered.
101
+ #
102
+ # @return [void]
103
+ def reset_statistics!
104
+ File.open(previous_runs_filename, 'w+') { |f| f.write('') }
105
+ end
106
+
107
+ protected
108
+
109
+ attr_accessor :all_suite_times
110
+
111
+ private
112
+
113
+ # @return [Hash<String => Float>]
114
+ def current_run
115
+ Hash[all_suite_times]
116
+ end
117
+
118
+ # @return [Hash] Sets default values for the filenames used by this class,
119
+ # and the number of tests to output to output to the screen after each
120
+ # run.
121
+ def defaults
122
+ {
123
+ order: :desc,
124
+ show_count: 15,
125
+ show_progress: true,
126
+ show_all_runs: true,
127
+ sort_column: :avg,
128
+ previous_runs_filename: '/tmp/minitest_reporters_previous_run',
129
+ report_filename: '/tmp/minitest_reporters_report',
130
+ }
131
+ end
132
+
133
+ # Added to the top of the report file and to the screen output.
134
+ #
135
+ # @return [String]
136
+ def report_title
137
+ "\n\e[4mMinitest Reporters: Mean Time Report\e[24m " \
138
+ "(Samples: #{samples}, Order: #{sort_column.inspect} " \
139
+ "#{order.inspect})\n"
140
+ end
141
+
142
+ # The report itself. Displays statistics about all runs, ideal for use
143
+ # with the Unix 'head' command. Listed in slowest average descending
144
+ # order.
145
+ #
146
+ # @return [String]
147
+ def report_body
148
+ order_sorted_body.each_with_object([]) do |result, obj|
149
+ rating = rate(result[:last], result[:min], result[:max])
150
+
151
+ obj << "#{avg_label} #{result[:avg].to_s.ljust(12)} " \
152
+ "#{min_label} #{result[:min].to_s.ljust(12)} " \
153
+ "#{max_label} #{result[:max].to_s.ljust(12)} " \
154
+ "#{run_label(rating)} #{result[:last].to_s.ljust(12)} " \
155
+ "#{des_label} #{result[:desc]}\n"
156
+ end.join
157
+ end
158
+
159
+ # @return [String] All of the column-sorted results sorted by the :order
160
+ # option. (Defaults to :desc).
161
+ def order_sorted_body
162
+ if desc?
163
+ column_sorted_body.reverse
164
+
165
+ elsif asc?
166
+ column_sorted_body
167
+
168
+ end
169
+ end
170
+
171
+ # @return [Array<Hash<Symbol => String>>] All of the results sorted by
172
+ # the :sort_column option. (Defaults to :avg).
173
+ def column_sorted_body
174
+ runs = options[:show_all_runs] ? previous_run : current_run
175
+ runs.keys.each_with_object([]) do |description, obj|
176
+ timings = previous_run[description]
177
+ size = Array(timings).size
178
+ sum = Array(timings).inject { |total, x| total + x }
179
+ obj << {
180
+ avg: (sum / size).round(9),
181
+ min: Array(timings).min.round(9),
182
+ max: Array(timings).max.round(9),
183
+ last: Array(timings).last.round(9),
184
+ desc: description,
185
+ }
186
+ end.sort_by { |k| k[sort_column] }
187
+ end
188
+
189
+ # @return [Hash]
190
+ def options
191
+ defaults.merge!(@options)
192
+ end
193
+
194
+ # @return [Fixnum] The number of tests to output to output to the screen
195
+ # after each run.
196
+ def show_count
197
+ options[:show_count]
198
+ end
199
+
200
+ # @return [Hash<String => Array<Float>]
201
+ def previous_run
202
+ @previous_run ||= YAML.load_file(previous_runs_filename)
203
+ end
204
+
205
+ # @return [String] The path to the file which contains all the durations
206
+ # for each test run. The previous runs file is in YAML format, using the
207
+ # test name for the key and an array containing the time taken to run
208
+ # this test for values.
209
+ def previous_runs_filename
210
+ options[:previous_runs_filename]
211
+ end
212
+
213
+ # Returns a boolean indicating whether a previous runs file exists.
214
+ #
215
+ # @return [Boolean]
216
+ def previously_ran?
217
+ File.exist?(previous_runs_filename)
218
+ end
219
+
220
+ # @return [String] The path to the file which contains the parsed test
221
+ # results. The results file contains a line for each test with the
222
+ # average time of the test, the minimum time the test took to run,
223
+ # the maximum time the test took to run and a description of the test
224
+ # (which is the test name as emitted by Minitest).
225
+ def report_filename
226
+ options[:report_filename]
227
+ end
228
+
229
+ # A barbaric way to find out how many runs are in the previous runs file;
230
+ # this method takes the first test listed, and counts its samples
231
+ # trusting (naively) all runs to be the same number of samples. This will
232
+ # produce incorrect averages when new tests are added, so it is advised
233
+ # to restart the statistics by removing the 'previous runs' file. A rake
234
+ # task is provided to make this more convenient.
235
+ #
236
+ # rake reset_statistics
237
+ #
238
+ # @return [Fixnum]
239
+ def samples
240
+ return 1 unless previous_run.first[1].is_a?(Array)
241
+
242
+ previous_run.first[1].size
243
+ end
244
+
245
+ # Creates a new 'previous runs' file, or updates the existing one with
246
+ # the latest timings.
247
+ #
248
+ # @return [void]
249
+ def create_or_update_previous_runs!
250
+ if previously_ran?
251
+ current_run.each do |description, elapsed|
252
+ new_times = if previous_run["#{description}"]
253
+ Array(previous_run["#{description}"]) << elapsed
254
+
255
+ else
256
+ Array(elapsed)
257
+
258
+ end
259
+
260
+ previous_run.store("#{description}", new_times)
261
+ end
262
+
263
+ File.write(previous_runs_filename, previous_run.to_yaml)
264
+
265
+ else
266
+
267
+ File.write(previous_runs_filename, current_run.to_yaml)
268
+
269
+ end
270
+ end
271
+
272
+ # Creates a new report file in the 'report_filename'. This file contains
273
+ # a line for each test of the following example format: (this is a single
274
+ # line despite explicit wrapping)
275
+ #
276
+ # Avg: 0.0555555 Min: 0.0498765 Max: 0.0612345 Last: 0.0499421
277
+ # Description: The test name
278
+ #
279
+ # Note however the timings are to 9 decimal places, and padded to 12
280
+ # characters and each label is coloured, Avg (yellow), Min (green),
281
+ # Max (red), Last (multi), and Description (blue). It looks pretty!
282
+ #
283
+ # The 'Last' label is special in that it will be colour coded depending
284
+ # on whether the last run was faster (bright green) or slower (bright red)
285
+ # or inconclusive (purple). This helps to identify changes on a per run
286
+ # basis.
287
+ #
288
+ # @return [void]
289
+ def create_new_report!
290
+ File.write(report_filename, report_title + report_body)
291
+ end
292
+
293
+ # Writes a number of tests (configured via the 'show_count' option) to the
294
+ # screen after creating the report. See '#create_new_report!' for example
295
+ # output information.
296
+ #
297
+ # @return [void]
298
+ def write_to_screen!
299
+ puts report_title
300
+ puts report_body.lines.take(show_count)
301
+ end
302
+
303
+ # @return [String] A yellow 'Avg:' label.
304
+ def avg_label
305
+ ANSI::Code.yellow('Avg:')
306
+ end
307
+
308
+ # @return [String] A blue 'Description:' label.
309
+ def des_label
310
+ ANSI::Code.blue('Description:')
311
+ end
312
+
313
+ # @return [String] A red 'Max:' label.
314
+ def max_label
315
+ ANSI::Code.red('Max:')
316
+ end
317
+
318
+ # @return [String] A green 'Min:' label.
319
+ def min_label
320
+ ANSI::Code.green('Min:')
321
+ end
322
+
323
+ # @param rating [Symbol] One of :faster, :slower or :inconclusive.
324
+ # @return [String] A purple 'Last:' label.
325
+ def run_label(rating)
326
+ case rating
327
+ when :faster then ANSI::Code.green('Last:')
328
+ when :slower then ANSI::Code.red('Last:')
329
+ else
330
+ ANSI::Code.magenta('Last:')
331
+ end
332
+ end
333
+
334
+ # @param run [Float] The last run time.
335
+ # @param min [Float] The minimum run time.
336
+ # @param max [Float] The maximum run time.
337
+ # @return [Symbol] One of :faster, :slower or :inconclusive.
338
+ def rate(run, min, max)
339
+ if run == min
340
+ :faster
341
+ elsif run == max
342
+ :slower
343
+ else
344
+ :inconclusive
345
+ end
346
+ end
347
+
348
+ # @return [Boolean] Whether the given :order option is :asc.
349
+ def asc?
350
+ order == :asc
351
+ end
352
+
353
+ # @return [Boolean] Whether the given :order option is :desc (default).
354
+ def desc?
355
+ order == :desc
356
+ end
357
+
358
+ # @raise [Minitest::Reporters::MeanTimeReporter::InvalidOrder]
359
+ # When the given :order option is invalid.
360
+ # @return [Symbol] The :order option, or by default; :desc.
361
+ def order
362
+ orders = [:desc, :asc]
363
+
364
+ if orders.include?(options[:order])
365
+ options[:order]
366
+
367
+ else
368
+ fail Minitest::Reporters::MeanTimeReporter::InvalidOrder,
369
+ "`:order` option must be one of #{orders.inspect}."
370
+
371
+ end
372
+ end
373
+
374
+ # @raise [Minitest::Reporters::MeanTimeReporter::InvalidSortColumn]
375
+ # When the given :sort_column option is invalid.
376
+ # @return [Symbol] The :sort_column option, or by default; :avg.
377
+ def sort_column
378
+ sort_columns = [:avg, :min, :max, :last]
379
+
380
+ if sort_columns.include?(options[:sort_column])
381
+ options[:sort_column]
382
+
383
+ else
384
+ fail Minitest::Reporters::MeanTimeReporter::InvalidSortColumn,
385
+ "`:sort_column` option must be one of #{sort_columns.inspect}."
386
+
387
+ end
388
+ end
389
+
390
+ end
391
+ end
392
+ end
@@ -0,0 +1,96 @@
1
+ require 'ruby-progressbar'
2
+
3
+ module Minitest
4
+ module Reporters
5
+ # Fuubar-like reporter with a progress bar.
6
+ #
7
+ # Based upon Jeff Kreefmeijer's Fuubar (MIT License) and paydro's
8
+ # monkey-patch.
9
+ #
10
+ # @see https://github.com/jeffkreeftmeijer/fuubar Fuubar
11
+ # @see https://gist.github.com/356945 paydro's monkey-patch
12
+ class ProgressReporter < BaseReporter
13
+ include RelativePosition
14
+ include ANSI::Code
15
+
16
+ PROGRESS_MARK = '='
17
+
18
+ def initialize(options = {})
19
+ super
20
+ @detailed_skip = options.fetch(:detailed_skip, true)
21
+
22
+ @progress = ProgressBar.create({
23
+ total: total_count,
24
+ starting_at: count,
25
+ progress_mark: green(PROGRESS_MARK),
26
+ remainder_mark: ' ',
27
+ format: options.fetch(:format, ' %C/%c: [%B] %p%% %a, %e'),
28
+ autostart: false
29
+ })
30
+ end
31
+
32
+ def start
33
+ super
34
+ puts('Started with run options %s' % options[:args])
35
+ puts
36
+ @progress.start
37
+ @progress.total = total_count
38
+ show
39
+ end
40
+
41
+ def record(test)
42
+ super
43
+ return if test.skipped? && !@detailed_skip
44
+ if test.failure
45
+ print "\e[0m\e[1000D\e[K"
46
+ print_colored_status(test)
47
+ print_test_with_time(test)
48
+ puts
49
+ print_info(test.failure, test.error?)
50
+ puts
51
+ end
52
+
53
+ if test.skipped? && color != "red"
54
+ self.color = "yellow"
55
+ elsif test.failure
56
+ self.color = "red"
57
+ end
58
+
59
+ show
60
+ end
61
+
62
+ def report
63
+ super
64
+ @progress.finish
65
+
66
+ puts
67
+ puts('Finished in %.5fs' % total_time)
68
+ print('%d tests, %d assertions, ' % [count, assertions])
69
+ color = failures.zero? && errors.zero? ? :green : :red
70
+ print(send(color) { '%d failures, %d errors, ' } % [failures, errors])
71
+ print(yellow { '%d skips' } % skips)
72
+ puts
73
+ end
74
+
75
+ private
76
+
77
+ def show
78
+ @progress.increment unless count == 0
79
+ end
80
+
81
+ def print_test_with_time(test)
82
+ puts [test.name, test_class(test), total_time].inspect
83
+ print(" %s#%s (%.2fs)" % [test.name, test_class(test), total_time])
84
+ end
85
+
86
+ def color
87
+ @color ||= "green"
88
+ end
89
+
90
+ def color=(color)
91
+ @color = color
92
+ @progress.progress_mark = send(color, PROGRESS_MARK)
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,54 @@
1
+ module Minitest
2
+ module Reporters
3
+ # Simple reporter designed for RubyMate.
4
+ class RubyMateReporter < BaseReporter
5
+ include RelativePosition
6
+
7
+ INFO_PADDING = 2
8
+
9
+ def start
10
+ super
11
+ puts('Started with run options %s' % options[:args])
12
+ puts
13
+ end
14
+
15
+ def record(test)
16
+ super
17
+ if test.skipped?
18
+ print 'SKIP'
19
+ print_test_with_time(test)
20
+ puts
21
+ puts
22
+ elsif test.error?
23
+ print 'ERROR'
24
+ print_test_with_time(test)
25
+ puts
26
+ print_info(test.failure)
27
+ puts
28
+ elsif test.failure
29
+ print 'FAIL'
30
+ print_test_with_time(test)
31
+ puts
32
+ print_info(test.failure, false)
33
+ puts
34
+ end
35
+ end
36
+
37
+ def report
38
+ super
39
+ puts
40
+ puts('Finished in %.5fs' % total_time)
41
+ print('%d tests, %d assertions, ' % [count, assertions])
42
+ print('%d failures, %d errors, ' % [failures, errors])
43
+ print('%d skips' % skips)
44
+ puts
45
+ end
46
+
47
+ private
48
+
49
+ def print_test_with_time(test)
50
+ print(" #{test.class}##{test.name} (%.2fs)" % test.time)
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,117 @@
1
+ # Test results reporter for RubyMine IDE (http://www.jetbrains.com/ruby/) and
2
+ # TeamCity(http://www.jetbrains.com/teamcity/) Continuous Integration Server
3
+
4
+ begin
5
+ require 'teamcity/runner_common'
6
+ require 'teamcity/utils/service_message_factory'
7
+ require 'teamcity/utils/runner_utils'
8
+ require 'teamcity/utils/url_formatter'
9
+ rescue LoadError
10
+ require "minitest/reporters/default_reporter"
11
+
12
+ # delegate to default reporter
13
+ module Minitest
14
+ module Reporters
15
+ class RubyMineReporter < DefaultReporter
16
+ def initialize(options = {})
17
+ super
18
+ puts("====================================================================================================\n")
19
+ puts("RubyMine reporter works only if it test was launched using RubyMine IDE or TeamCity CI server !!!\n")
20
+ puts("====================================================================================================\n")
21
+ puts("Using default results reporter...\n")
22
+ end
23
+ end
24
+ end
25
+ end
26
+ else
27
+ module Minitest
28
+ module Reporters
29
+ class RubyMineReporter < BaseReporter
30
+ include ANSI::Code
31
+
32
+ include ::Rake::TeamCity::RunnerCommon
33
+ include ::Rake::TeamCity::RunnerUtils
34
+ include ::Rake::TeamCity::Utils::UrlFormatter
35
+
36
+ def start
37
+ super
38
+ puts('Started with run options %s' % options[:args])
39
+ puts
40
+
41
+ # Setup test runner's MessageFactory
42
+ set_message_factory(Rake::TeamCity::MessageFactory)
43
+ log_test_reporter_attached
44
+
45
+ # Report tests count:
46
+ if ::Rake::TeamCity.is_in_idea_mode
47
+ log(@message_factory.create_tests_count(total_count))
48
+ elsif ::Rake::TeamCity.is_in_buildserver_mode
49
+ log(@message_factory.create_progress_message("Starting.. (#{total_count} tests)"))
50
+ end
51
+
52
+ end
53
+
54
+ def report
55
+ super
56
+
57
+ puts('Finished in %.5fs' % total_time)
58
+ print('%d tests, %d assertions, ' % [count, assertions])
59
+ print(red '%d failures, %d errors, ' % [failures, errors])
60
+ print(yellow '%d skips' % skips)
61
+ puts
62
+ end
63
+
64
+ def record(test)
65
+ super
66
+ unless test.passed?
67
+ with_result(test) do |exception_msg, backtrace|
68
+ if test.skipped?
69
+ log(@message_factory.create_test_ignored(test.name, exception_msg, backtrace))
70
+ elsif test.error?
71
+ log(@message_factory.create_test_error(test.name, exception_msg, backtrace))
72
+ else
73
+ log(@message_factory.create_test_failed(test.name, exception_msg, backtrace))
74
+ end
75
+ end
76
+ end
77
+ log(@message_factory.create_test_finished(test.name, get_time_in_ms(test.time)))
78
+ end
79
+
80
+ alias_method :output, :io
81
+
82
+ def before_suite(suite)
83
+ fqn = suite.name
84
+ log(@message_factory.create_suite_started(suite.name, location_from_ruby_qualified_name(fqn)))
85
+ end
86
+
87
+ def after_suite(suite)
88
+ log(@message_factory.create_suite_finished(suite.name))
89
+ end
90
+
91
+ def before_test(test)
92
+ super
93
+ location = test.class.instance_method(test.name).source_location
94
+ log(@message_factory.create_test_started(test.name, "file://#{location[0]}:#{location[1]}"))
95
+ end
96
+
97
+ #########
98
+ def log(msg)
99
+ output.flush
100
+ output.puts("\n#{msg}")
101
+ output.flush
102
+
103
+ # returns:
104
+ msg
105
+ end
106
+
107
+ def with_result(test)
108
+ exception = test.failure
109
+ msg = exception.nil? ? "" : "#{exception.class.name}: #{exception.message}"
110
+ backtrace = exception.nil? ? "" : filter_backtrace(exception.backtrace).join("\n")
111
+
112
+ yield(msg, backtrace)
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end