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,899 @@
1
+ #--
2
+ #
3
+ # Author:: Nathaniel Talbott.
4
+ # Copyright::
5
+ # * Copyright (c) 2000-2003 Nathaniel Talbott. All rights reserved.
6
+ # * Copyright (c) 2008-2012 Kouhei Sutou <tt><kou@clear-code.com></tt>
7
+ # License:: Ruby license.
8
+
9
+ require 'test/unit/attribute'
10
+ require 'test/unit/fixture'
11
+ require 'test/unit/exception-handler'
12
+ require 'test/unit/assertions'
13
+ require 'test/unit/failure'
14
+ require 'test/unit/error'
15
+ require 'test/unit/pending'
16
+ require 'test/unit/omission'
17
+ require 'test/unit/notification'
18
+ require 'test/unit/priority'
19
+ require 'test/unit/data'
20
+ require 'test/unit/testsuite'
21
+ require 'test/unit/test-suite-creator'
22
+ require 'test/unit/assertion-failed-error'
23
+ require 'test/unit/auto-runner-loader'
24
+ require 'test/unit/util/backtracefilter'
25
+ require 'test/unit/util/output'
26
+ require 'test/unit/util/method-owner-finder'
27
+
28
+ module Test
29
+ module Unit
30
+
31
+ # Ties everything together. If you subclass and add your own
32
+ # test methods, it takes care of making them into tests and
33
+ # wrapping those tests into a suite. It also does the
34
+ # nitty-gritty of actually running an individual test and
35
+ # collecting its results into a Test::Unit::TestResult object.
36
+ #
37
+ # You can run two hooks before/after a TestCase run.
38
+ #
39
+ # Example:
40
+ #
41
+ # class TestMyClass < Test::Unit::TestCase
42
+ # class << self
43
+ # def startup
44
+ # ...
45
+ # end
46
+ #
47
+ # def shutdown
48
+ # ...
49
+ # end
50
+ # end
51
+ #
52
+ # def setup
53
+ # ...
54
+ # end
55
+ #
56
+ # def cleanup
57
+ # ...
58
+ # end
59
+ #
60
+ # def teardown
61
+ # ...
62
+ # end
63
+ #
64
+ # def test_my_method1
65
+ # ...
66
+ # end
67
+ #
68
+ # def test_my_method2
69
+ # ...
70
+ # end
71
+ # end
72
+ #
73
+ # Here is a call order:
74
+ #
75
+ # 1. startup
76
+ # 1. setup
77
+ # 1. test_my_method1
78
+ # 1. cleanup
79
+ # 1. teardown
80
+ # 1. setup
81
+ # 1. test_my_method2
82
+ # 1. cleanup
83
+ # 1. teardown
84
+ # 1. shutdown
85
+ #
86
+ # You can set an attribute to each test.
87
+ #
88
+ # Example:
89
+ #
90
+ # class TestMyClass < Test::Unit::TestCase
91
+ # attribute :speed, :fast
92
+ # def test_my_fast_method
93
+ # # You can get the attribute via `self[]`
94
+ # self[:speed] # => :fast
95
+ # ...
96
+ # end
97
+ #
98
+ # attribute :speed, :slow
99
+ # def test_my_slow_method
100
+ # self[:speed] # => :slow
101
+ # ...
102
+ # end
103
+ # end
104
+ class TestCase
105
+ include Attribute
106
+ include Fixture
107
+ include ExceptionHandler
108
+ include ErrorHandler
109
+ include FailureHandler
110
+ include TestCasePendingSupport
111
+ include TestCaseOmissionSupport
112
+ include TestCaseNotificationSupport
113
+ include Priority
114
+ include Data
115
+ include Assertions
116
+ include Util::BacktraceFilter
117
+ include Util::Output
118
+
119
+ STARTED = name + "::STARTED" # :nodoc:
120
+ FINISHED = name + "::FINISHED" # :nodoc:
121
+ STARTED_OBJECT = name + "::STARTED::OBJECT" # :nodoc:
122
+ FINISHED_OBJECT = name + "::FINISHED::OBJECT" # :nodoc:
123
+
124
+ DESCENDANTS = [] # :nodoc:
125
+ AVAILABLE_ORDERS = [:alphabetic, :random, :defined] # :nodoc:
126
+
127
+ class << self
128
+ def inherited(sub_class) # :nodoc:
129
+ DESCENDANTS << sub_class
130
+ super
131
+ end
132
+
133
+ def include(*modules, &block) # :nodoc:
134
+ super
135
+ modules.each do |mod|
136
+ mod.public_instance_methods(false).each do |method_name|
137
+ AutoRunnerLoader.check(self, method_name.to_s)
138
+ end
139
+ end
140
+ end
141
+
142
+ @@added_method_names = {}
143
+ def method_added(name) # :nodoc:
144
+ super
145
+ added_method_names = (@@added_method_names[self] ||= {})
146
+ stringified_name = name.to_s
147
+ if added_method_names.key?(stringified_name)
148
+ attribute(:redefined, {:backtrace => caller}, {}, stringified_name)
149
+ end
150
+ source_location = find_attribute(stringified_name, :source_location)
151
+ if source_location
152
+ path, line = source_location
153
+ elsif respond_to?(:caller_locations, true)
154
+ location = caller_locations(1, 1)[0]
155
+ path = location.absolute_path || location.path
156
+ line = location.lineno
157
+ else
158
+ # TODO: Remove me when Ruby 1.9 support is dropped
159
+ path, line, = caller[0].split(/:(\d+)/, 2)
160
+ line = line.to_i if line
161
+ end
162
+ location = {
163
+ :method_name => stringified_name,
164
+ :path => File.expand_path(path),
165
+ :line => line,
166
+ }
167
+ add_method_location(location)
168
+ added_method_names[stringified_name] = true
169
+ AutoRunnerLoader.check(self, stringified_name)
170
+ end
171
+
172
+ def added_method_names # :nodoc:
173
+ (@@added_method_names[self] ||= {}).keys
174
+ end
175
+
176
+ # Rolls up all of the test* methods in the fixture into
177
+ # one suite, creating a new instance of the fixture for
178
+ # each method.
179
+ def suite
180
+ suite_creator = TestSuiteCreator.new(self)
181
+ suite_creator.create
182
+ end
183
+
184
+ # Called before every test case runs. Can be used
185
+ # to set up fixture information used in test case
186
+ # scope.
187
+ #
188
+ # Here is an example test case:
189
+ #
190
+ # class TestMyClass < Test::Unit::TestCase
191
+ # class << self
192
+ # def startup
193
+ # ...
194
+ # end
195
+ # end
196
+ #
197
+ # def setup
198
+ # ...
199
+ # end
200
+ #
201
+ # def test_my_class1
202
+ # ...
203
+ # end
204
+ #
205
+ # def test_my_class2
206
+ # ...
207
+ # end
208
+ # end
209
+ #
210
+ # Here is a call order:
211
+ #
212
+ # * startup
213
+ # * setup
214
+ # * test_my_class1 (or test_my_class2)
215
+ # * setup
216
+ # * test_my_class2 (or test_my_class1)
217
+ #
218
+ # Note that you should not assume test order. Tests
219
+ # should be worked in any order.
220
+ def startup
221
+ end
222
+
223
+ # Called after every test case runs. Can be used to tear
224
+ # down fixture information used in test case scope.
225
+ #
226
+ # Here is an example test case:
227
+ #
228
+ # class TestMyClass < Test::Unit::TestCase
229
+ # class << self
230
+ # def shutdown
231
+ # ...
232
+ # end
233
+ # end
234
+ #
235
+ # def teardown
236
+ # ...
237
+ # end
238
+ #
239
+ # def test_my_class1
240
+ # ...
241
+ # end
242
+ #
243
+ # def test_my_class2
244
+ # ...
245
+ # end
246
+ # end
247
+ #
248
+ # Here is a call order:
249
+ #
250
+ # * test_my_class1 (or test_my_class2)
251
+ # * teardown
252
+ # * test_my_class2 (or test_my_class1)
253
+ # * teardown
254
+ # * shutdown
255
+ #
256
+ # Note that you should not assume test order. Tests
257
+ # should be worked in any order.
258
+ def shutdown
259
+ end
260
+
261
+ @@test_orders = {}
262
+
263
+ # Returns the current test order. This returns
264
+ # `:alphabetic` by default.
265
+ def test_order
266
+ ancestors.each do |ancestor|
267
+ order = @@test_orders[ancestor]
268
+ return order if order
269
+ end
270
+ AVAILABLE_ORDERS.first
271
+ end
272
+
273
+ # Sets the current test order.
274
+ #
275
+ # Here are the available _order_:
276
+ #
277
+ # :alphabetic
278
+ # : Default. Tests are sorted in alphabetic order.
279
+ #
280
+ # :random
281
+ # : Tests are sorted in random order.
282
+ #
283
+ # :defined
284
+ # : Tests are sorted in defined order.
285
+ def test_order=(order)
286
+ @@test_orders[self] = order
287
+ end
288
+
289
+ # Defines a test in declarative syntax or marks
290
+ # following method as a test method.
291
+ #
292
+ # In declarative syntax usage, the following two
293
+ # test definitions are the almost same:
294
+ #
295
+ # description "register user"
296
+ # def test_register_user
297
+ # ...
298
+ # end
299
+ #
300
+ # test "register user" do
301
+ # ...
302
+ # end
303
+ #
304
+ # In test method mark usage, the "my_test_method" is
305
+ # treated as a test method:
306
+ #
307
+ # test
308
+ # def my_test_method
309
+ # assert_equal("call me", ...)
310
+ # end
311
+ def test(*test_description_or_targets, &block)
312
+ if block_given?
313
+ test_description = test_description_or_targets.first
314
+ if test_description.nil?
315
+ raise ArgumentError, "test description is missing"
316
+ end
317
+ n_arguments = test_description_or_targets.size
318
+ if n_arguments > 1
319
+ message = "wrong number of arguments (#{n_arguments} for 1)"
320
+ raise ArgumentError, message
321
+ end
322
+ method_name = "test: #{test_description}"
323
+ description(test_description, method_name)
324
+ attribute(:test, true, {}, method_name)
325
+ if block.respond_to?(:source_location)
326
+ attribute(:source_location, block.source_location, {}, method_name)
327
+ end
328
+ define_method(method_name, &block)
329
+ else
330
+ targets = test_description_or_targets
331
+ attribute(:test, true, {}, *targets)
332
+ targets.each do |target|
333
+ AutoRunnerLoader.check(self, target)
334
+ end
335
+ end
336
+ end
337
+
338
+ # Describes a test.
339
+ #
340
+ # The following example associates "register a
341
+ # normal user" description with "test_register"
342
+ # test.
343
+ #
344
+ # description "register a normal user"
345
+ # def test_register
346
+ # ...
347
+ # end
348
+ def description(value, target=nil)
349
+ targets = [target].compact
350
+ attribute(:description, value, {}, *targets)
351
+ end
352
+
353
+ # Defines a sub test case.
354
+ #
355
+ # This is a syntax sugar. The both of the following codes are
356
+ # the same in meaning:
357
+ #
358
+ # Standard:
359
+ #
360
+ # class TestParent < Test::Unit::TestCase
361
+ # class TestChild < self
362
+ # def test_in_child
363
+ # end
364
+ # end
365
+ # end
366
+ #
367
+ # Syntax sugar:
368
+ #
369
+ # class TestParent < Test::Unit::TestCase
370
+ # sub_test_case("TestChild") do
371
+ # def test_in_child
372
+ # end
373
+ # end
374
+ # end
375
+ #
376
+ # The difference of them are the following:
377
+ #
378
+ # * Test case created by {sub_test_case} is an anonymous class.
379
+ # So you can't refer the test case by name.
380
+ # * The class name of class style must follow
381
+ # constant naming rule in Ruby. But the name of test case
382
+ # created by {sub_test_case} doesn't need to follow the rule.
383
+ # For example, you can use a space in name such as "child test".
384
+ #
385
+ # @param name [String] The name of newly created sub test case.
386
+ # @yield
387
+ # The block is evaluated under the newly created sub test
388
+ # case class context.
389
+ # @return [Test::Unit::TestCase] Created sub test case class.
390
+ def sub_test_case(name, &block)
391
+ parent_test_case = self
392
+ sub_test_case = Class.new(self) do
393
+ singleton_class = class << self; self; end
394
+ singleton_class.__send__(:define_method, :name) do
395
+ [parent_test_case.name, name].compact.join("::")
396
+ end
397
+ end
398
+ sub_test_case.class_eval(&block)
399
+ sub_test_case
400
+ end
401
+
402
+ # Checks whether a test that is matched the query is
403
+ # defined.
404
+ #
405
+ # @option query [String] :path (nil)
406
+ # the path where a test is defined in.
407
+ # @option query [Numeric] :line (nil)
408
+ # the line number where a test is defined at.
409
+ # @option query [String] :method_name (nil)
410
+ # the method name for a test.
411
+ def test_defined?(query)
412
+ locations = find_locations(query)
413
+ not locations.empty?
414
+ end
415
+
416
+ def find_locations(query)
417
+ query_path = query[:path]
418
+ query_line = query[:line]
419
+ query_method_name = query[:method_name]
420
+
421
+ available_locations = target_method_locations(query_path)
422
+ if query_line
423
+ available_locations = available_locations.sort_by do |location|
424
+ -location[:line]
425
+ end
426
+ available_location = available_locations.find do |location|
427
+ query_line >= location[:line]
428
+ end
429
+ return [] if available_location.nil?
430
+ return [] if available_location[:test_case] != self
431
+ available_locations = [available_location]
432
+ end
433
+ if query_method_name
434
+ available_location = available_locations.find do |location|
435
+ location[:test_case] == self and
436
+ query_method_name == location[:method_name]
437
+ end
438
+ return [] if available_location.nil?
439
+ available_locations = [available_location]
440
+ end
441
+
442
+ available_locations
443
+ end
444
+
445
+ private
446
+ # @private
447
+ @@method_locations = {}
448
+ # @private
449
+ @@method_location_mutex = Mutex.new
450
+
451
+ # @private
452
+ def method_locations
453
+ @@method_locations[self] ||= []
454
+ end
455
+
456
+ # @private
457
+ def add_method_location(location)
458
+ @@method_location_mutex.synchronize do
459
+ method_locations << location
460
+ end
461
+ end
462
+
463
+ # @private
464
+ def target_method_locations(path)
465
+ @@method_location_mutex.synchronize do
466
+ if path.nil?
467
+ self_location = method_locations.first
468
+ path = self_location[:path] if self_location
469
+ end
470
+ return [] if path.nil?
471
+
472
+ target_locations = []
473
+ @@method_locations.each do |test_case, locations|
474
+ locations.each do |location|
475
+ absolete_path = File.expand_path(path)
476
+ location_path = location[:path]
477
+ location_basename = File.basename(location_path)
478
+ if location_path == absolete_path or location_basename == path
479
+ target_locations << location.merge(:test_case => test_case)
480
+ end
481
+ end
482
+ end
483
+ target_locations
484
+ end
485
+ end
486
+ end
487
+
488
+ attr_reader :method_name
489
+
490
+ # Creates a new instance of the fixture for running the
491
+ # test represented by test_method_name.
492
+ def initialize(test_method_name)
493
+ @method_name = test_method_name
494
+ @internal_data = InternalData.new
495
+ end
496
+
497
+ # Assigns test data to the test. It is used in internal.
498
+ def assign_test_data(label, data) # :nodoc:
499
+ @internal_data.assign_test_data(label, data)
500
+ end
501
+
502
+ # Returns the test is valid test. It is used in internal.
503
+ def valid? # :nodoc:
504
+ return false unless respond_to?(@method_name)
505
+ test_method = method(@method_name)
506
+ unless @internal_data.have_test_data?
507
+ return false unless test_method.arity <= 0
508
+ end
509
+ owner = Util::MethodOwnerFinder.find(self, @method_name)
510
+ if owner.class != Module and self.class != owner
511
+ return false
512
+ end
513
+ true
514
+ end
515
+
516
+ # Runs the individual test method represented by this
517
+ # instance of the fixture, collecting statistics, failures
518
+ # and errors in result.
519
+ def run(result)
520
+ begin
521
+ @_result = result
522
+ @internal_data.test_started
523
+ yield(STARTED, name)
524
+ yield(STARTED_OBJECT, self)
525
+ processed_exception_in_setup = false
526
+ begin
527
+ catch do |tag|
528
+ run_setup do
529
+ begin
530
+ run_test
531
+ run_cleanup
532
+ add_pass
533
+ rescue Exception
534
+ @internal_data.interrupted
535
+ unless handle_exception($!)
536
+ processed_exception_in_setup = true
537
+ raise
538
+ end
539
+ throw(tag)
540
+ end
541
+ end
542
+ end
543
+ rescue Exception
544
+ if processed_exception_in_setup
545
+ raise
546
+ else
547
+ @internal_data.interrupted
548
+ raise unless handle_exception($!)
549
+ end
550
+ ensure
551
+ begin
552
+ run_teardown
553
+ rescue Exception
554
+ raise unless handle_exception($!)
555
+ end
556
+ end
557
+ @internal_data.test_finished
558
+ result.add_run
559
+ yield(FINISHED, name)
560
+ yield(FINISHED_OBJECT, self)
561
+ ensure
562
+ # @_result = nil # For test-spec's after_all :<
563
+ end
564
+ end
565
+
566
+ # Called before every test method runs. Can be used
567
+ # to set up fixture information.
568
+ #
569
+ # You can add additional setup tasks by the following
570
+ # code:
571
+ #
572
+ # class TestMyClass < Test::Unit::TestCase
573
+ # def setup
574
+ # ...
575
+ # end
576
+ #
577
+ # setup
578
+ # def my_setup1
579
+ # ...
580
+ # end
581
+ #
582
+ # setup do
583
+ # ... # setup callback1
584
+ # end
585
+ #
586
+ # setup
587
+ # def my_setup2
588
+ # ...
589
+ # end
590
+ #
591
+ # setup do
592
+ # ... # setup callback2
593
+ # end
594
+ #
595
+ # def test_my_class
596
+ # ...
597
+ # end
598
+ # end
599
+ #
600
+ # Here is a call order:
601
+ #
602
+ # * setup
603
+ # * my_setup1
604
+ # * setup callback1
605
+ # * my_setup2
606
+ # * setup callback2
607
+ # * test_my_class
608
+ def setup
609
+ end
610
+
611
+ # Called after every test method runs but the test
612
+ # method isn't marked as 'passed'. Can be used to
613
+ # clean up and/or verify tested condition.
614
+ # e.g. Can be used to verify mock.
615
+ #
616
+ # You can add additional cleanup tasks by the following
617
+ # code:
618
+ #
619
+ # class TestMyClass < Test::Unit::TestCase
620
+ # def cleanup
621
+ # ...
622
+ # end
623
+ #
624
+ # cleanup
625
+ # def my_cleanup1
626
+ # ...
627
+ # end
628
+ #
629
+ # cleanup do
630
+ # ... # cleanup callback1
631
+ # end
632
+ #
633
+ # cleanup
634
+ # def my_cleanup2
635
+ # ...
636
+ # end
637
+ #
638
+ # cleanup do
639
+ # ... # cleanup callback2
640
+ # end
641
+ #
642
+ # def test_my_class
643
+ # ...
644
+ # end
645
+ # end
646
+ #
647
+ # Here is a call order:
648
+ #
649
+ # * test_my_class
650
+ # * cleanup callback2
651
+ # * my_cleanup2
652
+ # * cleanup callback1
653
+ # * my_cleanup1
654
+ # * cleanup
655
+ def cleanup
656
+ end
657
+
658
+ # Called after every test method runs. Can be used to tear
659
+ # down fixture information.
660
+ #
661
+ # You can add additional teardown tasks by the following
662
+ # code:
663
+ #
664
+ # class TestMyClass < Test::Unit::TestCase
665
+ # def teardown
666
+ # ...
667
+ # end
668
+ #
669
+ # teardown
670
+ # def my_teardown1
671
+ # ...
672
+ # end
673
+ #
674
+ # teardown do
675
+ # ... # teardown callback1
676
+ # end
677
+ #
678
+ # teardown
679
+ # def my_teardown2
680
+ # ...
681
+ # end
682
+ #
683
+ # teardown do
684
+ # ... # teardown callback2
685
+ # end
686
+ #
687
+ # def test_my_class
688
+ # ...
689
+ # end
690
+ # end
691
+ #
692
+ # Here is a call order:
693
+ #
694
+ # * test_my_class
695
+ # * teardown callback2
696
+ # * my_teardown2
697
+ # * teardown callback1
698
+ # * my_teardown1
699
+ # * teardown
700
+ def teardown
701
+ end
702
+
703
+ def default_test
704
+ flunk("No tests were specified")
705
+ end
706
+
707
+ def size
708
+ 1
709
+ end
710
+
711
+ # Returns a label of test data for the test. If the
712
+ # test isn't associated with any test data, it returns
713
+ # `nil`.
714
+ def data_label
715
+ @internal_data.test_data_label
716
+ end
717
+
718
+ # Returns test data for the test. If the test isn't associated
719
+ # with any test data, it returns `nil`.
720
+ def data
721
+ @internal_data.test_data
722
+ end
723
+
724
+ # Returns a human-readable name for the specific test that
725
+ # this instance of TestCase represents.
726
+ def name
727
+ "#{local_name}(#{self.class.name})"
728
+ end
729
+
730
+ # Returns a human-readable name for the specific test that this
731
+ # instance of TestCase represents.
732
+ #
733
+ # `#local_name` doesn't include class name. `#name` includes
734
+ # class name.
735
+ def local_name
736
+ if @internal_data.have_test_data?
737
+ "#{@method_name}[#{data_label}]"
738
+ else
739
+ @method_name.to_s
740
+ end
741
+ end
742
+
743
+ # Returns a description for the test. A description
744
+ # will be associated by Test::Unit::TestCase.test or
745
+ # Test::Unit::TestCase.description.
746
+ #
747
+ # Returns a name for the test for no description test.
748
+ def description
749
+ self[:description] || name
750
+ end
751
+
752
+ # Overridden to return #name.
753
+ def to_s
754
+ name
755
+ end
756
+
757
+ # It's handy to be able to compare TestCase instances.
758
+ def ==(other)
759
+ return false unless other.kind_of?(self.class)
760
+ return false unless @method_name == other.method_name
761
+ return false unless data_label == other.data_label
762
+ self.class == other.class
763
+ end
764
+
765
+ # Returns a Time at the test was started.
766
+ def start_time
767
+ @internal_data.start_time
768
+ end
769
+
770
+ # Returns elapsed time for the test was ran.
771
+ def elapsed_time
772
+ @internal_data.elapsed_time
773
+ end
774
+
775
+ # Returns whether the test is interrupted.
776
+ def interrupted?
777
+ @internal_data.interrupted?
778
+ end
779
+
780
+ # Returns whether this individual test passed or
781
+ # not. Primarily for use in teardown so that artifacts
782
+ # can be left behind if the test fails.
783
+ def passed?
784
+ @internal_data.passed?
785
+ end
786
+
787
+ # Notify that a problem is occurred in the test. It means that
788
+ # the test is a failed test. If any failed tests exist in test
789
+ # suites, the test process exits with failure exit status.
790
+ #
791
+ # This is a public API for developers who extend test-unit.
792
+ #
793
+ # @return [void]
794
+ def problem_occurred
795
+ @internal_data.problem_occurred
796
+ end
797
+
798
+ # Notify that the test is passed. Normally, it is not needed
799
+ # because #run calls it automatically. If you want to override
800
+ # #run, it is not a good idea. Please contact test-unit
801
+ # developers. We will help you without your custom #run. For
802
+ # example, we may add a new hook in #run.
803
+ #
804
+ # This is a public API for developers who extend test-unit.
805
+ #
806
+ # @return [void]
807
+ def add_pass
808
+ current_result.add_pass
809
+ end
810
+
811
+ private
812
+ def current_result
813
+ @_result
814
+ end
815
+
816
+ def run_test
817
+ signature = "#{self.class}\##{@method_name}"
818
+ redefined_info = self[:redefined]
819
+ if redefined_info
820
+ notify("<#{signature}> was redefined",
821
+ :backtrace => redefined_info[:backtrace])
822
+ end
823
+ if @internal_data.have_test_data?
824
+ test_method = method(@method_name)
825
+ arity = test_method.arity
826
+ if arity.zero?
827
+ __send__(@method_name)
828
+ else
829
+ __send__(@method_name, @internal_data.test_data)
830
+ end
831
+ else
832
+ __send__(@method_name)
833
+ end
834
+ end
835
+
836
+ def handle_exception(exception)
837
+ self.class.exception_handlers.each do |handler|
838
+ if handler.respond_to?(:call)
839
+ handled = handler.call(self, exception)
840
+ else
841
+ handled = __send__(handler, exception)
842
+ end
843
+ return true if handled
844
+ end
845
+ false
846
+ end
847
+
848
+ def add_assertion
849
+ current_result.add_assertion
850
+ end
851
+
852
+ class InternalData
853
+ attr_reader :start_time, :elapsed_time
854
+ attr_reader :test_data_label, :test_data
855
+ def initialize
856
+ @start_time = nil
857
+ @elapsed_time = nil
858
+ @passed = true
859
+ @interrupted = false
860
+ @test_data_label = nil
861
+ @test_data = nil
862
+ end
863
+
864
+ def passed?
865
+ @passed
866
+ end
867
+
868
+ def interrupted?
869
+ @interrupted
870
+ end
871
+
872
+ def assign_test_data(label, data)
873
+ @test_data_label = label
874
+ @test_data = data
875
+ end
876
+
877
+ def have_test_data?
878
+ not @test_data_label.nil?
879
+ end
880
+
881
+ def test_started
882
+ @start_time = Time.now
883
+ end
884
+
885
+ def test_finished
886
+ @elapsed_time = Time.now - @start_time
887
+ end
888
+
889
+ def problem_occurred
890
+ @passed = false
891
+ end
892
+
893
+ def interrupted
894
+ @interrupted = true
895
+ end
896
+ end
897
+ end
898
+ end
899
+ end