summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2013-11-02 15:29:33 (GMT)
committerJason R. Coombs <jaraco@jaraco.com>2013-11-02 15:29:33 (GMT)
commit93912b9e542f90c2700a0560e127b6de5c36dcf0 (patch)
tree28c3a985e58d41c72582d34bb042c9c826ab6613
parent35aca89617c14e0a15f728e4991eac8c01ccf170 (diff)
downloadcpython-93912b9e542f90c2700a0560e127b6de5c36dcf0.zip
cpython-93912b9e542f90c2700a0560e127b6de5c36dcf0.tar.gz
cpython-93912b9e542f90c2700a0560e127b6de5c36dcf0.tar.bz2
Issue #19286: Adding test demonstrating the failure when a directory is found in the package_data globs.
-rw-r--r--Lib/distutils/tests/test_build_py.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/Lib/distutils/tests/test_build_py.py b/Lib/distutils/tests/test_build_py.py
index e416edd..2ce9d44 100644
--- a/Lib/distutils/tests/test_build_py.py
+++ b/Lib/distutils/tests/test_build_py.py
@@ -121,6 +121,37 @@ class BuildPyTestCase(support.TempdirManager,
found = os.listdir(os.path.join(cmd.build_lib, '__pycache__'))
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):
# makes sure byte_compile is not used
dist = self.create_dist()[1]