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,1080 @@
1
+ # encoding: UTF-8
2
+
3
+ require "pathname"
4
+ require "minitest/metametameta"
5
+
6
+ if defined? Encoding then
7
+ e = Encoding.default_external
8
+ if e != Encoding::UTF_8 then
9
+ warn ""
10
+ warn ""
11
+ warn "NOTE: External encoding #{e} is not UTF-8. Tests WILL fail."
12
+ warn " Run tests with `RUBYOPT=-Eutf-8 rake` to avoid errors."
13
+ warn ""
14
+ warn ""
15
+ end
16
+ end
17
+
18
+ class Minitest::Runnable
19
+ def whatever # faked for testing
20
+ assert true
21
+ end
22
+ end
23
+
24
+ class TestMinitestUnit < MetaMetaMetaTestCase
25
+ parallelize_me!
26
+
27
+ pwd = Pathname.new File.expand_path Dir.pwd
28
+ basedir = Pathname.new(File.expand_path "lib/minitest") + "mini"
29
+ basedir = basedir.relative_path_from(pwd).to_s
30
+ MINITEST_BASE_DIR = basedir[/\A\./] ? basedir : "./#{basedir}"
31
+ BT_MIDDLE = ["#{MINITEST_BASE_DIR}/test.rb:161:in `each'",
32
+ "#{MINITEST_BASE_DIR}/test.rb:158:in `each'",
33
+ "#{MINITEST_BASE_DIR}/test.rb:139:in `run'",
34
+ "#{MINITEST_BASE_DIR}/test.rb:106:in `run'"]
35
+
36
+ def test_filter_backtrace
37
+ # this is a semi-lame mix of relative paths.
38
+ # I cheated by making the autotest parts not have ./
39
+ bt = (["lib/autotest.rb:571:in `add_exception'",
40
+ "test/test_autotest.rb:62:in `test_add_exception'",
41
+ "#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
42
+ BT_MIDDLE +
43
+ ["#{MINITEST_BASE_DIR}/test.rb:29",
44
+ "test/test_autotest.rb:422"])
45
+ bt = util_expand_bt bt
46
+
47
+ ex = ["lib/autotest.rb:571:in `add_exception'",
48
+ "test/test_autotest.rb:62:in `test_add_exception'"]
49
+ ex = util_expand_bt ex
50
+
51
+ fu = Minitest.filter_backtrace(bt)
52
+
53
+ assert_equal ex, fu
54
+ end
55
+
56
+ def test_filter_backtrace_all_unit
57
+ bt = (["#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
58
+ BT_MIDDLE +
59
+ ["#{MINITEST_BASE_DIR}/test.rb:29"])
60
+ ex = bt.clone
61
+ fu = Minitest.filter_backtrace(bt)
62
+ assert_equal ex, fu
63
+ end
64
+
65
+ def test_filter_backtrace_unit_starts
66
+ bt = (["#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
67
+ BT_MIDDLE +
68
+ ["#{MINITEST_BASE_DIR}/mini/test.rb:29",
69
+ "-e:1"])
70
+
71
+ bt = util_expand_bt bt
72
+
73
+ ex = ["-e:1"]
74
+ fu = Minitest.filter_backtrace bt
75
+ assert_equal ex, fu
76
+ end
77
+
78
+ # def test_default_runner_is_minitest_unit
79
+ # assert_instance_of Minitest::Unit, Minitest::Unit.runner
80
+ # end
81
+
82
+ def test_infectious_binary_encoding
83
+ @tu = Class.new FakeNamedTest do
84
+ def test_this_is_not_ascii_assertion
85
+ assert_equal "ЁЁЁ", "ёёё"
86
+ end
87
+
88
+ def test_this_is_non_ascii_failure_message
89
+ fail 'ЁЁЁ'.force_encoding('ASCII-8BIT')
90
+ end
91
+ end
92
+
93
+ expected = clean <<-EOM
94
+ EF
95
+
96
+ Finished in 0.00
97
+
98
+ 1) Error:
99
+ FakeNamedTestXX#test_this_is_non_ascii_failure_message:
100
+ RuntimeError: ЁЁЁ
101
+ FILE:LINE:in `test_this_is_non_ascii_failure_message'
102
+
103
+ 2) Failure:
104
+ FakeNamedTestXX#test_this_is_not_ascii_assertion [FILE:LINE]:
105
+ Expected: \"ЁЁЁ\"
106
+ Actual: \"ёёё\"
107
+
108
+ 2 runs, 1 assertions, 1 failures, 1 errors, 0 skips
109
+ EOM
110
+
111
+ assert_report expected
112
+ end
113
+
114
+ def test_passed_eh_teardown_good
115
+ test_class = Class.new FakeNamedTest do
116
+ def teardown; assert true; end
117
+ def test_omg; assert true; end
118
+ end
119
+
120
+ test = test_class.new :test_omg
121
+ test.run
122
+
123
+ refute_predicate test, :error?
124
+ assert_predicate test, :passed?
125
+ refute_predicate test, :skipped?
126
+ end
127
+
128
+ def test_passed_eh_teardown_skipped
129
+ test_class = Class.new FakeNamedTest do
130
+ def teardown; assert true; end
131
+ def test_omg; skip "bork"; end
132
+ end
133
+
134
+ test = test_class.new :test_omg
135
+ test.run
136
+
137
+ refute_predicate test, :error?
138
+ refute_predicate test, :passed?
139
+ assert_predicate test, :skipped?
140
+ end
141
+
142
+ def test_passed_eh_teardown_flunked
143
+ test_class = Class.new FakeNamedTest do
144
+ def teardown; flunk; end
145
+ def test_omg; assert true; end
146
+ end
147
+
148
+ test = test_class.new :test_omg
149
+ test.run
150
+
151
+ refute_predicate test, :error?
152
+ refute_predicate test, :passed?
153
+ refute_predicate test, :skipped?
154
+ end
155
+
156
+ def util_expand_bt bt
157
+ if RUBY_VERSION >= "1.9.0" then
158
+ bt.map { |f| (f =~ /^\./) ? File.expand_path(f) : f }
159
+ else
160
+ bt
161
+ end
162
+ end
163
+ end
164
+
165
+ class TestMinitestUnitInherited < MetaMetaMetaTestCase
166
+ def with_overridden_include
167
+ Class.class_eval do
168
+ def inherited_with_hacks _klass
169
+ throw :inherited_hook
170
+ end
171
+
172
+ alias inherited_without_hacks inherited
173
+ alias inherited inherited_with_hacks
174
+ alias IGNORE_ME! inherited # 1.8 bug. god I love venture bros
175
+ end
176
+
177
+ yield
178
+ ensure
179
+ Class.class_eval do
180
+ alias inherited inherited_without_hacks
181
+
182
+ undef_method :inherited_with_hacks
183
+ undef_method :inherited_without_hacks
184
+ end
185
+
186
+ refute_respond_to Class, :inherited_with_hacks
187
+ refute_respond_to Class, :inherited_without_hacks
188
+ end
189
+
190
+ def test_inherited_hook_plays_nice_with_others
191
+ with_overridden_include do
192
+ assert_throws :inherited_hook do
193
+ Class.new FakeNamedTest
194
+ end
195
+ end
196
+ end
197
+ end
198
+
199
+ class TestMinitestRunner < MetaMetaMetaTestCase
200
+ # do not parallelize this suite... it just can't handle it.
201
+
202
+ def test_class_runnables
203
+ @assertion_count = 0
204
+
205
+ tc = Class.new(Minitest::Test)
206
+
207
+ assert_equal 1, Minitest::Test.runnables.size
208
+ assert_equal [tc], Minitest::Test.runnables
209
+ end
210
+
211
+ def test_run_test
212
+ @tu =
213
+ Class.new FakeNamedTest do
214
+ attr_reader :foo
215
+
216
+ def run
217
+ @foo = "hi mom!"
218
+ r = super
219
+ @foo = "okay"
220
+
221
+ r
222
+ end
223
+
224
+ def test_something
225
+ assert_equal "hi mom!", foo
226
+ end
227
+ end
228
+
229
+ expected = clean <<-EOM
230
+ .
231
+
232
+ Finished in 0.00
233
+
234
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
235
+ EOM
236
+
237
+ assert_report expected
238
+ end
239
+
240
+ def test_run_error
241
+ @tu =
242
+ Class.new FakeNamedTest do
243
+ def test_something
244
+ assert true
245
+ end
246
+
247
+ def test_error
248
+ raise "unhandled exception"
249
+ end
250
+ end
251
+
252
+ expected = clean <<-EOM
253
+ E.
254
+
255
+ Finished in 0.00
256
+
257
+ 1) Error:
258
+ FakeNamedTestXX#test_error:
259
+ RuntimeError: unhandled exception
260
+ FILE:LINE:in \`test_error\'
261
+
262
+ 2 runs, 1 assertions, 0 failures, 1 errors, 0 skips
263
+ EOM
264
+
265
+ assert_report expected
266
+ end
267
+
268
+ def test_run_error_teardown
269
+ @tu =
270
+ Class.new FakeNamedTest do
271
+ def test_something
272
+ assert true
273
+ end
274
+
275
+ def teardown
276
+ raise "unhandled exception"
277
+ end
278
+ end
279
+
280
+ expected = clean <<-EOM
281
+ E
282
+
283
+ Finished in 0.00
284
+
285
+ 1) Error:
286
+ FakeNamedTestXX#test_something:
287
+ RuntimeError: unhandled exception
288
+ FILE:LINE:in \`teardown\'
289
+
290
+ 1 runs, 1 assertions, 0 failures, 1 errors, 0 skips
291
+ EOM
292
+
293
+ assert_report expected
294
+ end
295
+
296
+ def test_run_failing
297
+ setup_basic_tu
298
+
299
+ expected = clean <<-EOM
300
+ F.
301
+
302
+ Finished in 0.00
303
+
304
+ 1) Failure:
305
+ FakeNamedTestXX#test_failure [FILE:LINE]:
306
+ Expected false to be truthy.
307
+
308
+ 2 runs, 2 assertions, 1 failures, 0 errors, 0 skips
309
+ EOM
310
+
311
+ assert_report expected
312
+ end
313
+
314
+ def setup_basic_tu
315
+ @tu =
316
+ Class.new FakeNamedTest do
317
+ def test_something
318
+ assert true
319
+ end
320
+
321
+ def test_failure
322
+ assert false
323
+ end
324
+ end
325
+ end
326
+
327
+ def test_run_failing_filtered
328
+ setup_basic_tu
329
+
330
+ expected = clean <<-EOM
331
+ .
332
+
333
+ Finished in 0.00
334
+
335
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
336
+ EOM
337
+
338
+ assert_report expected, %w[--name /some|thing/ --seed 42]
339
+ end
340
+
341
+ def assert_filtering filter, name, expected, a = false
342
+ args = %W[--#{filter} #{name} --seed 42]
343
+
344
+ alpha = Class.new FakeNamedTest do
345
+ define_method :test_something do
346
+ assert a
347
+ end
348
+ end
349
+ Object.const_set(:Alpha, alpha)
350
+
351
+ beta = Class.new FakeNamedTest do
352
+ define_method :test_something do
353
+ assert true
354
+ end
355
+ end
356
+ Object.const_set(:Beta, beta)
357
+
358
+ @tus = [alpha, beta]
359
+
360
+ assert_report expected, args
361
+ ensure
362
+ Object.send :remove_const, :Alpha
363
+ Object.send :remove_const, :Beta
364
+ end
365
+
366
+ def test_run_filtered_including_suite_name
367
+ expected = clean <<-EOM
368
+ .
369
+
370
+ Finished in 0.00
371
+
372
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
373
+ EOM
374
+
375
+ assert_filtering "name", "/Beta#test_something/", expected
376
+ end
377
+
378
+ def test_run_filtered_including_suite_name_string
379
+ expected = clean <<-EOM
380
+ .
381
+
382
+ Finished in 0.00
383
+
384
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
385
+ EOM
386
+
387
+ assert_filtering "name", "Beta#test_something", expected
388
+ end
389
+
390
+ def test_run_filtered_string_method_only
391
+ expected = clean <<-EOM
392
+ ..
393
+
394
+ Finished in 0.00
395
+
396
+ 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
397
+ EOM
398
+
399
+ assert_filtering "name", "test_something", expected, :pass
400
+ end
401
+
402
+ def test_run_failing_excluded
403
+ setup_basic_tu
404
+
405
+ expected = clean <<-EOM
406
+ .
407
+
408
+ Finished in 0.00
409
+
410
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
411
+ EOM
412
+
413
+ assert_report expected, %w[--exclude /failure/ --seed 42]
414
+ end
415
+
416
+ def test_run_filtered_excluding_suite_name
417
+ expected = clean <<-EOM
418
+ .
419
+
420
+ Finished in 0.00
421
+
422
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
423
+ EOM
424
+
425
+ assert_filtering "exclude", "/Alpha#test_something/", expected
426
+ end
427
+
428
+ def test_run_filtered_excluding_suite_name_string
429
+ expected = clean <<-EOM
430
+ .
431
+
432
+ Finished in 0.00
433
+
434
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
435
+ EOM
436
+
437
+ assert_filtering "exclude", "Alpha#test_something", expected
438
+ end
439
+
440
+ def test_run_filtered_excluding_string_method_only
441
+ expected = clean <<-EOM
442
+
443
+
444
+ Finished in 0.00
445
+
446
+ 0 runs, 0 assertions, 0 failures, 0 errors, 0 skips
447
+ EOM
448
+
449
+ assert_filtering "exclude", "test_something", expected, :pass
450
+ end
451
+
452
+ def test_run_passing
453
+ @tu =
454
+ Class.new FakeNamedTest do
455
+ def test_something
456
+ assert true
457
+ end
458
+ end
459
+
460
+ expected = clean <<-EOM
461
+ .
462
+
463
+ Finished in 0.00
464
+
465
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
466
+ EOM
467
+
468
+ assert_report expected
469
+ end
470
+
471
+ def test_run_skip
472
+ @tu =
473
+ Class.new FakeNamedTest do
474
+ def test_something
475
+ assert true
476
+ end
477
+
478
+ def test_skip
479
+ skip "not yet"
480
+ end
481
+ end
482
+
483
+ expected = clean <<-EOM
484
+ S.
485
+
486
+ Finished in 0.00
487
+
488
+ 2 runs, 1 assertions, 0 failures, 0 errors, 1 skips
489
+
490
+ You have skipped tests. Run with --verbose for details.
491
+ EOM
492
+
493
+ restore_env do
494
+ assert_report expected
495
+ end
496
+ end
497
+
498
+ def test_run_skip_verbose
499
+ @tu =
500
+ Class.new FakeNamedTest do
501
+ def test_something
502
+ assert true
503
+ end
504
+
505
+ def test_skip
506
+ skip "not yet"
507
+ end
508
+ end
509
+
510
+ expected = clean <<-EOM
511
+ FakeNamedTestXX#test_skip = 0.00 s = S
512
+ FakeNamedTestXX#test_something = 0.00 s = .
513
+
514
+ Finished in 0.00
515
+
516
+ 1) Skipped:
517
+ FakeNamedTestXX#test_skip [FILE:LINE]:
518
+ not yet
519
+
520
+ 2 runs, 1 assertions, 0 failures, 0 errors, 1 skips
521
+ EOM
522
+
523
+ assert_report expected, %w[--seed 42 --verbose]
524
+ end
525
+
526
+ def test_run_with_other_runner
527
+ @tu =
528
+ Class.new FakeNamedTest do
529
+ def self.run reporter, options = {}
530
+ @reporter = reporter
531
+ before_my_suite
532
+ super
533
+ end
534
+
535
+ def self.name; "wacky!" end
536
+
537
+ def self.before_my_suite
538
+ @reporter.io.puts "Running #{self.name} tests"
539
+ @@foo = 1
540
+ end
541
+
542
+ def test_something
543
+ assert_equal 1, @@foo
544
+ end
545
+
546
+ def test_something_else
547
+ assert_equal 1, @@foo
548
+ end
549
+ end
550
+
551
+ expected = clean <<-EOM
552
+ Running wacky! tests
553
+ ..
554
+
555
+ Finished in 0.00
556
+
557
+ 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
558
+ EOM
559
+
560
+ assert_report expected
561
+ end
562
+
563
+ require "monitor"
564
+
565
+ class Latch
566
+ def initialize count = 1
567
+ @count = count
568
+ @lock = Monitor.new
569
+ @cv = @lock.new_cond
570
+ end
571
+
572
+ def release
573
+ @lock.synchronize do
574
+ @count -= 1 if @count > 0
575
+ @cv.broadcast if @count == 0
576
+ end
577
+ end
578
+
579
+ def await
580
+ @lock.synchronize { @cv.wait_while { @count > 0 } }
581
+ end
582
+ end
583
+
584
+ def test_run_parallel
585
+ test_count = 2
586
+ test_latch = Latch.new test_count
587
+ wait_latch = Latch.new test_count
588
+ main_latch = Latch.new
589
+
590
+ thread = Thread.new {
591
+ Thread.current.abort_on_exception = true
592
+
593
+ # This latch waits until both test latches have been released. Both
594
+ # latches can't be released unless done in separate threads because
595
+ # `main_latch` keeps the test method from finishing.
596
+ test_latch.await
597
+ main_latch.release
598
+ }
599
+
600
+ @tu =
601
+ Class.new FakeNamedTest do
602
+ parallelize_me!
603
+
604
+ test_count.times do |i|
605
+ define_method :"test_wait_on_main_thread_#{i}" do
606
+ test_latch.release
607
+
608
+ # This latch blocks until the "main thread" releases it. The main
609
+ # thread can't release this latch until both test latches have
610
+ # been released. This forces the latches to be released in separate
611
+ # threads.
612
+ main_latch.await
613
+ assert true
614
+ end
615
+ end
616
+ end
617
+
618
+ expected = clean <<-EOM
619
+ ..
620
+
621
+ Finished in 0.00
622
+
623
+ 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
624
+ EOM
625
+
626
+ assert_report(expected) do |reporter|
627
+ reporter.extend(Module.new {
628
+ define_method("record") do |result|
629
+ super(result)
630
+ wait_latch.release
631
+ end
632
+
633
+ define_method("report") do
634
+ wait_latch.await
635
+ super()
636
+ end
637
+ })
638
+ end
639
+ assert thread.join
640
+ end
641
+ end
642
+
643
+ class TestMinitestUnitOrder < MetaMetaMetaTestCase
644
+ # do not parallelize this suite... it just can't handle it.
645
+
646
+ def test_before_setup
647
+ call_order = []
648
+ @tu =
649
+ Class.new FakeNamedTest do
650
+ define_method :setup do
651
+ super()
652
+ call_order << :setup
653
+ end
654
+
655
+ define_method :before_setup do
656
+ call_order << :before_setup
657
+ end
658
+
659
+ def test_omg; assert true; end
660
+ end
661
+
662
+ run_tu_with_fresh_reporter
663
+
664
+ expected = [:before_setup, :setup]
665
+ assert_equal expected, call_order
666
+ end
667
+
668
+ def test_after_teardown
669
+ call_order = []
670
+ @tu =
671
+ Class.new FakeNamedTest do
672
+ define_method :teardown do
673
+ super()
674
+ call_order << :teardown
675
+ end
676
+
677
+ define_method :after_teardown do
678
+ call_order << :after_teardown
679
+ end
680
+
681
+ def test_omg; assert true; end
682
+ end
683
+
684
+ run_tu_with_fresh_reporter
685
+
686
+ expected = [:teardown, :after_teardown]
687
+ assert_equal expected, call_order
688
+ end
689
+
690
+ def test_all_teardowns_are_guaranteed_to_run
691
+ call_order = []
692
+ @tu =
693
+ Class.new FakeNamedTest do
694
+ define_method :after_teardown do
695
+ super()
696
+ call_order << :after_teardown
697
+ raise
698
+ end
699
+
700
+ define_method :teardown do
701
+ super()
702
+ call_order << :teardown
703
+ raise
704
+ end
705
+
706
+ define_method :before_teardown do
707
+ super()
708
+ call_order << :before_teardown
709
+ raise
710
+ end
711
+
712
+ def test_omg; assert true; end
713
+ end
714
+
715
+ run_tu_with_fresh_reporter
716
+
717
+ expected = [:before_teardown, :teardown, :after_teardown]
718
+ assert_equal expected, call_order
719
+ end
720
+
721
+ def test_setup_and_teardown_survive_inheritance
722
+ call_order = []
723
+
724
+ @tu = Class.new FakeNamedTest do
725
+ define_method :setup do
726
+ call_order << :setup_method
727
+ end
728
+
729
+ define_method :teardown do
730
+ call_order << :teardown_method
731
+ end
732
+
733
+ define_method :test_something do
734
+ call_order << :test
735
+ end
736
+ end
737
+
738
+ run_tu_with_fresh_reporter
739
+
740
+ @tu = Class.new @tu
741
+ run_tu_with_fresh_reporter
742
+
743
+ # Once for the parent class, once for the child
744
+ expected = [:setup_method, :test, :teardown_method] * 2
745
+
746
+ assert_equal expected, call_order
747
+ end
748
+ end
749
+
750
+ class TestMinitestRunnable < Minitest::Test
751
+ def setup_marshal klass
752
+ tc = klass.new "whatever"
753
+ tc.assertions = 42
754
+ tc.failures << "a failure"
755
+
756
+ yield tc if block_given?
757
+
758
+ def tc.setup
759
+ @blah = "blah"
760
+ end
761
+ tc.setup
762
+
763
+ @tc = Minitest::Result.from tc
764
+ end
765
+
766
+ def assert_marshal expected_ivars
767
+ new_tc = Marshal.load Marshal.dump @tc
768
+
769
+ ivars = new_tc.instance_variables.map(&:to_s).sort
770
+ assert_equal expected_ivars, ivars
771
+ assert_equal "whatever", new_tc.name
772
+ assert_equal 42, new_tc.assertions
773
+ assert_equal ["a failure"], new_tc.failures
774
+
775
+ yield new_tc if block_given?
776
+ end
777
+
778
+ def test_marshal
779
+ setup_marshal Minitest::Runnable
780
+
781
+ assert_marshal %w[@NAME @assertions @failures @klass @source_location @time]
782
+ end
783
+
784
+ def test_spec_marshal
785
+ klass = describe("whatever") { it("passes") { assert true } }
786
+ rm = klass.runnable_methods.first
787
+
788
+ # Run the test
789
+ @tc = klass.new(rm).run
790
+
791
+ assert_kind_of Minitest::Result, @tc
792
+
793
+ # Pass it over the wire
794
+ over_the_wire = Marshal.load Marshal.dump @tc
795
+
796
+ assert_equal @tc.time, over_the_wire.time
797
+ assert_equal @tc.name, over_the_wire.name
798
+ assert_equal @tc.assertions, over_the_wire.assertions
799
+ assert_equal @tc.failures, over_the_wire.failures
800
+ assert_equal @tc.klass, over_the_wire.klass
801
+ end
802
+ end
803
+
804
+ class TestMinitestTest < TestMinitestRunnable
805
+ def test_dup
806
+ setup_marshal Minitest::Test do |tc|
807
+ tc.time = 3.14
808
+ end
809
+
810
+ assert_marshal %w[@NAME @assertions @failures @klass @source_location @time] do |new_tc|
811
+ assert_in_epsilon 3.14, new_tc.time
812
+ end
813
+ end
814
+ end
815
+
816
+ class TestMinitestUnitTestCase < Minitest::Test
817
+ # do not call parallelize_me! - teardown accesses @tc._assertions
818
+ # which is not threadsafe. Nearly every method in here is an
819
+ # assertion test so it isn't worth splitting it out further.
820
+
821
+ RUBY18 = !defined? Encoding
822
+
823
+ def setup
824
+ super
825
+
826
+ Minitest::Test.reset
827
+
828
+ @tc = Minitest::Test.new "fake tc"
829
+ @zomg = "zomg ponies!"
830
+ @assertion_count = 1
831
+ end
832
+
833
+ def teardown
834
+ assert_equal(@assertion_count, @tc.assertions,
835
+ "expected #{@assertion_count} assertions to be fired during the test, not #{@tc.assertions}") if @tc.passed?
836
+ end
837
+
838
+ def non_verbose
839
+ orig_verbose = $VERBOSE
840
+ $VERBOSE = false
841
+
842
+ yield
843
+ ensure
844
+ $VERBOSE = orig_verbose
845
+ end
846
+
847
+ def test_runnable_methods_random
848
+ @assertion_count = 0
849
+
850
+ sample_test_case = Class.new FakeNamedTest do
851
+ def self.test_order; :random; end
852
+ def test_test1; assert "does not matter" end
853
+ def test_test2; assert "does not matter" end
854
+ def test_test3; assert "does not matter" end
855
+ end
856
+
857
+ srand 42
858
+ expected = %w[test_test2 test_test1 test_test3]
859
+ assert_equal expected, sample_test_case.runnable_methods
860
+ end
861
+
862
+ def test_runnable_methods_sorted
863
+ @assertion_count = 0
864
+
865
+ sample_test_case = Class.new FakeNamedTest do
866
+ def self.test_order; :sorted end
867
+ def test_test3; assert "does not matter" end
868
+ def test_test2; assert "does not matter" end
869
+ def test_test1; assert "does not matter" end
870
+ end
871
+
872
+ expected = %w[test_test1 test_test2 test_test3]
873
+ assert_equal expected, sample_test_case.runnable_methods
874
+ end
875
+
876
+ def test_i_suck_and_my_tests_are_order_dependent_bang_sets_test_order_alpha
877
+ @assertion_count = 0
878
+
879
+ shitty_test_case = Class.new FakeNamedTest
880
+
881
+ shitty_test_case.i_suck_and_my_tests_are_order_dependent!
882
+
883
+ assert_equal :alpha, shitty_test_case.test_order
884
+ end
885
+
886
+ def test_i_suck_and_my_tests_are_order_dependent_bang_does_not_warn
887
+ @assertion_count = 0
888
+
889
+ shitty_test_case = Class.new FakeNamedTest
890
+
891
+ def shitty_test_case.test_order; :lol end
892
+
893
+ assert_silent do
894
+ shitty_test_case.i_suck_and_my_tests_are_order_dependent!
895
+ end
896
+ end
897
+
898
+ def test_autorun_does_not_affect_fork_success_status
899
+ @assertion_count = 0
900
+ skip "windows doesn't have skip" unless Process.respond_to?(:fork)
901
+ Process.waitpid(fork {})
902
+ assert_equal true, $?.success?
903
+ end
904
+
905
+ def test_autorun_does_not_affect_fork_exit_status
906
+ @assertion_count = 0
907
+ skip "windows doesn't have skip" unless Process.respond_to?(:fork)
908
+ Process.waitpid(fork { exit 42 })
909
+ assert_equal 42, $?.exitstatus
910
+ end
911
+ end
912
+
913
+ class TestMinitestGuard < Minitest::Test
914
+ parallelize_me!
915
+
916
+ def test_mri_eh
917
+ assert self.class.mri? "ruby blah"
918
+ assert self.mri? "ruby blah"
919
+ end
920
+
921
+ def test_jruby_eh
922
+ assert self.class.jruby? "java"
923
+ assert self.jruby? "java"
924
+ end
925
+
926
+ def test_rubinius_eh
927
+ assert_output "", /DEPRECATED/ do
928
+ assert self.class.rubinius? "rbx"
929
+ end
930
+ assert_output "", /DEPRECATED/ do
931
+ assert self.rubinius? "rbx"
932
+ end
933
+ end
934
+
935
+ def test_maglev_eh
936
+ assert_output "", /DEPRECATED/ do
937
+ assert self.class.maglev? "maglev"
938
+ end
939
+ assert_output "", /DEPRECATED/ do
940
+ assert self.maglev? "maglev"
941
+ end
942
+ end
943
+
944
+ def test_osx_eh
945
+ assert self.class.osx? "darwin"
946
+ assert self.osx? "darwin"
947
+ end
948
+
949
+ def test_windows_eh
950
+ assert self.class.windows? "mswin"
951
+ assert self.windows? "mswin"
952
+ end
953
+ end
954
+
955
+ class TestMinitestUnitRecording < MetaMetaMetaTestCase
956
+ # do not parallelize this suite... it just can't handle it.
957
+
958
+ def assert_run_record *expected, &block
959
+ @tu = Class.new FakeNamedTest, &block
960
+
961
+ run_tu_with_fresh_reporter
962
+
963
+ recorded = first_reporter.results.map(&:failures).flatten.map { |f| f.error.class }
964
+
965
+ assert_equal expected, recorded
966
+ end
967
+
968
+ def test_run_with_bogus_reporter
969
+ # https://github.com/seattlerb/minitest/issues/659
970
+ # TODO: remove test for minitest 6
971
+ @tu = Class.new FakeNamedTest do
972
+ def test_method
973
+ assert true
974
+ end
975
+ end
976
+
977
+ bogus_reporter = Class.new do # doesn't subclass AbstractReporter
978
+ def start; @success = false; end
979
+ # def prerecord klass, name; end # doesn't define full API
980
+ def record result; @success = true; end
981
+ def report; end
982
+ def passed?; end
983
+ def results; end
984
+ def success?; @success; end
985
+ end.new
986
+
987
+ self.reporter = Minitest::CompositeReporter.new
988
+ reporter << bogus_reporter
989
+
990
+ Minitest::Runnable.runnables.delete @tu
991
+
992
+ @tu.run reporter, {}
993
+
994
+ assert_predicate bogus_reporter, :success?
995
+ end
996
+
997
+ def test_record_passing
998
+ assert_run_record do
999
+ def test_method
1000
+ assert true
1001
+ end
1002
+ end
1003
+ end
1004
+
1005
+ def test_record_failing
1006
+ assert_run_record Minitest::Assertion do
1007
+ def test_method
1008
+ assert false
1009
+ end
1010
+ end
1011
+ end
1012
+
1013
+ def test_record_error
1014
+ assert_run_record RuntimeError do
1015
+ def test_method
1016
+ raise "unhandled exception"
1017
+ end
1018
+ end
1019
+ end
1020
+
1021
+ def test_record_error_teardown
1022
+ assert_run_record RuntimeError do
1023
+ def test_method
1024
+ assert true
1025
+ end
1026
+
1027
+ def teardown
1028
+ raise "unhandled exception"
1029
+ end
1030
+ end
1031
+ end
1032
+
1033
+ def test_record_error_in_test_and_teardown
1034
+ assert_run_record AnError, RuntimeError do
1035
+ def test_method
1036
+ raise AnError
1037
+ end
1038
+
1039
+ def teardown
1040
+ raise "unhandled exception"
1041
+ end
1042
+ end
1043
+ end
1044
+
1045
+ def test_to_s_error_in_test_and_teardown
1046
+ @tu = Class.new FakeNamedTest do
1047
+ def test_method
1048
+ raise AnError
1049
+ end
1050
+
1051
+ def teardown
1052
+ raise "unhandled exception"
1053
+ end
1054
+ end
1055
+
1056
+ run_tu_with_fresh_reporter
1057
+
1058
+ exp = clean "
1059
+ Error:
1060
+ FakeNamedTestXX#test_method:
1061
+ AnError: AnError
1062
+ FILE:LINE:in `test_method'
1063
+
1064
+ Error:
1065
+ FakeNamedTestXX#test_method:
1066
+ RuntimeError: unhandled exception
1067
+ FILE:LINE:in `teardown'
1068
+ "
1069
+
1070
+ assert_equal exp.strip, normalize_output(first_reporter.results.first.to_s).strip
1071
+ end
1072
+
1073
+ def test_record_skip
1074
+ assert_run_record Minitest::Skip do
1075
+ def test_method
1076
+ skip "not yet"
1077
+ end
1078
+ end
1079
+ end
1080
+ end