uttk 0.3.1.2

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 (276) hide show
  1. data/AUTHORS +36 -0
  2. data/COPYING +18 -0
  3. data/ChangeLog +7673 -0
  4. data/GUIDELINES +86 -0
  5. data/LGPL +504 -0
  6. data/NEWS +158 -0
  7. data/NORM +137 -0
  8. data/README +180 -0
  9. data/Rakefile +8 -0
  10. data/SPEC.gemspec +15 -0
  11. data/SPEC.yml +60 -0
  12. data/TODO +23 -0
  13. data/TODO.old +31 -0
  14. data/VERSION +5 -0
  15. data/bin/getopts/uttk.rb +390 -0
  16. data/bin/uttk +188 -0
  17. data/bin/uttk-unit +125 -0
  18. data/lib/uttk.rb +288 -0
  19. data/lib/uttk/dumpers/Basic.rb +23 -0
  20. data/lib/uttk/dumpers/BasicColor.rb +35 -0
  21. data/lib/uttk/dumpers/Dumper.rb +77 -0
  22. data/lib/uttk/dumpers/Html.rb +271 -0
  23. data/lib/uttk/dumpers/Path.rb +24 -0
  24. data/lib/uttk/dumpers/Xml.rb +88 -0
  25. data/lib/uttk/dumpers/Yaml.rb +138 -0
  26. data/lib/uttk/filters.rb +128 -0
  27. data/lib/uttk/filters/Buffer.rb +119 -0
  28. data/lib/uttk/filters/Compact.rb +75 -0
  29. data/lib/uttk/filters/Default.rb +27 -0
  30. data/lib/uttk/filters/DefaultColor.rb +27 -0
  31. data/lib/uttk/filters/Filter.rb +53 -0
  32. data/lib/uttk/filters/Id.rb +30 -0
  33. data/lib/uttk/filters/JustStatus.rb +25 -0
  34. data/lib/uttk/filters/KeepSkipBased.rb +38 -0
  35. data/lib/uttk/filters/NodeCut.rb +97 -0
  36. data/lib/uttk/filters/RPathFilter.rb +134 -0
  37. data/lib/uttk/filters/Saver.rb +53 -0
  38. data/lib/uttk/filters/TextFilter.rb +69 -0
  39. data/lib/uttk/generators/dumper_generator.rb +28 -0
  40. data/lib/uttk/generators/filter_generator.rb +28 -0
  41. data/lib/uttk/generators/generator.rb +86 -0
  42. data/lib/uttk/generators/generator_generator.rb +26 -0
  43. data/lib/uttk/generators/loader_generator.rb +28 -0
  44. data/lib/uttk/generators/path_filter_generator.rb +28 -0
  45. data/lib/uttk/generators/strategy_generator.rb +28 -0
  46. data/lib/uttk/generators/templates/dumper.rb +50 -0
  47. data/lib/uttk/generators/templates/filter.rb +50 -0
  48. data/lib/uttk/generators/templates/generator.rb +28 -0
  49. data/lib/uttk/generators/templates/loader.rb +26 -0
  50. data/lib/uttk/generators/templates/path_filter.rb +28 -0
  51. data/lib/uttk/generators/templates/strategy.rb +59 -0
  52. data/lib/uttk/generators/templates/strategy.yml +28 -0
  53. data/lib/uttk/generators/templates/unit_test.rb +46 -0
  54. data/lib/uttk/loaders/Loader.rb +180 -0
  55. data/lib/uttk/loaders/Ruby.rb +28 -0
  56. data/lib/uttk/loaders/Yaml.rb +98 -0
  57. data/lib/uttk/logger.rb +306 -0
  58. data/lib/uttk/logger/backend.rb +170 -0
  59. data/lib/uttk/logger/path.rb +202 -0
  60. data/lib/uttk/logger/section_node.rb +214 -0
  61. data/lib/uttk/logger/severity.rb +63 -0
  62. data/lib/uttk/logger/to_uttk_log.rb +127 -0
  63. data/lib/uttk/logger/verbosity.rb +61 -0
  64. data/lib/uttk/logger_factory.rb +55 -0
  65. data/lib/uttk/path_filters/ColorStatus.rb +57 -0
  66. data/lib/uttk/path_filters/PathFilter.rb +27 -0
  67. data/lib/uttk/path_filters/RemoveTypes.rb +25 -0
  68. data/lib/uttk/status.rb +146 -0
  69. data/lib/uttk/strategies/Abort.rb +24 -0
  70. data/lib/uttk/strategies/Assert.rb +44 -0
  71. data/lib/uttk/strategies/Authors.rb +45 -0
  72. data/lib/uttk/strategies/Block.rb +113 -0
  73. data/lib/uttk/strategies/Bootstrap.rb +55 -0
  74. data/lib/uttk/strategies/Checkout.rb +64 -0
  75. data/lib/uttk/strategies/Clean.rb +29 -0
  76. data/lib/uttk/strategies/Cmd.rb +60 -0
  77. data/lib/uttk/strategies/CmdBase.rb +130 -0
  78. data/lib/uttk/strategies/Collection.rb +158 -0
  79. data/lib/uttk/strategies/Compile.rb +59 -0
  80. data/lib/uttk/strategies/Composite.rb +201 -0
  81. data/lib/uttk/strategies/Composite/contents_eval.rb +40 -0
  82. data/lib/uttk/strategies/Configure.rb +66 -0
  83. data/lib/uttk/strategies/Error.rb +23 -0
  84. data/lib/uttk/strategies/Fail.rb +26 -0
  85. data/lib/uttk/strategies/IOBased.rb +159 -0
  86. data/lib/uttk/strategies/Import.rb +60 -0
  87. data/lib/uttk/strategies/Iterate.rb +139 -0
  88. data/lib/uttk/strategies/JUnit.rb +205 -0
  89. data/lib/uttk/strategies/KillAll.rb +62 -0
  90. data/lib/uttk/strategies/Make.rb +94 -0
  91. data/lib/uttk/strategies/Package.rb +129 -0
  92. data/lib/uttk/strategies/PackageCollection.rb +78 -0
  93. data/lib/uttk/strategies/Pass.rb +24 -0
  94. data/lib/uttk/strategies/Pool.rb +104 -0
  95. data/lib/uttk/strategies/ProbabilityThreshold.rb +46 -0
  96. data/lib/uttk/strategies/Proxy.rb +42 -0
  97. data/lib/uttk/strategies/RMatch.rb +92 -0
  98. data/lib/uttk/strategies/RUnit.rb +132 -0
  99. data/lib/uttk/strategies/SignalCmd.rb +85 -0
  100. data/lib/uttk/strategies/Sleep.rb +36 -0
  101. data/lib/uttk/strategies/SqlQuery.rb +120 -0
  102. data/lib/uttk/strategies/Strategy.rb +683 -0
  103. data/lib/uttk/strategies/Stub.rb +37 -0
  104. data/lib/uttk/strategies/SubCmd.rb +77 -0
  105. data/lib/uttk/strategies/Suite.rb +71 -0
  106. data/lib/uttk/strategies/Test.rb +89 -0
  107. data/lib/uttk/streams.rb +69 -0
  108. data/lib/uttk/streams/Diff.rb +60 -0
  109. data/lib/uttk/streams/HexaDiff.rb +35 -0
  110. data/lib/uttk/streams/Stream.rb +76 -0
  111. data/lib/uttk/weights.rb +17 -0
  112. data/lib/uttk/weights/WExpr.rb +68 -0
  113. data/lib/uttk/weights/WFloat.rb +23 -0
  114. data/lib/uttk/weights/WMin.rb +22 -0
  115. data/lib/uttk/weights/Weight.rb +105 -0
  116. data/lib/www/javascripts/uttk.js +185 -0
  117. data/misc/expandtab.rb +29 -0
  118. data/misc/header.rb +44 -0
  119. data/misc/renaming +57 -0
  120. data/misc/textile_compiler +194 -0
  121. data/misc/uttk-grep.sh +8 -0
  122. data/misc/uttk-line-count.rb +143 -0
  123. data/test/examples-suite.yml +8 -0
  124. data/test/examples/README +68 -0
  125. data/test/examples/basic.rb +10 -0
  126. data/test/examples/basic.yml +9 -0
  127. data/test/examples/cache/cache_and_fatal.yml +5 -0
  128. data/test/examples/cache/simple.yml +30 -0
  129. data/test/examples/sql/basic.yml +24 -0
  130. data/test/examples/students-suite.yml +9 -0
  131. data/test/examples/students/ball.yml +11 -0
  132. data/test/examples/students/glob_stud.yml +20 -0
  133. data/test/examples/students/mini-lib.yml +61 -0
  134. data/test/examples/students/pool_stud.yml +31 -0
  135. data/test/examples/students/stud.yml +21 -0
  136. data/test/fixtures/ball/20040804-exam_a1-zapngo-tessar_m.tar.gz +0 -0
  137. data/test/fixtures/ball/Makefile +24 -0
  138. data/test/fixtures/ball/bar_p-mini-lib.tar.bz2 +0 -0
  139. data/test/fixtures/ball/bar_p-mini-lib/Makefile +20 -0
  140. data/test/fixtures/ball/bar_p-mini-lib/my_strlen.c +13 -0
  141. data/test/fixtures/ball/foo_s-mini-lib.tar.bz2 +0 -0
  142. data/test/fixtures/ball/foo_s-mini-lib/Makefile +20 -0
  143. data/test/fixtures/ball/foo_s-mini-lib/configure +2 -0
  144. data/test/fixtures/ball/foo_s-mini-lib/my_strlen.c +10 -0
  145. data/test/fixtures/ball/hello.tar.bz2 +0 -0
  146. data/test/fixtures/ball/hello.tar.gz +0 -0
  147. data/test/fixtures/ball/hello/Makefile +14 -0
  148. data/test/fixtures/ball/hello/hello.c +7 -0
  149. data/test/fixtures/ball/jack-exit.tar.bz2 +0 -0
  150. data/test/fixtures/ball/jack-exit/Makefile +14 -0
  151. data/test/fixtures/ball/jack-exit/exit.c +16 -0
  152. data/test/fixtures/ball/joe-exit.tar.bz2 +0 -0
  153. data/test/fixtures/ball/joe-exit/Makefile +14 -0
  154. data/test/fixtures/ball/joe-exit/exit.c +8 -0
  155. data/test/fixtures/ball/joe_i-mini-lib.tar.bz2 +0 -0
  156. data/test/fixtures/ball/joe_i-mini-lib/Makefile +20 -0
  157. data/test/fixtures/ball/joe_i-mini-lib/configure +2 -0
  158. data/test/fixtures/ball/joe_i-mini-lib/my_strlen.c +10 -0
  159. data/test/fixtures/ball/john-exit.tar.bz2 +0 -0
  160. data/test/fixtures/ball/john-exit/Makefile +14 -0
  161. data/test/fixtures/ball/john-exit/exit.c +6 -0
  162. data/test/fixtures/ball/qux_j-mini-lib.tar.bz2 +0 -0
  163. data/test/fixtures/ball/qux_j-mini-lib/Makefile +20 -0
  164. data/test/fixtures/ball/qux_j-mini-lib/my_strlen.c +12 -0
  165. data/test/fixtures/binaries/segv +0 -0
  166. data/test/fixtures/binaries/segv.c +10 -0
  167. data/test/fixtures/binaries/segv.rb +2 -0
  168. data/test/fixtures/demo/command-tutorial/steps/1/check.yml +5 -0
  169. data/test/fixtures/demo/command-tutorial/steps/1/pluralizer.rb +10 -0
  170. data/test/fixtures/demo/command-tutorial/steps/2/bad_check.yml +7 -0
  171. data/test/fixtures/demo/command-tutorial/steps/2/check.yml +7 -0
  172. data/test/fixtures/demo/command-tutorial/steps/2/pluralizer.rb +10 -0
  173. data/test/fixtures/demo/command-tutorial/steps/3.1/check.yml +12 -0
  174. data/test/fixtures/demo/command-tutorial/steps/3/check.yml +14 -0
  175. data/test/fixtures/demo/command-tutorial/steps/4.1/bird.txt +1 -0
  176. data/test/fixtures/demo/command-tutorial/steps/4.1/check.yml +12 -0
  177. data/test/fixtures/demo/command-tutorial/steps/4/check.yml +12 -0
  178. data/test/fixtures/demo/command-tutorial/steps/4/pluralizer.rb +12 -0
  179. data/test/fixtures/demo/command-tutorial/steps/5.1/bird.txt +1 -0
  180. data/test/fixtures/demo/command-tutorial/steps/5.1/check.yml +17 -0
  181. data/test/fixtures/demo/command-tutorial/steps/5.1/pluralizer.rb +17 -0
  182. data/test/fixtures/demo/command-tutorial/steps/5/bird.txt +1 -0
  183. data/test/fixtures/demo/command-tutorial/steps/5/check.yml +16 -0
  184. data/test/fixtures/demo/command-tutorial/steps/5/pluralizer.rb +16 -0
  185. data/test/fixtures/demo/command-tutorial/steps/6.1/bird.txt +1 -0
  186. data/test/fixtures/demo/command-tutorial/steps/6.1/check.yml +22 -0
  187. data/test/fixtures/demo/command-tutorial/steps/6.1/pluralizer.rb +17 -0
  188. data/test/fixtures/demo/command-tutorial/steps/6/bird.txt +1 -0
  189. data/test/fixtures/demo/command-tutorial/steps/6/check.yml +21 -0
  190. data/test/fixtures/demo/command-tutorial/steps/6/pluralizer.rb +17 -0
  191. data/test/fixtures/demo/command-tutorial/steps/7/bird.txt +1 -0
  192. data/test/fixtures/demo/command-tutorial/steps/7/check.yml +22 -0
  193. data/test/fixtures/demo/command-tutorial/steps/7/pluralizer.rb +17 -0
  194. data/test/fixtures/demo/filter-tutorial/check.yml +20 -0
  195. data/test/fixtures/demo/filter-tutorial/filters/CutSkip100.rb +19 -0
  196. data/test/fixtures/demo/filter-tutorial/pluralizer.rb +17 -0
  197. data/test/fixtures/java/unit/MultiRight/Foo/Foo.java +11 -0
  198. data/test/fixtures/java/unit/MultiRight/Foo/FooTest.java +15 -0
  199. data/test/fixtures/java/unit/MultiRight/MultiRight.java +13 -0
  200. data/test/fixtures/java/unit/MultiRight/MultiRightTest.java +12 -0
  201. data/test/fixtures/java/unit/MultiRight/bar/Bar.java +11 -0
  202. data/test/fixtures/java/unit/MultiRight/bar/BarTest.java +21 -0
  203. data/test/fixtures/java/unit/MultiRight/build.sh +7 -0
  204. data/test/fixtures/java/unit/SimpleException/SimpleExceptionTest.java +11 -0
  205. data/test/fixtures/java/unit/SimpleException/build.sh +4 -0
  206. data/test/fixtures/java/unit/build.sh +9 -0
  207. data/test/fixtures/java/unit/multibar.yml +6 -0
  208. data/test/fixtures/java/unit/multifoo.yml +6 -0
  209. data/test/fixtures/java/unit/multiright.yml +8 -0
  210. data/test/fixtures/java/unit/simple_exception.yml +6 -0
  211. data/test/fixtures/mini-lib/Makefile +9 -0
  212. data/test/fixtures/mini-lib/strlen.c +15 -0
  213. data/test/fixtures/package/pkg_foo.tar.gz +0 -0
  214. data/test/fixtures/package/pkg_foo/Makefile +20 -0
  215. data/test/fixtures/package/pkg_foo/bootstrap +3 -0
  216. data/test/fixtures/package/pkg_foo/configure +3 -0
  217. data/test/fixtures/package/pkg_foo/foo.sh +2 -0
  218. data/test/fixtures/text/1.txt +4 -0
  219. data/test/fixtures/unit/bad.rb +26 -0
  220. data/test/fixtures/unit/error.rb +6 -0
  221. data/test/fixtures/unit/good.rb +26 -0
  222. data/test/functional-suite.yml +10 -0
  223. data/test/functional/author.yml +11 -0
  224. data/test/functional/base.yml +119 -0
  225. data/test/functional/base_pool.yml +13 -0
  226. data/test/functional/block.yml +13 -0
  227. data/test/functional/cat.yml +16 -0
  228. data/test/functional/cmd.yml +17 -0
  229. data/test/functional/diff.yml +27 -0
  230. data/test/functional/env_cmd.yml +53 -0
  231. data/test/functional/exit.yml +15 -0
  232. data/test/functional/fatal.yml +23 -0
  233. data/test/functional/glob.yml +11 -0
  234. data/test/functional/hexa-diff.yml +25 -0
  235. data/test/functional/import.yml +41 -0
  236. data/test/functional/iterate.yml +99 -0
  237. data/test/functional/killall.yml +31 -0
  238. data/test/functional/pkg.yml +14 -0
  239. data/test/functional/probability_threshold.yml +35 -0
  240. data/test/functional/r_unit.yml +26 -0
  241. data/test/functional/rmatch.yml +122 -0
  242. data/test/functional/signal_cmd.yml +22 -0
  243. data/test/functional/sub.yml +15 -0
  244. data/test/functional/test.yml +25 -0
  245. data/test/functional/timeout.yml +20 -0
  246. data/test/functional/wc.yml +26 -0
  247. data/test/functional/weight.yml +152 -0
  248. data/test/pkg-suite.yml +8 -0
  249. data/test/pkg/cmdline.yml +80 -0
  250. data/test/pool-suite.yml +8 -0
  251. data/test/pool/base.yml +12 -0
  252. data/test/pool/pool.yml +25 -0
  253. data/test/ruby-suite.rb +10 -0
  254. data/test/ruby-suite.yml +5 -0
  255. data/test/ruby/base.rb +119 -0
  256. data/test/ruby/iterate.rb +21 -0
  257. data/test/ruby/wc.rb +43 -0
  258. data/test/unit-suite.yml +10 -0
  259. data/test/unit/dumpers/path_test.rb +46 -0
  260. data/test/unit/dumpers/xml_test.rb +65 -0
  261. data/test/unit/dumpers/yaml_test.rb +65 -0
  262. data/test/unit/filters/buffer_test.rb +168 -0
  263. data/test/unit/filters/keep_skip_based_test.rb +46 -0
  264. data/test/unit/filters/node_cut_test.rb +72 -0
  265. data/test/unit/filters/rpath_filter_test.rb +191 -0
  266. data/test/unit/filters/text_filter_test.rb +46 -0
  267. data/test/unit/filters_test.rb +119 -0
  268. data/test/unit/logger/section_node_test.rb +120 -0
  269. data/test/unit/logger/severity_test.rb +37 -0
  270. data/test/unit/logger/to_uttk_log_test.rb +113 -0
  271. data/test/unit/logger/verbosity_test.rb +44 -0
  272. data/test/unit/logger_test.rb +203 -0
  273. data/test/unit/strategies/suite_test.rb +151 -0
  274. data/test/uttk-check.yml +8 -0
  275. data/test/uttk-distcheck.yml +18 -0
  276. metadata +399 -0
