nlmt-wrappers 0.0.1

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 (227) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.travis.yml +27 -0
  4. data/Changelog.md +81 -0
  5. data/Gemfile +16 -0
  6. data/LICENSE +13 -0
  7. data/README.md +98 -0
  8. data/Rakefile +9 -0
  9. data/ext/wrapper_generator/Makefile +4 -0
  10. data/ext/wrapper_generator/extconf.rb +27 -0
  11. data/ext/wrapper_generator/make +1 -0
  12. data/ext/wrapper_generator/nmake.bat +0 -0
  13. data/ext/wrapper_generator/wrapper_generator.dll +0 -0
  14. data/ext/wrapper_generator/wrapper_generator.so +0 -0
  15. data/lib/nlmt-wrappers.rb +80 -0
  16. data/lib/nlmt-wrappers/command.rb +76 -0
  17. data/lib/nlmt-wrappers/command/file_exist.rb +7 -0
  18. data/lib/nlmt-wrappers/environment.rb +56 -0
  19. data/lib/nlmt-wrappers/installer.rb +110 -0
  20. data/lib/nlmt-wrappers/specification.rb +19 -0
  21. data/lib/nlmt-wrappers/version.rb +3 -0
  22. data/lib/rubygems_plugin.rb +23 -0
  23. data/nlmt-wrappers.gemspec +21 -0
  24. data/test/gem-wrappers/command_test.rb +92 -0
  25. data/test/gem-wrappers/environment_test.rb +82 -0
  26. data/test/gem-wrappers/fakes.rb +71 -0
  27. data/test/gem-wrappers/installer_test.rb +182 -0
  28. data/test/gem-wrappers/specification_and_version_test.rb +23 -0
  29. data/test/gem-wrappers_test.rb +124 -0
  30. data/test/test_helper.rb +21 -0
  31. data/vendor/bundle/ruby/2.6.0/bin/rake +27 -0
  32. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/.autotest +34 -0
  33. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/History.rdoc +1380 -0
  34. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/Manifest.txt +27 -0
  35. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/README.rdoc +764 -0
  36. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/Rakefile +72 -0
  37. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/design_rationale.rb +52 -0
  38. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/hoe/minitest.rb +32 -0
  39. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest.rb +1053 -0
  40. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/assertions.rb +807 -0
  41. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/autorun.rb +13 -0
  42. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/benchmark.rb +455 -0
  43. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/expectations.rb +303 -0
  44. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/hell.rb +11 -0
  45. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/mock.rb +240 -0
  46. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/parallel.rb +70 -0
  47. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/pride.rb +4 -0
  48. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/pride_plugin.rb +142 -0
  49. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/spec.rb +342 -0
  50. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/test.rb +220 -0
  51. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/lib/minitest/unit.rb +45 -0
  52. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/metametameta.rb +117 -0
  53. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_assertions.rb +1567 -0
  54. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_benchmark.rb +137 -0
  55. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_mock.rb +872 -0
  56. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_reporter.rb +299 -0
  57. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_spec.rb +1041 -0
  58. data/vendor/bundle/ruby/2.6.0/gems/minitest-5.14.0/test/minitest/test_minitest_test.rb +1080 -0
  59. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/.autotest +7 -0
  60. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/.rubocop.yml +27 -0
  61. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/.togglerc +7 -0
  62. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/CONTRIBUTING.rdoc +38 -0
  63. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/History.rdoc +659 -0
  64. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/MIT-LICENSE +21 -0
  65. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/Manifest.txt +166 -0
  66. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/README.rdoc +139 -0
  67. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/Rakefile +81 -0
  68. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/bin/rake +33 -0
  69. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/command_line_usage.rdoc +158 -0
  70. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/example/Rakefile1 +38 -0
  71. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/example/Rakefile2 +35 -0
  72. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/example/a.c +6 -0
  73. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/example/b.c +6 -0
  74. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/example/main.c +11 -0
  75. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/glossary.rdoc +42 -0
  76. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/jamis.rb +591 -0
  77. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/proto_rake.rdoc +127 -0
  78. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/rake.1 +141 -0
  79. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/rakefile.rdoc +624 -0
  80. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/rational.rdoc +151 -0
  81. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.4.14.rdoc +23 -0
  82. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.4.15.rdoc +35 -0
  83. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.5.0.rdoc +53 -0
  84. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.5.3.rdoc +78 -0
  85. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.5.4.rdoc +46 -0
  86. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.6.0.rdoc +141 -0
  87. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.7.0.rdoc +119 -0
  88. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.7.1.rdoc +59 -0
  89. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.7.2.rdoc +121 -0
  90. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.7.3.rdoc +47 -0
  91. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.0.rdoc +114 -0
  92. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.2.rdoc +165 -0
  93. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.3.rdoc +112 -0
  94. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.4.rdoc +147 -0
  95. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.5.rdoc +53 -0
  96. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.6.rdoc +37 -0
  97. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.8.7.rdoc +55 -0
  98. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.0.rdoc +112 -0
  99. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.1.rdoc +52 -0
  100. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.2.rdoc +55 -0
  101. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.2.rdoc +49 -0
  102. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.3.rdoc +102 -0
  103. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.4.rdoc +60 -0
  104. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.5.rdoc +55 -0
  105. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-0.9.6.rdoc +64 -0
  106. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-10.0.0.rdoc +178 -0
  107. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-10.0.1.rdoc +58 -0
  108. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-10.0.2.rdoc +53 -0
  109. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-10.0.3.rdoc +191 -0
  110. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/doc/release_notes/rake-10.1.0.rdoc +61 -0
  111. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake.rb +79 -0
  112. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/alt_system.rb +110 -0
  113. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/application.rb +790 -0
  114. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/backtrace.rb +23 -0
  115. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/clean.rb +76 -0
  116. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/cloneable.rb +16 -0
  117. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/.document +1 -0
  118. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/compositepublisher.rb +21 -0
  119. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/ftptools.rb +137 -0
  120. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/publisher.rb +81 -0
  121. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/rubyforgepublisher.rb +18 -0
  122. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/sshpublisher.rb +61 -0
  123. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/contrib/sys.rb +4 -0
  124. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/cpu_counter.rb +125 -0
  125. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/default_loader.rb +14 -0
  126. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/dsl_definition.rb +201 -0
  127. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/early_time.rb +21 -0
  128. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ext/core.rb +25 -0
  129. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ext/module.rb +2 -0
  130. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ext/pathname.rb +25 -0
  131. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ext/string.rb +175 -0
  132. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ext/time.rb +18 -0
  133. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/file_creation_task.rb +24 -0
  134. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/file_list.rb +428 -0
  135. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/file_task.rb +46 -0
  136. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/file_utils.rb +128 -0
  137. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/file_utils_ext.rb +144 -0
  138. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/gempackagetask.rb +4 -0
  139. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/invocation_chain.rb +56 -0
  140. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/invocation_exception_mixin.rb +16 -0
  141. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/late_time.rb +17 -0
  142. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/linked_list.rb +103 -0
  143. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/loaders/makefile.rb +53 -0
  144. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/multi_task.rb +13 -0
  145. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/name_space.rb +38 -0
  146. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/packagetask.rb +199 -0
  147. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/pathmap.rb +3 -0
  148. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/phony.rb +15 -0
  149. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/private_reader.rb +20 -0
  150. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/promise.rb +99 -0
  151. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/pseudo_status.rb +29 -0
  152. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/rake_module.rb +38 -0
  153. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/rake_test_loader.rb +22 -0
  154. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/rdoctask.rb +4 -0
  155. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/ruby182_test_unit_fix.rb +29 -0
  156. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/rule_recursion_overflow_error.rb +20 -0
  157. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/runtest.rb +27 -0
  158. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/scope.rb +42 -0
  159. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/task.rb +383 -0
  160. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/task_argument_error.rb +7 -0
  161. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/task_arguments.rb +98 -0
  162. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/task_manager.rb +307 -0
  163. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/tasklib.rb +24 -0
  164. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/testtask.rb +213 -0
  165. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/thread_history_display.rb +48 -0
  166. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/thread_pool.rb +164 -0
  167. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/trace_output.rb +22 -0
  168. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/version.rb +7 -0
  169. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/lib/rake/win32.rb +56 -0
  170. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/rakelib/publish.rake +20 -0
  171. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/rakelib/test_times.rake +25 -0
  172. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/file_creation.rb +34 -0
  173. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/helper.rb +129 -0
  174. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/support/rakefile_definitions.rb +478 -0
  175. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/support/ruby_runner.rb +34 -0
  176. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_private_reader.rb +42 -0
  177. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake.rb +40 -0
  178. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_application.rb +643 -0
  179. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_application_options.rb +468 -0
  180. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_backtrace.rb +119 -0
  181. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_clean.rb +61 -0
  182. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_cpu_counter.rb +68 -0
  183. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_definitions.rb +84 -0
  184. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_directory_task.rb +76 -0
  185. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_dsl.rb +40 -0
  186. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_early_time.rb +31 -0
  187. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_extension.rb +59 -0
  188. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_file_creation_task.rb +56 -0
  189. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_file_list.rb +670 -0
  190. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_file_list_path_map.rb +8 -0
  191. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_file_task.rb +197 -0
  192. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_file_utils.rb +314 -0
  193. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_ftp_file.rb +74 -0
  194. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_functional.rb +482 -0
  195. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_invocation_chain.rb +64 -0
  196. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_late_time.rb +18 -0
  197. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_linked_list.rb +84 -0
  198. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_makefile_loader.rb +46 -0
  199. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_multi_task.rb +64 -0
  200. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_name_space.rb +57 -0
  201. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_package_task.rb +79 -0
  202. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_path_map.rb +168 -0
  203. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_path_map_explode.rb +34 -0
  204. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_path_map_partial.rb +18 -0
  205. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_pathname_extensions.rb +15 -0
  206. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_pseudo_status.rb +21 -0
  207. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_rake_test_loader.rb +20 -0
  208. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_reduce_compat.rb +26 -0
  209. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_require.rb +40 -0
  210. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_rules.rb +388 -0
  211. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_scope.rb +44 -0
  212. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task.rb +393 -0
  213. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_argument_parsing.rb +119 -0
  214. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_arguments.rb +127 -0
  215. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_lib.rb +9 -0
  216. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_manager.rb +178 -0
  217. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_manager_argument_resolution.rb +19 -0
  218. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_task_with_arguments.rb +172 -0
  219. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_test_task.rb +146 -0
  220. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_thread_pool.rb +145 -0
  221. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_top_level_functions.rb +71 -0
  222. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_rake_win32.rb +72 -0
  223. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_thread_history_display.rb +101 -0
  224. data/vendor/bundle/ruby/2.6.0/gems/rake-10.5.0/test/test_trace_output.rb +52 -0
  225. data/vendor/bundle/ruby/2.6.0/specifications/minitest-5.14.0.gemspec +38 -0
  226. data/vendor/bundle/ruby/2.6.0/specifications/rake-10.5.0.gemspec +39 -0
  227. metadata +305 -0
