summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorSanyam Khurana <CuriousLearner@users.noreply.github.com>2017-06-13 17:11:14 (GMT)
committerR. David Murray <rdmurray@bitdance.com>2017-06-13 17:11:14 (GMT)
commitb9c3da5c89c66dcccf382e8f196746da2a06d4cc (patch)
treecc99f575ae032c7e98b7cc5d1cc707e4b52dc4a2 /Lib
parent1eb6c0074d17f4fd425cacfdda893d65f5f77f0a (diff)
downloadcpython-b9c3da5c89c66dcccf382e8f196746da2a06d4cc.zip
cpython-b9c3da5c89c66dcccf382e8f196746da2a06d4cc.tar.gz
cpython-b9c3da5c89c66dcccf382e8f196746da2a06d4cc.tar.bz2
bpo-24744: Raises error in pkgutil.walk_packages if path is str (#1926)
bpo-24744: Raise error in pkgutil.walk_packages if path is str Previously an empty result list was accidentallly returned, since the code iterated over the string as if it were the expected list of paths, and of course found nothing.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/pkgutil.py3
-rw-r--r--Lib/test/test_pkgutil.py9
2 files changed, 12 insertions, 0 deletions
diff --git a/Lib/pkgutil.py b/Lib/pkgutil.py
index e37ad45..9180eae 100644
--- a/Lib/pkgutil.py
+++ b/Lib/pkgutil.py
@@ -119,6 +119,9 @@ def iter_modules(path=None, prefix=''):
"""
if path is None:
importers = iter_importers()
+ elif isinstance(path, str):
+ raise ValueError("path must be None or list of paths to look for "
+ "modules in")
else:
importers = map(get_importer, path)
diff --git a/Lib/test/test_pkgutil.py b/Lib/test/test_pkgutil.py
index fc04dcf..2887ce6 100644
--- a/Lib/test/test_pkgutil.py
+++ b/Lib/test/test_pkgutil.py
@@ -176,6 +176,15 @@ class PkgutilTests(unittest.TestCase):
continue
del sys.modules[pkg]
+ def test_walk_packages_raises_on_string_or_bytes_input(self):
+
+ str_input = 'test_dir'
+ with self.assertRaises((TypeError, ValueError)):
+ list(pkgutil.walk_packages(str_input))
+
+ bytes_input = b'test_dir'
+ with self.assertRaises((TypeError, ValueError)):
+ list(pkgutil.walk_packages(bytes_input))
class PkgutilPEP302Tests(unittest.TestCase):