diff options
| author | ?ric Araujo <merwok@netwok.org> | 2010-08-15 05:59:31 +0200 |
|---|---|---|
| committer | ?ric Araujo <merwok@netwok.org> | 2010-08-15 05:59:31 +0200 |
| commit | b3322844a07e4c773dbbbc4e88a2fd3fb92ded6e (patch) | |
| tree | 74044bbc64a372626a124ad2e68a01903b73d855 | |
| parent | 1abab442733712791dfc6675cb88d500950a9bcd (diff) | |
| download | disutils2-b3322844a07e4c773dbbbc4e88a2fd3fb92ded6e.tar.gz | |
Fix resolve_name. This thing is no fun.
| -rw-r--r-- | src/distutils2/tests/test_util.py | 10 | ||||
| -rw-r--r-- | src/distutils2/util.py | 7 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/distutils2/tests/test_util.py b/src/distutils2/tests/test_util.py index ea07636..85352d4 100644 --- a/src/distutils2/tests/test_util.py +++ b/src/distutils2/tests/test_util.py @@ -343,9 +343,13 @@ class UtilTestCase(support.EnvironGuard, self.assertEqual(set(res), set(['pkg1', 'pkg5', 'pkg1.pkg3', 'pkg1.pkg3.pkg6'])) def test_resolve_name(self): - self.assertEqual(UtilTestCase, resolve_name("distutils2.tests.test_util.UtilTestCase")) - self.assertEqual(UtilTestCase.test_resolve_name, - resolve_name("distutils2.tests.test_util.UtilTestCase.test_resolve_name")) + self.assertEqual(str(42), resolve_name('__builtin__.str')(42)) + self.assertEqual( + UtilTestCase.__name__, + resolve_name("distutils2.tests.test_util.UtilTestCase").__name__) + self.assertEqual( + UtilTestCase.test_resolve_name.__name__, + resolve_name("distutils2.tests.test_util.UtilTestCase.test_resolve_name").__name__) self.assertRaises(ImportError, resolve_name, "distutils2.tests.test_util.UtilTestCaseNot") diff --git a/src/distutils2/util.py b/src/distutils2/util.py index ac744ce..12b1022 100644 --- a/src/distutils2/util.py +++ b/src/distutils2/util.py @@ -637,7 +637,10 @@ def find_packages(paths=(os.curdir,), exclude=()): return packages def resolve_name(name): - """Resolve a name like ``module.object`` to an object and return it.""" + """Resolve a name like ``module.object`` to an object and return it. + + Raise ImportError if the module or name is not found. + """ parts = name.split('.') cursor = len(parts) module_name, rest = parts[:cursor], parts[cursor:] @@ -652,12 +655,14 @@ def resolve_name(name): cursor -= 1 module_name = parts[:cursor] rest = parts[cursor:] + ret = '' for part in parts[1:]: try: ret = getattr(ret, part) except AttributeError: raise ImportError + return ret def splitext(path): |
