ttk 0.1.576

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 (625) hide show
  1. data/AUTHORS +32 -0
  2. data/COPYING +18 -0
  3. data/ChangeLog +4629 -0
  4. data/DATE +1 -0
  5. data/DESCRIPTION +8 -0
  6. data/GUIDELINES +84 -0
  7. data/LGPL +504 -0
  8. data/NEWS +69 -0
  9. data/NORM +85 -0
  10. data/README +206 -0
  11. data/REVISION +1 -0
  12. data/Rakefile +120 -0
  13. data/TODO +23 -0
  14. data/TODO.old +115 -0
  15. data/VERSION +5 -0
  16. data/bin/getopts/ttk.rb +394 -0
  17. data/bin/getopts/ttkd.rb +150 -0
  18. data/bin/getopts/ttkm.rb +71 -0
  19. data/bin/ttk +170 -0
  20. data/bin/ttkd +73 -0
  21. data/bin/ttkm +54 -0
  22. data/doc/html/classes/IO/CutInput.html +159 -0
  23. data/doc/html/classes/IO/Delegator.html +291 -0
  24. data/doc/html/classes/IO/Dispatch.html +204 -0
  25. data/doc/html/classes/IO/Ext.html +118 -0
  26. data/doc/html/classes/IO/ImplExt.html +149 -0
  27. data/doc/html/classes/IO/ImplIndent.html +175 -0
  28. data/doc/html/classes/IO/ImplPrintFile.html +142 -0
  29. data/doc/html/classes/IO/ImplPrintIO.html +143 -0
  30. data/doc/html/classes/IO/InputFilter.html +347 -0
  31. data/doc/html/classes/IO/OutputFilter.html +298 -0
  32. data/doc/html/classes/NilClass.html +198 -0
  33. data/doc/html/classes/SafeEval.html +277 -0
  34. data/doc/html/classes/String.html +245 -0
  35. data/doc/html/classes/SymTbl.html +146 -0
  36. data/doc/html/classes/TTK.html +658 -0
  37. data/doc/html/classes/TTK/AbortStatus.html +211 -0
  38. data/doc/html/classes/TTK/Daemons.html +142 -0
  39. data/doc/html/classes/TTK/Daemons/Daemon.html +170 -0
  40. data/doc/html/classes/TTK/Daemons/Daemon/Logger.html +192 -0
  41. data/doc/html/classes/TTK/Daemons/Master.html +163 -0
  42. data/doc/html/classes/TTK/Daemons/Slave.html +158 -0
  43. data/doc/html/classes/TTK/Dumpers.html +150 -0
  44. data/doc/html/classes/TTK/Dumpers/Dumper.html +461 -0
  45. data/doc/html/classes/TTK/Dumpers/Notif.html +208 -0
  46. data/doc/html/classes/TTK/Dumpers/Xml.html +260 -0
  47. data/doc/html/classes/TTK/Dumpers/Yaml.html +307 -0
  48. data/doc/html/classes/TTK/ErrorStatus.html +133 -0
  49. data/doc/html/classes/TTK/FailStatus.html +195 -0
  50. data/doc/html/classes/TTK/Fetchers.html +135 -0
  51. data/doc/html/classes/TTK/Fetchers/Client.html +229 -0
  52. data/doc/html/classes/TTK/Fetchers/Client/Receiver.html +254 -0
  53. data/doc/html/classes/TTK/Fetchers/Server.html +256 -0
  54. data/doc/html/classes/TTK/Fetchers/Server/Sender.html +241 -0
  55. data/doc/html/classes/TTK/Filters.html +142 -0
  56. data/doc/html/classes/TTK/Filters/BasicLogger.html +187 -0
  57. data/doc/html/classes/TTK/Filters/Filter.html +188 -0
  58. data/doc/html/classes/TTK/Filters/Saver.html +279 -0
  59. data/doc/html/classes/TTK/Loaders.html +115 -0
  60. data/doc/html/classes/TTK/Loaders/BaseNode.html +224 -0
  61. data/doc/html/classes/TTK/Loaders/Loader.html +242 -0
  62. data/doc/html/classes/TTK/Loaders/OYaml.html +161 -0
  63. data/doc/html/classes/TTK/Loaders/Yaml.html +157 -0
  64. data/doc/html/classes/TTK/Loaders/YamlOld.html +155 -0
  65. data/doc/html/classes/TTK/Logger.html +836 -0
  66. data/doc/html/classes/TTK/Logger/Path.html +161 -0
  67. data/doc/html/classes/TTK/Logger/SectionNode.html +925 -0
  68. data/doc/html/classes/TTK/Logger/Severity.html +306 -0
  69. data/doc/html/classes/TTK/Logger/ToTTKLog.html +119 -0
  70. data/doc/html/classes/TTK/Logger/Verbosity.html +278 -0
  71. data/doc/html/classes/TTK/LoggerFactory.html +204 -0
  72. data/doc/html/classes/TTK/Monitors.html +132 -0
  73. data/doc/html/classes/TTK/Monitors/Client.html +261 -0
  74. data/doc/html/classes/TTK/Monitors/Monitor.html +209 -0
  75. data/doc/html/classes/TTK/Monitors/Server.html +288 -0
  76. data/doc/html/classes/TTK/Monitors/Server/Notification.html +118 -0
  77. data/doc/html/classes/TTK/Monitors/Server/Notifier.html +118 -0
  78. data/doc/html/classes/TTK/PassStatus.html +168 -0
  79. data/doc/html/classes/TTK/RunningStatus.html +133 -0
  80. data/doc/html/classes/TTK/Services.html +161 -0
  81. data/doc/html/classes/TTK/Services/DRbService.html +217 -0
  82. data/doc/html/classes/TTK/Services/DRbService/Notification.html +123 -0
  83. data/doc/html/classes/TTK/Services/DRbService/SubTestable.html +197 -0
  84. data/doc/html/classes/TTK/Services/FetcherClient.html +190 -0
  85. data/doc/html/classes/TTK/Services/FetcherServer.html +149 -0
  86. data/doc/html/classes/TTK/Services/MonitorClient.html +190 -0
  87. data/doc/html/classes/TTK/Services/MonitorServer.html +149 -0
  88. data/doc/html/classes/TTK/Services/TesterClient.html +207 -0
  89. data/doc/html/classes/TTK/Services/TesterMaster.html +193 -0
  90. data/doc/html/classes/TTK/Services/TesterMaster/Notification.html +123 -0
  91. data/doc/html/classes/TTK/Services/TesterSlave.html +157 -0
  92. data/doc/html/classes/TTK/Services/TesterSlave/Notification.html +118 -0
  93. data/doc/html/classes/TTK/SkipStatus.html +169 -0
  94. data/doc/html/classes/TTK/StartStatus.html +133 -0
  95. data/doc/html/classes/TTK/Status.html +373 -0
  96. data/doc/html/classes/TTK/StatusException.html +161 -0
  97. data/doc/html/classes/TTK/StatusWithMessage.html +220 -0
  98. data/doc/html/classes/TTK/Strategies.html +356 -0
  99. data/doc/html/classes/TTK/Strategies/Abort.html +161 -0
  100. data/doc/html/classes/TTK/Strategies/Authors.html +170 -0
  101. data/doc/html/classes/TTK/Strategies/Ball.html +200 -0
  102. data/doc/html/classes/TTK/Strategies/Block.html +230 -0
  103. data/doc/html/classes/TTK/Strategies/Bootstrap.html +238 -0
  104. data/doc/html/classes/TTK/Strategies/Checkout.html +201 -0
  105. data/doc/html/classes/TTK/Strategies/Clean.html +160 -0
  106. data/doc/html/classes/TTK/Strategies/Cmd.html +218 -0
  107. data/doc/html/classes/TTK/Strategies/CmdBase.html +312 -0
  108. data/doc/html/classes/TTK/Strategies/Collection.html +282 -0
  109. data/doc/html/classes/TTK/Strategies/Compile.html +199 -0
  110. data/doc/html/classes/TTK/Strategies/Composite.html +541 -0
  111. data/doc/html/classes/TTK/Strategies/Composite/Ordered.html +183 -0
  112. data/doc/html/classes/TTK/Strategies/Configure.html +270 -0
  113. data/doc/html/classes/TTK/Strategies/DistDelegate.html +192 -0
  114. data/doc/html/classes/TTK/Strategies/DistDuplicate.html +221 -0
  115. data/doc/html/classes/TTK/Strategies/DistStrategy.html +224 -0
  116. data/doc/html/classes/TTK/Strategies/Distribute.html +163 -0
  117. data/doc/html/classes/TTK/Strategies/Error.html +161 -0
  118. data/doc/html/classes/TTK/Strategies/Extract.html +179 -0
  119. data/doc/html/classes/TTK/Strategies/Fail.html +161 -0
  120. data/doc/html/classes/TTK/Strategies/Fetch.html +400 -0
  121. data/doc/html/classes/TTK/Strategies/Fetcher.html +276 -0
  122. data/doc/html/classes/TTK/Strategies/Glob.html +201 -0
  123. data/doc/html/classes/TTK/Strategies/IOBased.html +400 -0
  124. data/doc/html/classes/TTK/Strategies/Import.html +215 -0
  125. data/doc/html/classes/TTK/Strategies/JUnit.html +623 -0
  126. data/doc/html/classes/TTK/Strategies/KillAll.html +249 -0
  127. data/doc/html/classes/TTK/Strategies/Make.html +235 -0
  128. data/doc/html/classes/TTK/Strategies/Make/All.html +120 -0
  129. data/doc/html/classes/TTK/Strategies/Make/Check.html +120 -0
  130. data/doc/html/classes/TTK/Strategies/Make/Default.html +155 -0
  131. data/doc/html/classes/TTK/Strategies/Make/DistCheck.html +120 -0
  132. data/doc/html/classes/TTK/Strategies/Make/Install.html +120 -0
  133. data/doc/html/classes/TTK/Strategies/Make/Target.html +179 -0
  134. data/doc/html/classes/TTK/Strategies/Package.html +271 -0
  135. data/doc/html/classes/TTK/Strategies/PackageCollection.html +168 -0
  136. data/doc/html/classes/TTK/Strategies/Pass.html +161 -0
  137. data/doc/html/classes/TTK/Strategies/Pool.html +306 -0
  138. data/doc/html/classes/TTK/Strategies/Pool/PoolComponent.html +139 -0
  139. data/doc/html/classes/TTK/Strategies/ProbabilityThreshold.html +187 -0
  140. data/doc/html/classes/TTK/Strategies/Proxy.html +211 -0
  141. data/doc/html/classes/TTK/Strategies/RUnit.html +355 -0
  142. data/doc/html/classes/TTK/Strategies/RemoteCmd.html +213 -0
  143. data/doc/html/classes/TTK/Strategies/SignalCmd.html +269 -0
  144. data/doc/html/classes/TTK/Strategies/Sleep.html +193 -0
  145. data/doc/html/classes/TTK/Strategies/SqlQuery.html +248 -0
  146. data/doc/html/classes/TTK/Strategies/Strategy.html +2847 -0
  147. data/doc/html/classes/TTK/Strategies/Strategy/AssertEval.html +233 -0
  148. data/doc/html/classes/TTK/Strategies/Strategy/AttributedClass.html +107 -0
  149. data/doc/html/classes/TTK/Strategies/Strategy/AttributedClass/Attribute.html +246 -0
  150. data/doc/html/classes/TTK/Strategies/Strategy/Failure.html +121 -0
  151. data/doc/html/classes/TTK/Strategies/Stub.html +179 -0
  152. data/doc/html/classes/TTK/Strategies/SubCmd.html +243 -0
  153. data/doc/html/classes/TTK/Strategies/Suite.html +182 -0
  154. data/doc/html/classes/TTK/Strategies/Test.html +310 -0
  155. data/doc/html/classes/TTK/Strategies/Tester.html +218 -0
  156. data/doc/html/classes/TTK/Streams.html +116 -0
  157. data/doc/html/classes/TTK/Streams/Diff.html +148 -0
  158. data/doc/html/classes/TTK/Streams/Stream.html +295 -0
  159. data/doc/html/classes/TTK/SymTbl.html +266 -0
  160. data/doc/html/classes/TTK/TTKException.html +118 -0
  161. data/doc/html/classes/TTK/TTKModule.html +145 -0
  162. data/doc/html/classes/TTK/Testers.html +156 -0
  163. data/doc/html/classes/TTK/Testers/Master.html +304 -0
  164. data/doc/html/classes/TTK/Testers/Slave.html +120 -0
  165. data/doc/html/classes/TTK/Testers/Tester.html +547 -0
  166. data/doc/html/classes/TTK/Testers/Tester/Config.html +310 -0
  167. data/doc/html/classes/TTK/Testers/Tester/Notification.html +123 -0
  168. data/doc/html/classes/TTK/Testers/Tester/Notifier.html +118 -0
  169. data/doc/html/classes/TTK/Testers/Tester/QueryNode.html +341 -0
  170. data/doc/html/classes/TTK/Testers/Tester/RemoteStatus.html +165 -0
  171. data/doc/html/classes/TTK/Testers/Tester/RunningTask.html +262 -0
  172. data/doc/html/classes/TTK/Testers/Tester/Score.html +198 -0
  173. data/doc/html/classes/TTK/TimeoutAbortStatus.html +161 -0
  174. data/doc/html/classes/TTK/Tools.html +111 -0
  175. data/doc/html/classes/TTK/Tools/HostDispatcher.html +246 -0
  176. data/doc/html/classes/TTK/Weights.html +160 -0
  177. data/doc/html/classes/TTK/Weights/WExpr.html +326 -0
  178. data/doc/html/classes/TTK/Weights/WFloat.html +149 -0
  179. data/doc/html/classes/TTK/Weights/WMin.html +148 -0
  180. data/doc/html/classes/TTK/Weights/Weight.html +624 -0
  181. data/doc/html/created.rid +1 -0
  182. data/doc/html/files/AUTHORS.html +198 -0
  183. data/doc/html/files/NEWS.html +236 -0
  184. data/doc/html/files/README.html +435 -0
  185. data/doc/html/files/TODO.html +128 -0
  186. data/doc/html/files/lib/ttk/Tools/HostDispatcher_rb.html +126 -0
  187. data/doc/html/files/lib/ttk/Tools/SafeEval_rb.html +119 -0
  188. data/doc/html/files/lib/ttk/Tools/cut_output_rb.html +126 -0
  189. data/doc/html/files/lib/ttk/Tools/io/delegator_rb.html +127 -0
  190. data/doc/html/files/lib/ttk/Tools/io/dispatch_rb.html +127 -0
  191. data/doc/html/files/lib/ttk/Tools/io/ext_rb.html +126 -0
  192. data/doc/html/files/lib/ttk/Tools/io/filters_rb.html +127 -0
  193. data/doc/html/files/lib/ttk/daemons/Daemon_rb.html +126 -0
  194. data/doc/html/files/lib/ttk/daemons/Master_rb.html +119 -0
  195. data/doc/html/files/lib/ttk/daemons/Slave_rb.html +119 -0
  196. data/doc/html/files/lib/ttk/daemons/daemon/logger_rb.html +126 -0
  197. data/doc/html/files/lib/ttk/dumpers/Dumper_rb.html +119 -0
  198. data/doc/html/files/lib/ttk/dumpers/Notif_rb.html +119 -0
  199. data/doc/html/files/lib/ttk/dumpers/Xml_rb.html +126 -0
  200. data/doc/html/files/lib/ttk/dumpers/Yaml_rb.html +119 -0
  201. data/doc/html/files/lib/ttk/fetchers/Client_rb.html +126 -0
  202. data/doc/html/files/lib/ttk/fetchers/Server_rb.html +126 -0
  203. data/doc/html/files/lib/ttk/fetchers/client/receiver_rb.html +127 -0
  204. data/doc/html/files/lib/ttk/fetchers/server/sender_rb.html +127 -0
  205. data/doc/html/files/lib/ttk/filters/BasicLogger_rb.html +126 -0
  206. data/doc/html/files/lib/ttk/filters/Filter_rb.html +119 -0
  207. data/doc/html/files/lib/ttk/filters/Saver_rb.html +119 -0
  208. data/doc/html/files/lib/ttk/loaders/Loader_rb.html +119 -0
  209. data/doc/html/files/lib/ttk/loaders/OYaml_rb.html +126 -0
  210. data/doc/html/files/lib/ttk/loaders/YamlOld_rb.html +126 -0
  211. data/doc/html/files/lib/ttk/loaders/Yaml_rb.html +126 -0
  212. data/doc/html/files/lib/ttk/logger/path_rb.html +119 -0
  213. data/doc/html/files/lib/ttk/logger/section_node_rb.html +119 -0
  214. data/doc/html/files/lib/ttk/logger/severity_rb.html +119 -0
  215. data/doc/html/files/lib/ttk/logger/to_ttk_log_rb.html +119 -0
  216. data/doc/html/files/lib/ttk/logger/verbosity_rb.html +119 -0
  217. data/doc/html/files/lib/ttk/logger_factory_rb.html +119 -0
  218. data/doc/html/files/lib/ttk/logger_rb.html +131 -0
  219. data/doc/html/files/lib/ttk/monitors/Client_rb.html +119 -0
  220. data/doc/html/files/lib/ttk/monitors/Monitor_rb.html +127 -0
  221. data/doc/html/files/lib/ttk/monitors/Server_rb.html +126 -0
  222. data/doc/html/files/lib/ttk/services/DRbService/sub_testable_rb.html +119 -0
  223. data/doc/html/files/lib/ttk/services/DRbService_rb.html +126 -0
  224. data/doc/html/files/lib/ttk/services/FetcherClient_rb.html +119 -0
  225. data/doc/html/files/lib/ttk/services/FetcherServer_rb.html +119 -0
  226. data/doc/html/files/lib/ttk/services/MonitorClient_rb.html +119 -0
  227. data/doc/html/files/lib/ttk/services/MonitorServer_rb.html +119 -0
  228. data/doc/html/files/lib/ttk/services/TesterClient_rb.html +119 -0
  229. data/doc/html/files/lib/ttk/services/TesterMaster_rb.html +119 -0
  230. data/doc/html/files/lib/ttk/services/TesterSlave_rb.html +119 -0
  231. data/doc/html/files/lib/ttk/status_rb.html +119 -0
  232. data/doc/html/files/lib/ttk/strategies/Abort_rb.html +119 -0
  233. data/doc/html/files/lib/ttk/strategies/Authors_rb.html +119 -0
  234. data/doc/html/files/lib/ttk/strategies/Ball_rb.html +119 -0
  235. data/doc/html/files/lib/ttk/strategies/Block_rb.html +119 -0
  236. data/doc/html/files/lib/ttk/strategies/Bootstrap_rb.html +119 -0
  237. data/doc/html/files/lib/ttk/strategies/Checkout_rb.html +127 -0
  238. data/doc/html/files/lib/ttk/strategies/Clean_rb.html +119 -0
  239. data/doc/html/files/lib/ttk/strategies/CmdBase_rb.html +119 -0
  240. data/doc/html/files/lib/ttk/strategies/Cmd_rb.html +119 -0
  241. data/doc/html/files/lib/ttk/strategies/Collection_rb.html +119 -0
  242. data/doc/html/files/lib/ttk/strategies/Compile_rb.html +119 -0
  243. data/doc/html/files/lib/ttk/strategies/Composite_rb.html +119 -0
  244. data/doc/html/files/lib/ttk/strategies/Configure_rb.html +119 -0
  245. data/doc/html/files/lib/ttk/strategies/DistDelegate_rb.html +119 -0
  246. data/doc/html/files/lib/ttk/strategies/DistDuplicate_rb.html +119 -0
  247. data/doc/html/files/lib/ttk/strategies/DistStrategy_rb.html +119 -0
  248. data/doc/html/files/lib/ttk/strategies/Distribute_rb.html +119 -0
  249. data/doc/html/files/lib/ttk/strategies/Error_rb.html +119 -0
  250. data/doc/html/files/lib/ttk/strategies/Extract_rb.html +126 -0
  251. data/doc/html/files/lib/ttk/strategies/Fail_rb.html +119 -0
  252. data/doc/html/files/lib/ttk/strategies/Fetch_rb.html +127 -0
  253. data/doc/html/files/lib/ttk/strategies/Fetcher_rb.html +126 -0
  254. data/doc/html/files/lib/ttk/strategies/Glob_rb.html +119 -0
  255. data/doc/html/files/lib/ttk/strategies/IOBased_rb.html +119 -0
  256. data/doc/html/files/lib/ttk/strategies/Import_rb.html +119 -0
  257. data/doc/html/files/lib/ttk/strategies/JUnit_rb.html +119 -0
  258. data/doc/html/files/lib/ttk/strategies/KillAll_rb.html +119 -0
  259. data/doc/html/files/lib/ttk/strategies/Make_rb.html +119 -0
  260. data/doc/html/files/lib/ttk/strategies/PackageCollection_rb.html +126 -0
  261. data/doc/html/files/lib/ttk/strategies/Package_rb.html +119 -0
  262. data/doc/html/files/lib/ttk/strategies/Pass_rb.html +119 -0
  263. data/doc/html/files/lib/ttk/strategies/Pool_rb.html +119 -0
  264. data/doc/html/files/lib/ttk/strategies/ProbabilityThreshold_rb.html +119 -0
  265. data/doc/html/files/lib/ttk/strategies/Proxy_rb.html +119 -0
  266. data/doc/html/files/lib/ttk/strategies/RUnit_rb.html +127 -0
  267. data/doc/html/files/lib/ttk/strategies/RemoteCmd_rb.html +126 -0
  268. data/doc/html/files/lib/ttk/strategies/SignalCmd_rb.html +119 -0
  269. data/doc/html/files/lib/ttk/strategies/Sleep_rb.html +119 -0
  270. data/doc/html/files/lib/ttk/strategies/SqlQuery_rb.html +126 -0
  271. data/doc/html/files/lib/ttk/strategies/Strategy/assert_eval_rb.html +127 -0
  272. data/doc/html/files/lib/ttk/strategies/Strategy_rb.html +131 -0
  273. data/doc/html/files/lib/ttk/strategies/Streams/Diff_rb.html +119 -0
  274. data/doc/html/files/lib/ttk/strategies/Streams/Stream_rb.html +126 -0
  275. data/doc/html/files/lib/ttk/strategies/Stub_rb.html +119 -0
  276. data/doc/html/files/lib/ttk/strategies/SubCmd_rb.html +119 -0
  277. data/doc/html/files/lib/ttk/strategies/Suite_rb.html +119 -0
  278. data/doc/html/files/lib/ttk/strategies/Test_rb.html +127 -0
  279. data/doc/html/files/lib/ttk/strategies/Tester_rb.html +126 -0
  280. data/doc/html/files/lib/ttk/symtbl_rb.html +126 -0
  281. data/doc/html/files/lib/ttk/testers/Master_rb.html +119 -0
  282. data/doc/html/files/lib/ttk/testers/Slave_rb.html +119 -0
  283. data/doc/html/files/lib/ttk/testers/Tester_rb.html +131 -0
  284. data/doc/html/files/lib/ttk/testers/tester/config_rb.html +126 -0
  285. data/doc/html/files/lib/ttk/testers/tester/notifier_rb.html +119 -0
  286. data/doc/html/files/lib/ttk/testers/tester/query_node_rb.html +126 -0
  287. data/doc/html/files/lib/ttk/testers/tester/remote_status_rb.html +119 -0
  288. data/doc/html/files/lib/ttk/testers/tester/running_task_rb.html +119 -0
  289. data/doc/html/files/lib/ttk/testers/tester/score_rb.html +119 -0
  290. data/doc/html/files/lib/ttk/weights/WExpr_rb.html +119 -0
  291. data/doc/html/files/lib/ttk/weights/WFloat_rb.html +119 -0
  292. data/doc/html/files/lib/ttk/weights/WMin_rb.html +119 -0
  293. data/doc/html/files/lib/ttk/weights/Weight_rb.html +126 -0
  294. data/doc/html/files/lib/ttk_rb.html +146 -0
  295. data/doc/html/files/lib/ttkd_rb.html +131 -0
  296. data/doc/html/files/template/README.html +160 -0
  297. data/doc/html/files/test/examples/README.html +190 -0
  298. data/doc/html/fr_class_index.html +186 -0
  299. data/doc/html/fr_file_index.html +147 -0
  300. data/doc/html/fr_method_index.html +581 -0
  301. data/doc/html/index.html +24 -0
  302. data/doc/html/rdoc-style.css +208 -0
  303. data/lib/ttk.rb +111 -0
  304. data/lib/ttk/Tools/HostDispatcher.rb +44 -0
  305. data/lib/ttk/Tools/SafeEval.rb +64 -0
  306. data/lib/ttk/Tools/cut_output.rb +35 -0
  307. data/lib/ttk/Tools/io/delegator.rb +88 -0
  308. data/lib/ttk/Tools/io/dispatch.rb +31 -0
  309. data/lib/ttk/Tools/io/ext.rb +70 -0
  310. data/lib/ttk/Tools/io/filters.rb +71 -0
  311. data/lib/ttk/daemons/Daemon.rb +34 -0
  312. data/lib/ttk/daemons/Master.rb +34 -0
  313. data/lib/ttk/daemons/Slave.rb +29 -0
  314. data/lib/ttk/daemons/daemon/logger.rb +57 -0
  315. data/lib/ttk/dumpers/Dumper.rb +81 -0
  316. data/lib/ttk/dumpers/Notif.rb +33 -0
  317. data/lib/ttk/dumpers/Xml.rb +112 -0
  318. data/lib/ttk/dumpers/Yaml.rb +159 -0
  319. data/lib/ttk/fetchers/Client.rb +41 -0
  320. data/lib/ttk/fetchers/Server.rb +49 -0
  321. data/lib/ttk/fetchers/client/receiver.rb +62 -0
  322. data/lib/ttk/fetchers/server/sender.rb +69 -0
  323. data/lib/ttk/filters/BasicLogger.rb +30 -0
  324. data/lib/ttk/filters/Filter.rb +24 -0
  325. data/lib/ttk/filters/Saver.rb +60 -0
  326. data/lib/ttk/loaders/Loader.rb +123 -0
  327. data/lib/ttk/loaders/OYaml.rb +60 -0
  328. data/lib/ttk/loaders/Yaml.rb +74 -0
  329. data/lib/ttk/loaders/YamlOld.rb +65 -0
  330. data/lib/ttk/logger.rb +237 -0
  331. data/lib/ttk/logger/path.rb +23 -0
  332. data/lib/ttk/logger/section_node.rb +214 -0
  333. data/lib/ttk/logger/severity.rb +62 -0
  334. data/lib/ttk/logger/to_ttk_log.rb +83 -0
  335. data/lib/ttk/logger/verbosity.rb +61 -0
  336. data/lib/ttk/logger_factory.rb +50 -0
  337. data/lib/ttk/monitors/Client.rb +61 -0
  338. data/lib/ttk/monitors/Monitor.rb +50 -0
  339. data/lib/ttk/monitors/Server.rb +73 -0
  340. data/lib/ttk/services/DRbService.rb +45 -0
  341. data/lib/ttk/services/DRbService/sub_testable.rb +41 -0
  342. data/lib/ttk/services/FetcherClient.rb +31 -0
  343. data/lib/ttk/services/FetcherServer.rb +23 -0
  344. data/lib/ttk/services/MonitorClient.rb +31 -0
  345. data/lib/ttk/services/MonitorServer.rb +23 -0
  346. data/lib/ttk/services/TesterClient.rb +38 -0
  347. data/lib/ttk/services/TesterMaster.rb +40 -0
  348. data/lib/ttk/services/TesterSlave.rb +31 -0
  349. data/lib/ttk/status.rb +190 -0
  350. data/lib/ttk/strategies/Abort.rb +24 -0
  351. data/lib/ttk/strategies/Authors.rb +43 -0
  352. data/lib/ttk/strategies/Ball.rb +68 -0
  353. data/lib/ttk/strategies/Block.rb +95 -0
  354. data/lib/ttk/strategies/Bootstrap.rb +52 -0
  355. data/lib/ttk/strategies/Checkout.rb +53 -0
  356. data/lib/ttk/strategies/Clean.rb +29 -0
  357. data/lib/ttk/strategies/Cmd.rb +55 -0
  358. data/lib/ttk/strategies/CmdBase.rb +103 -0
  359. data/lib/ttk/strategies/Collection.rb +131 -0
  360. data/lib/ttk/strategies/Compile.rb +56 -0
  361. data/lib/ttk/strategies/Composite.rb +173 -0
  362. data/lib/ttk/strategies/Configure.rb +64 -0
  363. data/lib/ttk/strategies/DistDelegate.rb +45 -0
  364. data/lib/ttk/strategies/DistDuplicate.rb +64 -0
  365. data/lib/ttk/strategies/DistStrategy.rb +42 -0
  366. data/lib/ttk/strategies/Distribute.rb +39 -0
  367. data/lib/ttk/strategies/Error.rb +23 -0
  368. data/lib/ttk/strategies/Extract.rb +45 -0
  369. data/lib/ttk/strategies/Fail.rb +26 -0
  370. data/lib/ttk/strategies/Fetch.rb +124 -0
  371. data/lib/ttk/strategies/Fetcher.rb +74 -0
  372. data/lib/ttk/strategies/Glob.rb +48 -0
  373. data/lib/ttk/strategies/IOBased.rb +156 -0
  374. data/lib/ttk/strategies/Import.rb +45 -0
  375. data/lib/ttk/strategies/JUnit.rb +205 -0
  376. data/lib/ttk/strategies/KillAll.rb +59 -0
  377. data/lib/ttk/strategies/Make.rb +94 -0
  378. data/lib/ttk/strategies/Package.rb +128 -0
  379. data/lib/ttk/strategies/PackageCollection.rb +72 -0
  380. data/lib/ttk/strategies/Pass.rb +24 -0
  381. data/lib/ttk/strategies/Pool.rb +99 -0
  382. data/lib/ttk/strategies/ProbabilityThreshold.rb +42 -0
  383. data/lib/ttk/strategies/Proxy.rb +42 -0
  384. data/lib/ttk/strategies/RUnit.rb +170 -0
  385. data/lib/ttk/strategies/RemoteCmd.rb +48 -0
  386. data/lib/ttk/strategies/SignalCmd.rb +85 -0
  387. data/lib/ttk/strategies/Sleep.rb +36 -0
  388. data/lib/ttk/strategies/SqlQuery.rb +120 -0
  389. data/lib/ttk/strategies/Strategy.rb +606 -0
  390. data/lib/ttk/strategies/Strategy/assert_eval.rb +53 -0
  391. data/lib/ttk/strategies/Streams/Diff.rb +60 -0
  392. data/lib/ttk/strategies/Streams/Stream.rb +133 -0
  393. data/lib/ttk/strategies/Stub.rb +35 -0
  394. data/lib/ttk/strategies/SubCmd.rb +58 -0
  395. data/lib/ttk/strategies/Suite.rb +118 -0
  396. data/lib/ttk/strategies/Test.rb +88 -0
  397. data/lib/ttk/strategies/Tester.rb +59 -0
  398. data/lib/ttk/symtbl.rb +115 -0
  399. data/lib/ttk/testers/Master.rb +69 -0
  400. data/lib/ttk/testers/Slave.rb +19 -0
  401. data/lib/ttk/testers/Tester.rb +134 -0
  402. data/lib/ttk/testers/tester/config.rb +65 -0
  403. data/lib/ttk/testers/tester/notifier.rb +24 -0
  404. data/lib/ttk/testers/tester/query_node.rb +91 -0
  405. data/lib/ttk/testers/tester/remote_status.rb +29 -0
  406. data/lib/ttk/testers/tester/running_task.rb +47 -0
  407. data/lib/ttk/testers/tester/score.rb +34 -0
  408. data/lib/ttk/weights/WExpr.rb +68 -0
  409. data/lib/ttk/weights/WFloat.rb +23 -0
  410. data/lib/ttk/weights/WMin.rb +22 -0
  411. data/lib/ttk/weights/Weight.rb +85 -0
  412. data/lib/ttkd.rb +51 -0
  413. data/ruby_ex/abstract.rb +246 -0
  414. data/ruby_ex/abstract_node.rb +85 -0
  415. data/ruby_ex/array_each_pair.rb +18 -0
  416. data/ruby_ex/ask.rb +101 -0
  417. data/ruby_ex/attributed_class.rb +304 -0
  418. data/ruby_ex/cache.rb +373 -0
  419. data/ruby_ex/checkout.rb +12 -0
  420. data/ruby_ex/config_file.rb +96 -0
  421. data/ruby_ex/const_regexp.rb +59 -0
  422. data/ruby_ex/daemon.rb +134 -0
  423. data/ruby_ex/diff.rb +667 -0
  424. data/ruby_ex/dlogger.rb +62 -0
  425. data/ruby_ex/drb/dispatcher.rb +252 -0
  426. data/ruby_ex/drb/dispatcher_server_test.rb +29 -0
  427. data/ruby_ex/drb/drb_observable.rb +97 -0
  428. data/ruby_ex/drb/drb_observable_pool.rb +27 -0
  429. data/ruby_ex/drb/drb_service.rb +43 -0
  430. data/ruby_ex/drb/drb_undumped_attributes.rb +55 -0
  431. data/ruby_ex/drb/drb_undumped_indexed_object.rb +54 -0
  432. data/ruby_ex/drb/insecure_protected_methods.rb +103 -0
  433. data/ruby_ex/drb/session_client_test.rb +40 -0
  434. data/ruby_ex/drb/session_manager.rb +246 -0
  435. data/ruby_ex/drb/session_server.rb +53 -0
  436. data/ruby_ex/dtime.rb +143 -0
  437. data/ruby_ex/dumpable_proc.rb +63 -0
  438. data/ruby_ex/exception.rb +32 -0
  439. data/ruby_ex/filetype.rb +229 -0
  440. data/ruby_ex/fileutils_ex.rb +44 -0
  441. data/ruby_ex/fold.rb +58 -0
  442. data/ruby_ex/generate_id.rb +31 -0
  443. data/ruby_ex/inactive_timeout.rb +137 -0
  444. data/ruby_ex/indexed_node.rb +66 -0
  445. data/ruby_ex/io_marshal.rb +100 -0
  446. data/ruby_ex/ioo.rb +194 -0
  447. data/ruby_ex/labeled_node.rb +63 -0
  448. data/ruby_ex/logger_observer.rb +23 -0
  449. data/ruby_ex/md5sum.rb +66 -0
  450. data/ruby_ex/mktemp.rb +208 -0
  451. data/ruby_ex/module/attr_once.rb +36 -0
  452. data/ruby_ex/module/autoload_tree.rb +68 -0
  453. data/ruby_ex/module/hierarchy.rb +335 -0
  454. data/ruby_ex/module/instance_method_visibility.rb +73 -0
  455. data/ruby_ex/module_ex.rb +11 -0
  456. data/ruby_ex/node.rb +80 -0
  457. data/ruby_ex/object_monitor.rb +145 -0
  458. data/ruby_ex/object_monitor_activity.rb +33 -0
  459. data/ruby_ex/observable.rb +140 -0
  460. data/ruby_ex/observable_pool.rb +293 -0
  461. data/ruby_ex/orderedhash.rb +252 -0
  462. data/ruby_ex/pathname_ex.rb +113 -0
  463. data/ruby_ex/pp_hierarchy.rb +29 -0
  464. data/ruby_ex/pseudo_cache.rb +190 -0
  465. data/ruby_ex/queue.rb +56 -0
  466. data/ruby_ex/safe_eval.rb +348 -0
  467. data/ruby_ex/service_manager.rb +121 -0
  468. data/ruby_ex/session/administrable.rb +120 -0
  469. data/ruby_ex/session/client.rb +153 -0
  470. data/ruby_ex/session/const.rb +18 -0
  471. data/ruby_ex/session/dispatcher.rb +184 -0
  472. data/ruby_ex/session/error.rb +21 -0
  473. data/ruby_ex/session/fetchable.rb +57 -0
  474. data/ruby_ex/session/fetcher.rb +62 -0
  475. data/ruby_ex/session/hookable.rb +26 -0
  476. data/ruby_ex/session/profile.rb +110 -0
  477. data/ruby_ex/session/server.rb +582 -0
  478. data/ruby_ex/session/test/administrable_test.rb +337 -0
  479. data/ruby_ex/session/test/basic_test.rb +523 -0
  480. data/ruby_ex/session/test/dispatcher_test.rb +409 -0
  481. data/ruby_ex/session/test/fetchable_test.rb +119 -0
  482. data/ruby_ex/session/test/sub_server_test.rb +188 -0
  483. data/ruby_ex/spring.rb +136 -0
  484. data/ruby_ex/spring_set.rb +137 -0
  485. data/ruby_ex/symtbl.rb +106 -0
  486. data/ruby_ex/synflow.rb +474 -0
  487. data/ruby_ex/test/unit/ui/yaml/testrunner.rb +164 -0
  488. data/ruby_ex/thread_mutex.rb +10 -0
  489. data/ruby_ex/timeout_ex.rb +81 -0
  490. data/ruby_ex/top_down.rb +73 -0
  491. data/ruby_ex/trace.rb +26 -0
  492. data/ruby_ex/uri/druby.rb +81 -0
  493. data/ruby_ex/uri/file.rb +39 -0
  494. data/ruby_ex/uri/ftp_ex.rb +37 -0
  495. data/ruby_ex/uri/http_ex.rb +43 -0
  496. data/ruby_ex/uri/svn.rb +101 -0
  497. data/ruby_ex/uri_ex.rb +35 -0
  498. data/ruby_ex/version.rb +66 -0
  499. data/ruby_ex/yaml/basenode_ext.rb +63 -0
  500. data/ruby_ex/yaml/transform.rb +447 -0
  501. data/ruby_ex/yaml/yregexpath.rb +76 -0
  502. data/test/all/TestTAssert/first.yml +65 -0
  503. data/test/all/TestTAssert/segfault.yml +31 -0
  504. data/test/all/dist-suite-indirect-nested.yml +15 -0
  505. data/test/all/dist-suite-nested-3.yml +16 -0
  506. data/test/all/dist-suite-nested-in-pool.yml +51 -0
  507. data/test/all/dist-suite-nested.yml +28 -0
  508. data/test/all/no_suite.yml +18 -0
  509. data/test/all/pipeline-timeout.yml +21 -0
  510. data/test/all/remote_cmd.yml +23 -0
  511. data/test/all/remote_dispatcher.yml +26 -0
  512. data/test/all/suite_timeout.yml +32 -0
  513. data/test/all/weight.yml +113 -0
  514. data/test/all/xunit/junit/MultiRight/Foo/Foo.java +11 -0
  515. data/test/all/xunit/junit/MultiRight/Foo/FooTest.java +15 -0
  516. data/test/all/xunit/junit/MultiRight/MultiRight.java +13 -0
  517. data/test/all/xunit/junit/MultiRight/MultiRightTest.java +12 -0
  518. data/test/all/xunit/junit/MultiRight/bar/Bar.java +11 -0
  519. data/test/all/xunit/junit/MultiRight/bar/BarTest.java +21 -0
  520. data/test/all/xunit/junit/MultiRight/build.sh +7 -0
  521. data/test/all/xunit/junit/SimpleException/SimpleExceptionTest.java +11 -0
  522. data/test/all/xunit/junit/SimpleException/build.sh +4 -0
  523. data/test/all/xunit/junit/build.sh +9 -0
  524. data/test/all/xunit/junit/multibar.yml +6 -0
  525. data/test/all/xunit/junit/multifoo.yml +6 -0
  526. data/test/all/xunit/junit/multiright.yml +8 -0
  527. data/test/all/xunit/junit/simple_exception.yml +6 -0
  528. data/test/examples-suite.yml +10 -0
  529. data/test/examples/README +68 -0
  530. data/test/examples/cache/simple.yml +33 -0
  531. data/test/examples/sql/basic.yml +26 -0
  532. data/test/examples/students-suite.yml +11 -0
  533. data/test/examples/students/ball.yml +13 -0
  534. data/test/examples/students/glob_stud.yml +23 -0
  535. data/test/examples/students/mini-lib.yml +73 -0
  536. data/test/examples/students/pool_stud.yml +35 -0
  537. data/test/examples/students/stud.yml +25 -0
  538. data/test/ressources/ball/20040804-exam_a1-zapngo-tessar_m.tar.gz +0 -0
  539. data/test/ressources/ball/Makefile +24 -0
  540. data/test/ressources/ball/bar_p-mini-lib.tar.bz2 +0 -0
  541. data/test/ressources/ball/bar_p-mini-lib/Makefile +20 -0
  542. data/test/ressources/ball/bar_p-mini-lib/my_strlen.c +13 -0
  543. data/test/ressources/ball/foo_s-mini-lib.tar.bz2 +0 -0
  544. data/test/ressources/ball/foo_s-mini-lib/Makefile +20 -0
  545. data/test/ressources/ball/foo_s-mini-lib/configure +2 -0
  546. data/test/ressources/ball/foo_s-mini-lib/my_strlen.c +10 -0
  547. data/test/ressources/ball/hello.tar.bz2 +0 -0
  548. data/test/ressources/ball/hello.tar.gz +0 -0
  549. data/test/ressources/ball/hello/Makefile +14 -0
  550. data/test/ressources/ball/hello/hello.c +7 -0
  551. data/test/ressources/ball/jack-exit.tar.bz2 +0 -0
  552. data/test/ressources/ball/jack-exit/Makefile +14 -0
  553. data/test/ressources/ball/jack-exit/exit.c +16 -0
  554. data/test/ressources/ball/joe-exit.tar.bz2 +0 -0
  555. data/test/ressources/ball/joe-exit/Makefile +14 -0
  556. data/test/ressources/ball/joe-exit/exit.c +8 -0
  557. data/test/ressources/ball/joe_i-mini-lib.tar.bz2 +0 -0
  558. data/test/ressources/ball/joe_i-mini-lib/Makefile +20 -0
  559. data/test/ressources/ball/joe_i-mini-lib/configure +2 -0
  560. data/test/ressources/ball/joe_i-mini-lib/my_strlen.c +10 -0
  561. data/test/ressources/ball/john-exit.tar.bz2 +0 -0
  562. data/test/ressources/ball/john-exit/Makefile +14 -0
  563. data/test/ressources/ball/john-exit/exit.c +6 -0
  564. data/test/ressources/ball/qux_j-mini-lib.tar.bz2 +0 -0
  565. data/test/ressources/ball/qux_j-mini-lib/Makefile +20 -0
  566. data/test/ressources/ball/qux_j-mini-lib/my_strlen.c +12 -0
  567. data/test/ressources/mini-lib/Makefile +9 -0
  568. data/test/ressources/mini-lib/strlen.c +15 -0
  569. data/test/ressources/package/pkg_foo.tar.gz +0 -0
  570. data/test/ressources/package/pkg_foo/Makefile +20 -0
  571. data/test/ressources/package/pkg_foo/bootstrap +3 -0
  572. data/test/ressources/package/pkg_foo/configure +3 -0
  573. data/test/ressources/package/pkg_foo/foo.sh +2 -0
  574. data/test/ressources/runit/bad.rb +30 -0
  575. data/test/ressources/runit/error.rb +6 -0
  576. data/test/ressources/runit/good.rb +30 -0
  577. data/test/ressources/text/1.txt +4 -0
  578. data/test/runit/dumpers/xml_test.rb +75 -0
  579. data/test/runit/dumpers/yaml_test.rb +68 -0
  580. data/test/runit/fetchers/fetchers_test.rb +48 -0
  581. data/test/runit/loaders/OYaml_test.rb +35 -0
  582. data/test/runit/logger/section_node_test.rb +125 -0
  583. data/test/runit/logger/severity_test.rb +41 -0
  584. data/test/runit/logger/verbosity_test.rb +49 -0
  585. data/test/runit/logger_test.rb +295 -0
  586. data/test/runit/strategies/Strategy/assert_eval_test.rb +196 -0
  587. data/test/ttk-check +26 -0
  588. data/test/ttk-dist-suite.yml +44 -0
  589. data/test/ttk-dist/cat/file.in +3 -0
  590. data/test/ttk-dist/cat/file.out +3 -0
  591. data/test/ttk-dist/dist-abort.yml +51 -0
  592. data/test/ttk-dist/dist-cat.yml +38 -0
  593. data/test/ttk-dist/dist-delegate.yml +56 -0
  594. data/test/ttk-dist/dist-dispatch.yml +28 -0
  595. data/test/ttk-dist/dist-error.yml +10 -0
  596. data/test/ttk-dist/dist-fail.yml +9 -0
  597. data/test/ttk-dist/dist-nested-pass.yml +11 -0
  598. data/test/ttk-dist/dist-pass.yml +8 -0
  599. data/test/ttk-dist/dist-ribute.yml +31 -0
  600. data/test/ttk-dist/dist-suite.yml +18 -0
  601. data/test/ttk-dist/local-fetch.yml +17 -0
  602. data/test/ttk-dist/tester.yml +36 -0
  603. data/test/ttk-minimal-suite.yml +12 -0
  604. data/test/ttk-minimal/author.yml +14 -0
  605. data/test/ttk-minimal/base.yml +137 -0
  606. data/test/ttk-minimal/block.yml +15 -0
  607. data/test/ttk-minimal/cat.yml +19 -0
  608. data/test/ttk-minimal/diff.yml +29 -0
  609. data/test/ttk-minimal/env_cmd.yml +54 -0
  610. data/test/ttk-minimal/exit.yml +17 -0
  611. data/test/ttk-minimal/fatal.yml +32 -0
  612. data/test/ttk-minimal/glob.yml +13 -0
  613. data/test/ttk-minimal/import.yml +33 -0
  614. data/test/ttk-minimal/killall.yml +36 -0
  615. data/test/ttk-minimal/pkg.yml +18 -0
  616. data/test/ttk-minimal/pool.yml +44 -0
  617. data/test/ttk-minimal/probability_threshold.yml +39 -0
  618. data/test/ttk-minimal/runit.yml +25 -0
  619. data/test/ttk-minimal/signal_cmd.yml +24 -0
  620. data/test/ttk-minimal/sub.yml +9 -0
  621. data/test/ttk-minimal/test.yml +26 -0
  622. data/test/ttk-minimal/timeout.yml +24 -0
  623. data/test/ttk-minimal/unit_test.yml +13 -0
  624. data/test/ttk-minimal/wc.yml +28 -0
  625. metadata +801 -0
