]> granicus.if.org Git - python/commitdiff
Issue #19286: Adding test demonstrating the failure when a directory is found in...
authorJason R. Coombs <jaraco@jaraco.com>
Sat, 2 Nov 2013 15:29:33 +0000 (11:29 -0400)
committerJason R. Coombs <jaraco@jaraco.com>
Sat, 2 Nov 2013 15:29:33 +0000 (11:29 -0400)
Lib/distutils/tests/test_build_py.py

index 6c6ec208aaa4bc65d51e4d36ef9bbe8e986f6ec8..c4498bca56469647a056d6e946d64cae9d45f295 100644 (file)
@@ -99,6 +99,37 @@ class BuildPyTestCase(support.TempdirManager,
             os.chdir(cwd)
             sys.stdout = old_stdout
 
+    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
         pkg_dir, dist = self.create_dist()