summaryrefslogtreecommitdiffstats
path: root/Lib/distutils/tests
diff options
context:
space:
mode:
authorTarek Ziadé <ziade.tarek@gmail.com>2009-05-28 13:01:13 (GMT)
committerTarek Ziadé <ziade.tarek@gmail.com>2009-05-28 13:01:13 (GMT)
commit77c8b376fcb2a0c77cc1c9b21f16c2524f63d78a (patch)
treef6360dcaa17d6459ffd4868f95be56650440bd7c /Lib/distutils/tests
parent735204e579fc11a1956260ab9cda996e01923ce8 (diff)
downloadcpython-77c8b376fcb2a0c77cc1c9b21f16c2524f63d78a.zip
cpython-77c8b376fcb2a0c77cc1c9b21f16c2524f63d78a.tar.gz
cpython-77c8b376fcb2a0c77cc1c9b21f16c2524f63d78a.tar.bz2
Merged revisions 72981 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r72981 | tarek.ziade | 2009-05-28 14:53:54 +0200 (Thu, 28 May 2009) | 1 line Fixed #6048: Distutils uses the tarfile module instead of the tar command now ........
Diffstat (limited to 'Lib/distutils/tests')
-rw-r--r--Lib/distutils/tests/test_archive_util.py113
1 files changed, 111 insertions, 2 deletions
diff --git a/Lib/distutils/tests/test_archive_util.py b/Lib/distutils/tests/test_archive_util.py
index cabb55b..5db9a5d 100644
--- a/Lib/distutils/tests/test_archive_util.py
+++ b/Lib/distutils/tests/test_archive_util.py
@@ -3,12 +3,15 @@ __revision__ = "$Id$"
import unittest
import os
+import tarfile
from os.path import splitdrive
+import warnings
from distutils.archive_util import (check_archive_formats, make_tarball,
make_zipfile, make_archive)
-from distutils.spawn import find_executable
+from distutils.spawn import find_executable, spawn
from distutils.tests import support
+from test.support import check_warnings
try:
import zipfile
@@ -19,12 +22,13 @@ except ImportError:
class ArchiveUtilTestCase(support.TempdirManager,
unittest.TestCase):
- @unittest.skipUnless(find_executable('tar'), 'Need the tar command to run')
def test_make_tarball(self):
# creating something to tar
tmpdir = self.mkdtemp()
self.write_file([tmpdir, 'file1'], 'xxx')
self.write_file([tmpdir, 'file2'], 'xxx')
+ os.mkdir(os.path.join(tmpdir, 'sub'))
+ self.write_file([tmpdir, 'sub', 'file3'], 'xxx')
tmpdir2 = self.mkdtemp()
unittest.skipUnless(splitdrive(tmpdir)[0] == splitdrive(tmpdir2)[0],
@@ -55,6 +59,111 @@ class ArchiveUtilTestCase(support.TempdirManager,
tarball = base_name + '.tar'
self.assert_(os.path.exists(tarball))
+ def _tarinfo(self, path):
+ tar = tarfile.open(path)
+ try:
+ names = tar.getnames()
+ names.sort()
+ return tuple(names)
+ finally:
+ tar.close()
+
+ def _create_files(self):
+ # creating something to tar
+ tmpdir = self.mkdtemp()
+ dist = os.path.join(tmpdir, 'dist')
+ os.mkdir(dist)
+ self.write_file([dist, 'file1'], 'xxx')
+ self.write_file([dist, 'file2'], 'xxx')
+ os.mkdir(os.path.join(dist, 'sub'))
+ self.write_file([dist, 'sub', 'file3'], 'xxx')
+ os.mkdir(os.path.join(dist, 'sub2'))
+ tmpdir2 = self.mkdtemp()
+ base_name = os.path.join(tmpdir2, 'archive')
+ return tmpdir, tmpdir2, base_name
+
+ @unittest.skipUnless(find_executable('tar'), 'Need the tar command to run')
+ def test_tarfile_vs_tar(self):
+ tmpdir, tmpdir2, base_name = self._create_files()
+ old_dir = os.getcwd()
+ os.chdir(tmpdir)
+ try:
+ make_tarball(base_name, 'dist')
+ finally:
+ os.chdir(old_dir)
+
+ # check if the compressed tarball was created
+ tarball = base_name + '.tar.gz'
+ self.assert_(os.path.exists(tarball))
+
+ # now create another tarball using `tar`
+ tarball2 = os.path.join(tmpdir, 'archive2.tar.gz')
+ cmd = ['tar', '-czf', 'archive2.tar.gz', 'dist']
+ old_dir = os.getcwd()
+ os.chdir(tmpdir)
+ try:
+ spawn(cmd)
+ finally:
+ os.chdir(old_dir)
+
+ self.assert_(os.path.exists(tarball2))
+ # let's compare both tarballs
+ self.assertEquals(self._tarinfo(tarball), self._tarinfo(tarball2))
+
+ # trying an uncompressed one
+ base_name = os.path.join(tmpdir2, 'archive')
+ old_dir = os.getcwd()
+ os.chdir(tmpdir)
+ try:
+ make_tarball(base_name, 'dist', compress=None)
+ finally:
+ os.chdir(old_dir)
+ tarball = base_name + '.tar'
+ self.assert_(os.path.exists(tarball))
+
+ # now for a dry_run
+ base_name = os.path.join(tmpdir2, 'archive')
+ old_dir = os.getcwd()
+ os.chdir(tmpdir)
+ try:
+ make_tarball(base_name, 'dist', compress=None, dry_run=True)
+ finally:
+ os.chdir(old_dir)
+ tarball = base_name + '.tar'
+ self.assert_(os.path.exists(tarball))
+
+ @unittest.skipUnless(find_executable('compress'),
+ 'The compress program is required')
+ def test_compress_deprecated(self):
+ tmpdir, tmpdir2, base_name = self._create_files()
+
+ # using compress and testing the PendingDeprecationWarning
+ old_dir = os.getcwd()
+ os.chdir(tmpdir)
+ try:
+ with check_warnings() as w:
+ warnings.simplefilter("always")
+ make_tarball(base_name, 'dist', compress='compress')
+ finally:
+ os.chdir(old_dir)
+ tarball = base_name + '.tar.Z'
+ self.assert_(os.path.exists(tarball))
+ self.assertEquals(len(w.warnings), 1)
+
+ # same test with dry_run
+ os.remove(tarball)
+ old_dir = os.getcwd()
+ os.chdir(tmpdir)
+ try:
+ with check_warnings() as w:
+ warnings.simplefilter("always")
+ make_tarball(base_name, 'dist', compress='compress',
+ dry_run=True)
+ finally:
+ os.chdir(old_dir)
+ self.assert_(not os.path.exists(tarball))
+ self.assertEquals(len(w.warnings), 1)
+
@unittest.skipUnless(ZIP_SUPPORT, 'Need zip support to run')
def test_make_zipfile(self):
# creating something to tar