@@ -0,0 +1,37 @@
1
+ # Copyright: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
2
+ # Author: Nicolas Pouillard <ertai@lrde.epita.fr>.
3
+ # License: Gnu General Public License.
4
+
5
+ # $LastChangedBy: polrop $
6
+ # $Id: ftp_ex.rb 159 2005-02-18 12:07:23Z polrop $
7
+
8
+ require 'uri_ex'
9
+ require 'uri/ftp'
10
+ require 'net/ftp'
11
+ require 'mktemp'
12
+
13
+ module URI
14
+
15
+ class FTP
16
+
17
+ def checkout
18
+ tmp = TempPath.new('checkout', pathname.basename.to_s)
19
+
20
+ begin
21
+ Net::FTP.open(host) do |ftp|
22
+ ftp.login
23
+ ftp.passive = true
24
+ ftp.getbinaryfile(path, tmp)
25
+ end
26
+
27
+ rescue Exception => ex
28
+ tmp.unlink if tmp.exist?
29
+ raise CheckoutError, "Cannot checkout #{to_s} (error: #{ex.short_pp})"
30
+ end
31
+
32
+ tmp
33
+ end
34
+
35
+ end # class FTP
36
+
37
+ end # module URI
@@ -0,0 +1,43 @@
1
+ # Copyright: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
2
+ # Author: Nicolas Pouillard <ertai@lrde.epita.fr>.
3
+ # License: Gnu General Public License.
4
+
5
+ # $LastChangedBy: polrop $
6
+ # $Id: http_ex.rb 159 2005-02-18 12:07:23Z polrop $
7
+
8
+ require 'exception'
9
+ require 'uri_ex'
10
+ require 'uri/http'
11
+ require 'net/http'
12
+ require 'mktemp'
13
+
14
+ module URI
15
+
16
+ class HTTP
17
+
18
+ def checkout
19
+ tmp = TempPath.new('checkout', pathname.basename.to_s)
20
+
21
+ begin
22
+ uri = URI.parse(ENV['http_proxy'] || '')
23
+ proxy_auth = [uri.host, uri.port, uri.user, uri.password]
24
+
25
+ Net::HTTP::Proxy(*proxy_auth).start(host) do |http|
26
+ tmp.open('w') do |out|
27
+ http.get(path) do |str|
28
+ out.print str
29
+ end
30
+ end
31
+ end
32
+
33
+ rescue Exception => ex
34
+ tmp.unlink if tmp.exist?
35
+ raise CheckoutError, "Cannot checkout #{to_s} (error: #{ex.short_pp})"
36
+ end
37
+
38
+ tmp
39
+ end
40
+
41
+ end # class HTTP
42
+
43
+ end # module URI
@@ -0,0 +1,101 @@
1
+ # Copyright: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
2
+ # Author: Nicolas Pouillard <ertai@lrde.epita.fr>.
3
+ # License: Gnu General Public License.
4
+
5
+ # $LastChangedBy: polrop $
6
+ # $Id: svn.rb 159 2005-02-18 12:07:23Z polrop $
7
+
8
+ require 'uri_ex'
9
+ require 'abstract'
10
+
11
+ module URI
12
+
13
+ class Svn < Generic
14
+
15
+ COMPONENT = [
16
+ :scheme,
17
+ :host,
18
+ :path
19
+ ].freeze
20
+
21
+ def self.build ( args )
22
+ tmp = Util::make_components_hash(self, args)
23
+ return super(tmp)
24
+ end
25
+
26
+ def checkout
27
+ # klass = SvnSchemes.guess(scheme)
28
+ # klass.new
29
+ tmp = TempPath.new('svn-checkout')
30
+ out = TempPath.new('svn-checkout-out')
31
+ err = TempPath.new('svn-checkout-err')
32
+ tmp.mkpath
33
+ target = to_s.sub(/^svn\./, '')
34
+ tmp += pathname.basename
35
+ unless system "svn checkout #{target} #{tmp} > #{out} 2> #{err}"
36
+ raise CheckoutError, to_s
37
+ end
38
+ [tmp, out, err]
39
+ end
40
+
41
+ end # class Svn
42
+
43
+ module SvnSchemes
44
+
45
+ def self.guess ( aScheme )
46
+ init
47
+ @@svn_schemes[aScheme]
48
+ end
49
+
50
+ def self.init
51
+ return if defined? @@svn_schemes
52
+ @@svn_schemes = {}
53
+ constants.each do |const|
54
+ klass = const_get(const)
55
+ next if klass.abstract?
56
+ @@svn_schemes[klass.scheme] = klass
57
+ end
58
+ @@svn_schemes.freeze
59
+ end
60
+
61
+ def self.svn_schemes
62
+ init
63
+ @@svn_schemes
64
+ end
65
+
66
+ class AbstractSvnScheme
67
+ include Abstract
68
+
69
+ def self.scheme
70
+ const_get(:SCHEME)
71
+ end
72
+
73
+ end
74
+
75
+ class SvnScheme < AbstractSvnScheme
76
+ include Concrete
77
+ SCHEME = 'SVN'
78
+ end
79
+
80
+ class SvnSshScheme < AbstractSvnScheme
81
+ include Concrete
82
+ SCHEME = 'SVN+SSH'
83
+ end
84
+
85
+ class SvnHttpScheme < AbstractSvnScheme
86
+ include Concrete
87
+ SCHEME = 'SVN.HTTP'
88
+ end
89
+
90
+ class SvnHttpsScheme < AbstractSvnScheme
91
+ include Concrete
92
+ SCHEME = 'SVN.HTTPS'
93
+ end
94
+
95
+ end
96
+
97
+ SvnSchemes.svn_schemes.each_key do |name|
98
+ @@schemes[name] = Svn
99
+ end
100
+
101
+ end # module URI
data/ruby_ex/uri_ex.rb ADDED
@@ -0,0 +1,35 @@
1
+ # Copyright: Copyright (c) 2005 Nicolas Pouillard. All rights reserved.
2
+ # Author: Nicolas Pouillard <ertai@lrde.epita.fr>.
3
+ # License: Gnu General Public License.
4
+
5
+ # $LastChangedBy: polrop $
6
+ # $Id: uri_ex.rb 159 2005-02-18 12:07:23Z polrop $
7
+
8
+ require 'uri'
9
+
10
+ module URI
11
+
12
+ class CheckoutError < Exception
13
+ end
14
+
15
+ class Generic
16
+
17
+ def pathname
18
+ Pathname.new(path)
19
+ end
20
+
21
+ def to_yaml_type
22
+ '!uri'
23
+ end
24
+
25
+ def to_yaml ( opts={} )
26
+ "!uri #{to_s}"
27
+ end
28
+
29
+ def checkout
30
+ raise CheckoutError, "Can't checkout a #{self.class}"
31
+ end
32
+
33
+ end # module Generic
34
+
35
+ end # module URI
@@ -0,0 +1,66 @@
1
+ # Copyright: Copyright (c) 2004 Nicolas Despres. All rights reserved.
2
+ # Author: Nicolas Despres <polrop@lrde.epita.fr>.
3
+ # License: Gnu General Public License.
4
+
5
+ # $LastChangedBy: polrop $
6
+ # $Id: version.rb 101 2005-01-15 07:58:58Z polrop $
7
+
8
+
9
+ class Version
10
+ include Comparable
11
+
12
+ attr_accessor :major, :minor, :revision
13
+
14
+ def initialize(major, minor, revision)
15
+ @major = major
16
+ @minor = minor
17
+ @revision = revision
18
+ end
19
+
20
+ def <=>(other)
21
+ if @major == other.major
22
+ if @minor == other.minor
23
+ @revision <=> other.revision
24
+ else
25
+ @minor <=> other.minor
26
+ end
27
+ else
28
+ @major <=> other.major
29
+ end
30
+ end
31
+
32
+ def to_s
33
+ "#@major.#@minor.#@revision"
34
+ end
35
+
36
+ def to_a
37
+ [ @major, @minor, @revision ]
38
+ end
39
+
40
+ end # class Version
41
+
42
+
43
+ if defined? TEST_MODE or __FILE__ == $0
44
+
45
+
46
+ require 'test/unit/ui/yaml/testrunner'
47
+
48
+
49
+ class VersionTest < Test::Unit::TestCase
50
+
51
+ def test_simple
52
+ assert(Version.new(1, 2, 3) < Version.new(1, 2, 4))
53
+ assert(Version.new(1, 2, 4) > Version.new(1, 2, 3))
54
+ assert(Version.new(1, 2, 3) == Version.new(1, 2, 3))
55
+ assert(Version.new(1, 3, 3) > Version.new(1, 2, 3))
56
+ assert(Version.new(1, 2, 3) < Version.new(1, 3, 3))
57
+ assert(Version.new(2, 2, 3) > Version.new(1, 2, 3))
58
+ assert(Version.new(1, 2, 3) < Version.new(2, 2, 3))
59
+ end
60
+
61
+ end # class VersionTest
62
+
63
+
64
+ end
65
+
66
+
@@ -0,0 +1,63 @@
1
+ # Copyright: Copyright (c) 2004 Nicolas Pouillard. All rights reserved.
2
+ # Author: Nicolas Pouillard <ertai@lrde.epita.fr>.
3
+ # License: Gnu General Public License.
4
+
5
+ # $LastChangedBy: ertai $
6
+ # $Id: basenode_ext.rb 53 2004-12-02 22:24:03Z ertai $
7
+
8
+ require 'yaml'
9
+ require 'yaml/basenode'
10
+
11
+ module YAML
12
+
13
+ module BaseNode
14
+
15
+ def ordered_children_with_index
16
+ arr = children_with_index
17
+ arr.sort! { |a,b| b[0].object_id <=> a[0].object_id } unless arr.nil?
18
+ arr
19
+ end
20
+
21
+ def ordered_children_indexes
22
+ arr = ordered_children_with_index
23
+ arr.map! { |x| x[1] } unless arr.nil?
24
+ arr
25
+ end
26
+
27
+ def ordered_children
28
+ arr = children
29
+ arr.map! { |x| x[0] } unless arr.nil?
30
+ arr
31
+ end
32
+
33
+ end # module BaseNode
34
+
35
+ end # module YAML
36
+
37
+
38
+ if defined? TEST_MODE or $0 == __FILE__
39
+
40
+ require 'test/unit'
41
+ class BaseNodeExtTest < Test::Unit::TestCase
42
+
43
+ def basenode_checker ( my, ref )
44
+ node = YAML::parse(my)
45
+ assert_equal(node.ordered_children_indexes, ref)
46
+ end
47
+
48
+ def test_basenode1
49
+ basenode_checker('--- { d: 4, a: 1, b: 2, c: 3 }', ["d", "a", "b", "c"])
50
+ end
51
+
52
+ def test_basenode2
53
+ basenode_checker('--- { a: 1, d: 42, b: 2, c: 3 }', ["a", "d", "b", "c"])
54
+ end
55
+
56
+ def test_basenode3
57
+ basenode_checker(
58
+ '--- { a: :"1", d: "foo", b: [2,3], c: {} }', ["a", "d", "b", "c"])
59
+ end
60
+
61
+ end # class BaseNodeExtTest
62
+
63
+ end
@@ -0,0 +1,447 @@
1
+ # Author:: Marco Tessari <marco.tessari@epita.fr>.
2
+ # Copyright:: Copyright (c) 2004 TTK Team. All rights reserved.
3
+ # License:: Gnu General Public License.
4
+
5
+ # $LastChangedBy: ertai $
6
+ # $Id: transform.rb 186 2005-04-03 00:07:45Z ertai $
7
+
8
+ # TODO: Raised exception must be completed with a descritpion
9
+ # TODO: Fix bug on Array see test_higher_level_on_array
10
+ # TODO: Comment code.
11
+ # TODO: Write more tests.
12
+ # TODO: Make it stream.
13
+ # TODO: Add the possibility to write '//' to match all node with deep n.
14
+ # TODO: Add the && and ||.
15
+ # TODO: Optimize, skip if no more node to match.
16
+ # TODO: separate dot implemantation.
17
+
18
+ require 'yaml/yregexpath'
19
+
20
+ module YAML
21
+
22
+ class Transformer
23
+ private
24
+
25
+ # FIXME: Implement all ruby types.
26
+ class ::Object # :nodoc:
27
+ def yaml_doc_traverse ( activated )
28
+ raise ArgumentError, "can't traverse class #{self.class}"
29
+ end
30
+ end
31
+
32
+ class ::Hash # :nodoc:
33
+ # FIXME: Are we sure we want to traverse like that? (by stage)
34
+ def yaml_doc_traverse ( activated )
35
+ new_activated = []
36
+ sons = []
37
+ self.each do |key, value|
38
+ activated.each do |n|
39
+ new_activated += n.match(key, value)
40
+ sons << value unless value.is_a?(String)
41
+ end
42
+ end
43
+ activated += new_activated
44
+ sons.yaml_doc_traverse(activated)
45
+ end
46
+ end
47
+
48
+ class ::Array # :nodoc:
49
+ def yaml_doc_traverse ( activated )
50
+ self.each { |e| e.yaml_doc_traverse(activated) }
51
+ end
52
+ end
53
+
54
+ class Node
55
+ attr_reader :name, :values
56
+
57
+ Struct.new( 'Value', :regexp, :remember, :associated )
58
+
59
+ def initialize ( name )
60
+ raise ArgumentError unless name.is_a?(Regexp)
61
+ @name = name
62
+ @values = []
63
+ @uid = @@cpt
64
+ @@cpt += 1
65
+ # Save a node to handle the '#' feature.
66
+ @saved_node_key = nil
67
+ @saved_node_value = nil
68
+ end
69
+ @@cpt = 0
70
+
71
+ # Return the associated nodes of a value
72
+ # Add the value if not present.
73
+ def get_associated ( value, remember=false )
74
+ val = @values.find { |e| e.regexp == value and e.remember == remember }
75
+ if val.nil?
76
+ val = Struct::Value.new(value, remember, [])
77
+ @values << val
78
+ end
79
+ return val.associated
80
+ end
81
+
82
+ # Dottify a node.
83
+ def dottify ( stream )
84
+ # Declare node
85
+ stream << "#{unique_name} [shape=box, color=blue, label=#{self}]\n"
86
+ # Print node links with values
87
+ stream << "#{unique_name} -> { rank=same; "
88
+ @values.each_index { |i| stream << "value#{@uid}_#{i}; " }
89
+ stream << "}\n"
90
+ # Declare each values and links
91
+ @values.each_with_index do |val, i|
92
+ stream << "value#{@uid}_#{i} [shape=box, color=yellow, label=\"/"
93
+ stream << val.regexp.source << '/'
94
+ stream << ' #' if val.remember
95
+ stream << "\"]\n"
96
+ stream << "value#{@uid}_#{i} -> { rank=same; "
97
+ val.associated.each { |match| stream << "#{match.unique_name}; " }
98
+ stream << "} \n"
99
+ val.associated.each { |match| match.dottify(stream) }
100
+ end
101
+ end
102
+
103
+ def match ( key, value )
104
+ return [] unless key =~ @name
105
+ activated = []
106
+ @values.each do |val|
107
+ if ! value.is_a?(String) or value =~ val.regexp
108
+ save_node_set(key, value) if val.remember
109
+ val.associated.each do |n|
110
+ if n.is_a?(Match)
111
+ # There must be a remembered node in the path.
112
+ p self unless has_saved_node?
113
+ n[@saved_node_key, @saved_node_value]
114
+ else
115
+ n.save_node_set(@saved_node_key,
116
+ @saved_node_value) if has_saved_node?
117
+ activated << n
118
+ end
119
+ end
120
+ save_node_reset if val.remember
121
+ end
122
+ end
123
+ save_node_reset
124
+ return activated
125
+ end
126
+
127
+ def save_node_set ( key, value )
128
+ raise RuntimeError unless @saved_node_key.nil?
129
+ @saved_node_key = key
130
+ raise RuntimeError unless @saved_node_value.nil?
131
+ @saved_node_value = value
132
+ end
133
+
134
+ def save_node_reset
135
+ @saved_node_key = nil
136
+ @saved_node_value = nil
137
+ end
138
+
139
+ def has_saved_node?
140
+ return ! (@saved_node_key.nil? and @saved_node_value.nil?)
141
+ end
142
+
143
+ def unique_name
144
+ "node#{@uid}"
145
+ end
146
+
147
+ # Human readable name.
148
+ def to_s
149
+ "\"/#{@name.source}/\""
150
+ end
151
+ end
152
+
153
+ class Root
154
+ attr_reader :children
155
+
156
+ def initialize
157
+ @name = 'root'
158
+ @children = []
159
+ end
160
+
161
+ def dottify ( stream )
162
+ stream << "#{self} [shape=circle, color=red, label=#{self}]\n"
163
+ stream << "#{self} -> { rank=same; "
164
+ @children.each { |e| stream << "#{e.unique_name} " }
165
+ stream << "}\n"
166
+ @children.each { |e| e.dottify(stream) }
167
+ end
168
+
169
+ def to_s
170
+ 'root'
171
+ end
172
+
173
+ alias unique_name to_s
174
+ end
175
+
176
+ class Match
177
+
178
+ def initialize ( name=nil, &block )
179
+ @block = block
180
+ @name = name
181
+ @uid = @@cpt
182
+ @@cpt += 1
183
+ end
184
+ @@cpt = 0
185
+
186
+ def dottify ( stream )
187
+ stream << "match#{@uid} [shape=circle, color=green, label=#{self}]\n"
188
+ end
189
+
190
+ def call ( key, value )
191
+ @block[key, value]
192
+ end
193
+
194
+ def unique_name
195
+ "match#{@uid}"
196
+ end
197
+
198
+ def to_s
199
+ @name.nil? ? unique_name : "\"#{@name}\""
200
+ end
201
+ end
202
+
203
+ public
204
+ # Constructor.
205
+ def initialize
206
+ @rootgraph = Root.new
207
+ @graph = []
208
+ @activated = []
209
+ end
210
+
211
+ # Register the given block and compile the path.
212
+ def add ( path, name=nil, &block)
213
+ raise ArgumentError unless (path.kind_of?(YRegexPath))
214
+ raise ArgumentError if (block.nil?)
215
+ current_nodes = path.root ? @rootgraph.children : @graph
216
+ add_segment(path.segments, path.wanted_node_index,
217
+ current_nodes, name, &block)
218
+ end
219
+ alias register add
220
+
221
+ def add_segment ( seg, remember_index, current_nodes, name, &block )
222
+ if (seg.empty?)
223
+ current_nodes << Match.new(name, &block)
224
+ return
225
+ end
226
+ updated = false
227
+ searched_name, searched_value = seg.shift
228
+ searched_value = /.*/ if searched_value.nil?
229
+ current_nodes.collect! do |n|
230
+ if (n.is_a?(Node) and n.name == searched_name)
231
+ updated = true
232
+ update_node(n, searched_value, seg, remember_index, name, &block)
233
+ else
234
+ n
235
+ end
236
+ end
237
+ unless (updated)
238
+ current_nodes << update_node(Node.new(searched_name), searched_value,
239
+ seg, remember_index, name, &block)
240
+ end
241
+ end
242
+ private :add_segment
243
+
244
+ def update_node ( node, value, segment, remember_index, name, &block )
245
+ sons = node.get_associated(value, remember_index == 1)
246
+ add_segment(segment, remember_index - 1, sons, name, &block)
247
+ return node
248
+ end
249
+
250
+ # Print graph in a file in doty format
251
+ def dottify ( filename )
252
+ File.open(filename, 'w') do |f|
253
+ f << <<EOF
254
+ /* Compiled rules graph visualisation by YSLT */
255
+ digraph "Compiled rules" {
256
+ node [style=filled]
257
+ edge [style=solid, arrowtail=none]
258
+ rankdir=LR
259
+ EOF
260
+ @rootgraph.dottify(f)
261
+ @graph.each do |n|
262
+ n.dottify(f)
263
+ end
264
+ f << "}\n"
265
+ end
266
+ end
267
+
268
+ # Reset position to root.
269
+ def reset
270
+ @activated = @rootgraph.children + @graph
271
+ end
272
+
273
+ # Clear compiled rules.
274
+ def clear
275
+ initialize
276
+ end
277
+
278
+ # Traverse an entire YAML tree.
279
+ def traverse ( tree )
280
+ reset
281
+ tree.yaml_doc_traverse(@activated)
282
+ end
283
+
284
+ # Work like XLST.
285
+ # Traverse all tree and return a list of element that match the path.
286
+ def self.traverse ( path, tree, &block )
287
+ p = self.new
288
+ p.add(path, &block)
289
+ p.traverse(tree)
290
+ end
291
+
292
+ end # class Transformer
293
+
294
+ end # module YAML
295
+
296
+ if defined? TEST_MODE or $0 == __FILE__
297
+
298
+ require 'test/unit'
299
+
300
+ class Transformer < Test::Unit::TestCase
301
+
302
+ def test_compiled
303
+ # Initialization.
304
+ engine = nil
305
+ str = ''
306
+ assert_nothing_raised { engine = YAML::Transformer.new }
307
+
308
+ # Build.
309
+ assert_nothing_raised do
310
+ engine.add(YAML::YRegexPath.new('/name')) do |key, value|
311
+ assert_instance_of(String, key)
312
+ str += "#{value} is"
313
+ end
314
+ end
315
+ assert_nothing_raised do
316
+ engine.add(YAML::YRegexPath.new('/name=Akli/boss')) do |key, value|
317
+ assert_instance_of(String, key)
318
+ str += ' a boss'
319
+ end
320
+ end
321
+ assert_nothing_raised do
322
+ engine.add(YAML::YRegexPath.new('/jobs/professor=EPITA/class')) do |k,v|
323
+ assert_instance_of(String, k)
324
+ str += e
325
+ end
326
+ end
327
+ assert_nothing_raised do
328
+ engine.add(YAML::YRegexPath.new('toto#titi'), 'unused') do
329
+ str += 'Why am I HERE???'
330
+ end
331
+ end
332
+
333
+ # Display.
334
+ assert_nothing_raised { engine.dottify('compiled.dot') }
335
+ `dot compiled.dot 2> /dev/null`
336
+ assert_equal(0, $?, 'Cannot display the graph')
337
+
338
+ # Traverse.
339
+ tree = {
340
+ 'name' => 'Akli A.',
341
+ 'tel' => '06932359',
342
+ 'address' => '23 boulevard voltaire',
343
+ 'jobs' => [
344
+ {
345
+ 'professor' => 'EPITA',
346
+ 'boss' => 'MindSuite',
347
+ 'god' => 'world',
348
+ }
349
+ ]
350
+ }
351
+ assert_nothing_raised { engine.traverse(tree) }
352
+ assert_equal(str, 'Akli A. is a boss a boss a boss')
353
+ end
354
+
355
+ def test_unique
356
+ names = []
357
+ tree = {
358
+ 'users' => [
359
+ {
360
+ 'name' => 'Sea',
361
+ 'tel' => '111'
362
+ },
363
+ {
364
+ 'name' => 'Sex',
365
+ 'tel' => '222'
366
+ },
367
+ {
368
+ 'name' => 'Sun',
369
+ 'tel' => '333'
370
+ }
371
+ ]
372
+ }
373
+ YAML::Transformer.traverse(YAML::YRegexPath.new('name=Se'), tree) do
374
+ |k,v| names << v
375
+ end
376
+ assert_equal(['Sea', 'Sex'], names)
377
+ end
378
+
379
+ def test_higher_level_on_hash
380
+ email = ''
381
+ tree = {
382
+ 'Name' => 'Foo',
383
+ 'FirstName' => 'Bar',
384
+ 'Emails' => {
385
+ 'home' => 'foo312@coldmail.com',
386
+ 'work' => 'bfoo@staff.com',
387
+ 'edu' => 'bar.foo@school.edu'
388
+ }
389
+ }
390
+ path = YAML::YRegexPath.new('Emails#.*=.*\.edu')
391
+ YAML::Transformer.traverse(path, tree) do |key, value|
392
+ assert_instance_of(Hash, value)
393
+ email += "#{value['home']}"
394
+ end
395
+ assert_equal('foo312@coldmail.com', email)
396
+ end
397
+
398
+ # def test_higher_level_on_array
399
+ # users = []
400
+ # tree = {
401
+ # 'users' => [
402
+ # {
403
+ # 'name' => 'Sea',
404
+ # 'tel' => '111'
405
+ # },
406
+ # {
407
+ # 'name' => 'Sex',
408
+ # 'tel' => '222'
409
+ # },
410
+ # {
411
+ # 'name' => 'Sun',
412
+ # 'tel' => '333'
413
+ # }
414
+ # ]
415
+ # }
416
+ # YAML::Transformer.traverse(YAML::YRegexPath.new('users#name=Se'), tree) do
417
+ # |key, value|
418
+ # assert_instance_of(Array, value)
419
+ # value.each do |e|
420
+ # users << "#{e['name']} (#{e['tel']})"
421
+ # end
422
+ # end
423
+ # p users
424
+ # #assert_equal(['Sea (111)', 'Sex (222)'], users)
425
+ # end
426
+
427
+ def test_errors
428
+ engine = nil
429
+ assert_nothing_raised { engine = YAML::Transformer.new }
430
+
431
+ # Not an YRegexPath gived.
432
+ assert_raise(ArgumentError) do
433
+ engine.add('/name') { |key, value| str += "error" }
434
+ end
435
+
436
+ # # Block with only one parameter.
437
+ # assert_raise(ArgumentError) do
438
+ # engine.add(YAML::YRegexPath.new('/name')) { |key| str += "error" }
439
+ # end
440
+
441
+ # No block ginven.
442
+ assert_raise(ArgumentError) do
443
+ engine.add(YAML::YRegexPath.new('/name'))
444
+ end
445
+ end
446
+ end
447
+ end