bee_python 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (503) hide show
  1. data/LICENSE +202 -0
  2. data/build/README +23 -0
  3. data/egg/egg/build.yml +70 -0
  4. data/egg/egg/ez_setup.py +280 -0
  5. data/egg/egg/script.py +12 -0
  6. data/egg/egg/setup.erb +11 -0
  7. data/egg/egg/suite.py +37 -0
  8. data/egg/egg/test.py +31 -0
  9. data/egg/egg.yml +69 -0
  10. data/egg/http/build.erb +53 -0
  11. data/egg/http/server.py +34 -0
  12. data/egg/http.yml +50 -0
  13. data/egg/mysql/mysql.py +43 -0
  14. data/egg/mysql.yml +44 -0
  15. data/egg/project/build.erb +77 -0
  16. data/egg/project/script.py +42 -0
  17. data/egg/project/test.py +31 -0
  18. data/egg/project.yml +59 -0
  19. data/egg/script/build.erb +35 -0
  20. data/egg/script/script.py +42 -0
  21. data/egg/script.yml +50 -0
  22. data/egg/soap/build.erb +52 -0
  23. data/egg/soap/client.py +18 -0
  24. data/egg/soap/server.py +30 -0
  25. data/egg/soap.yml +58 -0
  26. data/egg/source/source.py +42 -0
  27. data/egg/source.yml +47 -0
  28. data/egg/test/test.py +28 -0
  29. data/egg/test.yml +44 -0
  30. data/egg/xmlrpc/build.erb +52 -0
  31. data/egg/xmlrpc/client.py +22 -0
  32. data/egg/xmlrpc/server.py +24 -0
  33. data/egg/xmlrpc.yml +51 -0
  34. data/lib/bee_task_python.rb +390 -0
  35. data/test/build.yml +16 -0
  36. data/test/tc_bee_task_python.rb +27 -0
  37. data/test/test_build.rb +26 -0
  38. data/test/test_build_listener.rb +62 -0
  39. data/test/ts_bee_python.rb +26 -0
  40. data/tools/common/__init__.py +5 -0
  41. data/tools/common/common/__init__.py +140 -0
  42. data/tools/common/common/__pkginfo__.py +43 -0
  43. data/tools/common/common/adbh.py +35 -0
  44. data/tools/common/common/cache.py +114 -0
  45. data/tools/common/common/changelog.py +234 -0
  46. data/tools/common/common/clcommands.py +181 -0
  47. data/tools/common/common/cli.py +212 -0
  48. data/tools/common/common/compat.py +328 -0
  49. data/tools/common/common/configuration.py +1087 -0
  50. data/tools/common/common/contexts.py +58 -0
  51. data/tools/common/common/corbautils.py +117 -0
  52. data/tools/common/common/daemon.py +171 -0
  53. data/tools/common/common/date.py +279 -0
  54. data/tools/common/common/db.py +49 -0
  55. data/tools/common/common/dbf.py +229 -0
  56. data/tools/common/common/debugger.py +208 -0
  57. data/tools/common/common/decorators.py +190 -0
  58. data/tools/common/common/deprecation.py +118 -0
  59. data/tools/common/common/fileutils.py +409 -0
  60. data/tools/common/common/graph.py +259 -0
  61. data/tools/common/common/html.py +142 -0
  62. data/tools/common/common/interface.py +76 -0
  63. data/tools/common/common/logging_ext.py +166 -0
  64. data/tools/common/common/modutils.py +670 -0
  65. data/tools/common/common/optik_ext.py +383 -0
  66. data/tools/common/common/optparser.py +92 -0
  67. data/tools/common/common/pdf_ext.py +111 -0
  68. data/tools/common/common/proc.py +276 -0
  69. data/tools/common/common/pyro_ext.py +146 -0
  70. data/tools/common/common/pytest.py +754 -0
  71. data/tools/common/common/shellutils.py +383 -0
  72. data/tools/common/common/sphinx_ext.py +87 -0
  73. data/tools/common/common/sphinxutils.py +122 -0
  74. data/tools/common/common/sqlgen.py +31 -0
  75. data/tools/common/common/table.py +930 -0
  76. data/tools/common/common/tasksqueue.py +97 -0
  77. data/tools/common/common/test/__init__.py +1 -0
  78. data/tools/common/common/test/data/ChangeLog +184 -0
  79. data/tools/common/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  80. data/tools/common/common/test/data/__init__.py +1 -0
  81. data/tools/common/common/test/data/content_differ_dir/NOTHING +0 -0
  82. data/tools/common/common/test/data/content_differ_dir/README +1 -0
  83. data/tools/common/common/test/data/content_differ_dir/subdir/coin +1 -0
  84. data/tools/common/common/test/data/content_differ_dir/subdir/toto.txt +53 -0
  85. data/tools/common/common/test/data/file_differ_dir/NOTHING +0 -0
  86. data/tools/common/common/test/data/file_differ_dir/README +1 -0
  87. data/tools/common/common/test/data/file_differ_dir/subdir/toto.txt +53 -0
  88. data/tools/common/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
  89. data/tools/common/common/test/data/find_test/__init__.py +0 -0
  90. data/tools/common/common/test/data/find_test/foo.txt +0 -0
  91. data/tools/common/common/test/data/find_test/module.py +0 -0
  92. data/tools/common/common/test/data/find_test/module2.py +0 -0
  93. data/tools/common/common/test/data/find_test/newlines.txt +0 -0
  94. data/tools/common/common/test/data/find_test/noendingnewline.py +0 -0
  95. data/tools/common/common/test/data/find_test/nonregr.py +0 -0
  96. data/tools/common/common/test/data/find_test/normal_file.txt +0 -0
  97. data/tools/common/common/test/data/find_test/spam.txt +0 -0
  98. data/tools/common/common/test/data/find_test/sub/doc.txt +0 -0
  99. data/tools/common/common/test/data/find_test/sub/momo.py +0 -0
  100. data/tools/common/common/test/data/find_test/test.ini +0 -0
  101. data/tools/common/common/test/data/find_test/test1.msg +0 -0
  102. data/tools/common/common/test/data/find_test/test2.msg +0 -0
  103. data/tools/common/common/test/data/find_test/write_protected_file.txt +0 -0
  104. data/tools/common/common/test/data/foo.txt +9 -0
  105. data/tools/common/common/test/data/module.py +88 -0
  106. data/tools/common/common/test/data/module2.py +77 -0
  107. data/tools/common/common/test/data/newlines.txt +3 -0
  108. data/tools/common/common/test/data/noendingnewline.py +36 -0
  109. data/tools/common/common/test/data/nonregr.py +14 -0
  110. data/tools/common/common/test/data/normal_file.txt +0 -0
  111. data/tools/common/common/test/data/reference_dir/NOTHING +0 -0
  112. data/tools/common/common/test/data/reference_dir/README +1 -0
  113. data/tools/common/common/test/data/reference_dir/subdir/coin +1 -0
  114. data/tools/common/common/test/data/reference_dir/subdir/toto.txt +53 -0
  115. data/tools/common/common/test/data/same_dir/NOTHING +0 -0
  116. data/tools/common/common/test/data/same_dir/README +1 -0
  117. data/tools/common/common/test/data/same_dir/subdir/coin +1 -0
  118. data/tools/common/common/test/data/same_dir/subdir/toto.txt +53 -0
  119. data/tools/common/common/test/data/spam.txt +9 -0
  120. data/tools/common/common/test/data/sub/doc.txt +1 -0
  121. data/tools/common/common/test/data/sub/momo.py +1 -0
  122. data/tools/common/common/test/data/subdir_differ_dir/NOTHING +0 -0
  123. data/tools/common/common/test/data/subdir_differ_dir/README +1 -0
  124. data/tools/common/common/test/data/subdir_differ_dir/subdir/coin +1 -0
  125. data/tools/common/common/test/data/subdir_differ_dir/subdir/toto.txt +53 -0
  126. data/tools/common/common/test/data/test.ini +20 -0
  127. data/tools/common/common/test/data/test1.msg +30 -0
  128. data/tools/common/common/test/data/test2.msg +42 -0
  129. data/tools/common/common/test/data/write_protected_file.txt +0 -0
  130. data/tools/common/common/test/foomod.py +17 -0
  131. data/tools/common/common/test/unittest_cache.py +129 -0
  132. data/tools/common/common/test/unittest_changelog.py +37 -0
  133. data/tools/common/common/test/unittest_compat.py +239 -0
  134. data/tools/common/common/test/unittest_configuration.py +348 -0
  135. data/tools/common/common/test/unittest_date.py +154 -0
  136. data/tools/common/common/test/unittest_decorators.py +62 -0
  137. data/tools/common/common/test/unittest_deprecation.py +76 -0
  138. data/tools/common/common/test/unittest_fileutils.py +133 -0
  139. data/tools/common/common/test/unittest_graph.py +50 -0
  140. data/tools/common/common/test/unittest_html.py +76 -0
  141. data/tools/common/common/test/unittest_interface.py +87 -0
  142. data/tools/common/common/test/unittest_modutils.py +244 -0
  143. data/tools/common/common/test/unittest_pytest.py +50 -0
  144. data/tools/common/common/test/unittest_shellutils.py +248 -0
  145. data/tools/common/common/test/unittest_table.py +448 -0
  146. data/tools/common/common/test/unittest_taskqueue.py +71 -0
  147. data/tools/common/common/test/unittest_testlib.py +956 -0
  148. data/tools/common/common/test/unittest_textutils.py +247 -0
  149. data/tools/common/common/test/unittest_tree.py +248 -0
  150. data/tools/common/common/test/unittest_umessage.py +55 -0
  151. data/tools/common/common/test/unittest_ureports_html.py +64 -0
  152. data/tools/common/common/test/unittest_ureports_text.py +105 -0
  153. data/tools/common/common/test/unittest_xmlutils.py +75 -0
  154. data/tools/common/common/test/utils.py +87 -0
  155. data/tools/common/common/testlib.py +1927 -0
  156. data/tools/common/common/textutils.py +476 -0
  157. data/tools/common/common/tree.py +372 -0
  158. data/tools/common/common/umessage.py +161 -0
  159. data/tools/common/common/ureports/__init__.py +174 -0
  160. data/tools/common/common/ureports/docbook_writer.py +139 -0
  161. data/tools/common/common/ureports/html_writer.py +131 -0
  162. data/tools/common/common/ureports/nodes.py +201 -0
  163. data/tools/common/common/ureports/text_writer.py +140 -0
  164. data/tools/common/common/vcgutils.py +216 -0
  165. data/tools/common/common/visitor.py +107 -0
  166. data/tools/common/common/xmlrpcutils.py +136 -0
  167. data/tools/common/common/xmlutils.py +61 -0
  168. data/tools/compile/compile.py +16 -0
  169. data/tools/coverage/coverage.py +602 -0
  170. data/tools/epydoc/__init__.py +227 -0
  171. data/tools/epydoc/__init__.pyc +0 -0
  172. data/tools/epydoc/apidoc.py +2203 -0
  173. data/tools/epydoc/apidoc.pyc +0 -0
  174. data/tools/epydoc/checker.py +349 -0
  175. data/tools/epydoc/checker.pyc +0 -0
  176. data/tools/epydoc/cli.py +1470 -0
  177. data/tools/epydoc/cli.pyc +0 -0
  178. data/tools/epydoc/compat.py +250 -0
  179. data/tools/epydoc/compat.pyc +0 -0
  180. data/tools/epydoc/docbuilder.py +1358 -0
  181. data/tools/epydoc/docbuilder.pyc +0 -0
  182. data/tools/epydoc/docintrospecter.py +1056 -0
  183. data/tools/epydoc/docintrospecter.pyc +0 -0
  184. data/tools/epydoc/docparser.py +2113 -0
  185. data/tools/epydoc/docparser.pyc +0 -0
  186. data/tools/epydoc/docstringparser.py +1111 -0
  187. data/tools/epydoc/docstringparser.pyc +0 -0
  188. data/tools/epydoc/docwriter/__init__.py +12 -0
  189. data/tools/epydoc/docwriter/__init__.pyc +0 -0
  190. data/tools/epydoc/docwriter/dotgraph.py +1351 -0
  191. data/tools/epydoc/docwriter/dotgraph.pyc +0 -0
  192. data/tools/epydoc/docwriter/html.py +3491 -0
  193. data/tools/epydoc/docwriter/html.pyc +0 -0
  194. data/tools/epydoc/docwriter/html_colorize.py +909 -0
  195. data/tools/epydoc/docwriter/html_colorize.pyc +0 -0
  196. data/tools/epydoc/docwriter/html_css.py +550 -0
  197. data/tools/epydoc/docwriter/html_css.pyc +0 -0
  198. data/tools/epydoc/docwriter/html_help.py +190 -0
  199. data/tools/epydoc/docwriter/html_help.pyc +0 -0
  200. data/tools/epydoc/docwriter/latex.py +1187 -0
  201. data/tools/epydoc/docwriter/latex.pyc +0 -0
  202. data/tools/epydoc/docwriter/plaintext.py +276 -0
  203. data/tools/epydoc/docwriter/plaintext.pyc +0 -0
  204. data/tools/epydoc/docwriter/xlink.py +505 -0
  205. data/tools/epydoc/docwriter/xlink.pyc +0 -0
  206. data/tools/epydoc/gui.py +1148 -0
  207. data/tools/epydoc/gui.pyc +0 -0
  208. data/tools/epydoc/log.py +204 -0
  209. data/tools/epydoc/log.pyc +0 -0
  210. data/tools/epydoc/markup/__init__.py +623 -0
  211. data/tools/epydoc/markup/__init__.pyc +0 -0
  212. data/tools/epydoc/markup/doctest.py +311 -0
  213. data/tools/epydoc/markup/doctest.pyc +0 -0
  214. data/tools/epydoc/markup/epytext.py +2116 -0
  215. data/tools/epydoc/markup/epytext.pyc +0 -0
  216. data/tools/epydoc/markup/javadoc.py +250 -0
  217. data/tools/epydoc/markup/javadoc.pyc +0 -0
  218. data/tools/epydoc/markup/plaintext.py +78 -0
  219. data/tools/epydoc/markup/plaintext.pyc +0 -0
  220. data/tools/epydoc/markup/pyval_repr.py +532 -0
  221. data/tools/epydoc/markup/pyval_repr.pyc +0 -0
  222. data/tools/epydoc/markup/restructuredtext.py +906 -0
  223. data/tools/epydoc/markup/restructuredtext.pyc +0 -0
  224. data/tools/epydoc/test/__init__.py +97 -0
  225. data/tools/epydoc/test/__init__.pyc +0 -0
  226. data/tools/epydoc/test/util.py +226 -0
  227. data/tools/epydoc/test/util.pyc +0 -0
  228. data/tools/epydoc/util.py +289 -0
  229. data/tools/epydoc/util.pyc +0 -0
  230. data/tools/logilab/logilab/__init__.py +5 -0
  231. data/tools/logilab/logilab/astng/__init__.py +82 -0
  232. data/tools/logilab/logilab/astng/__pkginfo__.py +76 -0
  233. data/tools/logilab/logilab/astng/_exceptions.py +64 -0
  234. data/tools/logilab/logilab/astng/_nodes_ast.py +667 -0
  235. data/tools/logilab/logilab/astng/_nodes_compiler.py +758 -0
  236. data/tools/logilab/logilab/astng/bases.py +608 -0
  237. data/tools/logilab/logilab/astng/builder.py +239 -0
  238. data/tools/logilab/logilab/astng/inference.py +426 -0
  239. data/tools/logilab/logilab/astng/inspector.py +289 -0
  240. data/tools/logilab/logilab/astng/manager.py +421 -0
  241. data/tools/logilab/logilab/astng/mixins.py +165 -0
  242. data/tools/logilab/logilab/astng/node_classes.py +848 -0
  243. data/tools/logilab/logilab/astng/nodes.py +85 -0
  244. data/tools/logilab/logilab/astng/nodes_as_string.py +389 -0
  245. data/tools/logilab/logilab/astng/patchcomptransformer.py +159 -0
  246. data/tools/logilab/logilab/astng/protocols.py +333 -0
  247. data/tools/logilab/logilab/astng/raw_building.py +212 -0
  248. data/tools/logilab/logilab/astng/rebuilder.py +307 -0
  249. data/tools/logilab/logilab/astng/scoped_nodes.py +951 -0
  250. data/tools/logilab/logilab/astng/test/__init__.py +19 -0
  251. data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  252. data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.zip +0 -0
  253. data/tools/logilab/logilab/astng/test/data/SSL1/Connection1.py +33 -0
  254. data/tools/logilab/logilab/astng/test/data/SSL1/__init__.py +20 -0
  255. data/tools/logilab/logilab/astng/test/data/__init__.py +20 -0
  256. data/tools/logilab/logilab/astng/test/data/all.py +29 -0
  257. data/tools/logilab/logilab/astng/test/data/appl/__init__.py +23 -0
  258. data/tools/logilab/logilab/astng/test/data/appl/myConnection.py +30 -0
  259. data/tools/logilab/logilab/astng/test/data/format.py +34 -0
  260. data/tools/logilab/logilab/astng/test/data/module.py +90 -0
  261. data/tools/logilab/logilab/astng/test/data/module2.py +112 -0
  262. data/tools/logilab/logilab/astng/test/data/noendingnewline.py +57 -0
  263. data/tools/logilab/logilab/astng/test/data/nonregr.py +76 -0
  264. data/tools/logilab/logilab/astng/test/data/notall.py +28 -0
  265. data/tools/logilab/logilab/astng/test/data2/__init__.py +20 -0
  266. data/tools/logilab/logilab/astng/test/data2/clientmodule_test.py +51 -0
  267. data/tools/logilab/logilab/astng/test/data2/suppliermodule_test.py +32 -0
  268. data/tools/logilab/logilab/astng/test/regrtest.py +135 -0
  269. data/tools/logilab/logilab/astng/test/regrtest_data/absimport.py +22 -0
  270. data/tools/logilab/logilab/astng/test/regrtest_data/descriptor_crash.py +31 -0
  271. data/tools/logilab/logilab/astng/test/regrtest_data/import_package_subpackage_module.py +68 -0
  272. data/tools/logilab/logilab/astng/test/regrtest_data/package/__init__.py +24 -0
  273. data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/__init__.py +20 -0
  274. data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/module.py +20 -0
  275. data/tools/logilab/logilab/astng/test/unittest_builder.py +684 -0
  276. data/tools/logilab/logilab/astng/test/unittest_inference.py +1112 -0
  277. data/tools/logilab/logilab/astng/test/unittest_inspector.py +105 -0
  278. data/tools/logilab/logilab/astng/test/unittest_lookup.py +302 -0
  279. data/tools/logilab/logilab/astng/test/unittest_manager.py +98 -0
  280. data/tools/logilab/logilab/astng/test/unittest_nodes.py +302 -0
  281. data/tools/logilab/logilab/astng/test/unittest_scoped_nodes.py +501 -0
  282. data/tools/logilab/logilab/astng/test/unittest_utils.py +104 -0
  283. data/tools/logilab/logilab/astng/utils.py +342 -0
  284. data/tools/logilab/logilab/common/__init__.py +140 -0
  285. data/tools/logilab/logilab/common/__pkginfo__.py +43 -0
  286. data/tools/logilab/logilab/common/adbh.py +35 -0
  287. data/tools/logilab/logilab/common/cache.py +114 -0
  288. data/tools/logilab/logilab/common/changelog.py +234 -0
  289. data/tools/logilab/logilab/common/clcommands.py +181 -0
  290. data/tools/logilab/logilab/common/cli.py +212 -0
  291. data/tools/logilab/logilab/common/compat.py +328 -0
  292. data/tools/logilab/logilab/common/configuration.py +1087 -0
  293. data/tools/logilab/logilab/common/contexts.py +58 -0
  294. data/tools/logilab/logilab/common/corbautils.py +117 -0
  295. data/tools/logilab/logilab/common/daemon.py +171 -0
  296. data/tools/logilab/logilab/common/date.py +279 -0
  297. data/tools/logilab/logilab/common/db.py +49 -0
  298. data/tools/logilab/logilab/common/dbf.py +229 -0
  299. data/tools/logilab/logilab/common/debugger.py +208 -0
  300. data/tools/logilab/logilab/common/decorators.py +190 -0
  301. data/tools/logilab/logilab/common/deprecation.py +118 -0
  302. data/tools/logilab/logilab/common/fileutils.py +409 -0
  303. data/tools/logilab/logilab/common/graph.py +259 -0
  304. data/tools/logilab/logilab/common/html.py +142 -0
  305. data/tools/logilab/logilab/common/interface.py +76 -0
  306. data/tools/logilab/logilab/common/logging_ext.py +166 -0
  307. data/tools/logilab/logilab/common/modutils.py +670 -0
  308. data/tools/logilab/logilab/common/optik_ext.py +383 -0
  309. data/tools/logilab/logilab/common/optparser.py +92 -0
  310. data/tools/logilab/logilab/common/pdf_ext.py +111 -0
  311. data/tools/logilab/logilab/common/proc.py +276 -0
  312. data/tools/logilab/logilab/common/pyro_ext.py +146 -0
  313. data/tools/logilab/logilab/common/pytest.py +754 -0
  314. data/tools/logilab/logilab/common/shellutils.py +383 -0
  315. data/tools/logilab/logilab/common/sphinx_ext.py +87 -0
  316. data/tools/logilab/logilab/common/sphinxutils.py +122 -0
  317. data/tools/logilab/logilab/common/sqlgen.py +31 -0
  318. data/tools/logilab/logilab/common/table.py +930 -0
  319. data/tools/logilab/logilab/common/tasksqueue.py +97 -0
  320. data/tools/logilab/logilab/common/test/__init__.py +1 -0
  321. data/tools/logilab/logilab/common/test/data/ChangeLog +184 -0
  322. data/tools/logilab/logilab/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
  323. data/tools/logilab/logilab/common/test/data/__init__.py +1 -0
  324. data/tools/logilab/logilab/common/test/data/content_differ_dir/NOTHING +0 -0
  325. data/tools/logilab/logilab/common/test/data/content_differ_dir/README +1 -0
  326. data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/coin +1 -0
  327. data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/toto.txt +53 -0
  328. data/tools/logilab/logilab/common/test/data/file_differ_dir/NOTHING +0 -0
  329. data/tools/logilab/logilab/common/test/data/file_differ_dir/README +1 -0
  330. data/tools/logilab/logilab/common/test/data/file_differ_dir/subdir/toto.txt +53 -0
  331. data/tools/logilab/logilab/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
  332. data/tools/logilab/logilab/common/test/data/find_test/__init__.py +0 -0
  333. data/tools/logilab/logilab/common/test/data/find_test/foo.txt +0 -0
  334. data/tools/logilab/logilab/common/test/data/find_test/module.py +0 -0
  335. data/tools/logilab/logilab/common/test/data/find_test/module2.py +0 -0
  336. data/tools/logilab/logilab/common/test/data/find_test/newlines.txt +0 -0
  337. data/tools/logilab/logilab/common/test/data/find_test/noendingnewline.py +0 -0
  338. data/tools/logilab/logilab/common/test/data/find_test/nonregr.py +0 -0
  339. data/tools/logilab/logilab/common/test/data/find_test/normal_file.txt +0 -0
  340. data/tools/logilab/logilab/common/test/data/find_test/spam.txt +0 -0
  341. data/tools/logilab/logilab/common/test/data/find_test/sub/doc.txt +0 -0
  342. data/tools/logilab/logilab/common/test/data/find_test/sub/momo.py +0 -0
  343. data/tools/logilab/logilab/common/test/data/find_test/test.ini +0 -0
  344. data/tools/logilab/logilab/common/test/data/find_test/test1.msg +0 -0
  345. data/tools/logilab/logilab/common/test/data/find_test/test2.msg +0 -0
  346. data/tools/logilab/logilab/common/test/data/find_test/write_protected_file.txt +0 -0
  347. data/tools/logilab/logilab/common/test/data/foo.txt +9 -0
  348. data/tools/logilab/logilab/common/test/data/module.py +88 -0
  349. data/tools/logilab/logilab/common/test/data/module2.py +77 -0
  350. data/tools/logilab/logilab/common/test/data/newlines.txt +3 -0
  351. data/tools/logilab/logilab/common/test/data/noendingnewline.py +36 -0
  352. data/tools/logilab/logilab/common/test/data/nonregr.py +14 -0
  353. data/tools/logilab/logilab/common/test/data/normal_file.txt +0 -0
  354. data/tools/logilab/logilab/common/test/data/reference_dir/NOTHING +0 -0
  355. data/tools/logilab/logilab/common/test/data/reference_dir/README +1 -0
  356. data/tools/logilab/logilab/common/test/data/reference_dir/subdir/coin +1 -0
  357. data/tools/logilab/logilab/common/test/data/reference_dir/subdir/toto.txt +53 -0
  358. data/tools/logilab/logilab/common/test/data/same_dir/NOTHING +0 -0
  359. data/tools/logilab/logilab/common/test/data/same_dir/README +1 -0
  360. data/tools/logilab/logilab/common/test/data/same_dir/subdir/coin +1 -0
  361. data/tools/logilab/logilab/common/test/data/same_dir/subdir/toto.txt +53 -0
  362. data/tools/logilab/logilab/common/test/data/spam.txt +9 -0
  363. data/tools/logilab/logilab/common/test/data/sub/doc.txt +1 -0
  364. data/tools/logilab/logilab/common/test/data/sub/momo.py +1 -0
  365. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/NOTHING +0 -0
  366. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/README +1 -0
  367. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/coin +1 -0
  368. data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/toto.txt +53 -0
  369. data/tools/logilab/logilab/common/test/data/test.ini +20 -0
  370. data/tools/logilab/logilab/common/test/data/test1.msg +30 -0
  371. data/tools/logilab/logilab/common/test/data/test2.msg +42 -0
  372. data/tools/logilab/logilab/common/test/data/write_protected_file.txt +0 -0
  373. data/tools/logilab/logilab/common/test/foomod.py +17 -0
  374. data/tools/logilab/logilab/common/test/unittest_cache.py +129 -0
  375. data/tools/logilab/logilab/common/test/unittest_changelog.py +37 -0
  376. data/tools/logilab/logilab/common/test/unittest_compat.py +239 -0
  377. data/tools/logilab/logilab/common/test/unittest_configuration.py +348 -0
  378. data/tools/logilab/logilab/common/test/unittest_date.py +154 -0
  379. data/tools/logilab/logilab/common/test/unittest_decorators.py +62 -0
  380. data/tools/logilab/logilab/common/test/unittest_deprecation.py +76 -0
  381. data/tools/logilab/logilab/common/test/unittest_fileutils.py +133 -0
  382. data/tools/logilab/logilab/common/test/unittest_graph.py +50 -0
  383. data/tools/logilab/logilab/common/test/unittest_html.py +76 -0
  384. data/tools/logilab/logilab/common/test/unittest_interface.py +87 -0
  385. data/tools/logilab/logilab/common/test/unittest_modutils.py +244 -0
  386. data/tools/logilab/logilab/common/test/unittest_pytest.py +50 -0
  387. data/tools/logilab/logilab/common/test/unittest_shellutils.py +248 -0
  388. data/tools/logilab/logilab/common/test/unittest_table.py +448 -0
  389. data/tools/logilab/logilab/common/test/unittest_taskqueue.py +71 -0
  390. data/tools/logilab/logilab/common/test/unittest_testlib.py +956 -0
  391. data/tools/logilab/logilab/common/test/unittest_textutils.py +247 -0
  392. data/tools/logilab/logilab/common/test/unittest_tree.py +248 -0
  393. data/tools/logilab/logilab/common/test/unittest_umessage.py +55 -0
  394. data/tools/logilab/logilab/common/test/unittest_ureports_html.py +64 -0
  395. data/tools/logilab/logilab/common/test/unittest_ureports_text.py +105 -0
  396. data/tools/logilab/logilab/common/test/unittest_xmlutils.py +75 -0
  397. data/tools/logilab/logilab/common/test/utils.py +87 -0
  398. data/tools/logilab/logilab/common/testlib.py +1927 -0
  399. data/tools/logilab/logilab/common/textutils.py +476 -0
  400. data/tools/logilab/logilab/common/tree.py +372 -0
  401. data/tools/logilab/logilab/common/umessage.py +161 -0
  402. data/tools/logilab/logilab/common/ureports/__init__.py +174 -0
  403. data/tools/logilab/logilab/common/ureports/docbook_writer.py +139 -0
  404. data/tools/logilab/logilab/common/ureports/html_writer.py +131 -0
  405. data/tools/logilab/logilab/common/ureports/nodes.py +201 -0
  406. data/tools/logilab/logilab/common/ureports/text_writer.py +140 -0
  407. data/tools/logilab/logilab/common/vcgutils.py +216 -0
  408. data/tools/logilab/logilab/common/visitor.py +107 -0
  409. data/tools/logilab/logilab/common/xmlrpcutils.py +136 -0
  410. data/tools/logilab/logilab/common/xmlutils.py +61 -0
  411. data/tools/pychecker/COPYRIGHT +31 -0
  412. data/tools/pychecker/ChangeLog +349 -0
  413. data/tools/pychecker/CodeChecks.py +1969 -0
  414. data/tools/pychecker/CodeChecks.pyc +0 -0
  415. data/tools/pychecker/CodeChecks.pyo +0 -0
  416. data/tools/pychecker/Config.py +475 -0
  417. data/tools/pychecker/Config.pyc +0 -0
  418. data/tools/pychecker/Config.pyo +0 -0
  419. data/tools/pychecker/KNOWN_BUGS +100 -0
  420. data/tools/pychecker/MAINTAINERS +81 -0
  421. data/tools/pychecker/NEWS +406 -0
  422. data/tools/pychecker/OP.py +131 -0
  423. data/tools/pychecker/OP.pyc +0 -0
  424. data/tools/pychecker/OP.pyo +0 -0
  425. data/tools/pychecker/OptionTypes.py +117 -0
  426. data/tools/pychecker/OptionTypes.pyc +0 -0
  427. data/tools/pychecker/OptionTypes.pyo +0 -0
  428. data/tools/pychecker/README +152 -0
  429. data/tools/pychecker/Stack.py +115 -0
  430. data/tools/pychecker/Stack.pyc +0 -0
  431. data/tools/pychecker/Stack.pyo +0 -0
  432. data/tools/pychecker/TODO +101 -0
  433. data/tools/pychecker/VERSION +1 -0
  434. data/tools/pychecker/Warning.py +50 -0
  435. data/tools/pychecker/Warning.pyc +0 -0
  436. data/tools/pychecker/Warning.pyo +0 -0
  437. data/tools/pychecker/__init__.py +17 -0
  438. data/tools/pychecker/__init__.pyc +0 -0
  439. data/tools/pychecker/__init__.pyo +0 -0
  440. data/tools/pychecker/checker.py +961 -0
  441. data/tools/pychecker/checker.pyc +0 -0
  442. data/tools/pychecker/checker.pyo +0 -0
  443. data/tools/pychecker/function.py +159 -0
  444. data/tools/pychecker/function.pyc +0 -0
  445. data/tools/pychecker/function.pyo +0 -0
  446. data/tools/pychecker/msgs.py +175 -0
  447. data/tools/pychecker/msgs.pyc +0 -0
  448. data/tools/pychecker/msgs.pyo +0 -0
  449. data/tools/pychecker/options.py +275 -0
  450. data/tools/pychecker/options.pyc +0 -0
  451. data/tools/pychecker/options.pyo +0 -0
  452. data/tools/pychecker/pcmodules.py +19 -0
  453. data/tools/pychecker/pcmodules.pyc +0 -0
  454. data/tools/pychecker/pcmodules.pyo +0 -0
  455. data/tools/pychecker/printer.py +47 -0
  456. data/tools/pychecker/printer.pyc +0 -0
  457. data/tools/pychecker/printer.pyo +0 -0
  458. data/tools/pychecker/python.py +427 -0
  459. data/tools/pychecker/python.pyc +0 -0
  460. data/tools/pychecker/python.pyo +0 -0
  461. data/tools/pychecker/utils.py +102 -0
  462. data/tools/pychecker/utils.pyc +0 -0
  463. data/tools/pychecker/utils.pyo +0 -0
  464. data/tools/pychecker/warn.py +778 -0
  465. data/tools/pychecker/warn.pyc +0 -0
  466. data/tools/pychecker/warn.pyo +0 -0
  467. data/tools/pylint2/pylint/__init__.py +16 -0
  468. data/tools/pylint2/pylint/__pkginfo__.py +67 -0
  469. data/tools/pylint2/pylint/checkers/__init__.py +155 -0
  470. data/tools/pylint2/pylint/checkers/base.py +749 -0
  471. data/tools/pylint2/pylint/checkers/classes.py +527 -0
  472. data/tools/pylint2/pylint/checkers/design_analysis.py +344 -0
  473. data/tools/pylint2/pylint/checkers/exceptions.py +183 -0
  474. data/tools/pylint2/pylint/checkers/format.py +367 -0
  475. data/tools/pylint2/pylint/checkers/imports.py +379 -0
  476. data/tools/pylint2/pylint/checkers/logging.py +98 -0
  477. data/tools/pylint2/pylint/checkers/misc.py +128 -0
  478. data/tools/pylint2/pylint/checkers/newstyle.py +107 -0
  479. data/tools/pylint2/pylint/checkers/raw_metrics.py +125 -0
  480. data/tools/pylint2/pylint/checkers/similar.py +333 -0
  481. data/tools/pylint2/pylint/checkers/string_format.py +239 -0
  482. data/tools/pylint2/pylint/checkers/typecheck.py +364 -0
  483. data/tools/pylint2/pylint/checkers/utils.py +208 -0
  484. data/tools/pylint2/pylint/checkers/variables.py +498 -0
  485. data/tools/pylint2/pylint/config.py +149 -0
  486. data/tools/pylint2/pylint/epylint.py +149 -0
  487. data/tools/pylint2/pylint/gui.py +433 -0
  488. data/tools/pylint2/pylint/interfaces.py +98 -0
  489. data/tools/pylint2/pylint/lint.py +914 -0
  490. data/tools/pylint2/pylint/pyreverse/__init__.py +5 -0
  491. data/tools/pylint2/pylint/pyreverse/diadefslib.py +229 -0
  492. data/tools/pylint2/pylint/pyreverse/diagrams.py +247 -0
  493. data/tools/pylint2/pylint/pyreverse/main.py +123 -0
  494. data/tools/pylint2/pylint/pyreverse/utils.py +131 -0
  495. data/tools/pylint2/pylint/pyreverse/writer.py +196 -0
  496. data/tools/pylint2/pylint/reporters/__init__.py +67 -0
  497. data/tools/pylint2/pylint/reporters/guireporter.py +36 -0
  498. data/tools/pylint2/pylint/reporters/html.py +69 -0
  499. data/tools/pylint2/pylint/reporters/text.py +156 -0
  500. data/tools/pylint2/pylint/utils.py +518 -0
  501. data/tools/pylint2/pylint.py +16 -0
  502. data/tools/test/suite.py +35 -0
  503. metadata +566 -0
