diff options
Diffstat (limited to 'test/test_modutils.py')
-rw-r--r-- | test/test_modutils.py | 206 |
1 files changed, 121 insertions, 85 deletions
diff --git a/test/test_modutils.py b/test/test_modutils.py index bcffe07..025dad0 100644 --- a/test/test_modutils.py +++ b/test/test_modutils.py @@ -22,6 +22,7 @@ unit tests for module modutils (module manipulation utilities) import doctest import sys import warnings + try: __file__ except NameError: @@ -34,9 +35,9 @@ from os import path, getcwd, sep from logilab import common from logilab.common import tree -warnings.simplefilter('default', DeprecationWarning) +warnings.simplefilter("default", DeprecationWarning) sys.path.insert(0, path.dirname(__file__)) -DATADIR = path.join(path.dirname(__file__), 'data') +DATADIR = path.join(path.dirname(__file__), "data") class ModutilsTestCase(TestCase): @@ -58,32 +59,37 @@ class ModuleFileTC(ModutilsTestCase): def setUp(self): super(ModuleFileTC, self).setUp() for k in list(sys.path_importer_cache.keys()): - if 'MyPyPa' in k: + if "MyPyPa" in k: del sys.path_importer_cache[k] def test_find_zipped_module(self): - mtype, mfile = modutils._module_file([self.package], [path.join(DATADIR, 'MyPyPa-0.1.0.zip')]) + mtype, mfile = modutils._module_file( + [self.package], [path.join(DATADIR, "MyPyPa-0.1.0.zip")] + ) self.assertEqual(mtype, modutils.ZIPFILE) self.assertEqual(mfile.split(sep)[-4:], ["test", "data", "MyPyPa-0.1.0.zip", self.package]) def test_find_egg_module(self): - mtype, mfile = modutils._module_file([self.package], [path.join(DATADIR, 'MyPyPa-0.1.0-py2.5.egg')]) + mtype, mfile = modutils._module_file( + [self.package], [path.join(DATADIR, "MyPyPa-0.1.0-py2.5.egg")] + ) self.assertEqual(mtype, modutils.ZIPFILE) - self.assertEqual(mfile.split(sep)[-4:], ["test", "data", "MyPyPa-0.1.0-py2.5.egg", self.package]) + self.assertEqual( + mfile.split(sep)[-4:], ["test", "data", "MyPyPa-0.1.0-py2.5.egg", self.package] + ) class load_module_from_name_tc(ModutilsTestCase): """ load a python module from it's name """ def test_knownValues_load_module_from_name_1(self): - self.assertEqual(modutils.load_module_from_name('sys'), sys) + self.assertEqual(modutils.load_module_from_name("sys"), sys) def test_knownValues_load_module_from_name_2(self): - self.assertEqual(modutils.load_module_from_name('os.path'), path) + self.assertEqual(modutils.load_module_from_name("os.path"), path) def test_raise_load_module_from_name_1(self): - self.assertRaises(ImportError, - modutils.load_module_from_name, 'os.path', use_sys=0) + self.assertRaises(ImportError, modutils.load_module_from_name, "os.path", use_sys=0) class get_module_part_tc(ModutilsTestCase): @@ -102,20 +108,22 @@ class get_module_part_tc(ModutilsTestCase): def test_knownValues_get_module_part_3(self): """relative import from given file""" - self.assertEqual(modutils.get_module_part('interface.Interface', - modutils.__file__), 'interface') + self.assertEqual( + modutils.get_module_part("interface.Interface", modutils.__file__), "interface" + ) def test_knownValues_get_compiled_module_part(self): - self.assertEqual(modutils.get_module_part('math.log10'), 'math') - self.assertEqual(modutils.get_module_part('math.log10', __file__), 'math') + self.assertEqual(modutils.get_module_part("math.log10"), "math") + self.assertEqual(modutils.get_module_part("math.log10", __file__), "math") def test_knownValues_get_builtin_module_part(self): - self.assertEqual(modutils.get_module_part('sys.path'), 'sys') - self.assertEqual(modutils.get_module_part('sys.path', '__file__'), 'sys') + self.assertEqual(modutils.get_module_part("sys.path"), "sys") + self.assertEqual(modutils.get_module_part("sys.path", "__file__"), "sys") def test_get_module_part_exception(self): - self.assertRaises(ImportError, modutils.get_module_part, 'unknown.module', - modutils.__file__) + self.assertRaises( + ImportError, modutils.get_module_part, "unknown.module", modutils.__file__ + ) class modpath_from_file_tc(ModutilsTestCase): @@ -132,24 +140,25 @@ class modpath_from_file_tc(ModutilsTestCase): ) def test_knownValues_modpath_from_file_2(self): - self.assertEqual(modutils.modpath_from_file('unittest_modutils.py', - {getcwd(): 'arbitrary.pkg'}), - ['arbitrary', 'pkg', 'unittest_modutils']) + self.assertEqual( + modutils.modpath_from_file("unittest_modutils.py", {getcwd(): "arbitrary.pkg"}), + ["arbitrary", "pkg", "unittest_modutils"], + ) def test_raise_modpath_from_file_Exception(self): - self.assertRaises(Exception, modutils.modpath_from_file, '/turlututu') + self.assertRaises(Exception, modutils.modpath_from_file, "/turlututu") class load_module_from_path_tc(ModutilsTestCase): - def test_do_not_load_twice(self): sys.path.insert(0, self.datadir) - foo = modutils.load_module_from_modpath(['lmfp', 'foo']) - lmfp = modutils.load_module_from_modpath(['lmfp']) + modutils.load_module_from_modpath(["lmfp", "foo"]) + modutils.load_module_from_modpath(["lmfp"]) self.assertEqual(len(sys.just_once), 1) sys.path.pop(0) del sys.just_once + class file_from_modpath_tc(ModutilsTestCase): """given a mod path (i.e. splited module / package name), return the corresponding file, giving priority to source file over precompiled file @@ -157,13 +166,19 @@ class file_from_modpath_tc(ModutilsTestCase): def test_site_packages(self): from pytz import tzinfo - self.assertEqual(path.realpath(modutils.file_from_modpath(['pytz', 'tzinfo'])), - path.realpath(tzinfo.__file__.replace('.pyc', '.py'))) + + self.assertEqual( + path.realpath(modutils.file_from_modpath(["pytz", "tzinfo"])), + path.realpath(tzinfo.__file__.replace(".pyc", ".py")), + ) def test_std_lib(self): from os import path - self.assertEqual(path.realpath(modutils.file_from_modpath(['os', 'path']).replace('.pyc', '.py')), - path.realpath(path.__file__.replace('.pyc', '.py'))) + + self.assertEqual( + path.realpath(modutils.file_from_modpath(["os", "path"]).replace(".pyc", ".py")), + path.realpath(path.__file__.replace(".pyc", ".py")), + ) def test_xmlplus(self): try: @@ -172,27 +187,31 @@ class file_from_modpath_tc(ModutilsTestCase): except ImportError: pass else: - self.assertEqual(path.realpath(modutils.file_from_modpath(['xml', 'dom', 'ext']).replace('.pyc', '.py')), - path.realpath(ext.__file__.replace('.pyc', '.py'))) + self.assertEqual( + path.realpath( + modutils.file_from_modpath(["xml", "dom", "ext"]).replace(".pyc", ".py") + ), + path.realpath(ext.__file__.replace(".pyc", ".py")), + ) def test_builtin(self): - self.assertEqual(modutils.file_from_modpath(['sys']), - None) - + self.assertEqual(modutils.file_from_modpath(["sys"]), None) def test_unexisting(self): - self.assertRaises(ImportError, modutils.file_from_modpath, ['turlututu']) + self.assertRaises(ImportError, modutils.file_from_modpath, ["turlututu"]) class get_source_file_tc(ModutilsTestCase): - def test(self): from os import path - self.assertEqual(modutils.get_source_file(path.__file__), - path.__file__.replace('.pyc', '.py')) + + self.assertEqual( + modutils.get_source_file(path.__file__), path.__file__.replace(".pyc", ".py") + ) def test_raise(self): - self.assertRaises(modutils.NoSourceFile, modutils.get_source_file, 'whatever') + self.assertRaises(modutils.NoSourceFile, modutils.get_source_file, "whatever") + class is_standard_module_tc(ModutilsTestCase): """ @@ -202,102 +221,119 @@ class is_standard_module_tc(ModutilsTestCase): def test_builtins(self): if sys.version_info < (3, 0): - self.assertEqual(modutils.is_standard_module('__builtin__'), True) - self.assertEqual(modutils.is_standard_module('builtins'), False) + self.assertEqual(modutils.is_standard_module("__builtin__"), True) + self.assertEqual(modutils.is_standard_module("builtins"), False) else: - self.assertEqual(modutils.is_standard_module('__builtin__'), False) - self.assertEqual(modutils.is_standard_module('builtins'), True) + self.assertEqual(modutils.is_standard_module("__builtin__"), False) + self.assertEqual(modutils.is_standard_module("builtins"), True) def test_builtin(self): - self.assertEqual(modutils.is_standard_module('sys'), True) + self.assertEqual(modutils.is_standard_module("sys"), True) def test_nonstandard(self): - self.assertEqual(modutils.is_standard_module('logilab'), False) + self.assertEqual(modutils.is_standard_module("logilab"), False) def test_unknown(self): - self.assertEqual(modutils.is_standard_module('unknown'), False) + self.assertEqual(modutils.is_standard_module("unknown"), False) def test_4(self): - self.assertEqual(modutils.is_standard_module('marshal'), True) - self.assertEqual(modutils.is_standard_module('pickle'), True) - self.assertEqual(modutils.is_standard_module('email'), True) - self.assertEqual(modutils.is_standard_module('StringIO'), sys.version_info < (3, 0)) - venv_py3 = sys.version_info[0] >= 3 and hasattr(sys, 'real_prefix') + self.assertEqual(modutils.is_standard_module("marshal"), True) + self.assertEqual(modutils.is_standard_module("pickle"), True) + self.assertEqual(modutils.is_standard_module("email"), True) + self.assertEqual(modutils.is_standard_module("StringIO"), sys.version_info < (3, 0)) + venv_py3 = sys.version_info[0] >= 3 and hasattr(sys, "real_prefix") if not venv_py3: # those modules are symlinked by virtualenv (but not by python's venv) - self.assertEqual(modutils.is_standard_module('hashlib'), True) - self.assertEqual(modutils.is_standard_module('io'), True) + self.assertEqual(modutils.is_standard_module("hashlib"), True) + self.assertEqual(modutils.is_standard_module("io"), True) def test_custom_path(self): - self.assertEqual(modutils.is_standard_module('data.module', (DATADIR,)), True) - self.assertEqual(modutils.is_standard_module('data.module', (path.abspath(DATADIR),)), True) + self.assertEqual(modutils.is_standard_module("data.module", (DATADIR,)), True) + self.assertEqual(modutils.is_standard_module("data.module", (path.abspath(DATADIR),)), True) def test_failing_border_cases(self): # using a subpackage/submodule path as std_path argument - self.assertEqual(modutils.is_standard_module('logilab.common', common.__path__), False) + self.assertEqual(modutils.is_standard_module("logilab.common", common.__path__), False) # using a module + object name as modname argument - self.assertEqual(modutils.is_standard_module('sys.path'), True) + self.assertEqual(modutils.is_standard_module("sys.path"), True) # this is because only the first package/module is considered - self.assertEqual(modutils.is_standard_module('sys.whatever'), True) - self.assertEqual(modutils.is_standard_module('logilab.whatever', common.__path__), False) + self.assertEqual(modutils.is_standard_module("sys.whatever"), True) + self.assertEqual(modutils.is_standard_module("logilab.whatever", common.__path__), False) class is_relative_tc(ModutilsTestCase): - - def test_knownValues_is_relative_1(self): - self.assertEqual(modutils.is_relative('modutils', common.__path__[0]), True) + self.assertEqual(modutils.is_relative("modutils", common.__path__[0]), True) def test_knownValues_is_relative_2(self): - self.assertEqual(modutils.is_relative('modutils', tree.__file__), True) + self.assertEqual(modutils.is_relative("modutils", tree.__file__), True) def test_knownValues_is_relative_3(self): - self.assertEqual(modutils.is_relative('logilab.common.modutils', - common.__path__[0]), False) + self.assertEqual(modutils.is_relative("logilab.common.modutils", common.__path__[0]), False) -class get_modules_tc(ModutilsTestCase): - def test_knownValues_get_modules_1(self): # XXXFIXME: TOWRITE +class get_modules_tc(ModutilsTestCase): + def test_knownValues_get_modules_1(self): # XXXFIXME: TOWRITE """given a directory return a list of all available python modules, even in subdirectories """ import data.find_test as data - mod_path = ("data", 'find_test') - modules = sorted(modutils.get_modules(path.join(*mod_path), - data.__path__[0])) - self.assertSetEqual(set(modules), - set([ '.'.join(mod_path + (mod, )) for mod in ('module', 'module2', - 'noendingnewline', 'nonregr')])) + mod_path = ("data", "find_test") + modules = sorted(modutils.get_modules(path.join(*mod_path), data.__path__[0])) + self.assertSetEqual( + set(modules), + set( + [ + ".".join(mod_path + (mod,)) + for mod in ("module", "module2", "noendingnewline", "nonregr") + ] + ), + ) -class get_modules_files_tc(ModutilsTestCase): - def test_knownValues_get_module_files_1(self): # XXXFIXME: TOWRITE +class get_modules_files_tc(ModutilsTestCase): + def test_knownValues_get_module_files_1(self): # XXXFIXME: TOWRITE """given a directory return a list of all available python module's files, even in subdirectories """ import data - modules = sorted(modutils.get_module_files(path.join(DATADIR, 'find_test'), - data.__path__[0])) - self.assertEqual(modules, - [path.join(DATADIR, 'find_test', x) for x in ['__init__.py', 'module.py', 'module2.py', 'noendingnewline.py', 'nonregr.py']]) + + modules = sorted( + modutils.get_module_files(path.join(DATADIR, "find_test"), data.__path__[0]) + ) + self.assertEqual( + modules, + [ + path.join(DATADIR, "find_test", x) + for x in [ + "__init__.py", + "module.py", + "module2.py", + "noendingnewline.py", + "nonregr.py", + ] + ], + ) def test_load_module_set_attribute(self): import logilab.common.fileutils import logilab + del logilab.common.fileutils - del sys.modules['logilab.common.fileutils'] - m = modutils.load_module_from_modpath(['logilab', 'common', 'fileutils']) - self.assertTrue( hasattr(logilab, 'common') ) - self.assertTrue( hasattr(logilab.common, 'fileutils') ) - self.assertTrue( m is logilab.common.fileutils ) + del sys.modules["logilab.common.fileutils"] + m = modutils.load_module_from_modpath(["logilab", "common", "fileutils"]) + self.assertTrue(hasattr(logilab, "common")) + self.assertTrue(hasattr(logilab.common, "fileutils")) + self.assertTrue(m is logilab.common.fileutils) def load_tests(loader, tests, ignore): from logilab.common import modutils + tests.addTests(doctest.DocTestSuite(modutils)) return tests -if __name__ == '__main__': +if __name__ == "__main__": unittest_main() |