Merge with 3.2 for Issue #19286.
This commit is contained in:
commit
ca9242f4f9
|
@ -127,7 +127,8 @@ class build_py (Command):
|
||||||
# Each pattern has to be converted to a platform-specific path
|
# Each pattern has to be converted to a platform-specific path
|
||||||
filelist = glob(os.path.join(src_dir, convert_path(pattern)))
|
filelist = glob(os.path.join(src_dir, convert_path(pattern)))
|
||||||
# Files that match more than one pattern are only added once
|
# Files that match more than one pattern are only added once
|
||||||
files.extend([fn for fn in filelist if fn not in files])
|
files.extend([fn for fn in filelist if fn not in files
|
||||||
|
and os.path.isfile(fn)])
|
||||||
return files
|
return files
|
||||||
|
|
||||||
def build_package_data(self):
|
def build_package_data(self):
|
||||||
|
|
|
@ -121,6 +121,37 @@ class BuildPyTestCase(support.TempdirManager,
|
||||||
found = os.listdir(os.path.join(cmd.build_lib, '__pycache__'))
|
found = os.listdir(os.path.join(cmd.build_lib, '__pycache__'))
|
||||||
self.assertEqual(sorted(found), ['boiledeggs.%s.pyo' % imp.get_tag()])
|
self.assertEqual(sorted(found), ['boiledeggs.%s.pyo' % imp.get_tag()])
|
||||||
|
|
||||||
|
def test_dir_in_package_data(self):
|
||||||
|
"""
|
||||||
|
A directory in package_data should not be added to the filelist.
|
||||||
|
"""
|
||||||
|
# See bug 19286
|
||||||
|
sources = self.mkdtemp()
|
||||||
|
pkg_dir = os.path.join(sources, "pkg")
|
||||||
|
|
||||||
|
os.mkdir(pkg_dir)
|
||||||
|
open(os.path.join(pkg_dir, "__init__.py"), "w").close()
|
||||||
|
|
||||||
|
docdir = os.path.join(pkg_dir, "doc")
|
||||||
|
os.mkdir(docdir)
|
||||||
|
open(os.path.join(docdir, "testfile"), "w").close()
|
||||||
|
|
||||||
|
# create the directory that could be incorrectly detected as a file
|
||||||
|
os.mkdir(os.path.join(docdir, 'otherdir'))
|
||||||
|
|
||||||
|
os.chdir(sources)
|
||||||
|
dist = Distribution({"packages": ["pkg"],
|
||||||
|
"package_data": {"pkg": ["doc/*"]}})
|
||||||
|
# script_name need not exist, it just need to be initialized
|
||||||
|
dist.script_name = os.path.join(sources, "setup.py")
|
||||||
|
dist.script_args = ["build"]
|
||||||
|
dist.parse_command_line()
|
||||||
|
|
||||||
|
try:
|
||||||
|
dist.run_commands()
|
||||||
|
except DistutilsFileError:
|
||||||
|
self.fail("failed package_data when data dir includes a dir")
|
||||||
|
|
||||||
def test_dont_write_bytecode(self):
|
def test_dont_write_bytecode(self):
|
||||||
# makes sure byte_compile is not used
|
# makes sure byte_compile is not used
|
||||||
dist = self.create_dist()[1]
|
dist = self.create_dist()[1]
|
||||||
|
|
|
@ -13,6 +13,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #19286: Directories in ``package_data`` are no longer added to
|
||||||
|
the filelist, preventing failure outlined in the ticket.
|
||||||
|
|
||||||
- Issue #19435: Fix directory traversal attack on CGIHttpRequestHandler.
|
- Issue #19435: Fix directory traversal attack on CGIHttpRequestHandler.
|
||||||
|
|
||||||
Tests
|
Tests
|
||||||
|
|
Loading…
Reference in New Issue