# HG changeset patch # User Jeff Hammel # Date 1330376288 28800 # Node ID c54db80d6e7fbe02b2b398f46ea8f17c5fed5218 # Parent 4c4d1e194bf7e4fa2686c9dbc5c20f1fe45ec3e2 fix test diff -r 4c4d1e194bf7 -r c54db80d6e7f paint/package.py --- a/paint/package.py Fri Feb 24 16:13:13 2012 -0800 +++ b/paint/package.py Mon Feb 27 12:58:08 2012 -0800 @@ -4,11 +4,18 @@ import os import shutil +import subprocess +import sys import tarfile import tempfile import urllib2 import utils +try: + from subprocess import check_call as call +except ImportError: + from subporcess import call + __all__ = ['Package'] class Package(object): @@ -60,7 +67,20 @@ assert tarfile.is_tarfile(archive), "%s is not an archive" % self.src tf = tarfile.TarFile.open(archive) self._tmppath = tempfile.mkdtemp() - tf.extractall(path=self._tmppath) + members = tf.getmembers() + + # cut off the top level directory + assert not [i for i in members if not os.path.sep in i.name] + tld = set() + for member in members: + directory, member.name = member.name.split(os.path.sep, 1) + tld.add(directory) + assert len(tld) == 1 + + # extract + for member in members: + tf.extract(member, path=self._tmppath) + tf.close() def is_archive(self, path): """returns if the filesystem path is an archive""" @@ -90,7 +110,7 @@ raise AssertionError("%s does not exist" % setup_py) # setup the egg info - call([sys.executable, 'setup.py', 'egg_info'], cwd=directory, stdout=PIPE) + call([sys.executable, 'setup.py', 'egg_info'], cwd=directory, stdout=subprocess.PIPE) # get the .egg-info directory egg_info = [i for i in os.listdir(directory)