win32-api 1.10.0 → 1.10.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 (209) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +3 -0
  3. data/Gemfile.lock +5 -5
  4. data/ext/mkmf.log +3 -27
  5. data/ext/win32/api.c +16 -15
  6. data/lib/win32/ruby2_32/win32/api.so +0 -0
  7. data/pkg/win32-api-1.10.1-universal-mingw32.gem +0 -0
  8. data/test/test_win32_api.rb +1 -1
  9. data/vendor/bundle/ruby/3.0.0/bin/rake +27 -0
  10. data/vendor/bundle/ruby/3.0.0/bin/rake.bat +2 -0
  11. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/BSDL +22 -0
  12. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/COPYING +57 -0
  13. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/Gemfile +9 -0
  14. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/LEGAL +4 -0
  15. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/README.md +96 -0
  16. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/Rakefile +59 -0
  17. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/bin/console +12 -0
  18. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/bin/setup +6 -0
  19. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/lib/power_assert.rb +91 -0
  20. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/lib/power_assert/colorize.rb +7 -0
  21. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/lib/power_assert/configuration.rb +46 -0
  22. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/lib/power_assert/context.rb +233 -0
  23. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/lib/power_assert/enable_tracepoint_events.rb +58 -0
  24. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/lib/power_assert/inspector.rb +62 -0
  25. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/lib/power_assert/parser.rb +251 -0
  26. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/lib/power_assert/version.rb +3 -0
  27. data/vendor/bundle/ruby/3.0.0/gems/power_assert-2.0.0/power_assert.gemspec +31 -0
  28. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/CONTRIBUTING.rdoc +43 -0
  29. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/Gemfile +10 -0
  30. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/History.rdoc +2386 -0
  31. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/MIT-LICENSE +21 -0
  32. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/README.rdoc +155 -0
  33. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/Rakefile +41 -0
  34. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/bin/bundle +105 -0
  35. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/bin/console +7 -0
  36. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/bin/rake +29 -0
  37. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/bin/rdoc +29 -0
  38. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/bin/rubocop +29 -0
  39. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/bin/setup +6 -0
  40. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/command_line_usage.rdoc +158 -0
  41. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/example/Rakefile1 +38 -0
  42. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/example/Rakefile2 +35 -0
  43. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/example/a.c +6 -0
  44. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/example/b.c +6 -0
  45. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/example/main.c +11 -0
  46. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/glossary.rdoc +42 -0
  47. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/jamis.rb +592 -0
  48. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/proto_rake.rdoc +127 -0
  49. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/rake.1 +156 -0
  50. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/rakefile.rdoc +622 -0
  51. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/doc/rational.rdoc +151 -0
  52. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/exe/rake +27 -0
  53. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake.rb +71 -0
  54. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/application.rb +824 -0
  55. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/backtrace.rb +24 -0
  56. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/clean.rb +78 -0
  57. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/cloneable.rb +17 -0
  58. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/cpu_counter.rb +107 -0
  59. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/default_loader.rb +15 -0
  60. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/dsl_definition.rb +195 -0
  61. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/early_time.rb +22 -0
  62. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/ext/core.rb +26 -0
  63. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/ext/string.rb +176 -0
  64. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/file_creation_task.rb +25 -0
  65. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/file_list.rb +435 -0
  66. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/file_task.rb +54 -0
  67. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/file_utils.rb +134 -0
  68. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/file_utils_ext.rb +134 -0
  69. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/invocation_chain.rb +57 -0
  70. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/invocation_exception_mixin.rb +17 -0
  71. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/late_time.rb +18 -0
  72. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/linked_list.rb +112 -0
  73. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/loaders/makefile.rb +54 -0
  74. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/multi_task.rb +14 -0
  75. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/name_space.rb +38 -0
  76. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/packagetask.rb +222 -0
  77. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/phony.rb +16 -0
  78. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/private_reader.rb +21 -0
  79. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/promise.rb +100 -0
  80. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/pseudo_status.rb +30 -0
  81. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/rake_module.rb +67 -0
  82. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/rake_test_loader.rb +27 -0
  83. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/rule_recursion_overflow_error.rb +20 -0
  84. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/scope.rb +43 -0
  85. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/task.rb +434 -0
  86. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/task_argument_error.rb +8 -0
  87. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/task_arguments.rb +109 -0
  88. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/task_manager.rb +331 -0
  89. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/tasklib.rb +12 -0
  90. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/testtask.rb +189 -0
  91. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/thread_history_display.rb +49 -0
  92. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/thread_pool.rb +163 -0
  93. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/trace_output.rb +23 -0
  94. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/version.rb +10 -0
  95. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/lib/rake/win32.rb +51 -0
  96. data/vendor/bundle/ruby/3.0.0/gems/rake-13.0.3/rake.gemspec +43 -0
  97. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/BSDL +24 -0
  98. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/COPYING +64 -0
  99. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/PSFL +271 -0
  100. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/README.md +97 -0
  101. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/Rakefile +66 -0
  102. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/doc/text/getting-started.md +246 -0
  103. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/doc/text/how-to.md +90 -0
  104. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/doc/text/news.md +1552 -0
  105. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test-unit.rb +19 -0
  106. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit.rb +521 -0
  107. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/assertion-failed-error.rb +25 -0
  108. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/assertions.rb +2256 -0
  109. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/attribute-matcher.rb +26 -0
  110. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/attribute.rb +227 -0
  111. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/auto-runner-loader.rb +17 -0
  112. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/autorunner.rb +569 -0
  113. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/code-snippet-fetcher.rb +58 -0
  114. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/collector.rb +73 -0
  115. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/collector/descendant.rb +19 -0
  116. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/collector/dir.rb +108 -0
  117. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/collector/load.rb +197 -0
  118. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/collector/objectspace.rb +34 -0
  119. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/collector/xml.rb +249 -0
  120. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/color-scheme.rb +216 -0
  121. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/color.rb +134 -0
  122. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/data-sets.rb +116 -0
  123. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/data.rb +371 -0
  124. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/diff.rb +745 -0
  125. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/error.rb +158 -0
  126. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/exception-handler.rb +82 -0
  127. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/failure.rb +169 -0
  128. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/fault-location-detector.rb +100 -0
  129. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/fixture.rb +304 -0
  130. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/notification.rb +138 -0
  131. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/omission.rb +198 -0
  132. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/pending.rb +155 -0
  133. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/priority.rb +196 -0
  134. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/runner/console.rb +67 -0
  135. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/runner/emacs.rb +8 -0
  136. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/runner/xml.rb +15 -0
  137. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/test-suite-creator.rb +103 -0
  138. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/testcase.rb +899 -0
  139. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/testresult.rb +132 -0
  140. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/testsuite.rb +175 -0
  141. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/ui/console/outputlevel.rb +15 -0
  142. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/ui/console/testrunner.rb +733 -0
  143. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  144. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/ui/testrunner.rb +53 -0
  145. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/ui/testrunnermediator.rb +114 -0
  146. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  147. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/ui/xml/testrunner.rb +224 -0
  148. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/util/backtracefilter.rb +59 -0
  149. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/util/method-owner-finder.rb +28 -0
  150. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/util/observable.rb +90 -0
  151. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/util/output.rb +32 -0
  152. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/util/procwrapper.rb +48 -0
  153. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/version.rb +5 -0
  154. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/lib/test/unit/warning.rb +3 -0
  155. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/sample/adder.rb +13 -0
  156. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/sample/subtracter.rb +12 -0
  157. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/sample/test_adder.rb +20 -0
  158. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/sample/test_subtracter.rb +20 -0
  159. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/sample/test_user.rb +23 -0
  160. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/collector/test-descendant.rb +182 -0
  161. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/collector/test-load.rb +475 -0
  162. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/collector/test_dir.rb +407 -0
  163. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/collector/test_objectspace.rb +102 -0
  164. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/fixtures/header-label.csv +3 -0
  165. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/fixtures/header-label.tsv +3 -0
  166. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/fixtures/header.csv +3 -0
  167. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/fixtures/header.tsv +3 -0
  168. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/fixtures/no-header.csv +2 -0
  169. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/fixtures/no-header.tsv +2 -0
  170. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/fixtures/plus.csv +3 -0
  171. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/run-test.rb +22 -0
  172. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-assertions.rb +2187 -0
  173. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-attribute-matcher.rb +38 -0
  174. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-attribute.rb +123 -0
  175. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-code-snippet.rb +79 -0
  176. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-color-scheme.rb +123 -0
  177. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-color.rb +47 -0
  178. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-data.rb +419 -0
  179. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-diff.rb +518 -0
  180. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-emacs-runner.rb +60 -0
  181. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-error.rb +26 -0
  182. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-failure.rb +33 -0
  183. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-fault-location-detector.rb +163 -0
  184. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-fixture.rb +713 -0
  185. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-notification.rb +33 -0
  186. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-omission.rb +81 -0
  187. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-pending.rb +70 -0
  188. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-priority.rb +184 -0
  189. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-test-case.rb +1284 -0
  190. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-test-result.rb +113 -0
  191. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-test-suite-creator.rb +97 -0
  192. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/test-test-suite.rb +151 -0
  193. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/testunit-test-util.rb +33 -0
  194. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/ui/test_testrunmediator.rb +20 -0
  195. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/util/test-method-owner-finder.rb +38 -0
  196. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/util/test-output.rb +11 -0
  197. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/util/test_backtracefilter.rb +52 -0
  198. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/util/test_observable.rb +102 -0
  199. data/vendor/bundle/ruby/3.0.0/gems/test-unit-3.4.1/test/util/test_procwrapper.rb +36 -0
  200. data/vendor/bundle/ruby/3.0.0/specifications/power_assert-2.0.0.gemspec +46 -0
  201. data/vendor/bundle/ruby/3.0.0/specifications/rake-13.0.3.gemspec +26 -0
  202. data/vendor/bundle/ruby/3.0.0/specifications/test-unit-3.4.1.gemspec +41 -0
  203. data/win32-api.gemspec +1 -1
  204. metadata +199 -8
  205. data/ext/Makefile +0 -269
  206. data/ext/api-x64-mingw32.def +0 -2
  207. data/ext/api.o +0 -0
  208. data/ext/api.so +0 -0
  209. data/ext/win32/api.so +0 -0
