Merge with 3.3 for Issue #19286.

This commit is contained in:
Jason R. Coombs 2013-11-02 13:04:51 -04:00
commit e71fb28519
3 changed files with 36 additions and 1 deletions

View File

@ -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):

View File

@ -123,6 +123,37 @@ class BuildPyTestCase(support.TempdirManager,
self.assertEqual(sorted(found), self.assertEqual(sorted(found),
['boiledeggs.%s.pyo' % sys.implementation.cache_tag]) ['boiledeggs.%s.pyo' % sys.implementation.cache_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]

View File

@ -31,6 +31,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 #15114: The html.parser module now raises a DeprecationWarning when the - Issue #15114: The html.parser module now raises a DeprecationWarning when the
strict argument of HTMLParser or the HTMLParser.error method are used. strict argument of HTMLParser or the HTMLParser.error method are used.