Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 0302cf5

Browse files
author
Tarek Ziadé
committed
Merged revisions 68951 via svnmerge from
svn+ssh://[email protected]/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 ........
1 parent 26dd760 commit 0302cf5

3 files changed

Lines changed: 73 additions & 11 deletions

File tree

Lib/distutils/command/sdist.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,10 @@ def make_distribution(self):
428428

429429
self.make_release_tree(base_dir, self.filelist.files)
430430
archive_files = [] # remember names of files we create
431+
# tar archive must be created last to avoid overwrite and remove
432+
if 'tar' in self.formats:
433+
self.formats.append(self.formats.pop(self.formats.index('tar')))
434+
431435
for fmt in self.formats:
432436
file = self.make_archive(base_name, fmt, base_dir=base_dir)
433437
archive_files.append(file)

Lib/distutils/tests/test_sdist.py

Lines changed: 66 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,13 @@
44
import shutil
55
import zipfile
66
from os.path import join
7+
import sys
78

89
from distutils.command.sdist import sdist
910
from distutils.core import Distribution
1011
from distutils.tests.test_config import PyPIRCCommandTestCase
12+
from distutils.errors import DistutilsExecError
13+
from distutils.spawn import spawn
1114

1215
CURDIR = os.path.dirname(__file__)
1316
TEMP_PKG = join(CURDIR, 'temppkg')
@@ -35,6 +38,19 @@ def tearDown(self):
3538
shutil.rmtree(TEMP_PKG)
3639
PyPIRCCommandTestCase.tearDown(self)
3740

41+
def _init_tmp_pkg(self):
42+
if os.path.exists(TEMP_PKG):
43+
shutil.rmtree(TEMP_PKG)
44+
os.mkdir(TEMP_PKG)
45+
os.mkdir(join(TEMP_PKG, 'somecode'))
46+
os.mkdir(join(TEMP_PKG, 'dist'))
47+
# creating a MANIFEST, a package, and a README
48+
self._write(join(TEMP_PKG, 'MANIFEST.in'), MANIFEST_IN)
49+
self._write(join(TEMP_PKG, 'README'), 'xxx')
50+
self._write(join(TEMP_PKG, 'somecode', '__init__.py'), '#')
51+
self._write(join(TEMP_PKG, 'setup.py'), SETUP_PY)
52+
os.chdir(TEMP_PKG)
53+
3854
def _write(self, path, content):
3955
f = open(path, 'w')
4056
try:
@@ -46,15 +62,7 @@ def test_prune_file_list(self):
4662
# this test creates a package with some vcs dirs in it
4763
# and launch sdist to make sure they get pruned
4864
# on all systems
49-
if not os.path.exists(TEMP_PKG):
50-
os.mkdir(TEMP_PKG)
51-
os.mkdir(join(TEMP_PKG, 'somecode'))
52-
53-
# creating a MANIFEST, a package, and a README
54-
self._write(join(TEMP_PKG, 'MANIFEST.in'), MANIFEST_IN)
55-
self._write(join(TEMP_PKG, 'README'), 'xxx')
56-
self._write(join(TEMP_PKG, 'somecode', '__init__.py'), '#')
57-
self._write(join(TEMP_PKG, 'setup.py'), SETUP_PY)
65+
self._init_tmp_pkg()
5866

5967
# creating VCS directories with some files in them
6068
os.mkdir(join(TEMP_PKG, 'somecode', '.svn'))
@@ -68,8 +76,6 @@ def test_prune_file_list(self):
6876
self._write(join(TEMP_PKG, 'somecode', '.git',
6977
'ok'), 'xxx')
7078

71-
os.chdir(TEMP_PKG)
72-
7379
# now building a sdist
7480
dist = Distribution()
7581
dist.script_name = 'setup.py'
@@ -103,6 +109,55 @@ def test_prune_file_list(self):
103109
# making sure everything has been pruned correctly
104110
self.assertEquals(len(content), 4)
105111

112+
def test_make_distribution(self):
113+
114+
self._init_tmp_pkg()
115+
116+
# check if tar is installed under win32
117+
if sys.platform == 'win32':
118+
try:
119+
spawn('tar --help')
120+
except DistutilsExecError:
121+
# let's return, no need to go further
122+
return
123+
124+
# now building a sdist
125+
dist = Distribution()
126+
dist.script_name = 'setup.py'
127+
dist.metadata.name = 'fake'
128+
dist.metadata.version = '1.0'
129+
dist.metadata.url = 'http://xxx'
130+
dist.metadata.author = dist.metadata.author_email = 'xxx'
131+
dist.packages = ['somecode']
132+
dist.include_package_data = True
133+
cmd = sdist(dist)
134+
cmd.manifest = 'MANIFEST'
135+
cmd.template = 'MANIFEST.in'
136+
cmd.dist_dir = 'dist'
137+
138+
# creating a gztar then a tar
139+
cmd.formats = ['gztar', 'tar']
140+
cmd.run()
141+
142+
# making sure we have two files
143+
dist_folder = join(TEMP_PKG, 'dist')
144+
result = os.listdir(dist_folder)
145+
result.sort()
146+
self.assertEquals(result,
147+
['fake-1.0.tar', 'fake-1.0.tar.gz'] )
148+
149+
os.remove(join(dist_folder, 'fake-1.0.tar'))
150+
os.remove(join(dist_folder, 'fake-1.0.tar.gz'))
151+
152+
# now trying a tar then a gztar
153+
cmd.formats = ['tar', 'gztar']
154+
cmd.run()
155+
156+
result = os.listdir(dist_folder)
157+
result.sort()
158+
self.assertEquals(result,
159+
['fake-1.0.tar', 'fake-1.0.tar.gz'])
160+
106161
def test_suite():
107162
return unittest.makeSuite(sdistTestCase)
108163

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,9 @@ Library
148148
operator module; use the abstract base classes instead. Also removed
149149
the repeat() function; use mul() instead.
150150

151+
- Issue #1885: distutils. When running sdist with --formats=tar,gztar
152+
the tar file was overriden by the gztar one.
153+
151154
- Issue #4863: distutils.mwerkscompiler has been removed.
152155

153156
- Added a new function: itertools.compress().

0 commit comments

Comments
 (0)