[Python-checkins] r68970 - in python/branches/release30-maint: Lib/distutils/command/sdist.py Lib/distutils/tests/test_sdist.py Misc/NEWS
tarek.ziade
python-checkins at python.org
Mon Jan 26 18:25:44 CET 2009
Author: tarek.ziade
Date: Mon Jan 26 18:25:44 2009
New Revision: 68970
Log:
Merged revisions 68969 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
r68969 | tarek.ziade | 2009-01-26 18:23:20 +0100 (Mon, 26 Jan 2009) | 9 lines
Merged revisions 68951 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r68951 | tarek.ziade | 2009-01-26 00:34:00 +0100 (Mon, 26 Jan 2009) | 1 line
Fixed #1885: --formats=tar,gztar was not working properly in the sdist command
........
................
Modified:
python/branches/release30-maint/ (props changed)
python/branches/release30-maint/Lib/distutils/command/sdist.py
python/branches/release30-maint/Lib/distutils/tests/test_sdist.py
python/branches/release30-maint/Misc/NEWS
Modified: python/branches/release30-maint/Lib/distutils/command/sdist.py
==============================================================================
--- python/branches/release30-maint/Lib/distutils/command/sdist.py (original)
+++ python/branches/release30-maint/Lib/distutils/command/sdist.py Mon Jan 26 18:25:44 2009
@@ -428,6 +428,10 @@
self.make_release_tree(base_dir, self.filelist.files)
archive_files = [] # remember names of files we create
+ # tar archive must be created last to avoid overwrite and remove
+ if 'tar' in self.formats:
+ self.formats.append(self.formats.pop(self.formats.index('tar')))
+
for fmt in self.formats:
file = self.make_archive(base_name, fmt, base_dir=base_dir)
archive_files.append(file)
Modified: python/branches/release30-maint/Lib/distutils/tests/test_sdist.py
==============================================================================
--- python/branches/release30-maint/Lib/distutils/tests/test_sdist.py (original)
+++ python/branches/release30-maint/Lib/distutils/tests/test_sdist.py Mon Jan 26 18:25:44 2009
@@ -4,10 +4,13 @@
import shutil
import zipfile
from os.path import join
+import sys
from distutils.command.sdist import sdist
from distutils.core import Distribution
from distutils.tests.test_config import PyPIRCCommandTestCase
+from distutils.errors import DistutilsExecError
+from distutils.spawn import spawn
CURDIR = os.path.dirname(__file__)
TEMP_PKG = join(CURDIR, 'temppkg')
@@ -35,6 +38,19 @@
shutil.rmtree(TEMP_PKG)
PyPIRCCommandTestCase.tearDown(self)
+ def _init_tmp_pkg(self):
+ if os.path.exists(TEMP_PKG):
+ shutil.rmtree(TEMP_PKG)
+ os.mkdir(TEMP_PKG)
+ os.mkdir(join(TEMP_PKG, 'somecode'))
+ os.mkdir(join(TEMP_PKG, 'dist'))
+ # creating a MANIFEST, a package, and a README
+ self._write(join(TEMP_PKG, 'MANIFEST.in'), MANIFEST_IN)
+ self._write(join(TEMP_PKG, 'README'), 'xxx')
+ self._write(join(TEMP_PKG, 'somecode', '__init__.py'), '#')
+ self._write(join(TEMP_PKG, 'setup.py'), SETUP_PY)
+ os.chdir(TEMP_PKG)
+
def _write(self, path, content):
f = open(path, 'w')
try:
@@ -46,15 +62,7 @@
# this test creates a package with some vcs dirs in it
# and launch sdist to make sure they get pruned
# on all systems
- if not os.path.exists(TEMP_PKG):
- os.mkdir(TEMP_PKG)
- os.mkdir(join(TEMP_PKG, 'somecode'))
-
- # creating a MANIFEST, a package, and a README
- self._write(join(TEMP_PKG, 'MANIFEST.in'), MANIFEST_IN)
- self._write(join(TEMP_PKG, 'README'), 'xxx')
- self._write(join(TEMP_PKG, 'somecode', '__init__.py'), '#')
- self._write(join(TEMP_PKG, 'setup.py'), SETUP_PY)
+ self._init_tmp_pkg()
# creating VCS directories with some files in them
os.mkdir(join(TEMP_PKG, 'somecode', '.svn'))
@@ -68,8 +76,6 @@
self._write(join(TEMP_PKG, 'somecode', '.git',
'ok'), 'xxx')
- os.chdir(TEMP_PKG)
-
# now building a sdist
dist = Distribution()
dist.script_name = 'setup.py'
@@ -103,6 +109,55 @@
# making sure everything has been pruned correctly
self.assertEquals(len(content), 4)
+ def test_make_distribution(self):
+
+ self._init_tmp_pkg()
+
+ # check if tar is installed under win32
+ if sys.platform == 'win32':
+ try:
+ spawn('tar --help')
+ except DistutilsExecError:
+ # let's return, no need to go further
+ return
+
+ # now building a sdist
+ dist = Distribution()
+ dist.script_name = 'setup.py'
+ dist.metadata.name = 'fake'
+ dist.metadata.version = '1.0'
+ dist.metadata.url = 'http://xxx'
+ dist.metadata.author = dist.metadata.author_email = 'xxx'
+ dist.packages = ['somecode']
+ dist.include_package_data = True
+ cmd = sdist(dist)
+ cmd.manifest = 'MANIFEST'
+ cmd.template = 'MANIFEST.in'
+ cmd.dist_dir = 'dist'
+
+ # creating a gztar then a tar
+ cmd.formats = ['gztar', 'tar']
+ cmd.run()
+
+ # making sure we have two files
+ dist_folder = join(TEMP_PKG, 'dist')
+ result = os.listdir(dist_folder)
+ result.sort()
+ self.assertEquals(result,
+ ['fake-1.0.tar', 'fake-1.0.tar.gz'] )
+
+ os.remove(join(dist_folder, 'fake-1.0.tar'))
+ os.remove(join(dist_folder, 'fake-1.0.tar.gz'))
+
+ # now trying a tar then a gztar
+ cmd.formats = ['tar', 'gztar']
+ cmd.run()
+
+ result = os.listdir(dist_folder)
+ result.sort()
+ self.assertEquals(result,
+ ['fake-1.0.tar', 'fake-1.0.tar.gz'])
+
def test_suite():
return unittest.makeSuite(sdistTestCase)
Modified: python/branches/release30-maint/Misc/NEWS
==============================================================================
--- python/branches/release30-maint/Misc/NEWS (original)
+++ python/branches/release30-maint/Misc/NEWS Mon Jan 26 18:25:44 2009
@@ -104,6 +104,9 @@
operator module; use the abstract base classes instead. Also removed
the repeat() function; use mul() instead.
+- Issue #1885: distutils. When running sdist with --formats=tar,gztar
+ the tar file was overriden by the gztar one.
+
- Issue #1672332: fix unpickling of subnormal floats, which was
producing a ValueError on some platforms.
More information about the Python-checkins
mailing list