@@ -0,0 +1,247 @@
1
+ # -*- coding: utf-8 -*-
2
+ # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
3
+ # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
4
+ #
5
+ # This file is part of logilab-common.
6
+ #
7
+ # logilab-common is free software: you can redistribute it and/or modify it under
8
+ # the terms of the GNU Lesser General Public License as published by the Free
9
+ # Software Foundation, either version 2.1 of the License, or (at your option) any
10
+ # later version.
11
+ #
12
+ # logilab-common is distributed in the hope that it will be useful, but WITHOUT
13
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14
+ # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15
+ # details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License along
18
+ # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
19
+ """
20
+ unit tests for module textutils
21
+ squeleton generated by /home/syt/cvs_work/logilab/pyreverse/py2tests.py on Sep 08 at 09:1:31
22
+
23
+ """
24
+ import re
25
+ from os import linesep
26
+
27
+ from logilab.common import textutils as tu # .textutils import *
28
+ from logilab.common.testlib import TestCase, DocTest, unittest_main
29
+
30
+
31
+ if linesep != '\n':
32
+ import re
33
+ LINE_RGX = re.compile(linesep)
34
+ def ulines(string):
35
+ return LINE_RGX.sub('\n', string)
36
+ else:
37
+ def ulines(string):
38
+ return string
39
+
40
+ class NormalizeTextTC(TestCase):
41
+
42
+ def test_known_values(self):
43
+ self.assertEquals(ulines(tu.normalize_text('''some really malformated
44
+ text.
45
+ With some times some veeeeeeeeeeeeeeerrrrryyyyyyyyyyyyyyyyyyy loooooooooooooooooooooong linnnnnnnnnnnes
46
+
47
+ and empty lines!
48
+ ''')),
49
+ '''some really malformated text. With some times some
50
+ veeeeeeeeeeeeeeerrrrryyyyyyyyyyyyyyyyyyy loooooooooooooooooooooong
51
+ linnnnnnnnnnnes
52
+
53
+ and empty lines!''')
54
+ self.assertTextEquals(ulines(tu.normalize_text('''\
55
+ some ReST formated text
56
+ =======================
57
+ With some times some veeeeeeeeeeeeeeerrrrryyyyyyyyyyyyyyyyyyy loooooooooooooooooooooong linnnnnnnnnnnes
58
+ and normal lines!
59
+
60
+ another paragraph
61
+ ''', rest=True)),
62
+ '''\
63
+ some ReST formated text
64
+ =======================
65
+ With some times some veeeeeeeeeeeeeeerrrrryyyyyyyyyyyyyyyyyyy
66
+ loooooooooooooooooooooong linnnnnnnnnnnes
67
+ and normal lines!
68
+
69
+ another paragraph''')
70
+
71
+ def test_nonregr_unsplitable_word(self):
72
+ self.assertEquals(ulines(tu.normalize_text('''petit complement :
73
+
74
+ http://www.plonefr.net/blog/archive/2005/10/30/tester-la-future-infrastructure-i18n
75
+ ''', 80)),
76
+ '''petit complement :
77
+
78
+ http://www.plonefr.net/blog/archive/2005/10/30/tester-la-future-infrastructure-i18n''')
79
+
80
+
81
+ def test_nonregr_rest_normalize(self):
82
+ self.assertEquals(ulines(tu.normalize_text("""... Il est donc evident que tout le monde doit lire le compte-rendu de RSH et aller discuter avec les autres si c'est utile ou necessaire.
83
+ """, rest=True)), """... Il est donc evident que tout le monde doit lire le compte-rendu de RSH et
84
+ aller discuter avec les autres si c'est utile ou necessaire.""")
85
+
86
+ def test_normalize_rest_paragraph(self):
87
+ self.assertEquals(ulines(tu.normalize_rest_paragraph("""**nico**: toto""")),
88
+ """**nico**: toto""")
89
+
90
+ def test_normalize_rest_paragraph2(self):
91
+ self.assertEquals(ulines(tu.normalize_rest_paragraph(""".. _tdm: http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Table-des-matieres/.20_adaa41fb-c125-4919-aece-049601e81c8e_0_0.pdf
92
+ .. _extrait: http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Extrait-du-livre/.20_d6eed0be-0d36-4384-be59-2dd09e081012_0_0.pdf""", indent='> ')),
93
+ """> .. _tdm:
94
+ > http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Table-des-matieres/.20_adaa41fb-c125-4919-aece-049601e81c8e_0_0.pdf
95
+ > .. _extrait:
96
+ > http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Extrait-du-livre/.20_d6eed0be-0d36-4384-be59-2dd09e081012_0_0.pdf""")
97
+
98
+ def test_normalize_paragraph2(self):
99
+ self.assertEquals(ulines(tu.normalize_paragraph(""".. _tdm: http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Table-des-matieres/.20_adaa41fb-c125-4919-aece-049601e81c8e_0_0.pdf
100
+ .. _extrait: http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Extrait-du-livre/.20_d6eed0be-0d36-4384-be59-2dd09e081012_0_0.pdf""", indent='> ')),
101
+ """> .. _tdm:
102
+ > http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Table-des-matieres/.20_adaa41fb-c125-4919-aece-049601e81c8e_0_0.pdf
103
+ > .. _extrait:
104
+ > http://www.editions-eni.fr/Livres/Python-Les-fondamentaux-du-langage---La-programmation-pour-les-scientifiques-Extrait-du-livre/.20_d6eed0be-0d36-4384-be59-2dd09e081012_0_0.pdf""")
105
+
106
+ class NormalizeParagraphTC(TestCase):
107
+
108
+ def test_known_values(self):
109
+ self.assertEquals(ulines(tu.normalize_text("""This package contains test files shared by the logilab-common package. It isn't
110
+ necessary to install this package unless you want to execute or look at
111
+ the tests.""", indent=' ', line_len=70)),
112
+ """\
113
+ This package contains test files shared by the logilab-common
114
+ package. It isn't necessary to install this package unless you want
115
+ to execute or look at the tests.""")
116
+
117
+
118
+ class GetCsvTC(TestCase):
119
+
120
+ def test_known(self):
121
+ self.assertEquals(tu.splitstrip('a, b,c '), ['a', 'b', 'c'])
122
+
123
+ class UnitsTC(TestCase):
124
+
125
+ def setUp(self):
126
+ self.units = {
127
+ 'm':60,
128
+ 'kb':1024,
129
+ 'mb':1024*1024,
130
+ }
131
+
132
+ def test_empty_base(self):
133
+ self.assertEquals(tu.apply_units('17', {}), 17)
134
+
135
+ def test_empty_inter(self):
136
+ def inter(value):
137
+ return int(float(value)) * 2
138
+ result = tu.apply_units('12.4', {}, inter=inter)
139
+ self.assertEquals(result, 12 * 2)
140
+ self.assertIsInstance(result, float)
141
+
142
+ def test_empty_final(self):
143
+ # int('12.4') raise value error
144
+ self.assertRaises(ValueError, tu.apply_units,'12.4', {}, final=int)
145
+
146
+ def test_empty_inter_final(self):
147
+ result = tu.apply_units('12.4', {}, inter=float,final=int)
148
+ self.assertEquals(result, 12)
149
+ self.assertIsInstance(result, int)
150
+
151
+ def test_blank_base(self):
152
+ result = tu.apply_units(' 42 ', {}, final=int)
153
+ self.assertEquals(result, 42)
154
+
155
+ def test_blank_space(self):
156
+ result = tu.apply_units(' 1 337 ', {}, final=int)
157
+ self.assertEquals(result, 1337)
158
+
159
+ def test_blank_coma(self):
160
+ result = tu.apply_units(' 4,298.42 ', {})
161
+ self.assertEquals(result, 4298.42)
162
+
163
+ def test_blank_mixed(self):
164
+ result = tu.apply_units('45, 317, 337', {},final=int)
165
+ self.assertEquals(result, 45317337)
166
+
167
+ def test_unit_singleunit_singleletter(self):
168
+ result = tu.apply_units('15m', self.units)
169
+ self.assertEquals(result, 15 * self.units['m'] )
170
+
171
+ def test_unit_singleunit_multipleletter(self):
172
+ result = tu.apply_units('47KB', self.units)
173
+ self.assertEquals(result, 47 * self.units['kb'] )
174
+
175
+ def test_unit_singleunit_caseinsensitive(self):
176
+ result = tu.apply_units('47kb', self.units)
177
+ self.assertEquals(result, 47 * self.units['kb'] )
178
+
179
+ def test_unit_multipleunit(self):
180
+ result = tu.apply_units('47KB 1.5MB', self.units)
181
+ self.assertEquals(result, 47 * self.units['kb'] + 1.5 * self.units['mb'])
182
+
183
+ def test_unit_with_blank(self):
184
+ result = tu.apply_units('1 000 KB', self.units)
185
+ self.assertEquals(result, 1000 * self.units['kb'])
186
+
187
+ RGX = re.compile('abcd')
188
+ class PrettyMatchTC(TestCase):
189
+
190
+ def test_known(self):
191
+ string = 'hiuherabcdef'
192
+ self.assertEquals(ulines(tu.pretty_match(RGX.search(string), string)),
193
+ 'hiuherabcdef\n ^^^^')
194
+ def test_known_values_1(self):
195
+ rgx = re.compile('(to*)')
196
+ string = 'toto'
197
+ match = rgx.search(string)
198
+ self.assertEquals(ulines(tu.pretty_match(match, string)), '''toto
199
+ ^^''')
200
+
201
+ def test_known_values_2(self):
202
+ rgx = re.compile('(to*)')
203
+ string = ''' ... ... to to
204
+ ... ... '''
205
+ match = rgx.search(string)
206
+ self.assertEquals(ulines(tu.pretty_match(match, string)), ''' ... ... to to
207
+ ^^
208
+ ... ...''')
209
+
210
+
211
+
212
+ class UnquoteTC(TestCase):
213
+ def test(self):
214
+ self.assertEquals(tu.unquote('"toto"'), 'toto')
215
+ self.assertEquals(tu.unquote("'l'inenarrable toto'"), "l'inenarrable toto")
216
+ self.assertEquals(tu.unquote("no quote"), "no quote")
217
+
218
+
219
+ class ColorizeAnsiTC(TestCase):
220
+ def test_known(self):
221
+ self.assertEquals(tu.colorize_ansi('hello', 'blue', 'strike'), '\x1b[9;34mhello\x1b[0m')
222
+ self.assertEquals(tu.colorize_ansi('hello', style='strike, inverse'), '\x1b[9;7mhello\x1b[0m')
223
+ self.assertEquals(tu.colorize_ansi('hello', None, None), 'hello')
224
+ self.assertEquals(tu.colorize_ansi('hello', '', ''), 'hello')
225
+ def test_raise(self):
226
+ self.assertRaises(KeyError, tu.colorize_ansi, 'hello', 'bleu', None)
227
+ self.assertRaises(KeyError, tu.colorize_ansi, 'hello', None, 'italique')
228
+
229
+
230
+ class UnormalizeTC(TestCase):
231
+ def test_unormalize(self):
232
+ data = [(u'\u0153nologie', u'oenologie'),
233
+ (u'\u0152nologie', u'OEnologie'),
234
+ (u'l\xf8to', u'loto'),
235
+ (u'été', u'ete'),
236
+ ]
237
+ for input, output in data:
238
+ yield self.assertEquals, tu.unormalize(input), output
239
+
240
+ class ModuleDocTest(DocTest):
241
+ """test doc test in this module"""
242
+ module = tu
243
+ # from logilab.common import textutils as module
244
+ del DocTest # necessary if we don't want it to be executed (we don't...)
245
+
246
+ if __name__ == '__main__':
247
+ unittest_main()
@@ -0,0 +1,248 @@
1
+ # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2
+ # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3
+ #
4
+ # This file is part of logilab-common.
5
+ #
6
+ # logilab-common is free software: you can redistribute it and/or modify it under
7
+ # the terms of the GNU Lesser General Public License as published by the Free
8
+ # Software Foundation, either version 2.1 of the License, or (at your option) any
9
+ # later version.
10
+ #
11
+ # logilab-common is distributed in the hope that it will be useful, but WITHOUT
12
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
+ # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14
+ # details.
15
+ #
16
+ # You should have received a copy of the GNU Lesser General Public License along
17
+ # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
18
+ """
19
+ unit tests for module logilab.common.tree
20
+ squeleton generated by /home/syt/bin/py2tests on Jan 20 at 10:43:25
21
+ """
22
+ __revision__ = "$Id: unittest_tree.py,v 1.1 2010/06/11 09:23:45 casa Exp $"
23
+
24
+ from logilab.common.testlib import TestCase, unittest_main
25
+ from logilab.common.tree import *
26
+
27
+ tree = ('root', (
28
+ ('child_1_1', (
29
+ ('child_2_1', ()), ('child_2_2', (
30
+ ('child_3_1', ()),
31
+ )))),
32
+ ('child_1_2', (('child_2_3', ()),))))
33
+
34
+ def make_tree(tuple):
35
+ n = Node(tuple[0])
36
+ for child in tuple[1]:
37
+ n.append(make_tree(child))
38
+ return n
39
+
40
+ class Node_ClassTest(TestCase):
41
+ """ a basic tree node, caracterised by an id"""
42
+ def setUp(self):
43
+ """ called before each test from this class """
44
+ self.o = make_tree(tree)
45
+
46
+
47
+ def test_flatten(self):
48
+ result = [r.id for r in self.o.flatten()]
49
+ expected = ['root', 'child_1_1', 'child_2_1', 'child_2_2', 'child_3_1', 'child_1_2', 'child_2_3']
50
+ self.assertListEqual(result, expected)
51
+
52
+ def test_flatten_with_outlist(self):
53
+ resultnodes = []
54
+ self.o.flatten(resultnodes)
55
+ result = [r.id for r in resultnodes]
56
+ expected = ['root', 'child_1_1', 'child_2_1', 'child_2_2', 'child_3_1', 'child_1_2', 'child_2_3']
57
+ self.assertListEqual(result, expected)
58
+
59
+
60
+ def test_known_values_remove(self):
61
+ """
62
+ remove a child node
63
+ """
64
+ self.o.remove(self.o.get_node_by_id('child_1_1'))
65
+ self.assertRaises(NodeNotFound, self.o.get_node_by_id, 'child_1_1')
66
+
67
+ def test_known_values_replace(self):
68
+ """
69
+ replace a child node with another
70
+ """
71
+ self.o.replace(self.o.get_node_by_id('child_1_1'), Node('hoho'))
72
+ self.assertRaises(NodeNotFound, self.o.get_node_by_id, 'child_1_1')
73
+ self.assertEqual(self.o.get_node_by_id('hoho'), self.o.children[0])
74
+
75
+ def test_known_values_get_sibling(self):
76
+ """
77
+ return the sibling node that has given id
78
+ """
79
+ self.assertEqual(self.o.children[0].get_sibling('child_1_2'), self.o.children[1], None)
80
+
81
+ def test_raise_get_sibling_NodeNotFound(self):
82
+ self.assertRaises(NodeNotFound, self.o.children[0].get_sibling, 'houhou')
83
+
84
+ def test_known_values_get_node_by_id(self):
85
+ """
86
+ return node in whole hierarchy that has given id
87
+ """
88
+ self.assertEqual(self.o.get_node_by_id('child_1_1'), self.o.children[0])
89
+
90
+ def test_raise_get_node_by_id_NodeNotFound(self):
91
+ self.assertRaises(NodeNotFound, self.o.get_node_by_id, 'houhou')
92
+
93
+ def test_known_values_get_child_by_id(self):
94
+ """
95
+ return child of given id
96
+ """
97
+ self.assertEqual(self.o.get_child_by_id('child_2_1', recurse=1), self.o.children[0].children[0])
98
+
99
+ def test_raise_get_child_by_id_NodeNotFound(self):
100
+ self.assertRaises(NodeNotFound, self.o.get_child_by_id, nid='child_2_1')
101
+ self.assertRaises(NodeNotFound, self.o.get_child_by_id, 'houhou')
102
+
103
+ def test_known_values_get_child_by_path(self):
104
+ """
105
+ return child of given path (path is a list of ids)
106
+ """
107
+ self.assertEqual(self.o.get_child_by_path(['root', 'child_1_1', 'child_2_1']), self.o.children[0].children[0])
108
+
109
+ def test_raise_get_child_by_path_NodeNotFound(self):
110
+ self.assertRaises(NodeNotFound, self.o.get_child_by_path, ['child_1_1', 'child_2_11'])
111
+
112
+ def test_known_values_depth_down(self):
113
+ """
114
+ return depth of this node in the tree
115
+ """
116
+ self.assertEqual(self.o.depth_down(), 4)
117
+ self.assertEqual(self.o.get_child_by_id('child_2_1',True).depth_down(), 1)
118
+
119
+ def test_known_values_depth(self):
120
+ """
121
+ return depth of this node in the tree
122
+ """
123
+ self.assertEqual(self.o.depth(), 0)
124
+ self.assertEqual(self.o.get_child_by_id('child_2_1',True).depth(), 2)
125
+
126
+ def test_known_values_width(self):
127
+ """
128
+ return depth of this node in the tree
129
+ """
130
+ self.assertEqual(self.o.width(), 3)
131
+ self.assertEqual(self.o.get_child_by_id('child_2_1',True).width(), 1)
132
+
133
+ def test_known_values_root(self):
134
+ """
135
+ return the root node of the tree
136
+ """
137
+ self.assertEqual(self.o.get_child_by_id('child_2_1', True).root(), self.o)
138
+
139
+ def test_known_values_leaves(self):
140
+ """
141
+ return a list with all the leaf nodes descendant from this task
142
+ """
143
+ self.assertEqual(self.o.leaves(), [self.o.get_child_by_id('child_2_1',True),
144
+ self.o.get_child_by_id('child_3_1',True),
145
+ self.o.get_child_by_id('child_2_3',True)])
146
+
147
+ def test_known_values_lineage(self):
148
+ c31 = self.o.get_child_by_id('child_3_1',True)
149
+ self.assertEqual(c31.lineage(), [self.o.get_child_by_id('child_3_1',True),
150
+ self.o.get_child_by_id('child_2_2',True),
151
+ self.o.get_child_by_id('child_1_1',True),
152
+ self.o])
153
+
154
+
155
+ class post_order_list_FunctionTest(TestCase):
156
+ """"""
157
+ def setUp(self):
158
+ """ called before each test from this class """
159
+ self.o = make_tree(tree)
160
+
161
+ def test_known_values_post_order_list(self):
162
+ """
163
+ create a list with tree nodes for which the <filter> function returned true
164
+ in a post order foashion
165
+ """
166
+ L = ['child_2_1', 'child_3_1', 'child_2_2', 'child_1_1', 'child_2_3', 'child_1_2', 'root']
167
+ l = [n.id for n in post_order_list(self.o)]
168
+ self.assertEqual(l, L, l)
169
+
170
+ def test_known_values_post_order_list2(self):
171
+ """
172
+ create a list with tree nodes for which the <filter> function returned true
173
+ in a post order foashion
174
+ """
175
+ def filter(node):
176
+ if node.id == 'child_2_2':
177
+ return 0
178
+ return 1
179
+ L = ['child_2_1', 'child_1_1', 'child_2_3', 'child_1_2', 'root']
180
+ l = [n.id for n in post_order_list(self.o, filter)]
181
+ self.assertEqual(l, L, l)
182
+
183
+
184
+ class PostfixedDepthFirstIterator_ClassTest(TestCase):
185
+ """"""
186
+ def setUp(self):
187
+ """ called before each test from this class """
188
+ self.o = make_tree(tree)
189
+
190
+ def test_known_values_next(self):
191
+ L = ['child_2_1', 'child_3_1', 'child_2_2', 'child_1_1', 'child_2_3', 'child_1_2', 'root']
192
+ iter = PostfixedDepthFirstIterator(self.o)
193
+ o = iter.next()
194
+ i = 0
195
+ while o:
196
+ self.assertEqual(o.id, L[i])
197
+ o = iter.next()
198
+ i += 1
199
+
200
+
201
+ class pre_order_list_FunctionTest(TestCase):
202
+ """"""
203
+ def setUp(self):
204
+ """ called before each test from this class """
205
+ self.o = make_tree(tree)
206
+
207
+ def test_known_values_pre_order_list(self):
208
+ """
209
+ create a list with tree nodes for which the <filter> function returned true
210
+ in a pre order fashion
211
+ """
212
+ L = ['root', 'child_1_1', 'child_2_1', 'child_2_2', 'child_3_1', 'child_1_2', 'child_2_3']
213
+ l = [n.id for n in pre_order_list(self.o)]
214
+ self.assertEqual(l, L, l)
215
+
216
+ def test_known_values_pre_order_list2(self):
217
+ """
218
+ create a list with tree nodes for which the <filter> function returned true
219
+ in a pre order fashion
220
+ """
221
+ def filter(node):
222
+ if node.id == 'child_2_2':
223
+ return 0
224
+ return 1
225
+ L = ['root', 'child_1_1', 'child_2_1', 'child_1_2', 'child_2_3']
226
+ l = [n.id for n in pre_order_list(self.o, filter)]
227
+ self.assertEqual(l, L, l)
228
+
229
+
230
+ class PrefixedDepthFirstIterator_ClassTest(TestCase):
231
+ """"""
232
+ def setUp(self):
233
+ """ called before each test from this class """
234
+ self.o = make_tree(tree)
235
+
236
+ def test_known_values_next(self):
237
+ L = ['root', 'child_1_1', 'child_2_1', 'child_2_2', 'child_3_1', 'child_1_2', 'child_2_3']
238
+ iter = PrefixedDepthFirstIterator(self.o)
239
+ o = iter.next()
240
+ i = 0
241
+ while o:
242
+ self.assertEqual(o.id, L[i])
243
+ o = iter.next()
244
+ i += 1
245
+
246
+
247
+ if __name__ == '__main__':
248
+ unittest_main()
@@ -0,0 +1,55 @@
1
+ # encoding: iso-8859-15
2
+ # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
3
+ # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
4
+ #
5
+ # This file is part of logilab-common.
6
+ #
7
+ # logilab-common is free software: you can redistribute it and/or modify it under
8
+ # the terms of the GNU Lesser General Public License as published by the Free
9
+ # Software Foundation, either version 2.1 of the License, or (at your option) any
10
+ # later version.
11
+ #
12
+ # logilab-common is distributed in the hope that it will be useful, but WITHOUT
13
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14
+ # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15
+ # details.
16
+ #
17
+ # You should have received a copy of the GNU Lesser General Public License along
18
+ # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
19
+
20
+ from logilab.common.testlib import TestCase, unittest_main
21
+ from logilab.common.umessage import UMessage, decode_QP
22
+
23
+ import email
24
+
25
+ class UMessageTC(TestCase):
26
+
27
+ def setUp(self):
28
+ msg1 = email.message_from_file(open('data/test1.msg'))
29
+ self.umessage1 = UMessage(msg1)
30
+ msg2 = email.message_from_file(open('data/test2.msg'))
31
+ self.umessage2 = UMessage(msg2)
32
+
33
+ def test_get_subject(self):
34
+ subj = self.umessage2.get('Subject')
35
+ self.assertEquals(type(subj), unicode)
36
+ self.assertEquals(subj, u'� LA MER')
37
+
38
+ def test_get_all(self):
39
+ to = self.umessage2.get_all('To')
40
+ self.assertEquals(type(to[0]), unicode)
41
+ self.assertEquals(to, [u'�l�ment � accents <alf@logilab.fr>'])
42
+
43
+ def test_get_payload_no_multi(self):
44
+ payload = self.umessage1.get_payload()
45
+ self.assertEquals(type(payload), unicode)
46
+
47
+ def test_decode_QP(self):
48
+ test_line = '=??b?UmFwaGHrbA==?= DUPONT<raphael.dupont@societe.fr>'
49
+ test = decode_QP(test_line)
50
+ self.assertEquals(type(test), unicode)
51
+ self.assertEquals(test, u'Rapha�l DUPONT<raphael.dupont@societe.fr>')
52
+
53
+
54
+ if __name__ == '__main__':
55
+ unittest_main()
@@ -0,0 +1,64 @@
1
+ # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
2
+ # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
3
+ #
4
+ # This file is part of logilab-common.
5
+ #
6
+ # logilab-common is free software: you can redistribute it and/or modify it under
7
+ # the terms of the GNU Lesser General Public License as published by the Free
8
+ # Software Foundation, either version 2.1 of the License, or (at your option) any
9
+ # later version.
10
+ #
11
+ # logilab-common is distributed in the hope that it will be useful, but WITHOUT
12
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13
+ # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14
+ # details.
15
+ #
16
+ # You should have received a copy of the GNU Lesser General Public License along
17
+ # with logilab-common. If not, see <http://www.gnu.org/licenses/>.
18
+ '''unit tests for ureports.html_writer
19
+ '''
20
+
21
+ __revision__ = "$Id: unittest_ureports_html.py,v 1.1 2010/06/11 09:23:46 casa Exp $"
22
+
23
+ from utils import WriterTC
24
+ from logilab.common.testlib import TestCase, unittest_main
25
+ from logilab.common.ureports.html_writer import *
26
+
27
+ class HTMLWriterTC(TestCase, WriterTC):
28
+
29
+ def setUp(self):
30
+ self.writer = HTMLWriter(1)
31
+
32
+ # Section tests ###########################################################
33
+ section_base = '''<div>
34
+ <h1>Section title</h1>
35
+ <p>Section\'s description.
36
+ Blabla bla</p></div>
37
+ '''
38
+ section_nested = '''<div>\n<h1>Section title</h1>\n<p>Section\'s description.\nBlabla bla</p><div>\n<h2>Subsection</h2>\n<p>Sub section description</p></div>\n</div>\n'''
39
+
40
+ # List tests ##############################################################
41
+ list_base = '''<ul>\n<li>item1</li>\n<li>item2</li>\n<li>item3</li>\n<li>item4</li>\n</ul>\n'''
42
+
43
+ nested_list = '''<ul>
44
+ <li><p>blabla<ul>
45
+ <li>1</li>
46
+ <li>2</li>
47
+ <li>3</li>
48
+ </ul>
49
+ </p></li>
50
+ <li>an other point</li>
51
+ </ul>
52
+ '''
53
+
54
+ # Table tests #############################################################
55
+ table_base = '''<table>\n<tr class="odd">\n<td>head1</td>\n<td>head2</td>\n</tr>\n<tr class="even">\n<td>cell1</td>\n<td>cell2</td>\n</tr>\n</table>\n'''
56
+ field_table = '''<table class="field" id="mytable">\n<tr class="odd">\n<td>f1</td>\n<td>v1</td>\n</tr>\n<tr class="even">\n<td>f22</td>\n<td>v22</td>\n</tr>\n<tr class="odd">\n<td>f333</td>\n<td>v333</td>\n</tr>\n</table>\n'''
57
+ advanced_table = '''<table class="whatever" id="mytable">\n<tr class="header">\n<th>field</th>\n<th>value</th>\n</tr>\n<tr class="even">\n<td>f1</td>\n<td>v1</td>\n</tr>\n<tr class="odd">\n<td>f22</td>\n<td>v22</td>\n</tr>\n<tr class="even">\n<td>f333</td>\n<td>v333</td>\n</tr>\n<tr class="odd">\n<td> <a href="http://www.perdu.com">toi perdu ?</a></td>\n<td>&#160;</td>\n</tr>\n</table>\n'''
58
+
59
+
60
+ # VerbatimText tests ######################################################
61
+ verbatim_base = '''<pre>blablabla</pre>'''
62
+
63
+ if __name__ == '__main__':
64
+ unittest_main()