]> granicus.if.org Git - python/commitdiff
fix bug: list of data files was initialized too soon in build_py
authorFred Drake <fdrake@acm.org>
Thu, 17 Jun 2004 20:16:19 +0000 (20:16 +0000)
committerFred Drake <fdrake@acm.org>
Thu, 17 Jun 2004 20:16:19 +0000 (20:16 +0000)
Lib/distutils/command/build_py.py
Lib/distutils/tests/test_build_py.py [new file with mode: 0644]

index 329b55a9d567b6f54f718362e4ba4eedf2a629eb..cfbab262ccd3d0a8c4f9b95cd8d2e7b2c516454e 100644 (file)
@@ -53,11 +53,11 @@ class build_py (Command):
         self.packages = self.distribution.packages
         self.py_modules = self.distribution.py_modules
         self.package_data = self.distribution.package_data
-        self.data_files = self.get_data_files()
         self.package_dir = {}
         if self.distribution.package_dir:
             for name, path in self.distribution.package_dir.items():
                 self.package_dir[name] = convert_path(path)
+        self.data_files = self.get_data_files()
 
         # Ick, copied straight from install_lib.py (fancy_getopt needs a
         # type system!  Hell, *everything* needs a type system!!!)
diff --git a/Lib/distutils/tests/test_build_py.py b/Lib/distutils/tests/test_build_py.py
new file mode 100644 (file)
index 0000000..6cdce2c
--- /dev/null
@@ -0,0 +1,50 @@
+"""Tests for distutils.command.build_py."""
+
+import os
+import unittest
+
+from distutils.command.build_py import build_py
+from distutils.core import Distribution
+
+from distutils.tests import support
+
+
+class BuildPyTestCase(support.TempdirManager, unittest.TestCase):
+
+    def test_package_data(self):
+        sources = self.mkdtemp()
+        f = open(os.path.join(sources, "__init__.py"), "w")
+        f.write("# Pretend this is a package.")
+        f.close()
+        f = open(os.path.join(sources, "README.txt"), "w")
+        f.write("Info about this package")
+        f.close()
+
+        destination = self.mkdtemp()
+
+        dist = Distribution({"packages": ["pkg"],
+                             "package_dir": {"pkg": sources}})
+        # script_name need not exist, it just need to be initialized
+        dist.script_name = os.path.join(sources, "setup.py")
+        dist.command_obj["build"] = support.DummyCommand(
+            force=0,
+            build_lib=destination)
+        dist.packages = ["pkg"]
+        dist.package_data = {"pkg": ["README.txt"]}
+        dist.package_dir = {"pkg": sources}
+
+        cmd = build_py(dist)
+        cmd.ensure_finalized()
+        self.assertEqual(cmd.package_data, dist.package_data)
+
+        cmd.run()
+
+        self.assertEqual(len(cmd.get_outputs()), 2)
+        pkgdest = os.path.join(destination, "pkg")
+        files = os.listdir(pkgdest)
+        self.assert_("__init__.py" in files)
+        self.assert_("README.txt" in files)
+
+
+def test_suite():
+    return unittest.makeSuite(BuildPyTestCase)