cairo 1.8.3-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of cairo might be problematic. Click here for more details.

Files changed (352) hide show
  1. data/AUTHORS +4 -0
  2. data/COPYING +59 -0
  3. data/GPL +340 -0
  4. data/NEWS +163 -0
  5. data/Rakefile +190 -0
  6. data/doc/doc.css +91 -0
  7. data/doc/en/cairo-antialias.html +38 -0
  8. data/doc/en/cairo-clip-not-representable-error.html +47 -0
  9. data/doc/en/cairo-color-base.html +69 -0
  10. data/doc/en/cairo-color-cmyk.html +157 -0
  11. data/doc/en/cairo-color-hsv.html +137 -0
  12. data/doc/en/cairo-color-rgb.html +142 -0
  13. data/doc/en/cairo-color-x11.html +173 -0
  14. data/doc/en/cairo-color.html +238 -0
  15. data/doc/en/cairo-content.html +37 -0
  16. data/doc/en/cairo-context-blur.html +39 -0
  17. data/doc/en/cairo-context-circle.html +39 -0
  18. data/doc/en/cairo-context-color.html +39 -0
  19. data/doc/en/cairo-context-path.html +44 -0
  20. data/doc/en/cairo-context-rectangle.html +39 -0
  21. data/doc/en/cairo-context-triangle.html +39 -0
  22. data/doc/en/cairo-context.html +643 -0
  23. data/doc/en/cairo-error.html +44 -0
  24. data/doc/en/cairo-extend.html +38 -0
  25. data/doc/en/cairo-file-not-found.html +47 -0
  26. data/doc/en/cairo-fill-rule.html +36 -0
  27. data/doc/en/cairo-filter.html +40 -0
  28. data/doc/en/cairo-font-extents.html +129 -0
  29. data/doc/en/cairo-font-face.html +38 -0
  30. data/doc/en/cairo-font-options.html +139 -0
  31. data/doc/en/cairo-font-slant.html +37 -0
  32. data/doc/en/cairo-font-type-mismatch.html +47 -0
  33. data/doc/en/cairo-font-weight.html +36 -0
  34. data/doc/en/cairo-format.html +46 -0
  35. data/doc/en/cairo-glyph.html +99 -0
  36. data/doc/en/cairo-gradient-pattern.html +74 -0
  37. data/doc/en/cairo-hint-metrics.html +37 -0
  38. data/doc/en/cairo-hint-style.html +39 -0
  39. data/doc/en/cairo-image-surface.html +82 -0
  40. data/doc/en/cairo-invalid-clusters.html +47 -0
  41. data/doc/en/cairo-invalid-content-error.html +47 -0
  42. data/doc/en/cairo-invalid-dash-error.html +47 -0
  43. data/doc/en/cairo-invalid-dsc-comment-error.html +47 -0
  44. data/doc/en/cairo-invalid-format-error.html +47 -0
  45. data/doc/en/cairo-invalid-index-error.html +47 -0
  46. data/doc/en/cairo-invalid-matrix-error.html +47 -0
  47. data/doc/en/cairo-invalid-path-data-error.html +47 -0
  48. data/doc/en/cairo-invalid-pop-group-error.html +47 -0
  49. data/doc/en/cairo-invalid-restore-error.html +47 -0
  50. data/doc/en/cairo-invalid-slant.html +47 -0
  51. data/doc/en/cairo-invalid-status-error.html +47 -0
  52. data/doc/en/cairo-invalid-stride-error.html +47 -0
  53. data/doc/en/cairo-invalid-string-error.html +47 -0
  54. data/doc/en/cairo-invalid-visual-error.html +47 -0
  55. data/doc/en/cairo-invalid-weight.html +47 -0
  56. data/doc/en/cairo-line-cap.html +37 -0
  57. data/doc/en/cairo-line-join.html +37 -0
  58. data/doc/en/cairo-linear-pattern.html +60 -0
  59. data/doc/en/cairo-matrix.html +259 -0
  60. data/doc/en/cairo-negative-count.html +47 -0
  61. data/doc/en/cairo-no-current-point-error.html +47 -0
  62. data/doc/en/cairo-null-pointer-error.html +47 -0
  63. data/doc/en/cairo-operator.html +48 -0
  64. data/doc/en/cairo-paper-parse-error.html +47 -0
  65. data/doc/en/cairo-paper-unknown-paper-name.html +66 -0
  66. data/doc/en/cairo-paper-unknown-unit.html +66 -0
  67. data/doc/en/cairo-paper-unrecognized-paper-description.html +66 -0
  68. data/doc/en/cairo-paper.html +184 -0
  69. data/doc/en/cairo-path-close-path.html +49 -0
  70. data/doc/en/cairo-path-curve-to.html +49 -0
  71. data/doc/en/cairo-path-data-type.html +38 -0
  72. data/doc/en/cairo-path-data.html +98 -0
  73. data/doc/en/cairo-path-line-to.html +49 -0
  74. data/doc/en/cairo-path-move-to.html +49 -0
  75. data/doc/en/cairo-path.html +155 -0
  76. data/doc/en/cairo-pattern-type-mismatch-error.html +47 -0
  77. data/doc/en/cairo-pattern.html +99 -0
  78. data/doc/en/cairo-pdf-surface.html +57 -0
  79. data/doc/en/cairo-point.html +74 -0
  80. data/doc/en/cairo-ps-level.html +49 -0
  81. data/doc/en/cairo-ps-surface.html +92 -0
  82. data/doc/en/cairo-quartz-image-surface.html +57 -0
  83. data/doc/en/cairo-quartz-surface.html +57 -0
  84. data/doc/en/cairo-radial-pattern.html +60 -0
  85. data/doc/en/cairo-read-error.html +47 -0
  86. data/doc/en/cairo-rectangle.html +89 -0
  87. data/doc/en/cairo-scaled-font.html +94 -0
  88. data/doc/en/cairo-solid-pattern.html +62 -0
  89. data/doc/en/cairo-subpixel-order.html +39 -0
  90. data/doc/en/cairo-surface-finished-error.html +47 -0
  91. data/doc/en/cairo-surface-pattern.html +57 -0
  92. data/doc/en/cairo-surface-type-mismatch-error.html +47 -0
  93. data/doc/en/cairo-surface.html +121 -0
  94. data/doc/en/cairo-svg-surface.html +77 -0
  95. data/doc/en/cairo-svg-version.html +49 -0
  96. data/doc/en/cairo-temp-file-error.html +47 -0
  97. data/doc/en/cairo-text-cluster-flag.html +35 -0
  98. data/doc/en/cairo-text-cluster.html +84 -0
  99. data/doc/en/cairo-text-extents.html +144 -0
  100. data/doc/en/cairo-toy-font-face.html +67 -0
  101. data/doc/en/cairo-user-font-error.html +47 -0
  102. data/doc/en/cairo-user-font-face-text-to-glyphs-data.html +94 -0
  103. data/doc/en/cairo-user-font-face.html +72 -0
  104. data/doc/en/cairo-user-font-immutable.html +47 -0
  105. data/doc/en/cairo-win32-printing-surface.html +57 -0
  106. data/doc/en/cairo-win32-surface.html +62 -0
  107. data/doc/en/cairo-write-error.html +47 -0
  108. data/doc/en/cairo.html +131 -0
  109. data/doc/en/index.html +1154 -0
  110. data/doc/index.html +18 -0
  111. data/doc/ja/cairo-antialias.html +57 -0
  112. data/doc/ja/cairo-clip-not-representable-error.html +56 -0
  113. data/doc/ja/cairo-color-base.html +75 -0
  114. data/doc/ja/cairo-color-cmyk.html +152 -0
  115. data/doc/ja/cairo-color-hsv.html +135 -0
  116. data/doc/ja/cairo-color-rgb.html +145 -0
  117. data/doc/ja/cairo-color-x11.html +183 -0
  118. data/doc/ja/cairo-color.html +317 -0
  119. data/doc/ja/cairo-content.html +51 -0
  120. data/doc/ja/cairo-context-blur.html +53 -0
  121. data/doc/ja/cairo-context-circle.html +54 -0
  122. data/doc/ja/cairo-context-color.html +52 -0
  123. data/doc/ja/cairo-context-path.html +77 -0
  124. data/doc/ja/cairo-context-rectangle.html +60 -0
  125. data/doc/ja/cairo-context-triangle.html +47 -0
  126. data/doc/ja/cairo-context.html +1542 -0
  127. data/doc/ja/cairo-error.html +56 -0
  128. data/doc/ja/cairo-extend.html +56 -0
  129. data/doc/ja/cairo-file-not-found.html +51 -0
  130. data/doc/ja/cairo-fill-rule.html +58 -0
  131. data/doc/ja/cairo-filter.html +43 -0
  132. data/doc/ja/cairo-font-extents.html +164 -0
  133. data/doc/ja/cairo-font-face.html +55 -0
  134. data/doc/ja/cairo-font-options.html +189 -0
  135. data/doc/ja/cairo-font-slant.html +50 -0
  136. data/doc/ja/cairo-font-type-mismatch.html +52 -0
  137. data/doc/ja/cairo-font-weight.html +47 -0
  138. data/doc/ja/cairo-format.html +81 -0
  139. data/doc/ja/cairo-glyph.html +115 -0
  140. data/doc/ja/cairo-gradient-pattern.html +119 -0
  141. data/doc/ja/cairo-hint-metrics.html +57 -0
  142. data/doc/ja/cairo-hint-style.html +64 -0
  143. data/doc/ja/cairo-image-surface.html +131 -0
  144. data/doc/ja/cairo-invalid-clusters.html +55 -0
  145. data/doc/ja/cairo-invalid-content-error.html +54 -0
  146. data/doc/ja/cairo-invalid-dash-error.html +54 -0
  147. data/doc/ja/cairo-invalid-dsc-comment-error.html +54 -0
  148. data/doc/ja/cairo-invalid-format-error.html +54 -0
  149. data/doc/ja/cairo-invalid-index-error.html +54 -0
  150. data/doc/ja/cairo-invalid-matrix-error.html +54 -0
  151. data/doc/ja/cairo-invalid-path-data-error.html +54 -0
  152. data/doc/ja/cairo-invalid-pop-group-error.html +54 -0
  153. data/doc/ja/cairo-invalid-restore-error.html +55 -0
  154. data/doc/ja/cairo-invalid-slant.html +57 -0
  155. data/doc/ja/cairo-invalid-status-error.html +55 -0
  156. data/doc/ja/cairo-invalid-stride-error.html +55 -0
  157. data/doc/ja/cairo-invalid-string-error.html +54 -0
  158. data/doc/ja/cairo-invalid-visual-error.html +57 -0
  159. data/doc/ja/cairo-invalid-weight.html +57 -0
  160. data/doc/ja/cairo-line-cap.html +50 -0
  161. data/doc/ja/cairo-line-join.html +53 -0
  162. data/doc/ja/cairo-linear-pattern.html +87 -0
  163. data/doc/ja/cairo-matrix.html +354 -0
  164. data/doc/ja/cairo-negative-count.html +52 -0
  165. data/doc/ja/cairo-no-current-point-error.html +54 -0
  166. data/doc/ja/cairo-null-pointer-error.html +54 -0
  167. data/doc/ja/cairo-operator.html +51 -0
  168. data/doc/ja/cairo-paper-parse-error.html +55 -0
  169. data/doc/ja/cairo-paper-unknown-paper-name.html +76 -0
  170. data/doc/ja/cairo-paper-unknown-unit.html +75 -0
  171. data/doc/ja/cairo-paper-unrecognized-paper-description.html +76 -0
  172. data/doc/ja/cairo-paper.html +357 -0
  173. data/doc/ja/cairo-path-close-path.html +57 -0
  174. data/doc/ja/cairo-path-curve-to.html +70 -0
  175. data/doc/ja/cairo-path-data-type.html +53 -0
  176. data/doc/ja/cairo-path-data.html +127 -0
  177. data/doc/ja/cairo-path-line-to.html +62 -0
  178. data/doc/ja/cairo-path-move-to.html +62 -0
  179. data/doc/ja/cairo-path.html +144 -0
  180. data/doc/ja/cairo-pattern-type-mismatch-error.html +56 -0
  181. data/doc/ja/cairo-pattern.html +128 -0
  182. data/doc/ja/cairo-pdf-surface.html +86 -0
  183. data/doc/ja/cairo-point.html +90 -0
  184. data/doc/ja/cairo-ps-level.html +62 -0
  185. data/doc/ja/cairo-ps-surface.html +214 -0
  186. data/doc/ja/cairo-quartz-image-surface.html +75 -0
  187. data/doc/ja/cairo-quartz-surface.html +93 -0
  188. data/doc/ja/cairo-radial-pattern.html +93 -0
  189. data/doc/ja/cairo-read-error.html +55 -0
  190. data/doc/ja/cairo-rectangle.html +109 -0
  191. data/doc/ja/cairo-scaled-font.html +180 -0
  192. data/doc/ja/cairo-solid-pattern.html +87 -0
  193. data/doc/ja/cairo-subpixel-order.html +57 -0
  194. data/doc/ja/cairo-surface-finished-error.html +54 -0
  195. data/doc/ja/cairo-surface-pattern.html +68 -0
  196. data/doc/ja/cairo-surface-type-mismatch-error.html +56 -0
  197. data/doc/ja/cairo-surface.html +213 -0
  198. data/doc/ja/cairo-svg-surface.html +114 -0
  199. data/doc/ja/cairo-svg-version.html +66 -0
  200. data/doc/ja/cairo-temp-file-error.html +50 -0
  201. data/doc/ja/cairo-text-cluster-flag.html +46 -0
  202. data/doc/ja/cairo-text-cluster.html +102 -0
  203. data/doc/ja/cairo-text-extents.html +163 -0
  204. data/doc/ja/cairo-toy-font-face.html +107 -0
  205. data/doc/ja/cairo-user-font-error.html +55 -0
  206. data/doc/ja/cairo-user-font-face-text-to-glyphs-data.html +156 -0
  207. data/doc/ja/cairo-user-font-face.html +268 -0
  208. data/doc/ja/cairo-user-font-immutable.html +54 -0
  209. data/doc/ja/cairo-win32-printing-surface.html +80 -0
  210. data/doc/ja/cairo-win32-surface.html +100 -0
  211. data/doc/ja/cairo-write-error.html +55 -0
  212. data/doc/ja/cairo.html +177 -0
  213. data/doc/ja/index.html +1156 -0
  214. data/ext/cairo/cairo.def +104 -0
  215. data/ext/cairo/extconf.rb +80 -0
  216. data/ext/cairo/rb_cairo.c +104 -0
  217. data/ext/cairo/rb_cairo.h +275 -0
  218. data/ext/cairo/rb_cairo_constants.c +478 -0
  219. data/ext/cairo/rb_cairo_context.c +1693 -0
  220. data/ext/cairo/rb_cairo_exception.c +354 -0
  221. data/ext/cairo/rb_cairo_font_extents.c +200 -0
  222. data/ext/cairo/rb_cairo_font_face.c +713 -0
  223. data/ext/cairo/rb_cairo_font_options.c +197 -0
  224. data/ext/cairo/rb_cairo_glyph.c +161 -0
  225. data/ext/cairo/rb_cairo_matrix.c +366 -0
  226. data/ext/cairo/rb_cairo_path.c +459 -0
  227. data/ext/cairo/rb_cairo_pattern.c +540 -0
  228. data/ext/cairo/rb_cairo_private.c +242 -0
  229. data/ext/cairo/rb_cairo_private.h +114 -0
  230. data/ext/cairo/rb_cairo_scaled_font.c +235 -0
  231. data/ext/cairo/rb_cairo_surface.c +1371 -0
  232. data/ext/cairo/rb_cairo_text_cluster.c +151 -0
  233. data/ext/cairo/rb_cairo_text_extents.c +221 -0
  234. data/extconf.rb +45 -0
  235. data/lib/1.8/cairo.so +0 -0
  236. data/lib/1.9/cairo.so +0 -0
  237. data/lib/cairo.rb +151 -0
  238. data/lib/cairo/color.rb +267 -0
  239. data/lib/cairo/colors.rb +656 -0
  240. data/lib/cairo/constants.rb +24 -0
  241. data/lib/cairo/context.rb +29 -0
  242. data/lib/cairo/context/blur.rb +45 -0
  243. data/lib/cairo/context/circle.rb +9 -0
  244. data/lib/cairo/context/color.rb +11 -0
  245. data/lib/cairo/context/path.rb +116 -0
  246. data/lib/cairo/context/rectangle.rb +33 -0
  247. data/lib/cairo/context/triangle.rb +12 -0
  248. data/lib/cairo/paper.rb +183 -0
  249. data/lib/cairo/papers.rb +41 -0
  250. data/lib/cairo/path.rb +15 -0
  251. data/lib/cairo/point.rb +7 -0
  252. data/misc/update-colors.rb +143 -0
  253. data/pkg-config.rb +313 -0
  254. data/samples/agg/README +4 -0
  255. data/samples/agg/aa_test.rb +304 -0
  256. data/samples/blur.rb +47 -0
  257. data/samples/pac.rb +99 -0
  258. data/samples/pac2.rb +171 -0
  259. data/samples/png.rb +45 -0
  260. data/samples/scalable.rb +56 -0
  261. data/samples/text-on-path.rb +60 -0
  262. data/samples/text2.rb +131 -0
  263. data/test-unit/Rakefile +30 -0
  264. data/test-unit/bin/testrb +5 -0
  265. data/test-unit/lib/test/unit.rb +280 -0
  266. data/test-unit/lib/test/unit/assertionfailederror.rb +14 -0
  267. data/test-unit/lib/test/unit/assertions.rb +722 -0
  268. data/test-unit/lib/test/unit/attribute.rb +125 -0
  269. data/test-unit/lib/test/unit/autorunner.rb +254 -0
  270. data/test-unit/lib/test/unit/collector.rb +43 -0
  271. data/test-unit/lib/test/unit/collector/descendant.rb +23 -0
  272. data/test-unit/lib/test/unit/collector/dir.rb +108 -0
  273. data/test-unit/lib/test/unit/collector/load.rb +135 -0
  274. data/test-unit/lib/test/unit/collector/objectspace.rb +34 -0
  275. data/test-unit/lib/test/unit/color.rb +61 -0
  276. data/test-unit/lib/test/unit/diff.rb +524 -0
  277. data/test-unit/lib/test/unit/error.rb +124 -0
  278. data/test-unit/lib/test/unit/exceptionhandler.rb +39 -0
  279. data/test-unit/lib/test/unit/failure.rb +110 -0
  280. data/test-unit/lib/test/unit/fixture.rb +185 -0
  281. data/test-unit/lib/test/unit/notification.rb +125 -0
  282. data/test-unit/lib/test/unit/omission.rb +143 -0
  283. data/test-unit/lib/test/unit/pending.rb +146 -0
  284. data/test-unit/lib/test/unit/priority.rb +146 -0
  285. data/test-unit/lib/test/unit/runner/console.rb +46 -0
  286. data/test-unit/lib/test/unit/runner/emacs.rb +8 -0
  287. data/test-unit/lib/test/unit/testcase.rb +281 -0
  288. data/test-unit/lib/test/unit/testresult.rb +89 -0
  289. data/test-unit/lib/test/unit/testsuite.rb +110 -0
  290. data/test-unit/lib/test/unit/ui/console/outputlevel.rb +14 -0
  291. data/test-unit/lib/test/unit/ui/console/testrunner.rb +195 -0
  292. data/test-unit/lib/test/unit/ui/emacs/testrunner.rb +49 -0
  293. data/test-unit/lib/test/unit/ui/testrunner.rb +20 -0
  294. data/test-unit/lib/test/unit/ui/testrunnermediator.rb +77 -0
  295. data/test-unit/lib/test/unit/ui/testrunnerutilities.rb +41 -0
  296. data/test-unit/lib/test/unit/util/backtracefilter.rb +41 -0
  297. data/test-unit/lib/test/unit/util/observable.rb +90 -0
  298. data/test-unit/lib/test/unit/util/procwrapper.rb +48 -0
  299. data/test-unit/lib/test/unit/version.rb +7 -0
  300. data/test-unit/sample/adder.rb +13 -0
  301. data/test-unit/sample/subtracter.rb +12 -0
  302. data/test-unit/sample/tc_adder.rb +18 -0
  303. data/test-unit/sample/tc_subtracter.rb +18 -0
  304. data/test-unit/sample/ts_examples.rb +7 -0
  305. data/test-unit/test/collector/test_descendant.rb +135 -0
  306. data/test-unit/test/collector/test_dir.rb +406 -0
  307. data/test-unit/test/collector/test_load.rb +333 -0
  308. data/test-unit/test/collector/test_objectspace.rb +98 -0
  309. data/test-unit/test/run-test.rb +13 -0
  310. data/test-unit/test/test_assertions.rb +693 -0
  311. data/test-unit/test/test_attribute.rb +86 -0
  312. data/test-unit/test/test_color.rb +37 -0
  313. data/test-unit/test/test_diff.rb +477 -0
  314. data/test-unit/test/test_emacs_runner.rb +60 -0
  315. data/test-unit/test/test_error.rb +26 -0
  316. data/test-unit/test/test_failure.rb +33 -0
  317. data/test-unit/test/test_fixture.rb +252 -0
  318. data/test-unit/test/test_notification.rb +33 -0
  319. data/test-unit/test/test_omission.rb +81 -0
  320. data/test-unit/test/test_pending.rb +70 -0
  321. data/test-unit/test/test_priority.rb +89 -0
  322. data/test-unit/test/test_testcase.rb +430 -0
  323. data/test-unit/test/test_testresult.rb +113 -0
  324. data/test-unit/test/test_testsuite.rb +129 -0
  325. data/test-unit/test/testunit_test_util.rb +14 -0
  326. data/test-unit/test/ui/test_testrunmediator.rb +20 -0
  327. data/test-unit/test/util/test_backtracefilter.rb +41 -0
  328. data/test-unit/test/util/test_observable.rb +102 -0
  329. data/test-unit/test/util/test_procwrapper.rb +36 -0
  330. data/test/cairo-test-utils.rb +18 -0
  331. data/test/run-test.rb +28 -0
  332. data/test/test_color.rb +17 -0
  333. data/test/test_constants.rb +16 -0
  334. data/test/test_context.rb +105 -0
  335. data/test/test_exception.rb +27 -0
  336. data/test/test_font_extents.rb +36 -0
  337. data/test/test_font_face.rb +244 -0
  338. data/test/test_font_options.rb +13 -0
  339. data/test/test_paper.rb +81 -0
  340. data/test/test_pkg_config.rb +123 -0
  341. data/test/test_scaled_font.rb +34 -0
  342. data/test/test_surface.rb +41 -0
  343. data/test/test_text_cluster.rb +32 -0
  344. data/test/test_text_extents.rb +40 -0
  345. data/test/test_text_to_glyphs_data.rb +51 -0
  346. data/tmp/x86-mingw32/cairo/1.8.7/fake.rb +6 -0
  347. data/tmp/x86-mingw32/cairo/1.8.7/mkmf.rb +1836 -0
  348. data/tmp/x86-mingw32/cairo/1.8.7/rbconfig.rb +183 -0
  349. data/tmp/x86-mingw32/cairo/1.9.2/fake.rb +6 -0
  350. data/tmp/x86-mingw32/cairo/1.9.2/mkmf.rb +2079 -0
  351. data/tmp/x86-mingw32/cairo/1.9.2/rbconfig.rb +226 -0
  352. metadata +437 -0