@@ -0,0 +1,299 @@
1
+ require "minitest/autorun"
2
+ require "minitest/metametameta"
3
+
4
+ class Runnable
5
+ def woot
6
+ assert true
7
+ end
8
+ end
9
+
10
+ class TestMinitestReporter < MetaMetaMetaTestCase
11
+
12
+ attr_accessor :r, :io
13
+
14
+ def new_composite_reporter
15
+ reporter = Minitest::CompositeReporter.new
16
+ reporter << Minitest::SummaryReporter.new(self.io)
17
+ reporter << Minitest::ProgressReporter.new(self.io)
18
+
19
+ def reporter.first
20
+ reporters.first
21
+ end
22
+
23
+ def reporter.results
24
+ first.results
25
+ end
26
+
27
+ def reporter.count
28
+ first.count
29
+ end
30
+
31
+ def reporter.assertions
32
+ first.assertions
33
+ end
34
+
35
+ reporter
36
+ end
37
+
38
+ def setup
39
+ self.io = StringIO.new("")
40
+ self.r = new_composite_reporter
41
+ end
42
+
43
+ def error_test
44
+ unless defined? @et then
45
+ @et = Minitest::Test.new(:woot)
46
+ @et.failures << Minitest::UnexpectedError.new(begin
47
+ raise "no"
48
+ rescue => e
49
+ e
50
+ end)
51
+ @et = Minitest::Result.from @et
52
+ end
53
+ @et
54
+ end
55
+
56
+ def fail_test
57
+ unless defined? @ft then
58
+ @ft = Minitest::Test.new(:woot)
59
+ @ft.failures << begin
60
+ raise Minitest::Assertion, "boo"
61
+ rescue Minitest::Assertion => e
62
+ e
63
+ end
64
+ @ft = Minitest::Result.from @ft
65
+ end
66
+ @ft
67
+ end
68
+
69
+ def passing_test
70
+ @pt ||= Minitest::Result.from Minitest::Test.new(:woot)
71
+ end
72
+
73
+ def skip_test
74
+ unless defined? @st then
75
+ @st = Minitest::Test.new(:woot)
76
+ @st.failures << begin
77
+ raise Minitest::Skip
78
+ rescue Minitest::Assertion => e
79
+ e
80
+ end
81
+ @st = Minitest::Result.from @st
82
+ end
83
+ @st
84
+ end
85
+
86
+ def test_to_s
87
+ r.record passing_test
88
+ r.record fail_test
89
+ assert_match "woot", r.first.to_s
90
+ end
91
+
92
+ def test_passed_eh_empty
93
+ assert_predicate r, :passed?
94
+ end
95
+
96
+ def test_passed_eh_failure
97
+ r.results << fail_test
98
+
99
+ refute_predicate r, :passed?
100
+ end
101
+
102
+ SKIP_MSG = "\n\nYou have skipped tests. Run with --verbose for details."
103
+
104
+ def test_passed_eh_error
105
+ r.start
106
+
107
+ r.results << error_test
108
+
109
+ refute_predicate r, :passed?
110
+
111
+ r.report
112
+
113
+ refute_match SKIP_MSG, io.string
114
+ end
115
+
116
+ def test_passed_eh_skipped
117
+ r.start
118
+ r.results << skip_test
119
+ assert r.passed?
120
+
121
+ restore_env do
122
+ r.report
123
+ end
124
+
125
+ assert_match SKIP_MSG, io.string
126
+ end
127
+
128
+ def test_passed_eh_skipped_verbose
129
+ r.first.options[:verbose] = true
130
+
131
+ r.start
132
+ r.results << skip_test
133
+ assert r.passed?
134
+ r.report
135
+
136
+ refute_match SKIP_MSG, io.string
137
+ end
138
+
139
+ def test_start
140
+ r.start
141
+
142
+ exp = "Run options: \n\n# Running:\n\n"
143
+
144
+ assert_equal exp, io.string
145
+ end
146
+
147
+ def test_record_pass
148
+ r.record passing_test
149
+
150
+ assert_equal ".", io.string
151
+ assert_empty r.results
152
+ assert_equal 1, r.count
153
+ assert_equal 0, r.assertions
154
+ end
155
+
156
+ def test_record_fail
157
+ fail_test = self.fail_test
158
+ r.record fail_test
159
+
160
+ assert_equal "F", io.string
161
+ assert_equal [fail_test], r.results
162
+ assert_equal 1, r.count
163
+ assert_equal 0, r.assertions
164
+ end
165
+
166
+ def test_record_error
167
+ error_test = self.error_test
168
+ r.record error_test
169
+
170
+ assert_equal "E", io.string
171
+ assert_equal [error_test], r.results
172
+ assert_equal 1, r.count
173
+ assert_equal 0, r.assertions
174
+ end
175
+
176
+ def test_record_skip
177
+ skip_test = self.skip_test
178
+ r.record skip_test
179
+
180
+ assert_equal "S", io.string
181
+ assert_equal [skip_test], r.results
182
+ assert_equal 1, r.count
183
+ assert_equal 0, r.assertions
184
+ end
185
+
186
+ def test_report_empty
187
+ r.start
188
+ r.report
189
+
190
+ exp = clean <<-EOM
191
+ Run options:
192
+
193
+ # Running:
194
+
195
+
196
+
197
+ Finished in 0.00
198
+
199
+ 0 runs, 0 assertions, 0 failures, 0 errors, 0 skips
200
+ EOM
201
+
202
+ assert_equal exp, normalize_output(io.string)
203
+ end
204
+
205
+ def test_report_passing
206
+ r.start
207
+ r.record passing_test
208
+ r.report
209
+
210
+ exp = clean <<-EOM
211
+ Run options:
212
+
213
+ # Running:
214
+
215
+ .
216
+
217
+ Finished in 0.00
218
+
219
+ 1 runs, 0 assertions, 0 failures, 0 errors, 0 skips
220
+ EOM
221
+
222
+ assert_equal exp, normalize_output(io.string)
223
+ end
224
+
225
+ def test_report_failure
226
+ r.start
227
+ r.record fail_test
228
+ r.report
229
+
230
+ exp = clean <<-EOM
231
+ Run options:
232
+
233
+ # Running:
234
+
235
+ F
236
+
237
+ Finished in 0.00
238
+
239
+ 1) Failure:
240
+ Minitest::Test#woot [FILE:LINE]:
241
+ boo
242
+
243
+ 1 runs, 0 assertions, 1 failures, 0 errors, 0 skips
244
+ EOM
245
+
246
+ assert_equal exp, normalize_output(io.string)
247
+ end
248
+
249
+ def test_report_error
250
+ r.start
251
+ r.record error_test
252
+ r.report
253
+
254
+ exp = clean <<-EOM
255
+ Run options:
256
+
257
+ # Running:
258
+
259
+ E
260
+
261
+ Finished in 0.00
262
+
263
+ 1) Error:
264
+ Minitest::Test#woot:
265
+ RuntimeError: no
266
+ FILE:LINE:in `error_test'
267
+ FILE:LINE:in `test_report_error'
268
+
269
+ 1 runs, 0 assertions, 0 failures, 1 errors, 0 skips
270
+ EOM
271
+
272
+ assert_equal exp, normalize_output(io.string)
273
+ end
274
+
275
+ def test_report_skipped
276
+ r.start
277
+ r.record skip_test
278
+
279
+ restore_env do
280
+ r.report
281
+ end
282
+
283
+ exp = clean <<-EOM
284
+ Run options:
285
+
286
+ # Running:
287
+
288
+ S
289
+
290
+ Finished in 0.00
291
+
292
+ 1 runs, 0 assertions, 0 failures, 0 errors, 1 skips
293
+
294
+ You have skipped tests. Run with --verbose for details.
295
+ EOM
296
+
297
+ assert_equal exp, normalize_output(io.string)
298
+ end
299
+ end
@@ -0,0 +1,1041 @@
1
+ # encoding: utf-8
2
+ require "minitest/metametameta"
3
+ require "stringio"
4
+
5
+ class MiniSpecA < Minitest::Spec; end
6
+ class MiniSpecB < Minitest::Test; extend Minitest::Spec::DSL; end
7
+ class MiniSpecC < MiniSpecB; end
8
+ class NamedExampleA < MiniSpecA; end
9
+ class NamedExampleB < MiniSpecB; end
10
+ class NamedExampleC < MiniSpecC; end
11
+ class ExampleA; end
12
+ class ExampleB < ExampleA; end
13
+
14
+ describe Minitest::Spec do
15
+ # helps to deal with 2.4 deprecation of Fixnum for Integer
16
+ Int = 1.class
17
+
18
+ # do not parallelize this suite... it just can"t handle it.
19
+
20
+ def assert_triggered expected = "blah", klass = Minitest::Assertion
21
+ @assertion_count += 1
22
+
23
+ e = assert_raises(klass) do
24
+ yield
25
+ end
26
+
27
+ msg = e.message.sub(/(---Backtrace---).*/m, '\1')
28
+ msg.gsub!(/\(oid=[-0-9]+\)/, "(oid=N)")
29
+ msg.gsub!(/(\d\.\d{6})\d+/, '\1xxx') # normalize: ruby version, impl, platform
30
+ msg.gsub!(/:0x[Xa-fA-F0-9]{4,}[ @].+?>/, ":0xXXXXXX@PATH>")
31
+
32
+ if expected
33
+ @assertion_count += 1
34
+ case expected
35
+ when String then
36
+ assert_equal expected, msg
37
+ when Regexp then
38
+ @assertion_count += 1
39
+ assert_match expected, msg
40
+ else
41
+ flunk "Unknown: #{expected.inspect}"
42
+ end
43
+ end
44
+ end
45
+
46
+ before do
47
+ @assertion_count = 4
48
+ end
49
+
50
+ after do
51
+ _(self.assertions).must_equal @assertion_count if passed? and not skipped?
52
+ end
53
+
54
+ it "needs to be able to catch a Minitest::Assertion exception" do
55
+ @assertion_count = 1
56
+
57
+ assert_triggered "Expected 1 to not be equal to 1." do
58
+ _(1).wont_equal 1
59
+ end
60
+ end
61
+
62
+ it "needs to check for file existence" do
63
+ @assertion_count = 3
64
+
65
+ _(_(__FILE__).path_must_exist).must_equal true
66
+
67
+ assert_triggered "Expected path 'blah' to exist." do
68
+ _("blah").path_must_exist
69
+ end
70
+ end
71
+
72
+ it "needs to check for file non-existence" do
73
+ @assertion_count = 3
74
+
75
+ _(_("blah").path_wont_exist).must_equal false
76
+
77
+ assert_triggered "Expected path '#{__FILE__}' to not exist." do
78
+ _(__FILE__).path_wont_exist
79
+ end
80
+ end
81
+
82
+ it "needs to be sensible about must_include order" do
83
+ @assertion_count += 3 # must_include is 2 assertions
84
+
85
+ _(_([1, 2, 3]).must_include(2)).must_equal true
86
+
87
+ assert_triggered "Expected [1, 2, 3] to include 5." do
88
+ _([1, 2, 3]).must_include 5
89
+ end
90
+
91
+ assert_triggered "msg.\nExpected [1, 2, 3] to include 5." do
92
+ _([1, 2, 3]).must_include 5, "msg"
93
+ end
94
+ end
95
+
96
+ it "needs to be sensible about wont_include order" do
97
+ @assertion_count += 3 # wont_include is 2 assertions
98
+
99
+ _(_([1, 2, 3]).wont_include(5)).must_equal false
100
+
101
+ assert_triggered "Expected [1, 2, 3] to not include 2." do
102
+ _([1, 2, 3]).wont_include 2
103
+ end
104
+
105
+ assert_triggered "msg.\nExpected [1, 2, 3] to not include 2." do
106
+ _([1, 2, 3]).wont_include 2, "msg"
107
+ end
108
+ end
109
+
110
+ it "needs to catch an expected exception" do
111
+ @assertion_count = 2
112
+
113
+ expect { raise "blah" }.must_raise RuntimeError
114
+ expect { raise Minitest::Assertion }.must_raise Minitest::Assertion
115
+ end
116
+
117
+ it "needs to catch an unexpected exception" do
118
+ @assertion_count -= 2 # no positive
119
+
120
+ msg = <<-EOM.gsub(/^ {6}/, "").chomp
121
+ [RuntimeError] exception expected, not
122
+ Class: <StandardError>
123
+ Message: <"woot">
124
+ ---Backtrace---
125
+ EOM
126
+
127
+ assert_triggered msg do
128
+ expect { raise StandardError, "woot" }.must_raise RuntimeError
129
+ end
130
+
131
+ assert_triggered "msg.\n#{msg}" do
132
+ expect { raise StandardError, "woot" }.must_raise RuntimeError, "msg"
133
+ end
134
+ end
135
+
136
+ it "needs to ensure silence" do
137
+ @assertion_count -= 1 # no msg
138
+ @assertion_count += 2 # assert_output is 2 assertions
139
+
140
+ _(expect {}.must_be_silent).must_equal true
141
+
142
+ assert_triggered "In stdout.\nExpected: \"\"\n Actual: \"xxx\"" do
143
+ expect { print "xxx" }.must_be_silent
144
+ end
145
+ end
146
+
147
+ it "needs to have all methods named well" do
148
+ skip "N/A" if ENV["MT_NO_EXPECTATIONS"]
149
+
150
+ @assertion_count = 2
151
+
152
+ methods = Minitest::Expectations.public_instance_methods.grep(/must|wont/)
153
+ methods.map!(&:to_s) if Symbol === methods.first
154
+
155
+ musts, wonts = methods.sort.partition { |m| m =~ /must/ }
156
+
157
+ expected_musts = %w[must_be
158
+ must_be_close_to
159
+ must_be_empty
160
+ must_be_instance_of
161
+ must_be_kind_of
162
+ must_be_nil
163
+ must_be_same_as
164
+ must_be_silent
165
+ must_be_within_delta
166
+ must_be_within_epsilon
167
+ must_equal
168
+ must_include
169
+ must_match
170
+ must_output
171
+ must_raise
172
+ must_respond_to
173
+ must_throw
174
+ path_must_exist]
175
+
176
+ bad = %w[not raise throw send output be_silent]
177
+
178
+ expected_wonts = expected_musts.map { |m| m.sub(/must/, "wont") }.sort
179
+ expected_wonts.reject! { |m| m =~ /wont_#{Regexp.union(*bad)}/ }
180
+
181
+ _(musts).must_equal expected_musts
182
+ _(wonts).must_equal expected_wonts
183
+ end
184
+
185
+ it "needs to raise if an expected exception is not raised" do
186
+ @assertion_count -= 2 # no positive test
187
+
188
+ assert_triggered "RuntimeError expected but nothing was raised." do
189
+ expect { 42 }.must_raise RuntimeError
190
+ end
191
+
192
+ assert_triggered "msg.\nRuntimeError expected but nothing was raised." do
193
+ expect { 42 }.must_raise RuntimeError, "msg"
194
+ end
195
+ end
196
+
197
+ it "needs to verify binary messages" do
198
+ _(_(42).wont_be(:<, 24)).must_equal false
199
+
200
+ assert_triggered "Expected 24 to not be < 42." do
201
+ _(24).wont_be :<, 42
202
+ end
203
+
204
+ assert_triggered "msg.\nExpected 24 to not be < 42." do
205
+ _(24).wont_be :<, 42, "msg"
206
+ end
207
+ end
208
+
209
+ it "needs to verify emptyness" do
210
+ @assertion_count += 3 # empty is 2 assertions
211
+
212
+ _(_([]).must_be_empty).must_equal true
213
+
214
+ assert_triggered "Expected [42] to be empty." do
215
+ _([42]).must_be_empty
216
+ end
217
+
218
+ assert_triggered "msg.\nExpected [42] to be empty." do
219
+ _([42]).must_be_empty "msg"
220
+ end
221
+ end
222
+
223
+ it "needs to verify equality" do
224
+ @assertion_count += 1
225
+
226
+ _(_(6 * 7).must_equal(42)).must_equal true
227
+
228
+ assert_triggered "Expected: 42\n Actual: 54" do
229
+ _(6 * 9).must_equal 42
230
+ end
231
+
232
+ assert_triggered "msg.\nExpected: 42\n Actual: 54" do
233
+ _(6 * 9).must_equal 42, "msg"
234
+ end
235
+
236
+ assert_triggered(/^-42\n\+#<Proc:0xXXXXXX[ @]PATH>\n/) do
237
+ _(proc { 42 }).must_equal 42 # proc isn't called, so expectation fails
238
+ end
239
+ end
240
+
241
+ it "needs to warn on equality with nil" do
242
+ @assertion_count += 1 # extra test
243
+
244
+ out, err = capture_io do
245
+ _(_(nil).must_equal(nil)).must_equal true
246
+ end
247
+
248
+ exp = "DEPRECATED: Use assert_nil if expecting nil from #{__FILE__}:#{__LINE__-3}. " \
249
+ "This will fail in Minitest 6.\n"
250
+ exp = "" if $-w.nil?
251
+
252
+ assert_empty out
253
+ assert_equal exp, err
254
+ end
255
+
256
+ it "needs to verify floats outside a delta" do
257
+ @assertion_count += 1 # extra test
258
+
259
+ _(_(24).wont_be_close_to(42)).must_equal false
260
+
261
+ assert_triggered "Expected |42 - 42.0| (0.0) to not be <= 0.001." do
262
+ _(6 * 7.0).wont_be_close_to 42
263
+ end
264
+
265
+ x = "1.0e-05"
266
+ assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
267
+ _(6 * 7.0).wont_be_close_to 42, 0.00001
268
+ end
269
+
270
+ assert_triggered "msg.\nExpected |42 - 42.0| (0.0) to not be <= #{x}." do
271
+ _(6 * 7.0).wont_be_close_to 42, 0.00001, "msg"
272
+ end
273
+ end
274
+
275
+ it "needs to verify floats outside an epsilon" do
276
+ @assertion_count += 1 # extra test
277
+
278
+ _(_(24).wont_be_within_epsilon(42)).must_equal false
279
+
280
+ x = "0.042"
281
+ assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
282
+ _(6 * 7.0).wont_be_within_epsilon 42
283
+ end
284
+
285
+ x = "0.00042"
286
+ assert_triggered "Expected |42 - 42.0| (0.0) to not be <= #{x}." do
287
+ _(6 * 7.0).wont_be_within_epsilon 42, 0.00001
288
+ end
289
+
290
+ assert_triggered "msg.\nExpected |42 - 42.0| (0.0) to not be <= #{x}." do
291
+ _(6 * 7.0).wont_be_within_epsilon 42, 0.00001, "msg"
292
+ end
293
+ end
294
+
295
+ it "needs to verify floats within a delta" do
296
+ @assertion_count += 1 # extra test
297
+
298
+ _(_(6.0 * 7).must_be_close_to(42.0)).must_equal true
299
+
300
+ assert_triggered "Expected |0.0 - 0.01| (0.01) to be <= 0.001." do
301
+ _(1.0 / 100).must_be_close_to 0.0
302
+ end
303
+
304
+ x = "1.0e-06"
305
+ assert_triggered "Expected |0.0 - 0.001| (0.001) to be <= #{x}." do
306
+ _(1.0 / 1000).must_be_close_to 0.0, 0.000001
307
+ end
308
+
309
+ assert_triggered "msg.\nExpected |0.0 - 0.001| (0.001) to be <= #{x}." do
310
+ _(1.0 / 1000).must_be_close_to 0.0, 0.000001, "msg"
311
+ end
312
+ end
313
+
314
+ it "needs to verify floats within an epsilon" do
315
+ @assertion_count += 1 # extra test
316
+
317
+ _(_(6.0 * 7).must_be_within_epsilon(42.0)).must_equal true
318
+
319
+ assert_triggered "Expected |0.0 - 0.01| (0.01) to be <= 0.0." do
320
+ _(1.0 / 100).must_be_within_epsilon 0.0
321
+ end
322
+
323
+ assert_triggered "Expected |0.0 - 0.001| (0.001) to be <= 0.0." do
324
+ _(1.0 / 1000).must_be_within_epsilon 0.0, 0.000001
325
+ end
326
+
327
+ assert_triggered "msg.\nExpected |0.0 - 0.001| (0.001) to be <= 0.0." do
328
+ _(1.0 / 1000).must_be_within_epsilon 0.0, 0.000001, "msg"
329
+ end
330
+ end
331
+
332
+ it "needs to verify identity" do
333
+ _(_(1).must_be_same_as(1)).must_equal true
334
+
335
+ assert_triggered "Expected 1 (oid=N) to be the same as 2 (oid=N)." do
336
+ _(1).must_be_same_as 2
337
+ end
338
+
339
+ assert_triggered "msg.\nExpected 1 (oid=N) to be the same as 2 (oid=N)." do
340
+ _(1).must_be_same_as 2, "msg"
341
+ end
342
+ end
343
+
344
+ it "needs to verify inequality" do
345
+ @assertion_count += 2
346
+ _(_(42).wont_equal(6 * 9)).must_equal false
347
+ _(_(proc {}).wont_equal(42)).must_equal false
348
+
349
+ assert_triggered "Expected 1 to not be equal to 1." do
350
+ _(1).wont_equal 1
351
+ end
352
+
353
+ assert_triggered "msg.\nExpected 1 to not be equal to 1." do
354
+ _(1).wont_equal 1, "msg"
355
+ end
356
+ end
357
+
358
+ it "needs to verify instances of a class" do
359
+ _(_(42).wont_be_instance_of(String)).must_equal false
360
+
361
+ assert_triggered "Expected 42 to not be a kind of #{Int.name}." do
362
+ _(42).wont_be_kind_of Int
363
+ end
364
+
365
+ assert_triggered "msg.\nExpected 42 to not be an instance of #{Int.name}." do
366
+ _(42).wont_be_instance_of Int, "msg"
367
+ end
368
+ end
369
+
370
+ it "needs to verify kinds of a class" do
371
+ @assertion_count += 2
372
+
373
+ _(_(42).wont_be_kind_of(String)).must_equal false
374
+ _(_(proc {}).wont_be_kind_of(String)).must_equal false
375
+
376
+ assert_triggered "Expected 42 to not be a kind of #{Int.name}." do
377
+ _(42).wont_be_kind_of Int
378
+ end
379
+
380
+ assert_triggered "msg.\nExpected 42 to not be a kind of #{Int.name}." do
381
+ _(42).wont_be_kind_of Int, "msg"
382
+ end
383
+ end
384
+
385
+ it "needs to verify kinds of objects" do
386
+ @assertion_count += 3 # extra test
387
+
388
+ _(_(6 * 7).must_be_kind_of(Int)).must_equal true
389
+ _(_(6 * 7).must_be_kind_of(Numeric)).must_equal true
390
+
391
+ assert_triggered "Expected 42 to be a kind of String, not #{Int.name}." do
392
+ _(6 * 7).must_be_kind_of String
393
+ end
394
+
395
+ assert_triggered "msg.\nExpected 42 to be a kind of String, not #{Int.name}." do
396
+ _(6 * 7).must_be_kind_of String, "msg"
397
+ end
398
+
399
+ exp = "Expected #<Proc:0xXXXXXX@PATH> to be a kind of String, not Proc."
400
+ assert_triggered exp do
401
+ _(proc {}).must_be_kind_of String
402
+ end
403
+ end
404
+
405
+ it "needs to verify mismatch" do
406
+ @assertion_count += 3 # match is 2
407
+
408
+ _(_("blah").wont_match(/\d+/)).must_equal false
409
+
410
+ assert_triggered "Expected /\\w+/ to not match \"blah\"." do
411
+ _("blah").wont_match(/\w+/)
412
+ end
413
+
414
+ assert_triggered "msg.\nExpected /\\w+/ to not match \"blah\"." do
415
+ _("blah").wont_match(/\w+/, "msg")
416
+ end
417
+ end
418
+
419
+ it "needs to verify nil" do
420
+ _(_(nil).must_be_nil).must_equal true
421
+
422
+ assert_triggered "Expected 42 to be nil." do
423
+ _(42).must_be_nil
424
+ end
425
+
426
+ assert_triggered "msg.\nExpected 42 to be nil." do
427
+ _(42).must_be_nil "msg"
428
+ end
429
+ end
430
+
431
+ it "needs to verify non-emptyness" do
432
+ @assertion_count += 3 # empty is 2 assertions
433
+
434
+ _(_(["some item"]).wont_be_empty).must_equal false
435
+
436
+ assert_triggered "Expected [] to not be empty." do
437
+ _([]).wont_be_empty
438
+ end
439
+
440
+ assert_triggered "msg.\nExpected [] to not be empty." do
441
+ _([]).wont_be_empty "msg"
442
+ end
443
+ end
444
+
445
+ it "needs to verify non-identity" do
446
+ _(_(1).wont_be_same_as(2)).must_equal false
447
+
448
+ assert_triggered "Expected 1 (oid=N) to not be the same as 1 (oid=N)." do
449
+ _(1).wont_be_same_as 1
450
+ end
451
+
452
+ assert_triggered "msg.\nExpected 1 (oid=N) to not be the same as 1 (oid=N)." do
453
+ _(1).wont_be_same_as 1, "msg"
454
+ end
455
+ end
456
+
457
+ it "needs to verify non-nil" do
458
+ _(_(42).wont_be_nil).must_equal false
459
+
460
+ assert_triggered "Expected nil to not be nil." do
461
+ _(nil).wont_be_nil
462
+ end
463
+
464
+ assert_triggered "msg.\nExpected nil to not be nil." do
465
+ _(nil).wont_be_nil "msg"
466
+ end
467
+ end
468
+
469
+ it "needs to verify objects not responding to a message" do
470
+ _(_("").wont_respond_to(:woot!)).must_equal false
471
+
472
+ assert_triggered "Expected \"\" to not respond to to_s." do
473
+ _("").wont_respond_to :to_s
474
+ end
475
+
476
+ assert_triggered "msg.\nExpected \"\" to not respond to to_s." do
477
+ _("").wont_respond_to :to_s, "msg"
478
+ end
479
+ end
480
+
481
+ it "needs to verify output in stderr" do
482
+ @assertion_count -= 1 # no msg
483
+
484
+ _(expect { $stderr.print "blah" }.must_output(nil, "blah")).must_equal true
485
+
486
+ assert_triggered "In stderr.\nExpected: \"blah\"\n Actual: \"xxx\"" do
487
+ expect { $stderr.print "xxx" }.must_output(nil, "blah")
488
+ end
489
+ end
490
+
491
+ it "needs to verify output in stdout" do
492
+ @assertion_count -= 1 # no msg
493
+
494
+ _(expect { print "blah" }.must_output("blah")).must_equal true
495
+
496
+ assert_triggered "In stdout.\nExpected: \"blah\"\n Actual: \"xxx\"" do
497
+ expect { print "xxx" }.must_output("blah")
498
+ end
499
+ end
500
+
501
+ it "needs to verify regexp matches" do
502
+ @assertion_count += 3 # must_match is 2 assertions
503
+
504
+ _(_("blah").must_match(/\w+/)).must_equal true
505
+
506
+ assert_triggered "Expected /\\d+/ to match \"blah\"." do
507
+ _("blah").must_match(/\d+/)
508
+ end
509
+
510
+ assert_triggered "msg.\nExpected /\\d+/ to match \"blah\"." do
511
+ _("blah").must_match(/\d+/, "msg")
512
+ end
513
+ end
514
+
515
+ describe "expect" do
516
+ before do
517
+ @assertion_count -= 3
518
+ end
519
+
520
+ it "can use expect" do
521
+ _(1 + 1).must_equal 2
522
+ end
523
+
524
+ it "can use expect with a lambda" do
525
+ _ { raise "blah" }.must_raise RuntimeError
526
+ end
527
+
528
+ it "can use expect in a thread" do
529
+ Thread.new { _(1 + 1).must_equal 2 }.join
530
+ end
531
+
532
+ it "can NOT use must_equal in a thread. It must use expect in a thread" do
533
+ skip "N/A" if ENV["MT_NO_EXPECTATIONS"]
534
+ assert_raises RuntimeError do
535
+ capture_io do
536
+ Thread.new { (1 + 1).must_equal 2 }.join
537
+ end
538
+ end
539
+ end
540
+
541
+ it "fails gracefully when expectation used outside of `it`" do
542
+ skip "N/A" if ENV["MT_NO_EXPECTATIONS"]
543
+
544
+ @assertion_count += 1
545
+
546
+ e = assert_raises RuntimeError do
547
+ capture_io do
548
+ Thread.new { # forces ctx to be nil
549
+ describe("woot") do
550
+ (1 + 1).must_equal 2
551
+ end
552
+ }.join
553
+ end
554
+ end
555
+
556
+ assert_equal "Calling #must_equal outside of test.", e.message
557
+ end
558
+
559
+ it "deprecates expectation used without _" do
560
+ skip "N/A" if ENV["MT_NO_EXPECTATIONS"]
561
+
562
+ @assertion_count += 3
563
+
564
+ exp = /DEPRECATED: global use of must_equal from/
565
+
566
+ assert_output "", exp do
567
+ (1 + 1).must_equal 2
568
+ end
569
+ end
570
+ end
571
+
572
+ it "needs to verify throw" do
573
+ @assertion_count += 2 # 2 extra tests
574
+
575
+ _(expect { throw :blah }.must_throw(:blah)).must_equal true
576
+
577
+ assert_triggered "Expected :blah to have been thrown." do
578
+ expect {}.must_throw :blah
579
+ end
580
+
581
+ assert_triggered "Expected :blah to have been thrown, not :xxx." do
582
+ expect { throw :xxx }.must_throw :blah
583
+ end
584
+
585
+ assert_triggered "msg.\nExpected :blah to have been thrown." do
586
+ expect {}.must_throw :blah, "msg"
587
+ end
588
+
589
+ assert_triggered "msg.\nExpected :blah to have been thrown, not :xxx." do
590
+ expect { throw :xxx }.must_throw :blah, "msg"
591
+ end
592
+ end
593
+
594
+ it "needs to verify types of objects" do
595
+ _(_(6 * 7).must_be_instance_of(Int)).must_equal true
596
+
597
+ exp = "Expected 42 to be an instance of String, not #{Int.name}."
598
+
599
+ assert_triggered exp do
600
+ _(6 * 7).must_be_instance_of String
601
+ end
602
+
603
+ assert_triggered "msg.\n#{exp}" do
604
+ _(6 * 7).must_be_instance_of String, "msg"
605
+ end
606
+ end
607
+
608
+ it "needs to verify using any (negative) predicate" do
609
+ @assertion_count -= 1 # doesn"t take a message
610
+
611
+ _(_("blah").wont_be(:empty?)).must_equal false
612
+
613
+ assert_triggered "Expected \"\" to not be empty?." do
614
+ _("").wont_be :empty?
615
+ end
616
+ end
617
+
618
+ it "needs to verify using any binary operator" do
619
+ @assertion_count -= 1 # no msg
620
+
621
+ _(_(41).must_be(:<, 42)).must_equal true
622
+
623
+ assert_triggered "Expected 42 to be < 41." do
624
+ _(42).must_be(:<, 41)
625
+ end
626
+ end
627
+
628
+ it "needs to verify using any predicate" do
629
+ @assertion_count -= 1 # no msg
630
+
631
+ _(_("").must_be(:empty?)).must_equal true
632
+
633
+ assert_triggered "Expected \"blah\" to be empty?." do
634
+ _("blah").must_be :empty?
635
+ end
636
+ end
637
+
638
+ it "needs to verify using respond_to" do
639
+ _(_(42).must_respond_to(:+)).must_equal true
640
+
641
+ assert_triggered "Expected 42 (#{Int.name}) to respond to #clear." do
642
+ _(42).must_respond_to :clear
643
+ end
644
+
645
+ assert_triggered "msg.\nExpected 42 (#{Int.name}) to respond to #clear." do
646
+ _(42).must_respond_to :clear, "msg"
647
+ end
648
+ end
649
+ end
650
+
651
+ describe Minitest::Spec, :let do
652
+ i_suck_and_my_tests_are_order_dependent!
653
+
654
+ def _count
655
+ $let_count ||= 0
656
+ end
657
+
658
+ let :count do
659
+ $let_count += 1
660
+ $let_count
661
+ end
662
+
663
+ it "is evaluated once per example" do
664
+ _(_count).must_equal 0
665
+
666
+ _(count).must_equal 1
667
+ _(count).must_equal 1
668
+
669
+ _(_count).must_equal 1
670
+ end
671
+
672
+ it "is REALLY evaluated once per example" do
673
+ _(_count).must_equal 1
674
+
675
+ _(count).must_equal 2
676
+ _(count).must_equal 2
677
+
678
+ _(_count).must_equal 2
679
+ end
680
+
681
+ it 'raises an error if the name begins with "test"' do
682
+ expect { self.class.let(:test_value) { true } }.must_raise ArgumentError
683
+ end
684
+
685
+ it "raises an error if the name shadows a normal instance method" do
686
+ expect { self.class.let(:message) { true } }.must_raise ArgumentError
687
+ end
688
+
689
+ it "doesn't raise an error if it is just another let" do
690
+ v = proc do
691
+ describe :outer do
692
+ let(:bar)
693
+ describe :inner do
694
+ let(:bar)
695
+ end
696
+ end
697
+ :good
698
+ end.call
699
+ _(v).must_equal :good
700
+ end
701
+
702
+ it "procs come after dont_flip" do
703
+ p = proc {}
704
+ assert_respond_to p, :call
705
+ _(p).must_respond_to :call
706
+ end
707
+ end
708
+
709
+ describe Minitest::Spec, :subject do
710
+ attr_reader :subject_evaluation_count
711
+
712
+ subject do
713
+ @subject_evaluation_count ||= 0
714
+ @subject_evaluation_count += 1
715
+ @subject_evaluation_count
716
+ end
717
+
718
+ it "is evaluated once per example" do
719
+ _(subject).must_equal 1
720
+ _(subject).must_equal 1
721
+ _(subject_evaluation_count).must_equal 1
722
+ end
723
+ end
724
+
725
+ class TestMetaStatic < Minitest::Test
726
+ def test_children
727
+ Minitest::Spec.children.clear # prevents parallel run
728
+
729
+ y = z = nil
730
+ x = describe "top-level thingy" do
731
+ y = describe "first thingy" do end
732
+
733
+ it "top-level-it" do end
734
+
735
+ z = describe "second thingy" do end
736
+ end
737
+
738
+ assert_equal [x], Minitest::Spec.children
739
+ assert_equal [y, z], x.children
740
+ assert_equal [], y.children
741
+ assert_equal [], z.children
742
+ end
743
+
744
+ def test_it_wont_remove_existing_child_test_methods
745
+ Minitest::Spec.children.clear # prevents parallel run
746
+
747
+ inner = nil
748
+ outer = describe "outer" do
749
+ inner = describe "inner" do
750
+ it do
751
+ assert true
752
+ end
753
+ end
754
+ it do
755
+ assert true
756
+ end
757
+ end
758
+
759
+ assert_equal 1, outer.public_instance_methods.grep(/^test_/).count
760
+ assert_equal 1, inner.public_instance_methods.grep(/^test_/).count
761
+ end
762
+
763
+ def test_it_wont_add_test_methods_to_children
764
+ Minitest::Spec.children.clear # prevents parallel run
765
+
766
+ inner = nil
767
+ outer = describe "outer" do
768
+ inner = describe "inner" do end
769
+ it do
770
+ assert true
771
+ end
772
+ end
773
+
774
+ assert_equal 1, outer.public_instance_methods.grep(/^test_/).count
775
+ assert_equal 0, inner.public_instance_methods.grep(/^test_/).count
776
+ end
777
+ end
778
+
779
+ class TestMeta < MetaMetaMetaTestCase
780
+ # do not call parallelize_me! here because specs use register_spec_type globally
781
+
782
+ def util_structure
783
+ y = z = nil
784
+ before_list = []
785
+ after_list = []
786
+ x = describe "top-level thingy" do
787
+ before { before_list << 1 }
788
+ after { after_list << 1 }
789
+
790
+ it "top-level-it" do end
791
+
792
+ y = describe "inner thingy" do
793
+ before { before_list << 2 }
794
+ after { after_list << 2 }
795
+ it "inner-it" do end
796
+
797
+ z = describe "very inner thingy" do
798
+ before { before_list << 3 }
799
+ after { after_list << 3 }
800
+ it "inner-it" do end
801
+
802
+ it { } # ignore me
803
+ specify { } # anonymous it
804
+ end
805
+ end
806
+ end
807
+
808
+ return x, y, z, before_list, after_list
809
+ end
810
+
811
+ def test_register_spec_type
812
+ original_types = Minitest::Spec::TYPES.dup
813
+
814
+ assert_includes Minitest::Spec::TYPES, [//, Minitest::Spec]
815
+
816
+ Minitest::Spec.register_spec_type(/woot/, TestMeta)
817
+
818
+ p = lambda do |_| true end
819
+ Minitest::Spec.register_spec_type TestMeta, &p
820
+
821
+ keys = Minitest::Spec::TYPES.map(&:first)
822
+
823
+ assert_includes keys, /woot/
824
+ assert_includes keys, p
825
+ ensure
826
+ Minitest::Spec::TYPES.replace original_types
827
+ end
828
+
829
+ def test_spec_type
830
+ original_types = Minitest::Spec::TYPES.dup
831
+
832
+ Minitest::Spec.register_spec_type(/A$/, MiniSpecA)
833
+ Minitest::Spec.register_spec_type MiniSpecB do |desc|
834
+ desc.superclass == ExampleA
835
+ end
836
+ Minitest::Spec.register_spec_type MiniSpecC do |_desc, *addl|
837
+ addl.include? :woot
838
+ end
839
+
840
+ assert_equal MiniSpecA, Minitest::Spec.spec_type(ExampleA)
841
+ assert_equal MiniSpecB, Minitest::Spec.spec_type(ExampleB)
842
+ assert_equal MiniSpecC, Minitest::Spec.spec_type(ExampleB, :woot)
843
+ ensure
844
+ Minitest::Spec::TYPES.replace original_types
845
+ end
846
+
847
+ def test_bug_dsl_expectations
848
+ spec_class = Class.new MiniSpecB do
849
+ it "should work" do
850
+ _(0).must_equal 0
851
+ end
852
+ end
853
+
854
+ test_name = spec_class.instance_methods.sort.grep(/test/).first
855
+
856
+ spec = spec_class.new test_name
857
+
858
+ result = spec.run
859
+
860
+ assert spec.passed?
861
+ assert result.passed?
862
+ assert_equal 1, result.assertions
863
+ end
864
+
865
+ def test_name
866
+ spec_a = describe ExampleA do; end
867
+ spec_b = describe ExampleB, :random_method do; end
868
+ spec_c = describe ExampleB, :random_method, :addl_context do; end
869
+
870
+ assert_equal "ExampleA", spec_a.name
871
+ assert_equal "ExampleB::random_method", spec_b.name
872
+ assert_equal "ExampleB::random_method::addl_context", spec_c.name
873
+ end
874
+
875
+ def test_name2
876
+ assert_equal "NamedExampleA", NamedExampleA.name
877
+ assert_equal "NamedExampleB", NamedExampleB.name
878
+ assert_equal "NamedExampleC", NamedExampleC.name
879
+
880
+ spec_a = describe ExampleA do; end
881
+ spec_b = describe ExampleB, :random_method do; end
882
+
883
+ assert_equal "ExampleA", spec_a.name
884
+ assert_equal "ExampleB::random_method", spec_b.name
885
+ end
886
+
887
+ def test_structure
888
+ x, y, z, * = util_structure
889
+
890
+ assert_equal "top-level thingy", x.to_s
891
+ assert_equal "top-level thingy::inner thingy", y.to_s
892
+ assert_equal "top-level thingy::inner thingy::very inner thingy", z.to_s
893
+
894
+ assert_equal "top-level thingy", x.desc
895
+ assert_equal "inner thingy", y.desc
896
+ assert_equal "very inner thingy", z.desc
897
+
898
+ top_methods = %w[setup teardown test_0001_top-level-it]
899
+ inner_methods1 = %w[setup teardown test_0001_inner-it]
900
+ inner_methods2 = inner_methods1 +
901
+ %w[test_0002_anonymous test_0003_anonymous]
902
+
903
+ assert_equal top_methods, x.instance_methods(false).sort.map(&:to_s)
904
+ assert_equal inner_methods1, y.instance_methods(false).sort.map(&:to_s)
905
+ assert_equal inner_methods2, z.instance_methods(false).sort.map(&:to_s)
906
+ end
907
+
908
+ def test_structure_postfix_it
909
+ z = nil
910
+ y = describe "outer" do
911
+ # NOT here, below the inner-describe!
912
+ # it "inner-it" do end
913
+
914
+ z = describe "inner" do
915
+ it "inner-it" do end
916
+ end
917
+
918
+ # defined AFTER inner describe means we'll try to wipe out the inner-it
919
+ it "inner-it" do end
920
+ end
921
+
922
+ assert_equal %w[test_0001_inner-it], y.instance_methods(false).map(&:to_s)
923
+ assert_equal %w[test_0001_inner-it], z.instance_methods(false).map(&:to_s)
924
+ end
925
+
926
+ def test_setup_teardown_behavior
927
+ _, _, z, before_list, after_list = util_structure
928
+
929
+ @tu = z
930
+
931
+ run_tu_with_fresh_reporter
932
+
933
+ size = z.runnable_methods.size
934
+ assert_equal [1, 2, 3] * size, before_list
935
+ assert_equal [3, 2, 1] * size, after_list
936
+ end
937
+
938
+ def test_describe_first_structure
939
+ x1 = x2 = y = z = nil
940
+ x = describe "top-level thingy" do
941
+ y = describe "first thingy" do end
942
+
943
+ x1 = it "top level it" do end
944
+ x2 = it "не латинские &いった α, β, γ, δ, ε hello!!! world" do end
945
+
946
+ z = describe "second thingy" do end
947
+ end
948
+
949
+ test_methods = ["test_0001_top level it",
950
+ "test_0002_не латинские &いった α, β, γ, δ, ε hello!!! world",
951
+ ].sort
952
+
953
+ assert_equal test_methods, [x1, x2]
954
+ assert_equal test_methods, x.instance_methods.grep(/^test/).map(&:to_s).sort
955
+ assert_equal [], y.instance_methods.grep(/^test/)
956
+ assert_equal [], z.instance_methods.grep(/^test/)
957
+ end
958
+
959
+ def test_structure_subclasses
960
+ z = nil
961
+ x = Class.new Minitest::Spec do
962
+ def xyz; end
963
+ end
964
+ y = Class.new x do
965
+ z = describe("inner") { }
966
+ end
967
+
968
+ assert_respond_to x.new(nil), "xyz"
969
+ assert_respond_to y.new(nil), "xyz"
970
+ assert_respond_to z.new(nil), "xyz"
971
+ end
972
+ end
973
+
974
+ class TestSpecInTestCase < MetaMetaMetaTestCase
975
+ def setup
976
+ super
977
+
978
+ Thread.current[:current_spec] = self
979
+ @tc = self
980
+ @assertion_count = 2
981
+ end
982
+
983
+ def assert_triggered expected, klass = Minitest::Assertion
984
+ @assertion_count += 1
985
+
986
+ e = assert_raises klass do
987
+ yield
988
+ end
989
+
990
+ msg = e.message.sub(/(---Backtrace---).*/m, "\1")
991
+ msg.gsub!(/\(oid=[-0-9]+\)/, "(oid=N)")
992
+
993
+ assert_equal expected, msg
994
+ end
995
+
996
+ def teardown
997
+ msg = "expected #{@assertion_count} assertions, not #{@tc.assertions}"
998
+ assert_equal @assertion_count, @tc.assertions, msg
999
+ end
1000
+
1001
+ def test_expectation
1002
+ @tc.assert_equal true, _(1).must_equal(1)
1003
+ end
1004
+
1005
+ def test_expectation_triggered
1006
+ assert_triggered "Expected: 2\n Actual: 1" do
1007
+ _(1).must_equal 2
1008
+ end
1009
+ end
1010
+
1011
+ include Minitest::Spec::DSL::InstanceMethods
1012
+
1013
+ def test_expectation_with_a_message
1014
+ assert_triggered "woot.\nExpected: 2\n Actual: 1" do
1015
+ _(1).must_equal 2, "woot"
1016
+ end
1017
+ end
1018
+ end
1019
+
1020
+ class ValueMonadTest < Minitest::Test
1021
+ attr_accessor :struct
1022
+
1023
+ def setup
1024
+ @struct = { :_ => "a", :value => "b", :expect => "c" }
1025
+ def @struct.method_missing k # think openstruct
1026
+ self[k]
1027
+ end
1028
+ end
1029
+
1030
+ def test_value_monad_method
1031
+ assert_equal "a", struct._
1032
+ end
1033
+
1034
+ def test_value_monad_value_alias
1035
+ assert_equal "b", struct.value
1036
+ end
1037
+
1038
+ def test_value_monad_expect_alias
1039
+ assert_equal "c", struct.expect
1040
+ end
1041
+ end