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
........
This commit is contained in:
Tarek Ziadé 2009-01-26 17:20:15 +00:00
parent 8fb67e038e
commit f66326f8bd
3 changed files with 73 additions and 11 deletions

View File

@ -458,6 +458,10 @@ class sdist (Command):
self.make_release_tree(base_dir, self.filelist.files) self.make_release_tree(base_dir, self.filelist.files)
archive_files = [] # remember names of files we create 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: for fmt in self.formats:
file = self.make_archive(base_name, fmt, base_dir=base_dir) file = self.make_archive(base_name, fmt, base_dir=base_dir)
archive_files.append(file) archive_files.append(file)

View File

@ -4,10 +4,13 @@ import unittest
import shutil import shutil
import zipfile import zipfile
from os.path import join from os.path import join
import sys
from distutils.command.sdist import sdist from distutils.command.sdist import sdist
from distutils.core import Distribution from distutils.core import Distribution
from distutils.tests.test_config import PyPIRCCommandTestCase from distutils.tests.test_config import PyPIRCCommandTestCase
from distutils.errors import DistutilsExecError
from distutils.spawn import spawn
CURDIR = os.path.dirname(__file__) CURDIR = os.path.dirname(__file__)
TEMP_PKG = join(CURDIR, 'temppkg') TEMP_PKG = join(CURDIR, 'temppkg')
@ -35,6 +38,19 @@ class sdistTestCase(PyPIRCCommandTestCase):
shutil.rmtree(TEMP_PKG) shutil.rmtree(TEMP_PKG)
PyPIRCCommandTestCase.tearDown(self) 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): def _write(self, path, content):
f = open(path, 'w') f = open(path, 'w')
try: try:
@ -46,15 +62,7 @@ class sdistTestCase(PyPIRCCommandTestCase):
# this test creates a package with some vcs dirs in it # this test creates a package with some vcs dirs in it
# and launch sdist to make sure they get pruned # and launch sdist to make sure they get pruned
# on all systems # on all systems
if not os.path.exists(TEMP_PKG): self._init_tmp_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)
# creating VCS directories with some files in them # creating VCS directories with some files in them
os.mkdir(join(TEMP_PKG, 'somecode', '.svn')) os.mkdir(join(TEMP_PKG, 'somecode', '.svn'))
@ -68,8 +76,6 @@ class sdistTestCase(PyPIRCCommandTestCase):
self._write(join(TEMP_PKG, 'somecode', '.git', self._write(join(TEMP_PKG, 'somecode', '.git',
'ok'), 'xxx') 'ok'), 'xxx')
os.chdir(TEMP_PKG)
# now building a sdist # now building a sdist
dist = Distribution() dist = Distribution()
dist.script_name = 'setup.py' dist.script_name = 'setup.py'
@ -103,6 +109,55 @@ class sdistTestCase(PyPIRCCommandTestCase):
# making sure everything has been pruned correctly # making sure everything has been pruned correctly
self.assertEquals(len(content), 4) 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(): def test_suite():
return unittest.makeSuite(sdistTestCase) return unittest.makeSuite(sdistTestCase)

View File

@ -194,6 +194,9 @@ Core and Builtins
Library Library
------- -------
- 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 - Issue #1672332: fix unpickling of subnormal floats, which was
producing a ValueError on some platforms. producing a ValueError on some platforms.