@@ -0,0 +1,124 @@
1
+ #--
2
+ #
3
+ # Author:: Nathaniel Talbott.
4
+ # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
5
+ # License:: Ruby license.
6
+
7
+ require 'test/unit/util/backtracefilter'
8
+
9
+ module Test
10
+ module Unit
11
+
12
+ # Encapsulates an error in a test. Created by
13
+ # Test::Unit::TestCase when it rescues an exception thrown
14
+ # during the processing of a test.
15
+ class Error
16
+ include Util::BacktraceFilter
17
+
18
+ attr_reader(:test_name, :exception)
19
+
20
+ SINGLE_CHARACTER = 'E'
21
+ LABEL = "Error"
22
+
23
+ # Creates a new Error with the given test_name and
24
+ # exception.
25
+ def initialize(test_name, exception)
26
+ @test_name = test_name
27
+ @exception = exception
28
+ end
29
+
30
+ # Returns a single character representation of an error.
31
+ def single_character_display
32
+ SINGLE_CHARACTER
33
+ end
34
+
35
+ def label
36
+ LABEL
37
+ end
38
+
39
+ # Returns the message associated with the error.
40
+ def message
41
+ "#{@exception.class.name}: #{@exception.message}"
42
+ end
43
+
44
+ # Returns a brief version of the error description.
45
+ def short_display
46
+ "#@test_name: #{message.split("\n")[0]}"
47
+ end
48
+
49
+ # Returns a verbose version of the error description.
50
+ def long_display
51
+ backtrace_display = backtrace.join("\n ")
52
+ "#{label}:\n#@test_name:\n#{message}\n #{backtrace_display}"
53
+ end
54
+
55
+ def backtrace
56
+ filter_backtrace(@exception.backtrace)
57
+ end
58
+
59
+ # Overridden to return long_display.
60
+ def to_s
61
+ long_display
62
+ end
63
+ end
64
+
65
+ module ErrorHandler
66
+ class << self
67
+ def included(base)
68
+ base.exception_handler(:handle_all_exception)
69
+ end
70
+ end
71
+
72
+ PASS_THROUGH_EXCEPTIONS = [NoMemoryError, SignalException, Interrupt,
73
+ SystemExit]
74
+ private
75
+ def handle_all_exception(exception)
76
+ case exception
77
+ when *PASS_THROUGH_EXCEPTIONS
78
+ false
79
+ else
80
+ problem_occurred
81
+ add_error(exception)
82
+ true
83
+ end
84
+ end
85
+
86
+ def add_error(exception)
87
+ current_result.add_error(Error.new(name, exception))
88
+ end
89
+ end
90
+
91
+ module TestResultErrorSupport
92
+ attr_reader :errors
93
+
94
+ # Records a Test::Unit::Error.
95
+ def add_error(error)
96
+ @errors << error
97
+ notify_fault(error)
98
+ notify_changed
99
+ end
100
+
101
+ # Returns the number of errors this TestResult has
102
+ # recorded.
103
+ def error_count
104
+ @errors.size
105
+ end
106
+
107
+ def error_occurred?
108
+ not @errors.empty?
109
+ end
110
+
111
+ private
112
+ def initialize_containers
113
+ super
114
+ @errors = []
115
+ @summary_generators << :error_summary
116
+ @problem_checkers << :error_occurred?
117
+ end
118
+
119
+ def error_summary
120
+ "#{error_count} errors"
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,39 @@
1
+ module Test
2
+ module Unit
3
+ module ExceptionHandler
4
+ @@exception_handlers = []
5
+ class << self
6
+ def exception_handlers
7
+ @@exception_handlers
8
+ end
9
+
10
+ def included(base)
11
+ base.extend(ClassMethods)
12
+
13
+ observer = Proc.new do |test_case, _, _, value, method_name|
14
+ if value
15
+ @@exception_handlers.unshift(method_name)
16
+ else
17
+ @@exception_handlers -= [method_name]
18
+ end
19
+ end
20
+ base.register_attribute_observer(:exception_handler, &observer)
21
+ end
22
+ end
23
+
24
+ module ClassMethods
25
+ def exception_handlers
26
+ ExceptionHandler.exception_handlers
27
+ end
28
+
29
+ def exception_handler(*method_names)
30
+ attribute(:exception_handler, true, *method_names)
31
+ end
32
+
33
+ def unregister_exception_handler(*method_names)
34
+ attribute(:exception_handler, false, *method_names)
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,110 @@
1
+ #--
2
+ #
3
+ # Author:: Nathaniel Talbott.
4
+ # Copyright:: Copyright (c) 2000-2002 Nathaniel Talbott. All rights reserved.
5
+ # License:: Ruby license.
6
+
7
+ module Test
8
+ module Unit
9
+
10
+ # Encapsulates a test failure. Created by Test::Unit::TestCase
11
+ # when an assertion fails.
12
+ class Failure
13
+ attr_reader :test_name, :location, :message
14
+
15
+ SINGLE_CHARACTER = 'F'
16
+ LABEL = "Failure"
17
+
18
+ # Creates a new Failure with the given location and
19
+ # message.
20
+ def initialize(test_name, location, message)
21
+ @test_name = test_name
22
+ @location = location
23
+ @message = message
24
+ end
25
+
26
+ # Returns a single character representation of a failure.
27
+ def single_character_display
28
+ SINGLE_CHARACTER
29
+ end
30
+
31
+ def label
32
+ LABEL
33
+ end
34
+
35
+ # Returns a brief version of the error description.
36
+ def short_display
37
+ "#@test_name: #{@message.split("\n")[0]}"
38
+ end
39
+
40
+ # Returns a verbose version of the error description.
41
+ def long_display
42
+ if location.size == 1
43
+ location_display = location[0].sub(/\A(.+:\d+).*/, ' [\\1]')
44
+ else
45
+ location_display = "\n [#{location.join("\n ")}]"
46
+ end
47
+ "#{label}:\n#@test_name#{location_display}:\n#@message"
48
+ end
49
+
50
+ # Overridden to return long_display.
51
+ def to_s
52
+ long_display
53
+ end
54
+ end
55
+
56
+ module FailureHandler
57
+ class << self
58
+ def included(base)
59
+ base.exception_handler(:handle_assertion_failed_error)
60
+ end
61
+ end
62
+
63
+ private
64
+ def handle_assertion_failed_error(exception)
65
+ return false unless exception.is_a?(AssertionFailedError)
66
+ problem_occurred
67
+ add_failure(exception.message, exception.backtrace)
68
+ true
69
+ end
70
+
71
+ def add_failure(message, backtrace)
72
+ failure = Failure.new(name, filter_backtrace(backtrace), message)
73
+ current_result.add_failure(failure)
74
+ end
75
+ end
76
+
77
+ module TestResultFailureSupport
78
+ attr_reader :failures
79
+
80
+ # Records a Test::Unit::Failure.
81
+ def add_failure(failure)
82
+ @failures << failure
83
+ notify_fault(failure)
84
+ notify_changed
85
+ end
86
+
87
+ # Returns the number of failures this TestResult has
88
+ # recorded.
89
+ def failure_count
90
+ @failures.size
91
+ end
92
+
93
+ def failure_occurred?
94
+ not @failures.empty?
95
+ end
96
+
97
+ private
98
+ def initialize_containers
99
+ super
100
+ @failures = []
101
+ @summary_generators << :failure_summary
102
+ @problem_checkers << :failure_occurred?
103
+ end
104
+
105
+ def failure_summary
106
+ "#{failure_count} failures"
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,185 @@
1
+ module Test
2
+ module Unit
3
+ module Fixture
4
+ class << self
5
+ def included(base)
6
+ base.extend(ClassMethods)
7
+
8
+ [:setup, :teardown].each do |fixture|
9
+ observer = Proc.new do |test_case, _, _, value, method_name|
10
+ if value.nil?
11
+ test_case.send("unregister_#{fixture}_method", method_name)
12
+ else
13
+ test_case.send("register_#{fixture}_method", method_name,
14
+ value)
15
+ end
16
+ end
17
+ base.register_attribute_observer(fixture, &observer)
18
+ end
19
+ end
20
+ end
21
+
22
+ module ClassMethods
23
+ def setup(*method_names)
24
+ register_fixture(:setup, *method_names)
25
+ end
26
+
27
+ def unregister_setup(*method_names)
28
+ unregister_fixture(:setup, *method_names)
29
+ end
30
+
31
+ def teardown(*method_names)
32
+ register_fixture(:teardown, *method_names)
33
+ end
34
+
35
+ def unregister_teardown(*method_names)
36
+ unregister_fixture(:teardown, *method_names)
37
+ end
38
+
39
+ def register_setup_method(method_name, options)
40
+ register_fixture_method(:setup, method_name, options, :after, :append)
41
+ end
42
+
43
+ def unregister_setup_method(method_name)
44
+ unregister_fixture_method(:setup, method_name)
45
+ end
46
+
47
+ def register_teardown_method(method_name, options)
48
+ register_fixture_method(:teardown, method_name, options,
49
+ :before, :prepend)
50
+ end
51
+
52
+ def unregister_teardown_method(method_name)
53
+ unregister_fixture_method(:teardown, method_name)
54
+ end
55
+
56
+ def before_setup_methods
57
+ collect_fixture_methods(:setup, :before)
58
+ end
59
+
60
+ def after_setup_methods
61
+ collect_fixture_methods(:setup, :after)
62
+ end
63
+
64
+ def before_teardown_methods
65
+ collect_fixture_methods(:teardown, :before)
66
+ end
67
+
68
+ def after_teardown_methods
69
+ collect_fixture_methods(:teardown, :after)
70
+ end
71
+
72
+ private
73
+ def register_fixture(fixture, *method_names)
74
+ options = {}
75
+ options = method_names.pop if method_names.last.is_a?(Hash)
76
+ attribute(fixture, options, *method_names)
77
+ end
78
+
79
+ def unregister_fixture(fixture, *method_names)
80
+ attribute(fixture, nil, *method_names)
81
+ end
82
+
83
+ def valid_register_fixture_options?(options)
84
+ return true if options.empty?
85
+ return false if options.size > 1
86
+
87
+ key = options.keys.first
88
+ [:before, :after].include?(key) and
89
+ [:prepend, :append].include?(options[key])
90
+ end
91
+
92
+ def add_fixture_method_name(how, variable_name, method_name)
93
+ unless self.instance_variable_defined?(variable_name)
94
+ self.instance_variable_set(variable_name, [])
95
+ end
96
+ methods = self.instance_variable_get(variable_name)
97
+
98
+ if how == :prepend
99
+ methods = [method_name] | methods
100
+ else
101
+ methods = methods | [method_name]
102
+ end
103
+ self.instance_variable_set(variable_name, methods)
104
+ end
105
+
106
+ def registered_methods_variable_name(fixture, order)
107
+ "@#{order}_#{fixture}_methods"
108
+ end
109
+
110
+ def unregistered_methods_variable_name(fixture)
111
+ "@unregistered_#{fixture}_methods"
112
+ end
113
+
114
+ def register_fixture_method(fixture, method_name, options,
115
+ default_order, default_how)
116
+ unless valid_register_fixture_options?(options)
117
+ message = "must be {:before => :prepend}, " +
118
+ "{:before => :append}, {:after => :prepend} or " +
119
+ "{:after => :append}: #{options.inspect}"
120
+ raise ArgumentError, message
121
+ end
122
+
123
+ if options.empty?
124
+ order, how = default_order, default_how
125
+ else
126
+ order, how = options.to_a.first
127
+ end
128
+ variable_name = registered_methods_variable_name(fixture, order)
129
+ add_fixture_method_name(how, variable_name, method_name)
130
+ end
131
+
132
+ def unregister_fixture_method(fixture, method_name)
133
+ variable_name = unregistered_methods_variable_name(fixture)
134
+ add_fixture_method_name(:append, variable_name, method_name)
135
+ end
136
+
137
+ def collect_fixture_methods(fixture, order)
138
+ methods_variable = registered_methods_variable_name(fixture, order)
139
+ unregistered_methods_variable =
140
+ unregistered_methods_variable_name(fixture)
141
+
142
+ base_index = ancestors.index(Fixture)
143
+ interested_ancestors = ancestors[0, base_index].reverse
144
+ interested_ancestors.inject([]) do |result, ancestor|
145
+ if ancestor.is_a?(Class)
146
+ ancestor.class_eval do
147
+ methods = []
148
+ unregistered_methods = []
149
+ if instance_variable_defined?(methods_variable)
150
+ methods = instance_variable_get(methods_variable)
151
+ end
152
+ if instance_variable_defined?(unregistered_methods_variable)
153
+ unregistered_methods =
154
+ instance_variable_get(unregistered_methods_variable)
155
+ end
156
+ (result | methods) - unregistered_methods
157
+ end
158
+ else
159
+ result
160
+ end
161
+ end
162
+ end
163
+ end
164
+
165
+ private
166
+ def run_fixture(fixture)
167
+ [
168
+ self.class.send("before_#{fixture}_methods"),
169
+ fixture,
170
+ self.class.send("after_#{fixture}_methods")
171
+ ].flatten.each do |method_name|
172
+ send(method_name) if respond_to?(method_name, true)
173
+ end
174
+ end
175
+
176
+ def run_setup
177
+ run_fixture(:setup)
178
+ end
179
+
180
+ def run_teardown
181
+ run_fixture(:teardown)
182
+ end
183
+ end
184
+ end
185
+ end