mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Merge 3.5, issue #14209
This commit is contained in:
commit
34ad2ef8f9
3 changed files with 81 additions and 4 deletions
|
@ -375,7 +375,7 @@ try:
|
||||||
if len(fn)==2 and fn[1].startswith('__init__.py'):
|
if len(fn)==2 and fn[1].startswith('__init__.py'):
|
||||||
if fn[0] not in yielded:
|
if fn[0] not in yielded:
|
||||||
yielded[fn[0]] = 1
|
yielded[fn[0]] = 1
|
||||||
yield fn[0], True
|
yield prefix + fn[0], True
|
||||||
|
|
||||||
if len(fn)!=1:
|
if len(fn)!=1:
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -7,7 +7,6 @@ import pkgutil
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
import tempfile
|
import tempfile
|
||||||
import types
|
|
||||||
import shutil
|
import shutil
|
||||||
import zipfile
|
import zipfile
|
||||||
|
|
||||||
|
@ -101,6 +100,83 @@ class PkgutilTests(unittest.TestCase):
|
||||||
for t in pkgutil.walk_packages(path=[self.dirname]):
|
for t in pkgutil.walk_packages(path=[self.dirname]):
|
||||||
self.fail("unexpected package found")
|
self.fail("unexpected package found")
|
||||||
|
|
||||||
|
def test_walkpackages_filesys(self):
|
||||||
|
pkg1 = 'test_walkpackages_filesys'
|
||||||
|
pkg1_dir = os.path.join(self.dirname, pkg1)
|
||||||
|
os.mkdir(pkg1_dir)
|
||||||
|
f = open(os.path.join(pkg1_dir, '__init__.py'), "wb")
|
||||||
|
f.close()
|
||||||
|
os.mkdir(os.path.join(pkg1_dir, 'sub'))
|
||||||
|
f = open(os.path.join(pkg1_dir, 'sub', '__init__.py'), "wb")
|
||||||
|
f.close()
|
||||||
|
f = open(os.path.join(pkg1_dir, 'sub', 'mod.py'), "wb")
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
# Now, to juice it up, let's add the opposite packages, too.
|
||||||
|
pkg2 = 'sub'
|
||||||
|
pkg2_dir = os.path.join(self.dirname, pkg2)
|
||||||
|
os.mkdir(pkg2_dir)
|
||||||
|
f = open(os.path.join(pkg2_dir, '__init__.py'), "wb")
|
||||||
|
f.close()
|
||||||
|
os.mkdir(os.path.join(pkg2_dir, 'test_walkpackages_filesys'))
|
||||||
|
f = open(os.path.join(pkg2_dir, 'test_walkpackages_filesys', '__init__.py'), "wb")
|
||||||
|
f.close()
|
||||||
|
f = open(os.path.join(pkg2_dir, 'test_walkpackages_filesys', 'mod.py'), "wb")
|
||||||
|
f.close()
|
||||||
|
|
||||||
|
expected = [
|
||||||
|
'sub',
|
||||||
|
'sub.test_walkpackages_filesys',
|
||||||
|
'sub.test_walkpackages_filesys.mod',
|
||||||
|
'test_walkpackages_filesys',
|
||||||
|
'test_walkpackages_filesys.sub',
|
||||||
|
'test_walkpackages_filesys.sub.mod',
|
||||||
|
]
|
||||||
|
actual= [e[1] for e in pkgutil.walk_packages([self.dirname])]
|
||||||
|
self.assertEqual(actual, expected)
|
||||||
|
|
||||||
|
for pkg in expected:
|
||||||
|
if pkg.endswith('mod'):
|
||||||
|
continue
|
||||||
|
del sys.modules[pkg]
|
||||||
|
|
||||||
|
def test_walkpackages_zipfile(self):
|
||||||
|
"""Tests the same as test_walkpackages_filesys, only with a zip file."""
|
||||||
|
|
||||||
|
zip = 'test_walkpackages_zipfile.zip'
|
||||||
|
pkg1 = 'test_walkpackages_zipfile'
|
||||||
|
pkg2 = 'sub'
|
||||||
|
|
||||||
|
zip_file = os.path.join(self.dirname, zip)
|
||||||
|
z = zipfile.ZipFile(zip_file, 'w')
|
||||||
|
z.writestr(pkg2 + '/__init__.py', "")
|
||||||
|
z.writestr(pkg2 + '/' + pkg1 + '/__init__.py', "")
|
||||||
|
z.writestr(pkg2 + '/' + pkg1 + '/mod.py', "")
|
||||||
|
z.writestr(pkg1 + '/__init__.py', "")
|
||||||
|
z.writestr(pkg1 + '/' + pkg2 + '/__init__.py', "")
|
||||||
|
z.writestr(pkg1 + '/' + pkg2 + '/mod.py', "")
|
||||||
|
z.close()
|
||||||
|
|
||||||
|
sys.path.insert(0, zip_file)
|
||||||
|
expected = [
|
||||||
|
'sub',
|
||||||
|
'sub.test_walkpackages_zipfile',
|
||||||
|
'sub.test_walkpackages_zipfile.mod',
|
||||||
|
'test_walkpackages_zipfile',
|
||||||
|
'test_walkpackages_zipfile.sub',
|
||||||
|
'test_walkpackages_zipfile.sub.mod',
|
||||||
|
]
|
||||||
|
actual= [e[1] for e in pkgutil.walk_packages([zip_file])]
|
||||||
|
self.assertEqual(actual, expected)
|
||||||
|
del sys.path[0]
|
||||||
|
|
||||||
|
for pkg in expected:
|
||||||
|
if pkg.endswith('mod'):
|
||||||
|
continue
|
||||||
|
del sys.modules[pkg]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class PkgutilPEP302Tests(unittest.TestCase):
|
class PkgutilPEP302Tests(unittest.TestCase):
|
||||||
|
|
||||||
class MyTestLoader(object):
|
class MyTestLoader(object):
|
||||||
|
@ -324,11 +400,11 @@ class ImportlibMigrationTests(unittest.TestCase):
|
||||||
|
|
||||||
def test_importer_deprecated(self):
|
def test_importer_deprecated(self):
|
||||||
with self.check_deprecated():
|
with self.check_deprecated():
|
||||||
x = pkgutil.ImpImporter("")
|
pkgutil.ImpImporter("")
|
||||||
|
|
||||||
def test_loader_deprecated(self):
|
def test_loader_deprecated(self):
|
||||||
with self.check_deprecated():
|
with self.check_deprecated():
|
||||||
x = pkgutil.ImpLoader("", "", "", "")
|
pkgutil.ImpLoader("", "", "", "")
|
||||||
|
|
||||||
def test_get_loader_avoids_emulation(self):
|
def test_get_loader_avoids_emulation(self):
|
||||||
with check_warnings() as w:
|
with check_warnings() as w:
|
||||||
|
|
|
@ -1147,6 +1147,7 @@ Gavrie Philipson
|
||||||
Adrian Phillips
|
Adrian Phillips
|
||||||
Dusty Phillips
|
Dusty Phillips
|
||||||
Christopher J. Phoenix
|
Christopher J. Phoenix
|
||||||
|
James Pickering
|
||||||
Neale Pickett
|
Neale Pickett
|
||||||
Jim St. Pierre
|
Jim St. Pierre
|
||||||
Dan Pierson
|
Dan Pierson
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue