win32-api 1.10.0 → 1.10.1

Sign up to get free protection for your applications and to get access to all the features.
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,33 @@
1
+ require 'test/unit'
2
+ require 'testunit-test-util'
3
+
4
+ class TestUnitNotification < Test::Unit::TestCase
5
+ include TestUnitTestUtil
6
+
7
+ class TestCase < Test::Unit::TestCase
8
+ class << self
9
+ def suite
10
+ Test::Unit::TestSuite.new(name)
11
+ end
12
+ end
13
+
14
+ def test_notify
15
+ notify("1st notify")
16
+ notify("2nd notify. Reach here.")
17
+ end
18
+ end
19
+
20
+ def test_notify
21
+ result = _run_test("test_notify")
22
+ assert_equal("1 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, " \
23
+ "0 omissions, 2 notifications",
24
+ result.to_s)
25
+ assert_fault_messages(["1st notify", "2nd notify. Reach here."],
26
+ result.notifications)
27
+ end
28
+
29
+ private
30
+ def _run_test(name)
31
+ super(TestCase, name)
32
+ end
33
+ end
@@ -0,0 +1,81 @@
1
+ require 'test/unit'
2
+ require 'testunit-test-util'
3
+
4
+ class TestUnitOmission < Test::Unit::TestCase
5
+ include TestUnitTestUtil
6
+
7
+ class TestCase < Test::Unit::TestCase
8
+ class << self
9
+ def suite
10
+ Test::Unit::TestSuite.new(name)
11
+ end
12
+ end
13
+
14
+ def test_omit
15
+ omit("1st omit")
16
+ omit("2nd omit. Should not be reached here.")
17
+ assert(true, "Should not be reached here too.")
18
+ end
19
+
20
+ def test_omit_with_condition
21
+ omit_if(false, "Never omit.")
22
+ omit_unless(true, "Never omit too.")
23
+ omit_if(true, "Should omit.")
24
+ omit("The last omit. Should not be reached here.")
25
+ end
26
+
27
+ def test_omit_with_block
28
+ omit("Omit block") do
29
+ flunk("Should not be reached here.")
30
+ end
31
+ assert(true, "Should be reached here.")
32
+ end
33
+
34
+ def test_omit_with_block_and_condition
35
+ omit_if(false, "Never omit.") do
36
+ assert(true, "Should be reached here.")
37
+ end
38
+ omit_if(true, "Should omit.") do
39
+ flunk("Never reached here.")
40
+ end
41
+ assert(true, "Should be reached here too.")
42
+ end
43
+ end
44
+
45
+ def test_omit
46
+ result = _run_test("test_omit")
47
+ assert_equal("1 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, " \
48
+ "1 omissions, 0 notifications",
49
+ result.to_s)
50
+ assert_fault_messages(["1st omit"], result.omissions)
51
+ end
52
+
53
+ def test_omit_with_condition
54
+ result = _run_test("test_omit_with_condition")
55
+ assert_equal("1 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, " \
56
+ "1 omissions, 0 notifications",
57
+ result.to_s)
58
+ assert_fault_messages(["Should omit."], result.omissions)
59
+ end
60
+
61
+ def test_omit_with_block
62
+ result = _run_test("test_omit_with_block")
63
+ assert_equal("1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, " \
64
+ "1 omissions, 0 notifications",
65
+ result.to_s)
66
+ assert_fault_messages(["Omit block"], result.omissions)
67
+ end
68
+
69
+ def test_omit_with_condition_and_block
70
+ result = _run_test("test_omit_with_block_and_condition")
71
+ assert_equal("1 tests, 2 assertions, 0 failures, 0 errors, 0 pendings, " \
72
+ "1 omissions, 0 notifications",
73
+ result.to_s)
74
+ assert_fault_messages(["Should omit."], result.omissions)
75
+ end
76
+
77
+ private
78
+ def _run_test(name)
79
+ super(TestCase, name)
80
+ end
81
+ end
@@ -0,0 +1,70 @@
1
+ require 'test/unit'
2
+ require 'testunit-test-util'
3
+
4
+ class TestUnitPending < Test::Unit::TestCase
5
+ include TestUnitTestUtil
6
+
7
+ class TestCase < Test::Unit::TestCase
8
+ class << self
9
+ def suite
10
+ Test::Unit::TestSuite.new(name)
11
+ end
12
+ end
13
+
14
+ def test_pend
15
+ pend("1st pend")
16
+ pend("2nd pend. Should not be reached here.")
17
+ assert(true, "Should not be reached here too.")
18
+ end
19
+
20
+ def test_pend_with_failure_in_block
21
+ pend("Wait a minute") do
22
+ raise "Not implemented yet"
23
+ end
24
+ assert(true, "Reached here.")
25
+ end
26
+
27
+ def test_pend_with_no_failure_in_block
28
+ pend("Wait a minute") do
29
+ "Nothing raised"
30
+ end
31
+ assert(true, "Not reached here.")
32
+ end
33
+ end
34
+
35
+ def test_pend
36
+ test = nil
37
+ result = _run_test("test_pend") {|t| test = t}
38
+ assert_equal("1 tests, 0 assertions, 0 failures, 0 errors, 1 pendings, " \
39
+ "0 omissions, 0 notifications",
40
+ result.to_s)
41
+ assert_fault_messages(["1st pend"], result.pendings)
42
+ assert_true(test.interrupted?)
43
+ end
44
+
45
+ def test_pend_with_failure_in_block
46
+ test = nil
47
+ result = _run_test("test_pend_with_failure_in_block") {|t| test = t}
48
+ assert_equal("1 tests, 1 assertions, 0 failures, 0 errors, 1 pendings, " \
49
+ "0 omissions, 0 notifications",
50
+ result.to_s)
51
+ assert_fault_messages(["Wait a minute"], result.pendings)
52
+ assert_false(test.interrupted?)
53
+ end
54
+
55
+ def test_pend_with_no_failure_in_block
56
+ test = nil
57
+ result = _run_test("test_pend_with_no_failure_in_block") {|t| test = t}
58
+ assert_equal("1 tests, 1 assertions, 1 failures, 0 errors, 0 pendings, " \
59
+ "0 omissions, 0 notifications",
60
+ result.to_s)
61
+ assert_fault_messages(["Pending block should not be passed: Wait a minute."],
62
+ result.failures)
63
+ assert_true(test.interrupted?)
64
+ end
65
+
66
+ private
67
+ def _run_test(name, &block)
68
+ super(TestCase, name, &block)
69
+ end
70
+ end
@@ -0,0 +1,184 @@
1
+ require 'test/unit'
2
+
3
+ class TestUnitPriority < Test::Unit::TestCase
4
+ class TestCase < Test::Unit::TestCase
5
+ class << self
6
+ def suite
7
+ Test::Unit::TestSuite.new(name)
8
+ end
9
+ end
10
+
11
+ priority :must
12
+ def test_must
13
+ assert(true)
14
+ end
15
+
16
+ def test_must_inherited
17
+ assert(true)
18
+ end
19
+
20
+ priority :important
21
+ def test_important
22
+ assert(true)
23
+ end
24
+
25
+ def test_important_inherited
26
+ assert(true)
27
+ end
28
+
29
+ priority :high
30
+ def test_high
31
+ assert(true)
32
+ end
33
+
34
+ def test_high_inherited
35
+ assert(true)
36
+ end
37
+
38
+ priority :normal
39
+ def test_normal
40
+ assert(true)
41
+ end
42
+
43
+ def test_normal_inherited
44
+ assert(true)
45
+ end
46
+
47
+ priority :low
48
+ def test_low
49
+ assert(true)
50
+ end
51
+
52
+ def test_low_inherited
53
+ assert(true)
54
+ end
55
+
56
+ priority :never
57
+ def test_never
58
+ assert(true)
59
+ end
60
+
61
+ def test_never_inherited
62
+ assert(true)
63
+ end
64
+ end
65
+
66
+ def test_priority_must
67
+ assert_priority("must", 1.0, 0.0001)
68
+ end
69
+
70
+ def test_priority_important
71
+ assert_priority("important", 0.9, 0.09)
72
+ end
73
+
74
+ def test_priority_high
75
+ assert_priority("high", 0.70, 0.1)
76
+ end
77
+
78
+ def test_priority_normal
79
+ assert_priority("normal", 0.5, 0.1)
80
+ end
81
+
82
+ def test_priority_low
83
+ assert_priority("low", 0.25, 0.1)
84
+ end
85
+
86
+ def test_priority_never
87
+ assert_priority("never", 0.0, 0.0001)
88
+ end
89
+
90
+ def assert_priority(priority, expected, delta)
91
+ assert_need_to_run("test_#{priority}", expected, delta)
92
+ assert_need_to_run("test_#{priority}_inherited", expected, delta)
93
+ end
94
+
95
+ def assert_need_to_run(test_name, expected, delta)
96
+ test = TestCase.new(test_name)
97
+ n = 1000
98
+ n_need_to_run = 0
99
+ n.times do |i|
100
+ n_need_to_run += 1 if Test::Unit::Priority::Checker.need_to_run?(test)
101
+ end
102
+ assert_in_delta(expected, n_need_to_run.to_f / n, delta)
103
+ end
104
+
105
+ class TestClassName < self
106
+ def test_colon
107
+ assert_escaped_name("Test_colon__colon_Priority", "Test::Priority")
108
+ end
109
+
110
+ def test_space
111
+ assert_escaped_name("test_priority", "test priority")
112
+ end
113
+
114
+ def test_slash
115
+ assert_escaped_name("test_priority", "test/priority")
116
+ end
117
+
118
+ def test_back_slash
119
+ assert_escaped_name("test_priority", "test\/priority")
120
+ end
121
+
122
+ def test_question
123
+ assert_escaped_name("#question.predicate", "#question?")
124
+ end
125
+
126
+ def test_exclamation
127
+ assert_escaped_name("#exclamation.destructive", "#exclamation!")
128
+ end
129
+
130
+ def test_equal
131
+ assert_escaped_name("#equal.equal", "#equal=")
132
+ end
133
+
134
+ def assert_escaped_name(expected, class_name)
135
+ checker = Checker.new(nil)
136
+ escaped_class_name = checker.send(:escape_class_name, class_name)
137
+ assert_equal(expected, escaped_class_name)
138
+ end
139
+ end
140
+
141
+ class TestFileName < self
142
+ class SpecialNameTestCase < Test::Unit::TestCase
143
+ class << self
144
+ def suite
145
+ Test::Unit::TestSuite.new(name)
146
+ end
147
+ end
148
+
149
+ def test_question?
150
+ end
151
+
152
+ def test_exclamation!
153
+ end
154
+
155
+ def test_equal=
156
+ end
157
+
158
+ test "have space" do
159
+ end
160
+ end
161
+
162
+ def test_question
163
+ assert_escaped_name("test_colon__#question.predicate_case",
164
+ "test: #question? case")
165
+ end
166
+
167
+ def test_exclamation
168
+ assert_escaped_name("test_colon__#exclamation.destructive_case",
169
+ "test: #exclamation! case")
170
+ end
171
+
172
+ def test_equal
173
+ assert_escaped_name("test_colon__#equal.equal_case",
174
+ "test: #equal= case")
175
+ end
176
+
177
+ def assert_escaped_name(expected, test_method_name)
178
+ checker = Checker.new(SpecialNameTestCase.new(test_method_name))
179
+ passed_file = checker.send(:passed_file)
180
+ method_name_component = File.basename(File.dirname(passed_file))
181
+ assert_equal(expected, method_name_component)
182
+ end
183
+ end
184
+ end
@@ -0,0 +1,1284 @@
1
+ # Author:: Nathaniel Talbott.
2
+ # Copyright:: Copyright (c) 2008-2014 Kouhei Sutou <kou@clear-code.com>
3
+ # Copyright:: Copyright (c) 2011 Haruka Yoshihara <yoshihara@clear-code.com>
4
+ # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott
5
+ # License:: Ruby license.
6
+
7
+ require 'test/unit'
8
+
9
+ module Test
10
+ module Unit
11
+ class TestTestCase < TestCase
12
+ self.test_order = :random
13
+ def test_creation
14
+ test_case = Class.new(TestCase) do
15
+ def test_with_arguments(arg1, arg2)
16
+ end
17
+ end
18
+
19
+ test = test_case.new(:test_with_arguments)
20
+ check("Should have caught an invalid test when there are arguments",
21
+ !test.valid?)
22
+
23
+ test = test_case.new(:non_existent_test)
24
+ check("Should have caught an invalid test when the method does not exist",
25
+ !test.valid?)
26
+ end
27
+
28
+ def setup
29
+ @tc_failure_error = Class.new(TestCase) do
30
+ def test_failure
31
+ assert_block("failure") do
32
+ false
33
+ end
34
+ end
35
+ def test_error
36
+ 1 / 0
37
+ end
38
+ def test_nested_failure
39
+ nested
40
+ end
41
+ def nested
42
+ assert_block("nested") do
43
+ false
44
+ end
45
+ end
46
+ def return_passed?
47
+ return passed?
48
+ end
49
+ end
50
+
51
+ def @tc_failure_error.name
52
+ "TC_FailureError"
53
+ end
54
+ end
55
+
56
+ def jruby_backtrace_entry?(entry)
57
+ entry.start_with?("org/jruby/")
58
+ end
59
+
60
+ def rubinius_backtrace_entry?(entry)
61
+ entry.start_with?("kernel/")
62
+ end
63
+
64
+ def internal_backtrace_entry?(entry)
65
+ entry.start_with?("<internal:")
66
+ end
67
+
68
+ def normalize_location(location)
69
+ filtered_location = location.reject do |entry|
70
+ jruby_backtrace_entry?(entry) or
71
+ rubinius_backtrace_entry?(entry) or
72
+ internal_backtrace_entry?(entry)
73
+ end
74
+ filtered_location.collect do |entry|
75
+ entry.sub(/:\d+:/, ":0:")
76
+ end
77
+ end
78
+
79
+ def test_add_failed_assertion
80
+ test_case = @tc_failure_error.new(:test_failure)
81
+ assert do
82
+ test_case.passed?
83
+ end
84
+
85
+ result = TestResult.new
86
+ faults = []
87
+ result.add_listener(TestResult::FAULT) do |fault|
88
+ faults << fault
89
+ end
90
+ progress = []
91
+ test_case.run(result) do |*arguments|
92
+ progress << arguments
93
+ end
94
+ fault_details = faults.collect do |fault|
95
+ {
96
+ :class => fault.class,
97
+ :message => fault.message,
98
+ :test_name => fault.test_name,
99
+ :location => normalize_location(fault.location),
100
+ }
101
+ end
102
+ assert_equal([
103
+ {
104
+ :class => Failure,
105
+ :message => "failure",
106
+ :test_name => "test_failure(TC_FailureError)",
107
+ :location => [
108
+ "#{__FILE__}:0:in `test_failure'",
109
+ "#{__FILE__}:0:in `#{__method__}'",
110
+ ],
111
+ },
112
+ ],
113
+ fault_details)
114
+
115
+ assert do
116
+ not test_case.passed?
117
+ end
118
+ assert_equal([
119
+ [TestCase::STARTED, test_case.name],
120
+ [TestCase::STARTED_OBJECT, test_case],
121
+ [TestCase::FINISHED, test_case.name],
122
+ [TestCase::FINISHED_OBJECT, test_case],
123
+ ],
124
+ progress)
125
+ end
126
+
127
+ def test_add_failure_nested
128
+ test_case = @tc_failure_error.new(:test_nested_failure)
129
+ assert do
130
+ test_case.passed?
131
+ end
132
+
133
+ result = TestResult.new
134
+ faults = []
135
+ result.add_listener(TestResult::FAULT) do |fault|
136
+ faults << fault
137
+ end
138
+ test_case.run(result) do
139
+ end
140
+ fault_details = faults.collect do |fault|
141
+ {
142
+ :class => fault.class,
143
+ :message => fault.message,
144
+ :test_name => fault.test_name,
145
+ :location => normalize_location(fault.location),
146
+ }
147
+ end
148
+ assert_equal([
149
+ {
150
+ :class => Failure,
151
+ :message => "nested",
152
+ :test_name => "test_nested_failure(TC_FailureError)",
153
+ :location => [
154
+ "#{__FILE__}:0:in `nested'",
155
+ "#{__FILE__}:0:in `test_nested_failure'",
156
+ "#{__FILE__}:0:in `#{__method__}'",
157
+ ],
158
+ },
159
+ ],
160
+ fault_details)
161
+
162
+ assert do
163
+ not test_case.passed?
164
+ end
165
+ end
166
+
167
+ def jruby?
168
+ defined?(JRUBY_VERSION)
169
+ end
170
+
171
+ def rubinius?
172
+ false # TODO
173
+ end
174
+
175
+ def cruby?
176
+ (not jruby?) and (not rubinius?)
177
+ end
178
+
179
+ def test_add_error
180
+ test_case = @tc_failure_error.new(:test_error)
181
+ assert do
182
+ test_case.passed?
183
+ end
184
+
185
+ result = TestResult.new
186
+ faults = []
187
+ result.add_listener(TestResult::FAULT) do |fault|
188
+ faults << fault
189
+ end
190
+ test_case.run(result) do
191
+ end
192
+ fault_details = faults.collect do |fault|
193
+ {
194
+ :class => fault.class,
195
+ :message => fault.message,
196
+ :test_name => fault.test_name,
197
+ :location => normalize_location(fault.location),
198
+ }
199
+ end
200
+ location = []
201
+ location << "#{__FILE__}:0:in `/'" if cruby?
202
+ location << "#{__FILE__}:0:in `test_error'"
203
+ location << "#{__FILE__}:0:in `#{__method__}'"
204
+ assert_equal([
205
+ {
206
+ :class => Error,
207
+ :message => "ZeroDivisionError: divided by 0",
208
+ :test_name => "test_error(TC_FailureError)",
209
+ :location => location,
210
+ },
211
+ ],
212
+ fault_details)
213
+
214
+ assert do
215
+ not test_case.passed?
216
+ end
217
+ end
218
+
219
+ def test_no_tests
220
+ suite = TestCase.suite
221
+ check("Should have a test suite", suite.instance_of?(TestSuite))
222
+ check("Should have one test", suite.size == 1)
223
+ check("Should have the default test", suite.tests.first.name == "default_test(Test::Unit::TestCase)")
224
+
225
+ result = TestResult.new
226
+ suite.run(result) {}
227
+ check("Should have had one test run", result.run_count == 1)
228
+ check("Should have had one test failure", result.failure_count == 1)
229
+ check("Should have had no errors", result.error_count == 0)
230
+ end
231
+
232
+ def test_suite
233
+ tc = Class.new(TestCase) do
234
+ def test_succeed
235
+ assert_block {true}
236
+ end
237
+ def test_fail
238
+ assert_block {false}
239
+ end
240
+ def test_error
241
+ 1/0
242
+ end
243
+ def dont_run
244
+ assert_block {true}
245
+ end
246
+ def test_dont_run(argument)
247
+ assert_block {true}
248
+ end
249
+ def test
250
+ assert_block {true}
251
+ end
252
+ end
253
+
254
+ suite = tc.suite
255
+ check("Should have a test suite", suite.instance_of?(TestSuite))
256
+ check("Should have three tests", suite.size == 3)
257
+
258
+ result = TestResult.new
259
+ suite.run(result) {}
260
+ check("Should have had three test runs", result.run_count == 3)
261
+ check("Should have had one test failure", result.failure_count == 1)
262
+ check("Should have had one test error", result.error_count == 1)
263
+ end
264
+
265
+ def test_setup_teardown
266
+ tc = Class.new(TestCase) do
267
+ attr_reader(:setup_called, :teardown_called)
268
+ def initialize(test)
269
+ super(test)
270
+ @setup_called = false
271
+ @teardown_called = false
272
+ end
273
+ def setup
274
+ @setup_called = true
275
+ end
276
+ def teardown
277
+ @teardown_called = true
278
+ end
279
+ def test_succeed
280
+ assert_block {true}
281
+ end
282
+ def test_fail
283
+ assert_block {false}
284
+ end
285
+ def test_error
286
+ raise "Error!"
287
+ end
288
+ end
289
+ result = TestResult.new
290
+
291
+ test = tc.new(:test_succeed)
292
+ test.run(result) {}
293
+ check("Should have called setup the correct number of times", test.setup_called)
294
+ check("Should have called teardown the correct number of times", test.teardown_called)
295
+
296
+ test = tc.new(:test_fail)
297
+ test.run(result) {}
298
+ check("Should have called setup the correct number of times", test.setup_called)
299
+ check("Should have called teardown the correct number of times", test.teardown_called)
300
+
301
+ test = tc.new(:test_error)
302
+ test.run(result) {}
303
+ check("Should have called setup the correct number of times", test.setup_called)
304
+ check("Should have called teardown the correct number of times", test.teardown_called)
305
+
306
+ check("Should have had two test runs", result.run_count == 3)
307
+ check("Should have had a test failure", result.failure_count == 1)
308
+ check("Should have had a test error", result.error_count == 1)
309
+ end
310
+
311
+ def test_assertion_failed_not_called
312
+ tc = Class.new(TestCase) do
313
+ def test_thing
314
+ raise AssertionFailedError.new
315
+ end
316
+ end
317
+
318
+ suite = tc.suite
319
+ check("Should have one test", suite.size == 1)
320
+ result = TestResult.new
321
+ suite.run(result) {}
322
+ check("Should have had one test run", result.run_count == 1)
323
+ check("Should have had one assertion failure", result.failure_count == 1)
324
+ check("Should not have any assertion errors but had #{result.error_count}", result.error_count == 0)
325
+ end
326
+
327
+ def test_equality
328
+ tc1 = Class.new(TestCase) do
329
+ def test_1
330
+ end
331
+ def test_2
332
+ end
333
+ end
334
+
335
+ tc2 = Class.new(TestCase) do
336
+ def test_1
337
+ end
338
+ end
339
+
340
+ test1 = tc1.new('test_1')
341
+ test2 = tc1.new('test_1')
342
+ check("Should be equal", test1 == test2)
343
+ check("Should be equal", test2 == test1)
344
+
345
+ test1 = tc1.new('test_2')
346
+ check("Should not be equal", test1 != test2)
347
+ check("Should not be equal", test2 != test1)
348
+
349
+ test2 = tc1.new('test_2')
350
+ check("Should be equal", test1 == test2)
351
+ check("Should be equal", test2 == test1)
352
+
353
+ test1 = tc1.new('test_1')
354
+ test2 = tc2.new('test_1')
355
+ check("Should not be equal", test1 != test2)
356
+ check("Should not be equal", test2 != test1)
357
+
358
+ check("Should not be equal", test1 != Object.new)
359
+ check("Should not be equal", Object.new != test1)
360
+ end
361
+
362
+ def test_re_raise_exception
363
+ test_case = Class.new(TestCase) do
364
+ def test_raise_interrupt
365
+ raise Interrupt, "from test"
366
+ end
367
+ end
368
+
369
+ test = test_case.new("test_raise_interrupt")
370
+ begin
371
+ test.run(TestResult.new) {}
372
+ check("Should not be reached", false)
373
+ rescue Exception
374
+ check("Interrupt exception should be re-raised", $!.class == Interrupt)
375
+ end
376
+ end
377
+
378
+ def test_timeout_error
379
+ test_case = Class.new(TestCase) do
380
+ def test_raise_timeout_error
381
+ require "timeout"
382
+ raise Timeout::Error
383
+ end
384
+ end
385
+
386
+ test_suite = test_case.suite
387
+ result = TestResult.new
388
+ begin
389
+ test_suite.run(result) {}
390
+ check("Timeout::Error should be handled as error",
391
+ result.error_count == 1)
392
+ rescue Exception
393
+ check("Timeout::Error should not be passed through: #{$!}", false)
394
+ end
395
+ end
396
+
397
+ def test_interrupted
398
+ test_case = Class.new(TestCase) do
399
+ def test_fail
400
+ flunk
401
+ end
402
+
403
+ def test_nothing
404
+ end
405
+ end
406
+
407
+ failed_test = test_case.new(:test_fail)
408
+ failed_test.run(TestResult.new) {}
409
+ check("Should be interrupted", failed_test.interrupted?)
410
+
411
+ success_test = test_case.new(:test_nothing)
412
+ success_test.run(TestResult.new) {}
413
+ check("Should not be interrupted", !success_test.interrupted?)
414
+ end
415
+
416
+ def test_inherited_test_should_be_ignored
417
+ test_case = Class.new(TestCase) do
418
+ def test_nothing
419
+ end
420
+ end
421
+
422
+ sub_test_case = Class.new(test_case) do
423
+ def test_fail
424
+ flunk
425
+ end
426
+ end
427
+
428
+ test = test_case.new("test_nothing")
429
+ assert_predicate(test, :valid?)
430
+
431
+ test = sub_test_case.new("test_fail")
432
+ assert_predicate(test, :valid?)
433
+
434
+ test = sub_test_case.new("test_nothing")
435
+ assert_not_predicate(test, :valid?)
436
+ end
437
+
438
+ def test_mixin_test_should_not_be_ignored
439
+ test_module = Module.new do
440
+ def test_nothing
441
+ end
442
+ end
443
+
444
+ test_case = Class.new(Test::Unit::TestCase) do
445
+ include test_module
446
+
447
+ def test_fail
448
+ flunk
449
+ end
450
+ end
451
+
452
+ assert_nothing_thrown do
453
+ test_case.new("test_nothing")
454
+ end
455
+
456
+ assert_nothing_thrown do
457
+ test_case.new("test_fail")
458
+ end
459
+ end
460
+
461
+ def test_defined_order
462
+ test_case = Class.new(Test::Unit::TestCase) do
463
+ def test_z
464
+ end
465
+
466
+ def test_1
467
+ end
468
+
469
+ def test_a
470
+ end
471
+ end
472
+
473
+ test_case.test_order = :defined
474
+ assert_equal(["test_z", "test_1", "test_a"],
475
+ test_case.suite.tests.collect {|test| test.method_name})
476
+ end
477
+
478
+ def test_declarative_style
479
+ test_case = Class.new(Test::Unit::TestCase) do
480
+ test "declarative style test definition" do
481
+ end
482
+
483
+ test "include parenthesis" do
484
+ end
485
+
486
+ test "1 + 2 = 3" do
487
+ end
488
+ end
489
+
490
+ test_case.test_order = :defined
491
+
492
+ assert_equal(["test: declarative style test definition",
493
+ "test: include parenthesis",
494
+ "test: 1 + 2 = 3"],
495
+ test_case.suite.tests.collect {|test| test.method_name})
496
+
497
+ assert_equal(["declarative style test definition",
498
+ "include parenthesis",
499
+ "1 + 2 = 3"],
500
+ test_case.suite.tests.collect {|test| test.description})
501
+ end
502
+
503
+ def test_test_mark
504
+ test_case = Class.new(Test::Unit::TestCase) do
505
+ test
506
+ def my_test_method
507
+ end
508
+ end
509
+
510
+ test_case.test_order = :defined
511
+
512
+ assert_equal(["my_test_method"],
513
+ test_case.suite.tests.collect {|test| test.method_name})
514
+ end
515
+
516
+ def test_redefine_method
517
+ test_case = Class.new(Test::Unit::TestCase) do
518
+ self.test_order = :alphabetic
519
+
520
+ def test_name
521
+ end
522
+ alias_method :test_name2, :test_name
523
+
524
+ def test_name
525
+ end
526
+ end
527
+
528
+ suite = test_case.suite
529
+ assert_equal(["test_name", "test_name2"],
530
+ suite.tests.collect {|test| test.method_name})
531
+ result = TestResult.new
532
+ suite.run(result) {}
533
+ assert_equal("2 tests, 0 assertions, 0 failures, " +
534
+ "0 errors, 0 pendings, 0 omissions, 1 notifications",
535
+ result.summary)
536
+ end
537
+
538
+ def test_data_driven_test
539
+ test_case = Class.new(TestCase) do
540
+ def test_with_data(data)
541
+ end
542
+ end
543
+
544
+ test = test_case.new("test_with_data")
545
+ assert_not_predicate(test, :valid?)
546
+ test.assign_test_data("label1", :test_data1)
547
+ assert_predicate(test, :valid?)
548
+ end
549
+
550
+ def test_data_driven_test_without_parameter
551
+ test_case = Class.new(TestCase) do
552
+ data("label" => "value")
553
+ def test_without_parameter
554
+ assert_equal("value", data)
555
+ end
556
+ end
557
+
558
+ suite = test_case.suite
559
+ assert_equal(["test_without_parameter"],
560
+ suite.tests.collect {|test| test.method_name})
561
+ result = TestResult.new
562
+ suite.run(result) {}
563
+ assert_equal("1 tests, 1 assertions, 0 failures, " +
564
+ "0 errors, 0 pendings, 0 omissions, 0 notifications",
565
+ result.summary)
566
+ end
567
+
568
+ private
569
+ def check(message, passed)
570
+ add_assertion
571
+ raise AssertionFailedError.new(message) unless passed
572
+ end
573
+
574
+ class TestTestDefined < self
575
+ class TestNoQuery < self
576
+ def test_no_test
577
+ test_case = Class.new(TestCase) do
578
+ end
579
+ assert_false(test_case.test_defined?({}))
580
+ end
581
+
582
+ def test_have_def_style_test
583
+ test_case = Class.new(TestCase) do
584
+ def test_nothing
585
+ end
586
+ end
587
+ assert_true(test_case.test_defined?({}))
588
+ end
589
+
590
+ def test_have_method_style_test
591
+ test_case = Class.new(TestCase) do
592
+ test "nothing" do
593
+ end
594
+ end
595
+ assert_true(test_case.test_defined?({}))
596
+ end
597
+ end
598
+
599
+ class TestPath < self
600
+ class TestDefStyle < self
601
+ def test_base_name
602
+ test_case = Class.new(TestCase) do
603
+ def test_nothing
604
+ end
605
+ end
606
+ base_name = File.basename(__FILE__)
607
+ assert_true(test_case.test_defined?(:path => base_name))
608
+ end
609
+
610
+ def test_absolute_path
611
+ test_case = Class.new(TestCase) do
612
+ def test_nothing
613
+ end
614
+ end
615
+ assert_true(test_case.test_defined?(:path => __FILE__))
616
+ end
617
+
618
+ def test_not_match
619
+ test_case = Class.new(TestCase) do
620
+ def test_nothing
621
+ end
622
+ end
623
+ assert_false(test_case.test_defined?(:path => "nonexistent.rb"))
624
+ end
625
+ end
626
+
627
+ class TestMethodStyle < self
628
+ def test_base_name
629
+ test_case = Class.new(TestCase) do
630
+ test "nothing" do
631
+ end
632
+ end
633
+ base_name = File.basename(__FILE__)
634
+ assert_true(test_case.test_defined?(:path => base_name))
635
+ end
636
+
637
+ def test_absolute_path
638
+ test_case = Class.new(TestCase) do
639
+ test "nothing" do
640
+ end
641
+ end
642
+ assert_true(test_case.test_defined?(:path => __FILE__))
643
+ end
644
+
645
+ def test_not_match
646
+ test_case = Class.new(TestCase) do
647
+ test "nothing" do
648
+ end
649
+ end
650
+ assert_false(test_case.test_defined?(:path => "nonexistent.rb"))
651
+ end
652
+ end
653
+ end
654
+
655
+ class TestLine < self
656
+ class TestDefStyle < self
657
+ def test_before
658
+ line_before = nil
659
+ test_case = Class.new(TestCase) do
660
+ line_before = __LINE__
661
+ def test_nothing
662
+ end
663
+ end
664
+ assert_false(test_case.test_defined?(:line => line_before))
665
+ end
666
+
667
+ def test_def
668
+ line_def = nil
669
+ test_case = Class.new(TestCase) do
670
+ line_def = __LINE__; def test_nothing
671
+ end
672
+ end
673
+ assert_true(test_case.test_defined?(:line => line_def))
674
+ end
675
+
676
+ def test_after
677
+ line_after = nil
678
+ test_case = Class.new(TestCase) do
679
+ def test_nothing
680
+ end
681
+ line_after = __LINE__
682
+ end
683
+ assert_true(test_case.test_defined?(:line => line_after))
684
+ end
685
+
686
+ def test_child
687
+ child_test_case = nil
688
+ line_child = nil
689
+ parent_test_case = Class.new(TestCase) do
690
+ test "parent" do
691
+ end
692
+
693
+ child_test_case = Class.new(self) do
694
+ line_child = __LINE__; test "child" do
695
+ end
696
+ end
697
+ end
698
+ assert_equal([
699
+ false,
700
+ true,
701
+ ],
702
+ [
703
+ parent_test_case.test_defined?(:line => line_child),
704
+ child_test_case.test_defined?(:line => line_child),
705
+ ])
706
+ end
707
+ end
708
+
709
+ class TestMethodStyle < self
710
+ def test_before
711
+ line_before = nil
712
+ test_case = Class.new(TestCase) do
713
+ line_before = __LINE__
714
+ test "nothing" do
715
+ end
716
+ end
717
+ assert_false(test_case.test_defined?(:line => line_before))
718
+ end
719
+
720
+ def test_method
721
+ line_method = nil
722
+ test_case = Class.new(TestCase) do
723
+ line_method = __LINE__; test "nothing" do
724
+ end
725
+ end
726
+ assert_true(test_case.test_defined?(:line => line_method))
727
+ end
728
+
729
+ def test_after
730
+ line_after = nil
731
+ test_case = Class.new(TestCase) do
732
+ test "nothing" do
733
+ end
734
+ line_after = __LINE__
735
+ end
736
+ assert_true(test_case.test_defined?(:line => line_after))
737
+ end
738
+
739
+ def test_child
740
+ child_test_case = nil
741
+ line_child = nil
742
+ parent_test_case = Class.new(TestCase) do
743
+ test "parent" do
744
+ end
745
+
746
+ child_test_case = Class.new(self) do
747
+ line_child = __LINE__; test "child" do
748
+ end
749
+ end
750
+ end
751
+ assert_equal([
752
+ false,
753
+ true,
754
+ ],
755
+ [
756
+ parent_test_case.test_defined?(:line => line_child),
757
+ child_test_case.test_defined?(:line => line_child),
758
+ ])
759
+ end
760
+
761
+ def test_with_setup
762
+ line = nil
763
+ test_case = Class.new(TestCase) do
764
+ setup do
765
+ end
766
+
767
+ line = __LINE__; test "with setup" do
768
+ end
769
+ end
770
+ assert do
771
+ test_case.test_defined?(:line => line,
772
+ :method_name => "test: with setup")
773
+ end
774
+ end
775
+ end
776
+ end
777
+
778
+ class TestMethodName < self
779
+ class TestDefStyle < self
780
+ def test_match
781
+ test_case = Class.new(TestCase) do
782
+ def test_nothing
783
+ end
784
+ end
785
+ query = {:method_name => "test_nothing"}
786
+ assert_true(test_case.test_defined?(query))
787
+ end
788
+
789
+ def test_not_match
790
+ test_case = Class.new(TestCase) do
791
+ def test_nothing
792
+ end
793
+ end
794
+ query = {:method_name => "test_nonexistent"}
795
+ assert_false(test_case.test_defined?(query))
796
+ end
797
+ end
798
+
799
+ class TestMethodStyle < self
800
+ def test_match
801
+ test_case = Class.new(TestCase) do
802
+ test "nothing" do
803
+ end
804
+ end
805
+ query = {:method_name => "test: nothing"}
806
+ assert_true(test_case.test_defined?(query))
807
+ end
808
+
809
+ def test_not_match
810
+ test_case = Class.new(TestCase) do
811
+ test "nothing" do
812
+ end
813
+ end
814
+ query = {:method_name => "test: nonexistent"}
815
+ assert_false(test_case.test_defined?(query))
816
+ end
817
+ end
818
+ end
819
+
820
+ class TestCombine < self
821
+ class TestDefStyle < self
822
+ def test_line_middle
823
+ line_middle = nil
824
+ test_case = Class.new(TestCase) do
825
+ def test_before
826
+ end
827
+ line_middle = __LINE__
828
+ def test_after
829
+ end
830
+ end
831
+ query = {
832
+ :path => __FILE__,
833
+ :line => line_middle,
834
+ :method_name => "test_before",
835
+ }
836
+ assert_true(test_case.test_defined?(query))
837
+ end
838
+
839
+ def test_line_after_def
840
+ line_after_def = nil
841
+ test_case = Class.new(TestCase) do
842
+ def test_before
843
+ end
844
+
845
+ line_after_def = __LINE__; def test_after
846
+ end
847
+ end
848
+ query = {
849
+ :path => __FILE__,
850
+ :line => line_after_def,
851
+ :method_name => "test_before",
852
+ }
853
+ assert_false(test_case.test_defined?(query))
854
+ end
855
+ end
856
+
857
+ class TestMethodStyle < self
858
+ def test_line_middle
859
+ line_middle = nil
860
+ test_case = Class.new(TestCase) do
861
+ test "before" do
862
+ end
863
+ line_middle = __LINE__
864
+ test "after" do
865
+ end
866
+ end
867
+ query = {
868
+ :path => __FILE__,
869
+ :line => line_middle,
870
+ :method_name => "test: before",
871
+ }
872
+ assert_true(test_case.test_defined?(query))
873
+ end
874
+
875
+ def test_line_after_method
876
+ line_after_method = nil
877
+ test_case = Class.new(TestCase) do
878
+ test "before" do
879
+ end
880
+
881
+ line_after_method = __LINE__; test "after" do
882
+ end
883
+ end
884
+ query = {
885
+ :path => __FILE__,
886
+ :line => line_after_method,
887
+ :method_name => "test: before",
888
+ }
889
+ assert_false(test_case.test_defined?(query))
890
+ end
891
+ end
892
+ end
893
+ end
894
+
895
+ class TestSubTestCase < self
896
+ class TestName < self
897
+ def test_anonymous
898
+ test_case = Class.new(TestCase)
899
+ sub_test_case = test_case.sub_test_case("sub test case") do
900
+ end
901
+ assert_equal("sub test case", sub_test_case.name)
902
+ end
903
+
904
+ def test_named
905
+ test_case = Class.new(TestCase)
906
+ def test_case.name
907
+ "ParentTestCase"
908
+ end
909
+ sub_test_case = test_case.sub_test_case("sub test case") do
910
+ end
911
+ assert_equal("ParentTestCase::sub test case", sub_test_case.name)
912
+ end
913
+ end
914
+
915
+ def test_suite
916
+ test_case = Class.new(TestCase)
917
+ sub_test_case = test_case.sub_test_case("sub test case") do
918
+ def test_nothing
919
+ end
920
+ end
921
+ test_method_names = sub_test_case.suite.tests.collect do |test|
922
+ test.method_name
923
+ end
924
+ assert_equal(["test_nothing"], test_method_names)
925
+ end
926
+
927
+ def test_duplicated_name
928
+ test_case = Class.new(TestCase) do
929
+ def test_nothing
930
+ end
931
+ end
932
+ sub_test_case = test_case.sub_test_case("sub test case") do
933
+ def test_nothing
934
+ end
935
+ end
936
+
937
+ test_method_names = test_case.suite.tests.collect do |test|
938
+ test.method_name
939
+ end
940
+ sub_test_method_names = sub_test_case.suite.tests.collect do |test|
941
+ test.method_name
942
+ end
943
+
944
+ assert_equal([
945
+ ["test_nothing"],
946
+ ["test_nothing"],
947
+ ],
948
+ [
949
+ test_method_names,
950
+ sub_test_method_names,
951
+ ])
952
+ end
953
+ end
954
+
955
+ class TestStartupShutdown < self
956
+ class TestOrder < self
957
+ module CallLogger
958
+ def called
959
+ @@called ||= []
960
+ end
961
+ end
962
+
963
+ def call_order(test_case)
964
+ test_case.called.clear
965
+ test_suite = test_case.suite
966
+ test_suite.run(TestResult.new) {}
967
+ test_case.called
968
+ end
969
+
970
+ class TestNoInheritance < self
971
+ def setup
972
+ @test_case = Class.new(TestCase) do
973
+ extend CallLogger
974
+
975
+ class << self
976
+ def startup
977
+ called << :startup
978
+ end
979
+
980
+ def shutdown
981
+ called << :shutdown
982
+ end
983
+ end
984
+
985
+ def setup
986
+ self.class.called << :setup
987
+ end
988
+
989
+ def teardown
990
+ self.class.called << :teardown
991
+ end
992
+
993
+ def test1
994
+ end
995
+
996
+ def test2
997
+ end
998
+ end
999
+ end
1000
+
1001
+ def test_call_order
1002
+ assert_equal([
1003
+ :startup,
1004
+ :setup, :teardown,
1005
+ :setup, :teardown,
1006
+ :shutdown,
1007
+ ],
1008
+ call_order(@test_case))
1009
+ end
1010
+ end
1011
+
1012
+ class TestInheritance < self
1013
+ def setup
1014
+ @original_descendants = TestCase::DESCENDANTS.dup
1015
+ TestCase::DESCENDANTS.clear
1016
+
1017
+ @parent_test_case = Class.new(TestCase) do
1018
+ extend CallLogger
1019
+
1020
+ self.test_order = :alphabetic
1021
+
1022
+ class << self
1023
+ def startup
1024
+ called << :startup_parent
1025
+ end
1026
+
1027
+ def shutdown
1028
+ called << :shutdown_parent
1029
+ end
1030
+ end
1031
+
1032
+ def setup
1033
+ self.class.called << :setup_parent
1034
+ end
1035
+
1036
+ def teardown
1037
+ self.class.called << :teardown_parent
1038
+ end
1039
+
1040
+ def test1_parent
1041
+ self.class.called << :test1_parent
1042
+ end
1043
+
1044
+ def test2_parent
1045
+ self.class.called << :test2_parent
1046
+ end
1047
+ end
1048
+
1049
+ @child_test_case = Class.new(@parent_test_case) do
1050
+ class << self
1051
+ def startup
1052
+ called << :startup_child
1053
+ end
1054
+
1055
+ def shutdown
1056
+ called << :shutdown_child
1057
+ end
1058
+ end
1059
+
1060
+ def setup
1061
+ self.class.called << :setup_child
1062
+ end
1063
+
1064
+ def teardown
1065
+ self.class.called << :teardown_child
1066
+ end
1067
+
1068
+ def test1_child
1069
+ self.class.called << :test1_child
1070
+ end
1071
+
1072
+ def test2_child
1073
+ self.class.called << :test2_child
1074
+ end
1075
+ end
1076
+ end
1077
+
1078
+ def teardown
1079
+ TestCase::DESCENDANTS.replace(@original_descendants)
1080
+ end
1081
+
1082
+ def test_call_order
1083
+ collector = Collector::Descendant.new
1084
+ test_suite = collector.collect
1085
+ test_suite.run(TestResult.new) {}
1086
+ called = @parent_test_case.called
1087
+ assert_equal([
1088
+ :startup_parent,
1089
+ :setup_parent, :test1_parent, :teardown_parent,
1090
+ :setup_parent, :test2_parent, :teardown_parent,
1091
+ :startup_child,
1092
+ :setup_child, :test1_child, :teardown_child,
1093
+ :setup_child, :test2_child, :teardown_child,
1094
+ :shutdown_child,
1095
+ :shutdown_parent,
1096
+ ],
1097
+ called)
1098
+ end
1099
+ end
1100
+ end
1101
+
1102
+ class TestError < self
1103
+ def run_test_case(test_case)
1104
+ test_suite = test_case.suite
1105
+ result = TestResult.new
1106
+ test_suite.run(result) {}
1107
+ result
1108
+ end
1109
+
1110
+ def error_count(test_case)
1111
+ run_test_case(test_case).error_count
1112
+ end
1113
+
1114
+ def test_on_startup
1115
+ test_case = Class.new(TestCase) do
1116
+ class << self
1117
+ def startup
1118
+ raise "from startup"
1119
+ end
1120
+ end
1121
+
1122
+ def test_nothing
1123
+ end
1124
+ end
1125
+
1126
+ assert_equal(1, error_count(test_case))
1127
+ end
1128
+
1129
+ def test_pass_through_on_startup
1130
+ test_case = Class.new(TestCase) do
1131
+ class << self
1132
+ def startup
1133
+ raise Interrupt, "from startup"
1134
+ end
1135
+ end
1136
+
1137
+ def test_nothing
1138
+ end
1139
+ end
1140
+
1141
+ assert_raise(Interrupt) do
1142
+ run_test_case(test_case)
1143
+ end
1144
+ end
1145
+
1146
+ def test_on_shutdown
1147
+ test_case = Class.new(TestCase) do
1148
+ class << self
1149
+ def shutdown
1150
+ raise "from shutdown"
1151
+ end
1152
+ end
1153
+
1154
+ def test_nothing
1155
+ end
1156
+ end
1157
+
1158
+ assert_equal(1, error_count(test_case))
1159
+ end
1160
+
1161
+ def test_pass_through_on_shutdown
1162
+ test_case = Class.new(TestCase) do
1163
+ class << self
1164
+ def shutdown
1165
+ raise Interrupt, "from shutdown"
1166
+ end
1167
+ end
1168
+
1169
+ def test_nothing
1170
+ end
1171
+ end
1172
+
1173
+ assert_raise(Interrupt) do
1174
+ run_test_case(test_case)
1175
+ end
1176
+ end
1177
+
1178
+ def test_pass_through_in_test
1179
+ test_case = Class.new(TestCase) do
1180
+ @called = []
1181
+ class << self
1182
+ def called
1183
+ @called
1184
+ end
1185
+
1186
+ def startup
1187
+ @called << :startup
1188
+ end
1189
+
1190
+ def shutdown
1191
+ @called << :shutdown
1192
+ end
1193
+ end
1194
+
1195
+ def test_error
1196
+ raise Interrupt, "from test"
1197
+ end
1198
+ end
1199
+
1200
+ assert_raise(Interrupt) do
1201
+ run_test_case(test_case)
1202
+ end
1203
+ assert_equal([:startup, :shutdown],
1204
+ test_case.called)
1205
+ end
1206
+
1207
+ class TestName < self
1208
+ def test_no_data
1209
+ test_case = Class.new(TestCase) do
1210
+ class << self
1211
+ def name
1212
+ "TestCase"
1213
+ end
1214
+ end
1215
+
1216
+ def test_nothing
1217
+ end
1218
+ end
1219
+
1220
+ test = test_case.new("test_nothing")
1221
+ assert_equal("test_nothing(TestCase)",
1222
+ test.name)
1223
+ end
1224
+
1225
+ def test_data
1226
+ test_case = Class.new(TestCase) do
1227
+ class << self
1228
+ def name
1229
+ "TestCase"
1230
+ end
1231
+ end
1232
+
1233
+ def test_nothing
1234
+ end
1235
+ end
1236
+
1237
+ test = test_case.new("test_nothing")
1238
+ test.assign_test_data("(nil)", nil)
1239
+ assert_equal("test_nothing[(nil)](TestCase)",
1240
+ test.name)
1241
+ end
1242
+ end
1243
+
1244
+ class TestLocalName < self
1245
+ def test_no_data
1246
+ test_case = Class.new(TestCase) do
1247
+ class << self
1248
+ def name
1249
+ "TestCase"
1250
+ end
1251
+ end
1252
+
1253
+ def test_nothing
1254
+ end
1255
+ end
1256
+
1257
+ test = test_case.new("test_nothing")
1258
+ assert_equal("test_nothing",
1259
+ test.local_name)
1260
+ end
1261
+
1262
+ def test_data
1263
+ test_case = Class.new(TestCase) do
1264
+ class << self
1265
+ def name
1266
+ "TestCase"
1267
+ end
1268
+ end
1269
+
1270
+ def test_nothing
1271
+ end
1272
+ end
1273
+
1274
+ test = test_case.new("test_nothing")
1275
+ test.assign_test_data("(nil)", nil)
1276
+ assert_equal("test_nothing[(nil)]",
1277
+ test.local_name)
1278
+ end
1279
+ end
1280
+ end
1281
+ end
1282
+ end
1283
+ end
1284
+ end