Backport 55731:

SF 1668596/1720897: distutils now copies data files
even if package_dir is empty.
This commit is contained in:
Neal Norwitz 2007-06-02 18:53:07 +00:00
parent 2e23bb7545
commit 2413e038c4
4 changed files with 42 additions and 1 deletions

View File

@ -114,6 +114,8 @@ class build_py (Command):
build_dir = os.path.join(*([self.build_lib] + package.split('.')))
# Length of path to strip from found files
plen = 0
if src_dir:
plen = len(src_dir)+1
# Strip directory from globbed filenames

View File

@ -1,10 +1,13 @@
"""Tests for distutils.command.build_py."""
import os
import sys
import StringIO
import unittest
from distutils.command.build_py import build_py
from distutils.core import Distribution
from distutils.errors import DistutilsFileError
from distutils.tests import support
@ -53,6 +56,38 @@ class BuildPyTestCase(support.TempdirManager,
self.assert_("__init__.pyc" in files)
self.assert_("README.txt" in files)
def test_empty_package_dir (self):
# See SF 1668596/1720897.
cwd = os.getcwd()
# create the distribution files.
sources = self.mkdtemp()
open(os.path.join(sources, "__init__.py"), "w").close()
testdir = os.path.join(sources, "doc")
os.mkdir(testdir)
open(os.path.join(testdir, "testfile"), "w").close()
os.chdir(sources)
sys.stdout = StringIO.StringIO()
try:
dist = Distribution({"packages": ["pkg"],
"package_dir": {"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 test when package_dir is ''")
finally:
# Restore state.
os.chdir(cwd)
sys.stdout = sys.__stdout__
def test_suite():
return unittest.makeSuite(BuildPyTestCase)

View File

@ -155,6 +155,7 @@ Jonathan Dasteel
John DeGood
Vincent Delft
Roger Dev
Raghuram Devarakonda
Toby Dickenson
Yves Dionne
Daniel Dittmar

View File

@ -12,6 +12,9 @@ What's New in Python 2.5.2c1?
Library
-------
- SF 1668596/1720897: distutils now copies data files
even if package_dir is empty.
- Fix bug in marshal where bad data would cause a segfault due to
lack of an infinite recursion check.