[Python-checkins] distutils2: Port fix for #8688
tarek.ziade
python-checkins at python.org
Thu Aug 19 08:34:13 CEST 2010
tarek.ziade pushed 5abba4a77f5a to distutils2:
http://hg.python.org/distutils2/rev/5abba4a77f5a
changeset: 559:5abba4a77f5a
user: ?ric Araujo <merwok at netwok.org>
date: Sat Aug 14 06:18:22 2010 +0200
summary: Port fix for #8688
files: src/distutils2/manifest.py, src/distutils2/tests/test_sdist.py
diff --git a/src/distutils2/manifest.py b/src/distutils2/manifest.py
--- a/src/distutils2/manifest.py
+++ b/src/distutils2/manifest.py
@@ -96,9 +96,24 @@
by 'add_defaults()' and 'read_template()') to the manifest file
named by 'self.manifest'.
"""
+ if os.path.isfile(path):
+ fp = open(path)
+ try:
+ first_line = fp.readline()
+ finally:
+ fp.close()
+
+ if first_line != '# file GENERATED by distutils, do NOT edit\n':
+ logging.info("not writing to manually maintained "
+ "manifest file '%s'", path)
+ return
+
self.sort()
self.remove_duplicates()
- write_file(path, self.files)
+ content = self.files[:]
+ content.insert(0, '# file GENERATED by distutils, do NOT edit')
+ logging.info("writing manifest file '%s'", path)
+ write_file(path, content)
def read(self, path):
"""Read the manifest file (named by 'self.manifest') and use it to
diff --git a/src/distutils2/tests/test_sdist.py b/src/distutils2/tests/test_sdist.py
--- a/src/distutils2/tests/test_sdist.py
+++ b/src/distutils2/tests/test_sdist.py
@@ -45,6 +45,7 @@
"""
MANIFEST = """\
+# file GENERATED by distutils, do NOT edit
README
inroot.txt
setup.py
@@ -345,17 +346,76 @@
archive.close()
def test_get_file_list(self):
+ # make sure MANIFEST is recalculated
dist, cmd = self.get_cmd()
- cmd.finalize_options()
- cmd.template = os.path.join(self.tmp_dir, 'MANIFEST.in')
- f = open(cmd.template, 'w')
+
+ # filling data_files by pointing files in package_data
+ dist.package_data = {'somecode': ['*.txt']}
+ self.write_file((self.tmp_dir, 'somecode', 'doc.txt'), '#')
+ cmd.ensure_finalized()
+ cmd.run()
+
+ f = open(cmd.manifest)
try:
- f.write('include MANIFEST.in\n')
+ manifest = [line.strip() for line in f.read().split('\n')
+ if line.strip() != '']
finally:
f.close()
- cmd.get_file_list()
- self.assertIn('MANIFEST.in', cmd.filelist.files)
+ self.assertEquals(len(manifest), 5)
+
+ # adding a file
+ self.write_file((self.tmp_dir, 'somecode', 'doc2.txt'), '#')
+
+ # make sure build_py is reinitinialized, like a fresh run
+ build_py = dist.get_command_obj('build_py')
+ build_py.finalized = False
+ build_py.ensure_finalized()
+
+ cmd.run()
+
+ f = open(cmd.manifest)
+ try:
+ manifest2 = [line.strip() for line in f.read().split('\n')
+ if line.strip() != '']
+ finally:
+ f.close()
+
+ # do we have the new file in MANIFEST ?
+ self.assertEquals(len(manifest2), 6)
+ self.assertIn('doc2.txt', manifest2[-1])
+
+ def test_manifest_marker(self):
+ # check that autogenerated MANIFESTs have a marker
+ dist, cmd = self.get_cmd()
+ cmd.ensure_finalized()
+ cmd.run()
+
+ f = open(cmd.manifest)
+ try:
+ manifest = [line.strip() for line in f.read().split('\n')
+ if line.strip() != '']
+ finally:
+ f.close()
+
+ self.assertEqual(manifest[0],
+ '# file GENERATED by distutils, do NOT edit')
+
+ def test_manual_manifest(self):
+ # check that a MANIFEST without a marker is left alone
+ dist, cmd = self.get_cmd()
+ cmd.ensure_finalized()
+ self.write_file((self.tmp_dir, cmd.manifest), 'README.manual')
+ cmd.run()
+
+ f = open(cmd.manifest)
+ try:
+ manifest = [line.strip() for line in f.read().split('\n')
+ if line.strip() != '']
+ finally:
+ f.close()
+
+ self.assertEqual(manifest, ['README.manual'])
def test_suite():
return unittest.makeSuite(SDistTestCase)
--
Repository URL: http://hg.python.org/distutils2
More information about the Python-checkins
mailing list