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.
- data/LICENSE +202 -0
- data/build/README +23 -0
- data/egg/egg/build.yml +70 -0
- data/egg/egg/ez_setup.py +280 -0
- data/egg/egg/script.py +12 -0
- data/egg/egg/setup.erb +11 -0
- data/egg/egg/suite.py +37 -0
- data/egg/egg/test.py +31 -0
- data/egg/egg.yml +69 -0
- data/egg/http/build.erb +53 -0
- data/egg/http/server.py +34 -0
- data/egg/http.yml +50 -0
- data/egg/mysql/mysql.py +43 -0
- data/egg/mysql.yml +44 -0
- data/egg/project/build.erb +77 -0
- data/egg/project/script.py +42 -0
- data/egg/project/test.py +31 -0
- data/egg/project.yml +59 -0
- data/egg/script/build.erb +35 -0
- data/egg/script/script.py +42 -0
- data/egg/script.yml +50 -0
- data/egg/soap/build.erb +52 -0
- data/egg/soap/client.py +18 -0
- data/egg/soap/server.py +30 -0
- data/egg/soap.yml +58 -0
- data/egg/source/source.py +42 -0
- data/egg/source.yml +47 -0
- data/egg/test/test.py +28 -0
- data/egg/test.yml +44 -0
- data/egg/xmlrpc/build.erb +52 -0
- data/egg/xmlrpc/client.py +22 -0
- data/egg/xmlrpc/server.py +24 -0
- data/egg/xmlrpc.yml +51 -0
- data/lib/bee_task_python.rb +390 -0
- data/test/build.yml +16 -0
- data/test/tc_bee_task_python.rb +27 -0
- data/test/test_build.rb +26 -0
- data/test/test_build_listener.rb +62 -0
- data/test/ts_bee_python.rb +26 -0
- data/tools/common/__init__.py +5 -0
- data/tools/common/common/__init__.py +140 -0
- data/tools/common/common/__pkginfo__.py +43 -0
- data/tools/common/common/adbh.py +35 -0
- data/tools/common/common/cache.py +114 -0
- data/tools/common/common/changelog.py +234 -0
- data/tools/common/common/clcommands.py +181 -0
- data/tools/common/common/cli.py +212 -0
- data/tools/common/common/compat.py +328 -0
- data/tools/common/common/configuration.py +1087 -0
- data/tools/common/common/contexts.py +58 -0
- data/tools/common/common/corbautils.py +117 -0
- data/tools/common/common/daemon.py +171 -0
- data/tools/common/common/date.py +279 -0
- data/tools/common/common/db.py +49 -0
- data/tools/common/common/dbf.py +229 -0
- data/tools/common/common/debugger.py +208 -0
- data/tools/common/common/decorators.py +190 -0
- data/tools/common/common/deprecation.py +118 -0
- data/tools/common/common/fileutils.py +409 -0
- data/tools/common/common/graph.py +259 -0
- data/tools/common/common/html.py +142 -0
- data/tools/common/common/interface.py +76 -0
- data/tools/common/common/logging_ext.py +166 -0
- data/tools/common/common/modutils.py +670 -0
- data/tools/common/common/optik_ext.py +383 -0
- data/tools/common/common/optparser.py +92 -0
- data/tools/common/common/pdf_ext.py +111 -0
- data/tools/common/common/proc.py +276 -0
- data/tools/common/common/pyro_ext.py +146 -0
- data/tools/common/common/pytest.py +754 -0
- data/tools/common/common/shellutils.py +383 -0
- data/tools/common/common/sphinx_ext.py +87 -0
- data/tools/common/common/sphinxutils.py +122 -0
- data/tools/common/common/sqlgen.py +31 -0
- data/tools/common/common/table.py +930 -0
- data/tools/common/common/tasksqueue.py +97 -0
- data/tools/common/common/test/__init__.py +1 -0
- data/tools/common/common/test/data/ChangeLog +184 -0
- data/tools/common/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
- data/tools/common/common/test/data/__init__.py +1 -0
- data/tools/common/common/test/data/content_differ_dir/NOTHING +0 -0
- data/tools/common/common/test/data/content_differ_dir/README +1 -0
- data/tools/common/common/test/data/content_differ_dir/subdir/coin +1 -0
- data/tools/common/common/test/data/content_differ_dir/subdir/toto.txt +53 -0
- data/tools/common/common/test/data/file_differ_dir/NOTHING +0 -0
- data/tools/common/common/test/data/file_differ_dir/README +1 -0
- data/tools/common/common/test/data/file_differ_dir/subdir/toto.txt +53 -0
- data/tools/common/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
- data/tools/common/common/test/data/find_test/__init__.py +0 -0
- data/tools/common/common/test/data/find_test/foo.txt +0 -0
- data/tools/common/common/test/data/find_test/module.py +0 -0
- data/tools/common/common/test/data/find_test/module2.py +0 -0
- data/tools/common/common/test/data/find_test/newlines.txt +0 -0
- data/tools/common/common/test/data/find_test/noendingnewline.py +0 -0
- data/tools/common/common/test/data/find_test/nonregr.py +0 -0
- data/tools/common/common/test/data/find_test/normal_file.txt +0 -0
- data/tools/common/common/test/data/find_test/spam.txt +0 -0
- data/tools/common/common/test/data/find_test/sub/doc.txt +0 -0
- data/tools/common/common/test/data/find_test/sub/momo.py +0 -0
- data/tools/common/common/test/data/find_test/test.ini +0 -0
- data/tools/common/common/test/data/find_test/test1.msg +0 -0
- data/tools/common/common/test/data/find_test/test2.msg +0 -0
- data/tools/common/common/test/data/find_test/write_protected_file.txt +0 -0
- data/tools/common/common/test/data/foo.txt +9 -0
- data/tools/common/common/test/data/module.py +88 -0
- data/tools/common/common/test/data/module2.py +77 -0
- data/tools/common/common/test/data/newlines.txt +3 -0
- data/tools/common/common/test/data/noendingnewline.py +36 -0
- data/tools/common/common/test/data/nonregr.py +14 -0
- data/tools/common/common/test/data/normal_file.txt +0 -0
- data/tools/common/common/test/data/reference_dir/NOTHING +0 -0
- data/tools/common/common/test/data/reference_dir/README +1 -0
- data/tools/common/common/test/data/reference_dir/subdir/coin +1 -0
- data/tools/common/common/test/data/reference_dir/subdir/toto.txt +53 -0
- data/tools/common/common/test/data/same_dir/NOTHING +0 -0
- data/tools/common/common/test/data/same_dir/README +1 -0
- data/tools/common/common/test/data/same_dir/subdir/coin +1 -0
- data/tools/common/common/test/data/same_dir/subdir/toto.txt +53 -0
- data/tools/common/common/test/data/spam.txt +9 -0
- data/tools/common/common/test/data/sub/doc.txt +1 -0
- data/tools/common/common/test/data/sub/momo.py +1 -0
- data/tools/common/common/test/data/subdir_differ_dir/NOTHING +0 -0
- data/tools/common/common/test/data/subdir_differ_dir/README +1 -0
- data/tools/common/common/test/data/subdir_differ_dir/subdir/coin +1 -0
- data/tools/common/common/test/data/subdir_differ_dir/subdir/toto.txt +53 -0
- data/tools/common/common/test/data/test.ini +20 -0
- data/tools/common/common/test/data/test1.msg +30 -0
- data/tools/common/common/test/data/test2.msg +42 -0
- data/tools/common/common/test/data/write_protected_file.txt +0 -0
- data/tools/common/common/test/foomod.py +17 -0
- data/tools/common/common/test/unittest_cache.py +129 -0
- data/tools/common/common/test/unittest_changelog.py +37 -0
- data/tools/common/common/test/unittest_compat.py +239 -0
- data/tools/common/common/test/unittest_configuration.py +348 -0
- data/tools/common/common/test/unittest_date.py +154 -0
- data/tools/common/common/test/unittest_decorators.py +62 -0
- data/tools/common/common/test/unittest_deprecation.py +76 -0
- data/tools/common/common/test/unittest_fileutils.py +133 -0
- data/tools/common/common/test/unittest_graph.py +50 -0
- data/tools/common/common/test/unittest_html.py +76 -0
- data/tools/common/common/test/unittest_interface.py +87 -0
- data/tools/common/common/test/unittest_modutils.py +244 -0
- data/tools/common/common/test/unittest_pytest.py +50 -0
- data/tools/common/common/test/unittest_shellutils.py +248 -0
- data/tools/common/common/test/unittest_table.py +448 -0
- data/tools/common/common/test/unittest_taskqueue.py +71 -0
- data/tools/common/common/test/unittest_testlib.py +956 -0
- data/tools/common/common/test/unittest_textutils.py +247 -0
- data/tools/common/common/test/unittest_tree.py +248 -0
- data/tools/common/common/test/unittest_umessage.py +55 -0
- data/tools/common/common/test/unittest_ureports_html.py +64 -0
- data/tools/common/common/test/unittest_ureports_text.py +105 -0
- data/tools/common/common/test/unittest_xmlutils.py +75 -0
- data/tools/common/common/test/utils.py +87 -0
- data/tools/common/common/testlib.py +1927 -0
- data/tools/common/common/textutils.py +476 -0
- data/tools/common/common/tree.py +372 -0
- data/tools/common/common/umessage.py +161 -0
- data/tools/common/common/ureports/__init__.py +174 -0
- data/tools/common/common/ureports/docbook_writer.py +139 -0
- data/tools/common/common/ureports/html_writer.py +131 -0
- data/tools/common/common/ureports/nodes.py +201 -0
- data/tools/common/common/ureports/text_writer.py +140 -0
- data/tools/common/common/vcgutils.py +216 -0
- data/tools/common/common/visitor.py +107 -0
- data/tools/common/common/xmlrpcutils.py +136 -0
- data/tools/common/common/xmlutils.py +61 -0
- data/tools/compile/compile.py +16 -0
- data/tools/coverage/coverage.py +602 -0
- data/tools/epydoc/__init__.py +227 -0
- data/tools/epydoc/__init__.pyc +0 -0
- data/tools/epydoc/apidoc.py +2203 -0
- data/tools/epydoc/apidoc.pyc +0 -0
- data/tools/epydoc/checker.py +349 -0
- data/tools/epydoc/checker.pyc +0 -0
- data/tools/epydoc/cli.py +1470 -0
- data/tools/epydoc/cli.pyc +0 -0
- data/tools/epydoc/compat.py +250 -0
- data/tools/epydoc/compat.pyc +0 -0
- data/tools/epydoc/docbuilder.py +1358 -0
- data/tools/epydoc/docbuilder.pyc +0 -0
- data/tools/epydoc/docintrospecter.py +1056 -0
- data/tools/epydoc/docintrospecter.pyc +0 -0
- data/tools/epydoc/docparser.py +2113 -0
- data/tools/epydoc/docparser.pyc +0 -0
- data/tools/epydoc/docstringparser.py +1111 -0
- data/tools/epydoc/docstringparser.pyc +0 -0
- data/tools/epydoc/docwriter/__init__.py +12 -0
- data/tools/epydoc/docwriter/__init__.pyc +0 -0
- data/tools/epydoc/docwriter/dotgraph.py +1351 -0
- data/tools/epydoc/docwriter/dotgraph.pyc +0 -0
- data/tools/epydoc/docwriter/html.py +3491 -0
- data/tools/epydoc/docwriter/html.pyc +0 -0
- data/tools/epydoc/docwriter/html_colorize.py +909 -0
- data/tools/epydoc/docwriter/html_colorize.pyc +0 -0
- data/tools/epydoc/docwriter/html_css.py +550 -0
- data/tools/epydoc/docwriter/html_css.pyc +0 -0
- data/tools/epydoc/docwriter/html_help.py +190 -0
- data/tools/epydoc/docwriter/html_help.pyc +0 -0
- data/tools/epydoc/docwriter/latex.py +1187 -0
- data/tools/epydoc/docwriter/latex.pyc +0 -0
- data/tools/epydoc/docwriter/plaintext.py +276 -0
- data/tools/epydoc/docwriter/plaintext.pyc +0 -0
- data/tools/epydoc/docwriter/xlink.py +505 -0
- data/tools/epydoc/docwriter/xlink.pyc +0 -0
- data/tools/epydoc/gui.py +1148 -0
- data/tools/epydoc/gui.pyc +0 -0
- data/tools/epydoc/log.py +204 -0
- data/tools/epydoc/log.pyc +0 -0
- data/tools/epydoc/markup/__init__.py +623 -0
- data/tools/epydoc/markup/__init__.pyc +0 -0
- data/tools/epydoc/markup/doctest.py +311 -0
- data/tools/epydoc/markup/doctest.pyc +0 -0
- data/tools/epydoc/markup/epytext.py +2116 -0
- data/tools/epydoc/markup/epytext.pyc +0 -0
- data/tools/epydoc/markup/javadoc.py +250 -0
- data/tools/epydoc/markup/javadoc.pyc +0 -0
- data/tools/epydoc/markup/plaintext.py +78 -0
- data/tools/epydoc/markup/plaintext.pyc +0 -0
- data/tools/epydoc/markup/pyval_repr.py +532 -0
- data/tools/epydoc/markup/pyval_repr.pyc +0 -0
- data/tools/epydoc/markup/restructuredtext.py +906 -0
- data/tools/epydoc/markup/restructuredtext.pyc +0 -0
- data/tools/epydoc/test/__init__.py +97 -0
- data/tools/epydoc/test/__init__.pyc +0 -0
- data/tools/epydoc/test/util.py +226 -0
- data/tools/epydoc/test/util.pyc +0 -0
- data/tools/epydoc/util.py +289 -0
- data/tools/epydoc/util.pyc +0 -0
- data/tools/logilab/logilab/__init__.py +5 -0
- data/tools/logilab/logilab/astng/__init__.py +82 -0
- data/tools/logilab/logilab/astng/__pkginfo__.py +76 -0
- data/tools/logilab/logilab/astng/_exceptions.py +64 -0
- data/tools/logilab/logilab/astng/_nodes_ast.py +667 -0
- data/tools/logilab/logilab/astng/_nodes_compiler.py +758 -0
- data/tools/logilab/logilab/astng/bases.py +608 -0
- data/tools/logilab/logilab/astng/builder.py +239 -0
- data/tools/logilab/logilab/astng/inference.py +426 -0
- data/tools/logilab/logilab/astng/inspector.py +289 -0
- data/tools/logilab/logilab/astng/manager.py +421 -0
- data/tools/logilab/logilab/astng/mixins.py +165 -0
- data/tools/logilab/logilab/astng/node_classes.py +848 -0
- data/tools/logilab/logilab/astng/nodes.py +85 -0
- data/tools/logilab/logilab/astng/nodes_as_string.py +389 -0
- data/tools/logilab/logilab/astng/patchcomptransformer.py +159 -0
- data/tools/logilab/logilab/astng/protocols.py +333 -0
- data/tools/logilab/logilab/astng/raw_building.py +212 -0
- data/tools/logilab/logilab/astng/rebuilder.py +307 -0
- data/tools/logilab/logilab/astng/scoped_nodes.py +951 -0
- data/tools/logilab/logilab/astng/test/__init__.py +19 -0
- data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
- data/tools/logilab/logilab/astng/test/data/MyPyPa-0.1.0-py2.5.zip +0 -0
- data/tools/logilab/logilab/astng/test/data/SSL1/Connection1.py +33 -0
- data/tools/logilab/logilab/astng/test/data/SSL1/__init__.py +20 -0
- data/tools/logilab/logilab/astng/test/data/__init__.py +20 -0
- data/tools/logilab/logilab/astng/test/data/all.py +29 -0
- data/tools/logilab/logilab/astng/test/data/appl/__init__.py +23 -0
- data/tools/logilab/logilab/astng/test/data/appl/myConnection.py +30 -0
- data/tools/logilab/logilab/astng/test/data/format.py +34 -0
- data/tools/logilab/logilab/astng/test/data/module.py +90 -0
- data/tools/logilab/logilab/astng/test/data/module2.py +112 -0
- data/tools/logilab/logilab/astng/test/data/noendingnewline.py +57 -0
- data/tools/logilab/logilab/astng/test/data/nonregr.py +76 -0
- data/tools/logilab/logilab/astng/test/data/notall.py +28 -0
- data/tools/logilab/logilab/astng/test/data2/__init__.py +20 -0
- data/tools/logilab/logilab/astng/test/data2/clientmodule_test.py +51 -0
- data/tools/logilab/logilab/astng/test/data2/suppliermodule_test.py +32 -0
- data/tools/logilab/logilab/astng/test/regrtest.py +135 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/absimport.py +22 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/descriptor_crash.py +31 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/import_package_subpackage_module.py +68 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/package/__init__.py +24 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/__init__.py +20 -0
- data/tools/logilab/logilab/astng/test/regrtest_data/package/subpackage/module.py +20 -0
- data/tools/logilab/logilab/astng/test/unittest_builder.py +684 -0
- data/tools/logilab/logilab/astng/test/unittest_inference.py +1112 -0
- data/tools/logilab/logilab/astng/test/unittest_inspector.py +105 -0
- data/tools/logilab/logilab/astng/test/unittest_lookup.py +302 -0
- data/tools/logilab/logilab/astng/test/unittest_manager.py +98 -0
- data/tools/logilab/logilab/astng/test/unittest_nodes.py +302 -0
- data/tools/logilab/logilab/astng/test/unittest_scoped_nodes.py +501 -0
- data/tools/logilab/logilab/astng/test/unittest_utils.py +104 -0
- data/tools/logilab/logilab/astng/utils.py +342 -0
- data/tools/logilab/logilab/common/__init__.py +140 -0
- data/tools/logilab/logilab/common/__pkginfo__.py +43 -0
- data/tools/logilab/logilab/common/adbh.py +35 -0
- data/tools/logilab/logilab/common/cache.py +114 -0
- data/tools/logilab/logilab/common/changelog.py +234 -0
- data/tools/logilab/logilab/common/clcommands.py +181 -0
- data/tools/logilab/logilab/common/cli.py +212 -0
- data/tools/logilab/logilab/common/compat.py +328 -0
- data/tools/logilab/logilab/common/configuration.py +1087 -0
- data/tools/logilab/logilab/common/contexts.py +58 -0
- data/tools/logilab/logilab/common/corbautils.py +117 -0
- data/tools/logilab/logilab/common/daemon.py +171 -0
- data/tools/logilab/logilab/common/date.py +279 -0
- data/tools/logilab/logilab/common/db.py +49 -0
- data/tools/logilab/logilab/common/dbf.py +229 -0
- data/tools/logilab/logilab/common/debugger.py +208 -0
- data/tools/logilab/logilab/common/decorators.py +190 -0
- data/tools/logilab/logilab/common/deprecation.py +118 -0
- data/tools/logilab/logilab/common/fileutils.py +409 -0
- data/tools/logilab/logilab/common/graph.py +259 -0
- data/tools/logilab/logilab/common/html.py +142 -0
- data/tools/logilab/logilab/common/interface.py +76 -0
- data/tools/logilab/logilab/common/logging_ext.py +166 -0
- data/tools/logilab/logilab/common/modutils.py +670 -0
- data/tools/logilab/logilab/common/optik_ext.py +383 -0
- data/tools/logilab/logilab/common/optparser.py +92 -0
- data/tools/logilab/logilab/common/pdf_ext.py +111 -0
- data/tools/logilab/logilab/common/proc.py +276 -0
- data/tools/logilab/logilab/common/pyro_ext.py +146 -0
- data/tools/logilab/logilab/common/pytest.py +754 -0
- data/tools/logilab/logilab/common/shellutils.py +383 -0
- data/tools/logilab/logilab/common/sphinx_ext.py +87 -0
- data/tools/logilab/logilab/common/sphinxutils.py +122 -0
- data/tools/logilab/logilab/common/sqlgen.py +31 -0
- data/tools/logilab/logilab/common/table.py +930 -0
- data/tools/logilab/logilab/common/tasksqueue.py +97 -0
- data/tools/logilab/logilab/common/test/__init__.py +1 -0
- data/tools/logilab/logilab/common/test/data/ChangeLog +184 -0
- data/tools/logilab/logilab/common/test/data/MyPyPa-0.1.0-py2.5.egg +0 -0
- data/tools/logilab/logilab/common/test/data/__init__.py +1 -0
- data/tools/logilab/logilab/common/test/data/content_differ_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/content_differ_dir/README +1 -0
- data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/coin +1 -0
- data/tools/logilab/logilab/common/test/data/content_differ_dir/subdir/toto.txt +53 -0
- data/tools/logilab/logilab/common/test/data/file_differ_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/file_differ_dir/README +1 -0
- data/tools/logilab/logilab/common/test/data/file_differ_dir/subdir/toto.txt +53 -0
- data/tools/logilab/logilab/common/test/data/file_differ_dir/subdirtwo/Hello +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/__init__.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/foo.txt +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/module.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/module2.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/newlines.txt +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/noendingnewline.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/nonregr.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/normal_file.txt +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/spam.txt +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/sub/doc.txt +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/sub/momo.py +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/test.ini +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/test1.msg +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/test2.msg +0 -0
- data/tools/logilab/logilab/common/test/data/find_test/write_protected_file.txt +0 -0
- data/tools/logilab/logilab/common/test/data/foo.txt +9 -0
- data/tools/logilab/logilab/common/test/data/module.py +88 -0
- data/tools/logilab/logilab/common/test/data/module2.py +77 -0
- data/tools/logilab/logilab/common/test/data/newlines.txt +3 -0
- data/tools/logilab/logilab/common/test/data/noendingnewline.py +36 -0
- data/tools/logilab/logilab/common/test/data/nonregr.py +14 -0
- data/tools/logilab/logilab/common/test/data/normal_file.txt +0 -0
- data/tools/logilab/logilab/common/test/data/reference_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/reference_dir/README +1 -0
- data/tools/logilab/logilab/common/test/data/reference_dir/subdir/coin +1 -0
- data/tools/logilab/logilab/common/test/data/reference_dir/subdir/toto.txt +53 -0
- data/tools/logilab/logilab/common/test/data/same_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/same_dir/README +1 -0
- data/tools/logilab/logilab/common/test/data/same_dir/subdir/coin +1 -0
- data/tools/logilab/logilab/common/test/data/same_dir/subdir/toto.txt +53 -0
- data/tools/logilab/logilab/common/test/data/spam.txt +9 -0
- data/tools/logilab/logilab/common/test/data/sub/doc.txt +1 -0
- data/tools/logilab/logilab/common/test/data/sub/momo.py +1 -0
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/NOTHING +0 -0
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/README +1 -0
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/coin +1 -0
- data/tools/logilab/logilab/common/test/data/subdir_differ_dir/subdir/toto.txt +53 -0
- data/tools/logilab/logilab/common/test/data/test.ini +20 -0
- data/tools/logilab/logilab/common/test/data/test1.msg +30 -0
- data/tools/logilab/logilab/common/test/data/test2.msg +42 -0
- data/tools/logilab/logilab/common/test/data/write_protected_file.txt +0 -0
- data/tools/logilab/logilab/common/test/foomod.py +17 -0
- data/tools/logilab/logilab/common/test/unittest_cache.py +129 -0
- data/tools/logilab/logilab/common/test/unittest_changelog.py +37 -0
- data/tools/logilab/logilab/common/test/unittest_compat.py +239 -0
- data/tools/logilab/logilab/common/test/unittest_configuration.py +348 -0
- data/tools/logilab/logilab/common/test/unittest_date.py +154 -0
- data/tools/logilab/logilab/common/test/unittest_decorators.py +62 -0
- data/tools/logilab/logilab/common/test/unittest_deprecation.py +76 -0
- data/tools/logilab/logilab/common/test/unittest_fileutils.py +133 -0
- data/tools/logilab/logilab/common/test/unittest_graph.py +50 -0
- data/tools/logilab/logilab/common/test/unittest_html.py +76 -0
- data/tools/logilab/logilab/common/test/unittest_interface.py +87 -0
- data/tools/logilab/logilab/common/test/unittest_modutils.py +244 -0
- data/tools/logilab/logilab/common/test/unittest_pytest.py +50 -0
- data/tools/logilab/logilab/common/test/unittest_shellutils.py +248 -0
- data/tools/logilab/logilab/common/test/unittest_table.py +448 -0
- data/tools/logilab/logilab/common/test/unittest_taskqueue.py +71 -0
- data/tools/logilab/logilab/common/test/unittest_testlib.py +956 -0
- data/tools/logilab/logilab/common/test/unittest_textutils.py +247 -0
- data/tools/logilab/logilab/common/test/unittest_tree.py +248 -0
- data/tools/logilab/logilab/common/test/unittest_umessage.py +55 -0
- data/tools/logilab/logilab/common/test/unittest_ureports_html.py +64 -0
- data/tools/logilab/logilab/common/test/unittest_ureports_text.py +105 -0
- data/tools/logilab/logilab/common/test/unittest_xmlutils.py +75 -0
- data/tools/logilab/logilab/common/test/utils.py +87 -0
- data/tools/logilab/logilab/common/testlib.py +1927 -0
- data/tools/logilab/logilab/common/textutils.py +476 -0
- data/tools/logilab/logilab/common/tree.py +372 -0
- data/tools/logilab/logilab/common/umessage.py +161 -0
- data/tools/logilab/logilab/common/ureports/__init__.py +174 -0
- data/tools/logilab/logilab/common/ureports/docbook_writer.py +139 -0
- data/tools/logilab/logilab/common/ureports/html_writer.py +131 -0
- data/tools/logilab/logilab/common/ureports/nodes.py +201 -0
- data/tools/logilab/logilab/common/ureports/text_writer.py +140 -0
- data/tools/logilab/logilab/common/vcgutils.py +216 -0
- data/tools/logilab/logilab/common/visitor.py +107 -0
- data/tools/logilab/logilab/common/xmlrpcutils.py +136 -0
- data/tools/logilab/logilab/common/xmlutils.py +61 -0
- data/tools/pychecker/COPYRIGHT +31 -0
- data/tools/pychecker/ChangeLog +349 -0
- data/tools/pychecker/CodeChecks.py +1969 -0
- data/tools/pychecker/CodeChecks.pyc +0 -0
- data/tools/pychecker/CodeChecks.pyo +0 -0
- data/tools/pychecker/Config.py +475 -0
- data/tools/pychecker/Config.pyc +0 -0
- data/tools/pychecker/Config.pyo +0 -0
- data/tools/pychecker/KNOWN_BUGS +100 -0
- data/tools/pychecker/MAINTAINERS +81 -0
- data/tools/pychecker/NEWS +406 -0
- data/tools/pychecker/OP.py +131 -0
- data/tools/pychecker/OP.pyc +0 -0
- data/tools/pychecker/OP.pyo +0 -0
- data/tools/pychecker/OptionTypes.py +117 -0
- data/tools/pychecker/OptionTypes.pyc +0 -0
- data/tools/pychecker/OptionTypes.pyo +0 -0
- data/tools/pychecker/README +152 -0
- data/tools/pychecker/Stack.py +115 -0
- data/tools/pychecker/Stack.pyc +0 -0
- data/tools/pychecker/Stack.pyo +0 -0
- data/tools/pychecker/TODO +101 -0
- data/tools/pychecker/VERSION +1 -0
- data/tools/pychecker/Warning.py +50 -0
- data/tools/pychecker/Warning.pyc +0 -0
- data/tools/pychecker/Warning.pyo +0 -0
- data/tools/pychecker/__init__.py +17 -0
- data/tools/pychecker/__init__.pyc +0 -0
- data/tools/pychecker/__init__.pyo +0 -0
- data/tools/pychecker/checker.py +961 -0
- data/tools/pychecker/checker.pyc +0 -0
- data/tools/pychecker/checker.pyo +0 -0
- data/tools/pychecker/function.py +159 -0
- data/tools/pychecker/function.pyc +0 -0
- data/tools/pychecker/function.pyo +0 -0
- data/tools/pychecker/msgs.py +175 -0
- data/tools/pychecker/msgs.pyc +0 -0
- data/tools/pychecker/msgs.pyo +0 -0
- data/tools/pychecker/options.py +275 -0
- data/tools/pychecker/options.pyc +0 -0
- data/tools/pychecker/options.pyo +0 -0
- data/tools/pychecker/pcmodules.py +19 -0
- data/tools/pychecker/pcmodules.pyc +0 -0
- data/tools/pychecker/pcmodules.pyo +0 -0
- data/tools/pychecker/printer.py +47 -0
- data/tools/pychecker/printer.pyc +0 -0
- data/tools/pychecker/printer.pyo +0 -0
- data/tools/pychecker/python.py +427 -0
- data/tools/pychecker/python.pyc +0 -0
- data/tools/pychecker/python.pyo +0 -0
- data/tools/pychecker/utils.py +102 -0
- data/tools/pychecker/utils.pyc +0 -0
- data/tools/pychecker/utils.pyo +0 -0
- data/tools/pychecker/warn.py +778 -0
- data/tools/pychecker/warn.pyc +0 -0
- data/tools/pychecker/warn.pyo +0 -0
- data/tools/pylint2/pylint/__init__.py +16 -0
- data/tools/pylint2/pylint/__pkginfo__.py +67 -0
- data/tools/pylint2/pylint/checkers/__init__.py +155 -0
- data/tools/pylint2/pylint/checkers/base.py +749 -0
- data/tools/pylint2/pylint/checkers/classes.py +527 -0
- data/tools/pylint2/pylint/checkers/design_analysis.py +344 -0
- data/tools/pylint2/pylint/checkers/exceptions.py +183 -0
- data/tools/pylint2/pylint/checkers/format.py +367 -0
- data/tools/pylint2/pylint/checkers/imports.py +379 -0
- data/tools/pylint2/pylint/checkers/logging.py +98 -0
- data/tools/pylint2/pylint/checkers/misc.py +128 -0
- data/tools/pylint2/pylint/checkers/newstyle.py +107 -0
- data/tools/pylint2/pylint/checkers/raw_metrics.py +125 -0
- data/tools/pylint2/pylint/checkers/similar.py +333 -0
- data/tools/pylint2/pylint/checkers/string_format.py +239 -0
- data/tools/pylint2/pylint/checkers/typecheck.py +364 -0
- data/tools/pylint2/pylint/checkers/utils.py +208 -0
- data/tools/pylint2/pylint/checkers/variables.py +498 -0
- data/tools/pylint2/pylint/config.py +149 -0
- data/tools/pylint2/pylint/epylint.py +149 -0
- data/tools/pylint2/pylint/gui.py +433 -0
- data/tools/pylint2/pylint/interfaces.py +98 -0
- data/tools/pylint2/pylint/lint.py +914 -0
- data/tools/pylint2/pylint/pyreverse/__init__.py +5 -0
- data/tools/pylint2/pylint/pyreverse/diadefslib.py +229 -0
- data/tools/pylint2/pylint/pyreverse/diagrams.py +247 -0
- data/tools/pylint2/pylint/pyreverse/main.py +123 -0
- data/tools/pylint2/pylint/pyreverse/utils.py +131 -0
- data/tools/pylint2/pylint/pyreverse/writer.py +196 -0
- data/tools/pylint2/pylint/reporters/__init__.py +67 -0
- data/tools/pylint2/pylint/reporters/guireporter.py +36 -0
- data/tools/pylint2/pylint/reporters/html.py +69 -0
- data/tools/pylint2/pylint/reporters/text.py +156 -0
- data/tools/pylint2/pylint/utils.py +518 -0
- data/tools/pylint2/pylint.py +16 -0
- data/tools/test/suite.py +35 -0
- 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> </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()
|