@@ -0,0 +1,26 @@
1
+ # Author:: <%= fullname %> <<%= email %>>.
2
+ # Copyright:: Copyright (c) <%= year %> Uttk Team. All rights reserved.
3
+ # License:: LGPL
4
+ # Revision:: $Id: /fey/uttk/trunk/lib/uttk/generators/templates/loader.rb 8778 2005-09-26T04:34:48.103938Z ertai $
5
+
6
+ module Uttk
7
+
8
+ module Loaders
9
+
10
+ class <%= class_name %> < Loader
11
+ include Concrete
12
+
13
+ def initialize ( *a, &b )
14
+ super
15
+ # ...
16
+ end
17
+
18
+ def load ( aString, aSymtbl=nil )
19
+ # ...
20
+ end
21
+
22
+ end # class <%= class_name %>
23
+
24
+ end # module Loaders
25
+
26
+ end # module Uttk
@@ -0,0 +1,28 @@
1
+ # Author:: <%= fullname %> <<%= email %>>.
2
+ # Copyright:: Copyright (c) <%= year %> Uttk Team. All rights reserved.
3
+ # License:: LGPL
4
+ # Revision:: $Id: /w/fey/uttk/trunk/lib/uttk/generators/templates/path_filter.rb 21844 2006-02-17T17:26:59.771162Z pouillar $
5
+
6
+ module Uttk
7
+
8
+ module PathFilters
9
+
10
+ class <%= class_name %> < PathFilter
11
+ include Concrete
12
+
13
+ def initialize ( *a, &b )
14
+ super
15
+ # ...
16
+ end
17
+
18
+
19
+ def filter ( path, leaf )
20
+ # ...
21
+ [filtered_path, filtered_leaf]
22
+ end
23
+
24
+ end # class <%= class_name %>
25
+
26
+ end # module PathFilters
27
+
28
+ end # module Uttk
@@ -0,0 +1,59 @@
1
+ # Author:: <%= fullname %> <<%= email %>>.
2
+ # Copyright:: Copyright (c) <%= year %> Uttk Team. All rights reserved.
3
+ # License:: LGPL
4
+ # Revision:: $Id: /fey/uttk/trunk/lib/uttk/generators/templates/strategy.rb 8778 2005-09-26T04:34:48.103938Z ertai $
5
+
6
+
7
+ module Uttk
8
+
9
+ module Strategies
10
+
11
+ class <%= class_name %> < Strategy
12
+ include Concrete
13
+
14
+ #
15
+ # Methods
16
+ #
17
+
18
+ def prologue
19
+ super
20
+ # ...
21
+ end
22
+ protected :prologue
23
+
24
+
25
+ def run_impl
26
+ # ...
27
+ super
28
+ # ...
29
+ end
30
+ protected :run_impl
31
+
32
+
33
+ def assertion
34
+ # ...
35
+ super
36
+ end
37
+ protected :assertion
38
+
39
+
40
+ def epilogue
41
+ # ...
42
+ super
43
+ end
44
+ protected :epilogue
45
+
46
+
47
+
48
+ #
49
+ # Attributes
50
+ #
51
+
52
+ attribute :an_attribute, 'a description', THE_CLASS, DEFAULT_VALUE,
53
+ :mandatory, :invisible
54
+
55
+ end # class <%= class_name %>
56
+
57
+ end # module Strategies
58
+
59
+ end # module Uttk
@@ -0,0 +1,28 @@
1
+ ---
2
+ Test the <%= class_name %> strategy: !S::Suite
3
+ contents:
4
+ - good test 1: !S::RMatch
5
+ test: !S::<%= class_name %>
6
+ # ...
7
+ match:
8
+ - // # ...
9
+ - //
10
+ - //
11
+ dont_match:
12
+ - // # ...
13
+ - //
14
+ - //
15
+
16
+ - bad test 1: !S::RMatch
17
+ test: !S::<%= class_name %>
18
+ # ...
19
+ match:
20
+ - // # ...
21
+ - //
22
+ - //
23
+ dont_match:
24
+ - // # ...
25
+ - //
26
+ - //
27
+
28
+ - # ...
@@ -0,0 +1,46 @@
1
+ # Author:: <%= fullname %> <<%= email %>>.
2
+ # Copyright:: Copyright (c) <%= year %> Uttk Team. All rights reserved.
3
+ # License:: LGPL
4
+ # Revision:: $Id: /fey/uttk/trunk/lib/uttk/generators/templates/unit_test.rb 8778 2005-09-26T04:34:48.103938Z ertai $
5
+
6
+ test_section __FILE__ do
7
+
8
+ module Uttk
9
+
10
+ module <%= module_name %>
11
+
12
+ class <%= class_name %>Test < ::Test::Unit::TestCase
13
+
14
+ #
15
+ # Methods
16
+ #
17
+
18
+ def setup
19
+ super
20
+ # ...
21
+ end
22
+
23
+ def teardown
24
+ super
25
+ # ...
26
+ end
27
+
28
+ #
29
+ # Tests
30
+ #
31
+
32
+ def test_xxx
33
+ # ...
34
+ end
35
+
36
+ def test_yyy
37
+ # ...
38
+ end
39
+
40
+ end # class <%= class_name %>Test
41
+
42
+ end # module <%= module_name %>
43
+
44
+ end # module Uttk
45
+
46
+ end
@@ -0,0 +1,180 @@
1
+ # Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
2
+ # Copyright:: Copyright (c) 2004, 2005 Uttk team. All rights reserved.
3
+ # License:: LGPL
4
+ # $Id: /fey/uttk/trunk/lib/uttk/loaders/Loader.rb 8788 2005-09-27T14:23:19.686215Z ertai $
5
+
6
+
7
+ module Uttk
8
+
9
+ # Uttk::Loaders are design to help you to make tests.
10
+ #
11
+ # The `testify' method is here to provide a usefull way
12
+ # to convert anything to a test.
13
+ #
14
+ # For example Hash#testify instanciate a test from a hash:
15
+ #
16
+ # doc = {
17
+ # :strategy => Cmd,
18
+ # :command => 'echo -n foo',
19
+ # :output => 'foo',
20
+ # :symtbl => SYMTBL
21
+ # }
22
+ #
23
+ # test = doc.testify
24
+ # test.run
25
+ #
26
+ # You can also load a test from a string, an io or a file.
27
+ # In this case the format can change (YAML, XML...).
28
+ # To manage this you can use Uttk::Loaders to add new loader easily.
29
+ #
30
+ # To implement a loader you just need to subclass the abstract
31
+ # loader (Uttk::Loaders::Loader), and implement the `load'
32
+ # method.
33
+ #
34
+ # The `load' method take an IO as argument and return
35
+ # something which can be testified.
36
+ module Loaders
37
+
38
+ def self.get_class ( aClassName )
39
+ return aClassName if aClassName.is_a? Class
40
+ aClassName = "Uttk::Strategies::#{aClassName}" unless aClassName =~ /::/
41
+ return eval(aClassName) if aClassName =~ /[\w:]+/
42
+ raise NameError, "not a valid class name #{aClassName}"
43
+ end
44
+
45
+ # FIXME: document me
46
+ class Loader
47
+ include Abstract
48
+
49
+ # Override this method in subclasses. It must returns an object which
50
+ # respond to testify. The argument _aString_ contains the contents of the
51
+ # loaded file. The _symtbl_ argument is the current table of symbols.
52
+ def load ( aString, symtbl=nil )
53
+ raise NotImplementedError
54
+ end
55
+
56
+ end # class Loader
57
+
58
+ end # module Loaders
59
+
60
+ end # module Uttk
61
+
62
+
63
+ class Object
64
+
65
+ def uttk_testify ( symtbl=nil, &block )
66
+ symtbl = Uttk.default_symtbl if symtbl.nil?
67
+ testify(symtbl.new_child, &block)
68
+ end
69
+
70
+ end # class Object
71
+
72
+
73
+ class Pathname
74
+
75
+ def testify ( symtbl, &block )
76
+ symtbl[:pwd] = self.expand_path.dirname
77
+ symtbl[:basename] = self.basename
78
+ symtbl[:realname] = self
79
+ open { |f| f.testify(symtbl, &block) }
80
+ end
81
+
82
+ end # class Pathname
83
+
84
+
85
+
86
+ class String
87
+
88
+ def testify ( symtbl, &block )
89
+ unless symtbl.has_key? :loader
90
+ raise ArgumentError, "No loader found in options (:loader)"
91
+ end
92
+ symtbl[:loader].load(self, symtbl).testify(symtbl, &block)
93
+ end
94
+
95
+ end # class String
96
+
97
+
98
+
99
+ class IO
100
+
101
+ def testify ( symtbl, &block )
102
+ read.testify(symtbl, &block)
103
+ end
104
+
105
+ end # class IO
106
+
107
+
108
+
109
+ class StringIO
110
+
111
+ def testify ( symtbl, &block )
112
+ read.testify(symtbl, &block)
113
+ end
114
+
115
+ end # class StringIO
116
+
117
+
118
+
119
+ class Class
120
+
121
+ def testify ( symtbl, &block )
122
+ raise ArgumentError, "nil symtbl" if symtbl.nil?
123
+ unless self < Uttk::Strategies::Strategy
124
+ raise ArgumentError, "Need a subclass of Strategy not #{name}"
125
+ end
126
+ new do |t|
127
+ t.symtbl ||= symtbl
128
+ block[t] if block
129
+ end
130
+ end
131
+
132
+ end # class Class
133
+
134
+
135
+
136
+ class Hash
137
+
138
+ def testify ( symtbl, &block )
139
+
140
+ if size == 1 and (tab = to_a[0])[1].is_a? Hash
141
+ name, doc = tab
142
+ doc[:name] = name
143
+ return doc.testify(symtbl, &block)
144
+ end
145
+
146
+ raise ArgumentError, "nil symtbl" if symtbl.nil?
147
+
148
+ strategy = self[:strategy] || symtbl[:strategy]
149
+
150
+ if strategy.nil?
151
+ raise ArgumentError, "no strategy for this test (#{inspect})"
152
+ end
153
+
154
+ Uttk::Loaders.get_class(strategy).new do |t|
155
+ t.symtbl ||= symtbl
156
+ block[t] if block
157
+ t.assign(self)
158
+ end
159
+
160
+ end
161
+
162
+ end # class Hash
163
+
164
+
165
+ class Array
166
+
167
+ def testify ( symtbl, &block )
168
+ raise ArgumentError, "nil symtbl" if symtbl.nil?
169
+ Uttk::Strategies::Suite.new do |t|
170
+ t.symtbl = symtbl
171
+ t.name = symtbl[:suite_name]
172
+ t.wclass = symtbl[:wclass]
173
+ t.attributes = symtbl[:attributes]
174
+ t.symbols = symtbl[:symbols]
175
+ t.contents = self
176
+ block[t] if block
177
+ end
178
+ end
179
+
180
+ end # class Array
@@ -0,0 +1,28 @@
1
+ # Author:: Nicolas Despr�s <nicolas.despres@lrde.epita.fr>.
2
+ # Copyright:: Copyright (c) 2005 Uttk Team. All rights reserved.
3
+ # License:: LGPL
4
+ # $Id: /fey/uttk/trunk/lib/uttk/loaders/Ruby.rb 8778 2005-09-26T04:34:48.103938Z ertai $
5
+
6
+
7
+ module Uttk
8
+
9
+ module Loaders
10
+
11
+ class Ruby < Loader
12
+ include Concrete
13
+
14
+ def load ( aString, symtbl )
15
+ test = Uttk.uttk_eval(aString, symtbl, symtbl[:realname].to_s)
16
+ test.symtbl = symtbl if test.symtbl.nil?
17
+ test
18
+ end
19
+
20
+ end # class Ruby
21
+
22
+ end # module Loaders
23
+
24
+ end # module Uttk
25
+
26
+
27
+
28
+
@@ -0,0 +1,98 @@
1
+ # Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
2
+ # Copyright:: Copyright (c) 2004, 2005 Uttk team. All rights reserved.
3
+ # License:: LGPL
4
+ # Revision:: $Id: /w/fey/uttk/trunk/lib/uttk/loaders/Yaml.rb 21931 2006-02-19T14:37:25.597406Z pouillar $
5
+
6
+
7
+ require 'yaml'
8
+
9
+ module Uttk
10
+
11
+ module Loaders
12
+
13
+ class Yaml < Loader
14
+ include Concrete
15
+
16
+ def load ( aString, symtbl=nil )
17
+ tree = YAML::parse(aString)
18
+ return nil unless tree
19
+ tree.uttk_loader_yaml_transform
20
+ end
21
+
22
+ end # class Yaml
23
+
24
+ end # module Loaders
25
+
26
+ end # module Uttk
27
+
28
+
29
+
30
+ module YAML
31
+
32
+ module Syck
33
+ class Scalar
34
+ end
35
+ end
36
+
37
+ module BaseNode
38
+
39
+ CLASS_KEY_LIST = [:strategy, :wclass, :symtbl_class]
40
+
41
+ def key_transform ( t, k, v )
42
+ k = k.uttk_loader_yaml_transform if k.is_a? BaseNode
43
+ case k
44
+ when Symbol
45
+ when Integer
46
+ when /^:"(.*)"/, /^:(.*)/ then k = $1.to_sym
47
+ else k = k.to_s.to_sym
48
+ end
49
+ if CLASS_KEY_LIST.include?(k) and (val = v.value) =~ /^[A-Z]/
50
+ t[k] = Uttk::Loaders.get_class(val)
51
+ elsif v.is_a? BaseNode
52
+ t[k] = v.uttk_loader_yaml_transform
53
+ else
54
+ t[k] = v
55
+ end
56
+ end
57
+ private :key_transform
58
+
59
+ def uttk_loader_yaml_transform
60
+ @type_id = nil unless defined? @type_id
61
+ t = nil
62
+ case @value
63
+ when Hash
64
+ t = Hash.new
65
+ if HAVE_YAML_TAGURI
66
+ @value.each do |k, v|
67
+ key_transform(t, k, v)
68
+ end
69
+ else
70
+ children_with_index.each do |v, k|
71
+ key_transform(t, k, v)
72
+ end
73
+ end
74
+ when Array
75
+ if not @value.empty? and @value.all? { |x| x.is_a? Hash and x.size == 1 }
76
+ t = OHash.new
77
+ @value.each do |x|
78
+ k, v = x.to_a
79
+ key_transform(t, k, v)
80
+ end
81
+ else
82
+ t = Array.new
83
+ @value.each do |v|
84
+ t.push v.uttk_loader_yaml_transform
85
+ end
86
+ end
87
+ when /^:"(.*)"/, /^:(.*)/
88
+ @type_id = nil
89
+ t = $1.to_sym
90
+ else
91
+ return transform
92
+ end
93
+ YAML.transfer(@type_id, t)
94
+ end
95
+
96
+ end # module BaseNode
97
+
98
+ end # module YAML