summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commitb3322844a07e4c773dbbbc4e88a2fd3fb92ded6e (patch)
tree74044bbc64a372626a124ad2e68a01903b73d855
parent1abab442733712791dfc6675cb88d500950a9bcd (diff)
downloaddisutils2-b3322844a07e4c773dbbbc4e88a2fd3fb92ded6e.tar.gz
Fix resolve_name. This thing is no fun.
-rw-r--r--src/distutils2/tests/test_util.py10
-rw-r--r--src/distutils2/util.py7
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):