From b849eddde6722549f9df1be1cd6ea7cf79d28807 Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Thu, 17 Jun 2004 20:16:19 +0000 Subject: fix bug: list of data files was initialized too soon in build_py --- Lib/distutils/command/build_py.py | 2 +- Lib/distutils/tests/test_build_py.py | 50 ++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 Lib/distutils/tests/test_build_py.py diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py index 329b55a..cfbab26 100644 --- a/Lib/distutils/command/build_py.py +++ b/Lib/distutils/command/build_py.py @@ -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 index 0000000..6cdce2c --- /dev/null +++ b/Lib/distutils/tests/test_build_py.py @@ -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) -- cgit v0.12