@@ -0,0 +1,26 @@
1
+ module Test
2
+ module Unit
3
+ class AttributeMatcher
4
+ def initialize(test)
5
+ @test = test
6
+ end
7
+
8
+ def match?(expression)
9
+ matched = instance_eval(expression)
10
+ if matched.nil?
11
+ false
12
+ else
13
+ matched
14
+ end
15
+ end
16
+
17
+ def method_missing(name, *args)
18
+ if args.empty?
19
+ @test[name]
20
+ else
21
+ super
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,227 @@
1
+ module Test
2
+ module Unit
3
+ module Attribute
4
+ class StringifyKeyHash < Hash
5
+ class << self
6
+ def stringify(object)
7
+ object.to_s
8
+ end
9
+ end
10
+
11
+ def key?(key)
12
+ super(self.class.stringify(key))
13
+ end
14
+
15
+ def [](key)
16
+ super(self.class.stringify(key))
17
+ end
18
+
19
+ def []=(key, value)
20
+ super(self.class.stringify(key), value)
21
+ end
22
+ end
23
+
24
+ class << self
25
+ def included(base)
26
+ base.extend(BaseClassMethods)
27
+ base.extend(ClassMethods)
28
+ end
29
+ end
30
+
31
+ module BaseClassMethods
32
+ def attributes_table
33
+ {}
34
+ end
35
+ end
36
+
37
+ module ClassMethods
38
+ def method_added(name)
39
+ super
40
+ return unless defined?(@current_attributes)
41
+
42
+ attributes = {}
43
+ kept_attributes = StringifyKeyHash.new
44
+ @current_attributes.each do |attribute_name, attribute|
45
+ attributes[attribute_name] = attribute[:value]
46
+ if attribute[:keep]
47
+ keep_hook = attribute[:keep_hook]
48
+ attribute = keep_hook.call(attribute) if keep_hook
49
+ kept_attributes[attribute_name] = attribute
50
+ end
51
+ end
52
+ set_attributes(name, attributes)
53
+ @current_attributes = kept_attributes
54
+ end
55
+
56
+ # Set an attribute to test methods.
57
+ #
58
+ # @overload attribute(name, value)
59
+ # @example
60
+ # attribute :speed, :slow
61
+ # def test_my_slow_method
62
+ # self[:speed] # => :slow
63
+ # end
64
+ #
65
+ # @param [Object] name the attribute name
66
+ # @param [Object] value the attribute value
67
+ # @return [void]
68
+ #
69
+ # @overload attribute(name, value, *method_names)
70
+ # @example
71
+ # def test_my_slow_method1
72
+ # self[:speed] # => :slow
73
+ # end
74
+ #
75
+ # attribute :speed, :slow, :test_my_slow_method1, :test_my_slow_method2
76
+ #
77
+ # def test_my_slow_method2
78
+ # self[:speed] # => :slow
79
+ # end
80
+ #
81
+ # @param [Object] name the attribute name
82
+ # @param [Object] value the attribute value
83
+ # @param [Array<Symbol, String>] method_names the test method names set the attribute
84
+ # @return [void]
85
+ #
86
+ # @overload attribute(name, value, options)
87
+ # @example
88
+ # attribute :speed, :slow, keep: true
89
+ # def test_my_slow_method1
90
+ # self[:speed] # => :slow
91
+ # end
92
+ #
93
+ # def test_my_slow_method2
94
+ # self[:speed] # => :slow
95
+ # end
96
+ #
97
+ # @param [Object] name the attribute name
98
+ # @param [Object] value the attribute value
99
+ # @option options [Boolean] :keep whether or not to set attribute to following test methods
100
+ # @return [void]
101
+ #
102
+ # @overload attribute(name, value, options, *method_names)
103
+ # @example
104
+ # def test_my_slow_method1
105
+ # self[:speed] # => :slow
106
+ # end
107
+ #
108
+ # # There are no valid options for now.
109
+ # attribute :speed, :slow, {}, :test_my_slow_method1
110
+ #
111
+ # def test_my_slow_method2
112
+ # self[:speed] # => nil
113
+ # end
114
+ #
115
+ # @param [Object] name the attribute name
116
+ # @param [Object] value the attribute value
117
+ # @param [Hash] options ignored
118
+ # @param [Array<Symbol, String>] method_names the test method names set the attribute
119
+ # @return [void]
120
+ def attribute(name, value, options={}, *method_names)
121
+ unless options.is_a?(Hash)
122
+ method_names << options
123
+ options = {}
124
+ end
125
+ if method_names.empty?
126
+ current_attributes[name] = options.merge(:value => value)
127
+ else
128
+ method_names.each do |method_name|
129
+ set_attributes(method_name, {name => value})
130
+ end
131
+ end
132
+ end
133
+
134
+ def current_attributes
135
+ @current_attributes ||= StringifyKeyHash.new
136
+ end
137
+
138
+ def current_attribute(name)
139
+ current_attributes[name] || StringifyKeyHash.new
140
+ end
141
+
142
+ def attributes_table
143
+ @attributes_table ||= StringifyKeyHash.new
144
+ super.merge(@attributes_table)
145
+ end
146
+
147
+ def set_attributes(method_name, new_attributes)
148
+ return if new_attributes.empty?
149
+ @attributes_table ||= StringifyKeyHash.new
150
+ @attributes_table[method_name] ||= StringifyKeyHash.new
151
+ current_attributes = @attributes_table[method_name]
152
+ new_attributes.each do |key, value|
153
+ observers = attribute_observers(key) || []
154
+ observers.each do |observer|
155
+ observer.call(self,
156
+ StringifyKeyHash.stringify(key),
157
+ (attributes(method_name) || {})[key],
158
+ value,
159
+ method_name)
160
+ end
161
+ current_attributes[key] = value
162
+ end
163
+ end
164
+
165
+ def attributes(method_name)
166
+ attributes = attributes_table[method_name]
167
+ ancestors.each do |ancestor|
168
+ next if ancestor == self
169
+ if ancestor.is_a?(Class) and ancestor < Test::Unit::Attribute
170
+ parent_attributes = ancestor.attributes(method_name)
171
+ if attributes
172
+ attributes = (parent_attributes || {}).merge(attributes)
173
+ else
174
+ attributes = parent_attributes
175
+ end
176
+ break
177
+ end
178
+ end
179
+ attributes || StringifyKeyHash.new
180
+ end
181
+
182
+ def find_attribute(method_name, name, options={})
183
+ recursive_p = options[:recursive]
184
+ recursive_p = true if recursive_p.nil?
185
+
186
+ @attributes_table ||= StringifyKeyHash.new
187
+ if @attributes_table.key?(method_name)
188
+ attributes = @attributes_table[method_name]
189
+ if attributes.key?(name)
190
+ return attributes[name]
191
+ end
192
+ end
193
+
194
+ return nil unless recursive_p
195
+ return nil if self == TestCase
196
+
197
+ @cached_parent_test_case ||= ancestors.find do |ancestor|
198
+ ancestor != self and
199
+ ancestor.is_a?(Class) and
200
+ ancestor < Test::Unit::Attribute
201
+ end
202
+
203
+ @cached_parent_test_case.find_attribute(method_name, name, options)
204
+ end
205
+
206
+ @@attribute_observers = StringifyKeyHash.new
207
+ def register_attribute_observer(attribute_name, observer=nil, &block)
208
+ observer ||= Proc.new(&block)
209
+ @@attribute_observers[attribute_name] ||= []
210
+ @@attribute_observers[attribute_name] << observer
211
+ end
212
+
213
+ def attribute_observers(attribute_name)
214
+ @@attribute_observers[attribute_name]
215
+ end
216
+ end
217
+
218
+ def attributes
219
+ self.class.attributes(@method_name) || StringifyKeyHash.new
220
+ end
221
+
222
+ def [](name)
223
+ self.class.find_attribute(@method_name, name)
224
+ end
225
+ end
226
+ end
227
+ end
@@ -0,0 +1,17 @@
1
+ require "test/unit/test-suite-creator"
2
+
3
+ module Test
4
+ module Unit
5
+ module AutoRunnerLoader
6
+ @loaded = false
7
+ class << self
8
+ def check(test_case, method_name)
9
+ return if @loaded
10
+ return unless TestSuiteCreator.test_method?(test_case, method_name)
11
+ require "test/unit"
12
+ @loaded = true
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,569 @@
1
+ require "English"
2
+
3
+ require "test/unit/color-scheme"
4
+ require "test/unit/priority"
5
+ require "test/unit/attribute-matcher"
6
+ require "test/unit/testcase"
7
+ require "optparse"
8
+
9
+ module Test
10
+ module Unit
11
+ class AutoRunner
12
+ RUNNERS = {}
13
+ COLLECTORS = {}
14
+ ADDITIONAL_OPTIONS = []
15
+ PREPARE_HOOKS = []
16
+
17
+ class << self
18
+ def register_runner(id, runner_builder=nil, &block)
19
+ runner_builder ||= Proc.new(&block)
20
+ RUNNERS[id] = runner_builder
21
+ RUNNERS[id.to_s] = runner_builder
22
+ end
23
+
24
+ def runner(id)
25
+ RUNNERS[id.to_s]
26
+ end
27
+
28
+ @@default_runner = nil
29
+ def default_runner
30
+ runner(@@default_runner)
31
+ end
32
+
33
+ def default_runner=(id)
34
+ @@default_runner = id
35
+ end
36
+
37
+ def register_collector(id, collector_builder=nil, &block)
38
+ collector_builder ||= Proc.new(&block)
39
+ COLLECTORS[id] = collector_builder
40
+ COLLECTORS[id.to_s] = collector_builder
41
+ end
42
+
43
+ def collector(id)
44
+ COLLECTORS[id.to_s]
45
+ end
46
+
47
+ def register_color_scheme(id, scheme)
48
+ ColorScheme[id] = scheme
49
+ end
50
+
51
+ def setup_option(option_builder=nil, &block)
52
+ option_builder ||= Proc.new(&block)
53
+ ADDITIONAL_OPTIONS << option_builder
54
+ end
55
+
56
+ def prepare(hook=nil, &block)
57
+ hook ||= Proc.new(&block)
58
+ PREPARE_HOOKS << hook
59
+ end
60
+
61
+ def run(force_standalone=false, default_dir=nil, argv=ARGV, &block)
62
+ r = new(force_standalone || standalone?, &block)
63
+ r.base = default_dir
64
+ r.prepare
65
+ r.process_args(argv)
66
+ r.run
67
+ end
68
+
69
+ def standalone?
70
+ return false unless("-e" == $0)
71
+ ObjectSpace.each_object(Class) do |klass|
72
+ return false if(klass < TestCase)
73
+ end
74
+ true
75
+ end
76
+
77
+ @@need_auto_run = true
78
+ def need_auto_run?
79
+ @@need_auto_run
80
+ end
81
+
82
+ def need_auto_run=(need)
83
+ @@need_auto_run = need
84
+ end
85
+ end
86
+
87
+ register_collector(:descendant) do |auto_runner|
88
+ require "test/unit/collector/descendant"
89
+ collector = Collector::Descendant.new
90
+ collector.filter = auto_runner.filters
91
+ collector.collect($0.sub(/\.rb\Z/, ""))
92
+ end
93
+
94
+ register_collector(:load) do |auto_runner|
95
+ require "test/unit/collector/load"
96
+ collector = Collector::Load.new
97
+ unless auto_runner.pattern.empty?
98
+ collector.patterns.replace(auto_runner.pattern)
99
+ end
100
+ unless auto_runner.exclude.empty?
101
+ collector.excludes.replace(auto_runner.exclude)
102
+ end
103
+ collector.base = auto_runner.base
104
+ collector.default_test_paths = auto_runner.default_test_paths
105
+ collector.filter = auto_runner.filters
106
+ collector.collect(*auto_runner.to_run)
107
+ end
108
+
109
+ # JUST TEST!
110
+ # register_collector(:xml) do |auto_runner|
111
+ # require "test/unit/collector/xml"
112
+ # collector = Collector::XML.new
113
+ # collector.filter = auto_runner.filters
114
+ # collector.collect(auto_runner.to_run[0])
115
+ # end
116
+
117
+ # deprecated
118
+ register_collector(:object_space) do |auto_runner|
119
+ require "test/unit/collector/objectspace"
120
+ c = Collector::ObjectSpace.new
121
+ c.filter = auto_runner.filters
122
+ c.collect($0.sub(/\.rb\Z/, ""))
123
+ end
124
+
125
+ # deprecated
126
+ register_collector(:dir) do |auto_runner|
127
+ require "test/unit/collector/dir"
128
+ c = Collector::Dir.new
129
+ c.filter = auto_runner.filters
130
+ unless auto_runner.pattern.empty?
131
+ c.pattern.replace(auto_runner.pattern)
132
+ end
133
+ unless auto_runner.exclude.empty?
134
+ c.exclude.replace(auto_runner.exclude)
135
+ end
136
+ c.base = auto_runner.base
137
+ $:.push(auto_runner.base) if auto_runner.base
138
+ c.collect(*(auto_runner.to_run.empty? ? ["."] : auto_runner.to_run))
139
+ end
140
+
141
+ attr_reader :suite, :runner_options
142
+ attr_accessor :filters, :to_run
143
+ attr_accessor :default_test_paths
144
+ attr_accessor :pattern, :exclude, :base, :workdir
145
+ attr_accessor :color_scheme, :listeners
146
+ attr_writer :stop_on_failure
147
+ attr_writer :runner, :collector
148
+
149
+ def initialize(standalone)
150
+ @standalone = standalone
151
+ @runner = default_runner
152
+ @collector = default_collector
153
+ @filters = []
154
+ @to_run = []
155
+ @default_test_paths = []
156
+ @color_scheme = ColorScheme.default
157
+ @runner_options = {}
158
+ @default_arguments = []
159
+ @workdir = nil
160
+ @listeners = []
161
+ @stop_on_failure = false
162
+ config_file = "test-unit.yml"
163
+ if File.exist?(config_file)
164
+ load_config(config_file)
165
+ else
166
+ load_global_config
167
+ end
168
+ yield(self) if block_given?
169
+ end
170
+
171
+ def stop_on_failure?
172
+ @stop_on_failure
173
+ end
174
+
175
+ def prepare
176
+ PREPARE_HOOKS.each do |handler|
177
+ handler.call(self)
178
+ end
179
+ end
180
+
181
+ def process_args(args=ARGV)
182
+ begin
183
+ args.unshift(*@default_arguments)
184
+ options.order!(args) {|arg| add_test_path(arg)}
185
+ rescue OptionParser::ParseError => e
186
+ puts e
187
+ puts options
188
+ exit(false)
189
+ end
190
+ not @to_run.empty?
191
+ end
192
+
193
+ def options
194
+ @options ||= OptionParser.new do |o|
195
+ o.banner = "Test::Unit automatic runner."
196
+ o.banner += "\nUsage: #{$0} [options] [-- untouched arguments]"
197
+
198
+ o.on("-r", "--runner=RUNNER", RUNNERS,
199
+ "Use the given RUNNER.",
200
+ "(" + keyword_display(RUNNERS) + ")") do |r|
201
+ @runner = r
202
+ end
203
+
204
+ o.on("--collector=COLLECTOR", COLLECTORS,
205
+ "Use the given COLLECTOR.",
206
+ "(" + keyword_display(COLLECTORS) + ")") do |collector|
207
+ @collector = collector
208
+ end
209
+
210
+ if (@standalone)
211
+ o.on("-b", "--basedir=DIR", "Base directory of test suites.") do |b|
212
+ @base = b
213
+ end
214
+
215
+ o.on("-w", "--workdir=DIR", "Working directory to run tests.") do |w|
216
+ @workdir = w
217
+ end
218
+
219
+ o.on("--default-test-path=PATH",
220
+ "Add PATH to the default test paths.",
221
+ "The PATH is used when user doesn't specify any test path.",
222
+ "You can specify this option multiple times.") do |path|
223
+ @default_test_paths << path
224
+ end
225
+
226
+ o.on("-a", "--add=TORUN", Array,
227
+ "Add TORUN to the list of things to run;",
228
+ "can be a file or a directory.") do |paths|
229
+ paths.each do |path|
230
+ add_test_path(path)
231
+ end
232
+ end
233
+
234
+ @pattern = []
235
+ o.on("-p", "--pattern=PATTERN", Regexp,
236
+ "Match files to collect against PATTERN.") do |e|
237
+ @pattern << e
238
+ end
239
+
240
+ @exclude = []
241
+ o.on("-x", "--exclude=PATTERN", Regexp,
242
+ "Ignore files to collect against PATTERN.") do |e|
243
+ @exclude << e
244
+ end
245
+ end
246
+
247
+ o.on("-n", "--name=NAME", String,
248
+ "Runs tests matching NAME.",
249
+ "Use '/PATTERN/' for NAME to use regular expression.",
250
+ "Regular expression accepts options.",
251
+ "Example: '/taRget/i' matches 'target' and 'TARGET'") do |name|
252
+ name = prepare_name(name)
253
+ @filters << lambda do |test|
254
+ match_test_name(test, name)
255
+ end
256
+ end
257
+
258
+ o.on("--ignore-name=NAME", String,
259
+ "Ignores tests matching NAME.",
260
+ "Use '/PATTERN/' for NAME to use regular expression.",
261
+ "Regular expression accepts options.",
262
+ "Example: '/taRget/i' matches 'target' and 'TARGET'") do |name|
263
+ name = prepare_name(name)
264
+ @filters << lambda do |test|
265
+ not match_test_name(test, name)
266
+ end
267
+ end
268
+
269
+ o.on("-t", "--testcase=TESTCASE", String,
270
+ "Runs tests in TestCases matching TESTCASE.",
271
+ "Use '/PATTERN/' for TESTCASE to use regular expression.",
272
+ "Regular expression accepts options.",
273
+ "Example: '/taRget/i' matches 'target' and 'TARGET'") do |name|
274
+ name = prepare_name(name)
275
+ @filters << lambda do |test|
276
+ match_test_case_name(test, name)
277
+ end
278
+ end
279
+
280
+ o.on("--ignore-testcase=TESTCASE", String,
281
+ "Ignores tests in TestCases matching TESTCASE.",
282
+ "Use '/PATTERN/' for TESTCASE to use regular expression.",
283
+ "Regular expression accepts options.",
284
+ "Example: '/taRget/i' matches 'target' and 'TARGET'") do |name|
285
+ name = prepare_name(name)
286
+ @filters << lambda do |test|
287
+ not match_test_case_name(test, name)
288
+ end
289
+ end
290
+
291
+ o.on("--location=LOCATION", String,
292
+ "Runs tests that defined in LOCATION.",
293
+ "LOCATION is one of PATH:LINE, PATH or LINE.") do |location|
294
+ case location
295
+ when /\A(\d+)\z/
296
+ path = nil
297
+ line = $1.to_i
298
+ when /:(\d+)\z/
299
+ path = $PREMATCH
300
+ line = $1.to_i
301
+ else
302
+ path = location
303
+ line = nil
304
+ end
305
+ add_location_filter(path, line)
306
+ end
307
+
308
+ o.on("--attribute=EXPRESSION", String,
309
+ "Runs tests that matches EXPRESSION.",
310
+ "EXPRESSION is evaluated as Ruby's expression.",
311
+ "Test attribute name can be used with no receiver in EXPRESSION.",
312
+ "EXPRESSION examples:",
313
+ " !slow",
314
+ " tag == 'important' and !slow") do |expression|
315
+ @filters << lambda do |test|
316
+ matcher = AttributeMatcher.new(test)
317
+ matcher.match?(expression)
318
+ end
319
+ end
320
+
321
+ priority_filter = Proc.new do |test|
322
+ if @filters == [priority_filter]
323
+ Priority::Checker.new(test).need_to_run?
324
+ else
325
+ nil
326
+ end
327
+ end
328
+ o.on("--[no-]priority-mode",
329
+ "Runs some tests based on their priority.") do |priority_mode|
330
+ if priority_mode
331
+ Priority.enable
332
+ @filters |= [priority_filter]
333
+ else
334
+ Priority.disable
335
+ @filters -= [priority_filter]
336
+ end
337
+ end
338
+
339
+ o.on("--default-priority=PRIORITY",
340
+ Priority.available_values,
341
+ "Uses PRIORITY as default priority",
342
+ "(#{keyword_display(Priority.available_values)})") do |priority|
343
+ Priority.default = priority
344
+ end
345
+
346
+ o.on("-I", "--load-path=DIR[#{File::PATH_SEPARATOR}DIR...]",
347
+ "Appends directory list to $LOAD_PATH.") do |dirs|
348
+ $LOAD_PATH.concat(dirs.split(File::PATH_SEPARATOR))
349
+ end
350
+
351
+ color_schemes = ColorScheme.all
352
+ o.on("--color-scheme=SCHEME", color_schemes,
353
+ "Use SCHEME as color scheme.",
354
+ "(#{keyword_display(color_schemes)})") do |scheme|
355
+ @color_scheme = scheme
356
+ end
357
+
358
+ o.on("--config=FILE",
359
+ "Use YAML format FILE content as configuration file.") do |file|
360
+ load_config(file)
361
+ end
362
+
363
+ o.on("--order=ORDER", TestCase::AVAILABLE_ORDERS,
364
+ "Run tests in a test case in ORDER order.",
365
+ "(#{keyword_display(TestCase::AVAILABLE_ORDERS)})") do |order|
366
+ TestCase.test_order = order
367
+ end
368
+
369
+ assertion_message_class = Test::Unit::Assertions::AssertionMessage
370
+ o.on("--max-diff-target-string-size=SIZE", Integer,
371
+ "Shows diff if both expected result string size and " +
372
+ "actual result string size are " +
373
+ "less than or equal SIZE in bytes.",
374
+ "(#{assertion_message_class.max_diff_target_string_size})") do |size|
375
+ assertion_message_class.max_diff_target_string_size = size
376
+ end
377
+
378
+ o.on("--[no-]stop-on-failure",
379
+ "Stops immediately on the first non success test",
380
+ "(#{@stop_on_failure})") do |boolean|
381
+ @stop_on_failure = boolean
382
+ end
383
+
384
+ ADDITIONAL_OPTIONS.each do |option_builder|
385
+ option_builder.call(self, o)
386
+ end
387
+
388
+ o.on("--",
389
+ "Stop processing options so that the",
390
+ "remaining options will be passed to the",
391
+ "test."){o.terminate}
392
+
393
+ o.on("-h", "--help", "Display this help."){puts o; exit}
394
+
395
+ o.on_tail
396
+ o.on_tail("Deprecated options:")
397
+
398
+ o.on_tail("--console", "Console runner (use --runner).") do
399
+ warn("Deprecated option (--console).")
400
+ @runner = self.class.runner(:console)
401
+ end
402
+
403
+ if RUNNERS[:fox]
404
+ o.on_tail("--fox", "Fox runner (use --runner).") do
405
+ warn("Deprecated option (--fox).")
406
+ @runner = self.class.runner(:fox)
407
+ end
408
+ end
409
+
410
+ o.on_tail
411
+ end
412
+ end
413
+
414
+ def keyword_display(keywords)
415
+ keywords = keywords.collect do |keyword, _|
416
+ keyword.to_s
417
+ end.uniq.sort
418
+
419
+ i = 0
420
+ keywords.collect do |keyword|
421
+ if (i > 0 and keyword[0] == keywords[i - 1][0]) or
422
+ ((i < keywords.size - 1) and (keyword[0] == keywords[i + 1][0]))
423
+ n = 2
424
+ else
425
+ n = 1
426
+ end
427
+ i += 1
428
+ keyword.sub(/^(.{#{n}})([A-Za-z]+)(?=\w*$)/, '\\1[\\2]')
429
+ end.join(", ")
430
+ end
431
+
432
+ def run
433
+ self.class.need_auto_run = false
434
+ suite = @collector[self]
435
+ return false if suite.nil?
436
+ return true if suite.empty?
437
+ runner = @runner[self]
438
+ return false if runner.nil?
439
+ @runner_options[:color_scheme] ||= @color_scheme
440
+ @runner_options[:listeners] ||= []
441
+ @runner_options[:listeners].concat(@listeners)
442
+ if @stop_on_failure
443
+ @runner_options[:listeners] << StopOnFailureListener.new
444
+ end
445
+ change_work_directory do
446
+ runner.run(suite, @runner_options).passed?
447
+ end
448
+ end
449
+
450
+ def load_config(file)
451
+ require "yaml"
452
+ config = YAML.load(File.read(file))
453
+ runner_name = config["runner"]
454
+ @runner = self.class.runner(runner_name) || @runner
455
+ @collector = self.class.collector(config["collector"]) || @collector
456
+ (config["color_schemes"] || {}).each do |name, options|
457
+ ColorScheme[name] = options
458
+ end
459
+ runner_options = {}
460
+ (config["#{runner_name}_options"] || {}).each do |key, value|
461
+ key = key.to_sym
462
+ value = ColorScheme[value] if key == :color_scheme
463
+ if key == :arguments
464
+ @default_arguments.concat(value.split)
465
+ else
466
+ runner_options[key] = value
467
+ end
468
+ end
469
+ @runner_options = @runner_options.merge(runner_options)
470
+ end
471
+
472
+ private
473
+ def default_runner
474
+ runner = self.class.default_runner
475
+ if ENV["EMACS"] == "t"
476
+ runner ||= self.class.runner(:emacs)
477
+ else
478
+ runner ||= self.class.runner(:console)
479
+ end
480
+ runner
481
+ end
482
+
483
+ def default_collector
484
+ self.class.collector(@standalone ? :load : :descendant)
485
+ end
486
+
487
+ def global_config_file
488
+ File.expand_path("~/.test-unit.yml")
489
+ rescue ArgumentError
490
+ nil
491
+ end
492
+
493
+ def load_global_config
494
+ file = global_config_file
495
+ load_config(file) if file and File.exist?(file)
496
+ end
497
+
498
+ def change_work_directory(&block)
499
+ if @workdir
500
+ Dir.chdir(@workdir, &block)
501
+ else
502
+ yield
503
+ end
504
+ end
505
+
506
+ def prepare_name(name)
507
+ case name
508
+ when /\A\/(.*)\/([imx]*)\z/
509
+ pattern = $1
510
+ options_raw = $2
511
+ options = 0
512
+ options |= Regexp::IGNORECASE if options_raw.include?("i")
513
+ options |= Regexp::MULTILINE if options_raw.include?("m")
514
+ options |= Regexp::EXTENDED if options_raw.include?("x")
515
+ Regexp.new(pattern, options)
516
+ else
517
+ name
518
+ end
519
+ end
520
+
521
+ def match_test_name(test, pattern)
522
+ return true if pattern === test.method_name
523
+ return true if pattern === test.local_name
524
+ if pattern.is_a?(String)
525
+ return true if pattern === "#{test.class}##{test.method_name}"
526
+ return true if pattern === "#{test.class}##{test.local_name}"
527
+ end
528
+ false
529
+ end
530
+
531
+ def match_test_case_name(test, pattern)
532
+ test.class.ancestors.each do |test_class|
533
+ break if test_class == TestCase
534
+ return true if pattern === test_class.name
535
+ end
536
+ false
537
+ end
538
+
539
+ def add_test_path(path)
540
+ if /:(\d+)\z/ =~ path
541
+ line = $1.to_i
542
+ path = $PREMATCH
543
+ add_location_filter(path, line)
544
+ end
545
+ @to_run << path
546
+ end
547
+
548
+ def add_location_filter(path, line)
549
+ @filters << lambda do |test|
550
+ test.class.test_defined?(:path => path,
551
+ :line => line,
552
+ :method_name => test.method_name)
553
+ end
554
+ end
555
+
556
+ class StopOnFailureListener
557
+ def attach_to_mediator(mediator)
558
+ mediator.add_listener(TestResult::FINISHED) do |result|
559
+ result.stop unless result.passed?
560
+ end
561
+ end
562
+ end
563
+ end
564
+ end
565
+ end
566
+
567
+ require "test/unit/runner/console"
568
+ require "test/unit/runner/emacs"
569
+ require "test/unit/runner/xml"