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:23:20 +00:00
parent 26dd760636
commit 0302cf50eb
3 changed files with 73 additions and 11 deletions

View File

@ -428,6 +428,10 @@ class sdist (Command):
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)

View File

@ -4,10 +4,13 @@ import unittest
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 @@ class sdistTestCase(PyPIRCCommandTestCase):
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 @@ class sdistTestCase(PyPIRCCommandTestCase):
# 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 @@ class sdistTestCase(PyPIRCCommandTestCase):
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 @@ class sdistTestCase(PyPIRCCommandTestCase):
# 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)

View File

@ -148,6 +148,9 @@ Library
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 #4863: distutils.mwerkscompiler has been removed.
- Added a new function: itertools.compress().