Commit d5199b9d authored by Julien Muchembled's avatar Julien Muchembled

Add support for Python 3

parent 26f3d2e9
...@@ -73,7 +73,7 @@ class Recipe(object): ...@@ -73,7 +73,7 @@ class Recipe(object):
dependencies = [] dependencies = []
for part in options.get('dependencies', '').split(): for part in options.get('dependencies', '').split():
m = md5() m = md5()
for (k, v) in self.buildout[part].iteritems(): for v in self.buildout[part].values():
m.update(v) m.update(v)
dependencies.append(m.hexdigest()) dependencies.append(m.hexdigest())
options['dependencies'] = ' '.join(dependencies) options['dependencies'] = ' '.join(dependencies)
...@@ -194,7 +194,7 @@ class Recipe(object): ...@@ -194,7 +194,7 @@ class Recipe(object):
elif retcode > 0: elif retcode > 0:
log.error('Command failed with exit code %s: %s' % (retcode, args)) log.error('Command failed with exit code %s: %s' % (retcode, args))
raise zc.buildout.UserError('System error') raise zc.buildout.UserError('System error')
except OSError, e: except OSError as e:
log.error('Command failed: %s: %s' % (e, args)) log.error('Command failed: %s: %s' % (e, args))
raise zc.buildout.UserError('System error') raise zc.buildout.UserError('System error')
return files.splitlines() return files.splitlines()
...@@ -202,8 +202,8 @@ class Recipe(object): ...@@ -202,8 +202,8 @@ class Recipe(object):
def check_promises(self, log=None): def check_promises(self, log=None):
result = True result = True
log = logging.getLogger(self.name) log = logging.getLogger(self.name)
for path in filter(None, self.options['promises'].splitlines()): for path in self.options['promises'].splitlines():
if not os.path.exists(path): if path and not os.path.exists(path):
result = False result = False
log.warning('could not find promise "%s"' % path) log.warning('could not find promise "%s"' % path)
return result return result
...@@ -412,9 +412,9 @@ class Recipe(object): ...@@ -412,9 +412,9 @@ class Recipe(object):
st_mode = os.stat(f_abspath).st_mode st_mode = os.stat(f_abspath).st_mode
if not stat.S_ISREG(st_mode): if not stat.S_ISREG(st_mode):
continue continue
with open(f_abspath) as f: with open(f_abspath, 'rb') as f:
header = f.readline(128) header = f.readline(128)
if header.startswith('#!') and header[-1] != '\n': if header.startswith(b'#!') and header[-1] != b'\n':
os.rename(f_abspath, f_abspath + '.shebang') os.rename(f_abspath, f_abspath + '.shebang')
with open(f_abspath, 'w') as f: with open(f_abspath, 'w') as f:
os.fchmod(f.fileno(), stat.S_IMODE(st_mode)) os.fchmod(f.fileno(), stat.S_IMODE(st_mode))
......
...@@ -135,8 +135,8 @@ class NonInformativeTests(unittest.TestCase): ...@@ -135,8 +135,8 @@ class NonInformativeTests(unittest.TestCase):
def test_environment_restored_after_building_a_part(self): def test_environment_restored_after_building_a_part(self):
# Make sure the test variables do not exist beforehand # Make sure the test variables do not exist beforehand
self.failIf('HRC_FOO' in os.environ) self.assertFalse('HRC_FOO' in os.environ)
self.failIf('HRC_BAR' in os.environ) self.assertFalse('HRC_BAR' in os.environ)
# Place a sentinel value to make sure the original environment is # Place a sentinel value to make sure the original environment is
# maintained # maintained
os.environ['HRC_SENTINEL'] = 'sentinel' os.environ['HRC_SENTINEL'] = 'sentinel'
...@@ -150,8 +150,8 @@ class NonInformativeTests(unittest.TestCase): ...@@ -150,8 +150,8 @@ class NonInformativeTests(unittest.TestCase):
# Make sure the test variables are not kept in the environment after # Make sure the test variables are not kept in the environment after
# the part has been built. # the part has been built.
self.failIf('HRC_FOO' in os.environ) self.assertFalse('HRC_FOO' in os.environ)
self.failIf('HRC_BAR' in os.environ) self.assertFalse('HRC_BAR' in os.environ)
# Make sure the sentinel value is still in the environment # Make sure the sentinel value is still in the environment
self.assertEqual(os.environ.get('HRC_SENTINEL'), 'sentinel') self.assertEqual(os.environ.get('HRC_SENTINEL'), 'sentinel')
...@@ -224,7 +224,7 @@ class NonInformativeTests(unittest.TestCase): ...@@ -224,7 +224,7 @@ class NonInformativeTests(unittest.TestCase):
url = '%s/testdata/package-0.0.0.tar.gz' % os.path.dirname(__file__) url = '%s/testdata/package-0.0.0.tar.gz' % os.path.dirname(__file__)
file, is_temp = recipe.download_file(url) file, is_temp = recipe.download_file(url)
self.assertFalse(is_temp) self.assertFalse(is_temp)
self.assertEquals(file, url) self.assertEqual(file, url)
url = 'ftp://ftp.gnu.org/welcome.msg' url = 'ftp://ftp.gnu.org/welcome.msg'
file, is_temp = recipe.download_file(url) file, is_temp = recipe.download_file(url)
...@@ -248,7 +248,7 @@ class NonInformativeTests(unittest.TestCase): ...@@ -248,7 +248,7 @@ class NonInformativeTests(unittest.TestCase):
}, },
prefix=buildout_prefix prefix=buildout_prefix
) )
self.assertEquals(recipe.options.get('prefix'), buildout_prefix) self.assertEqual(recipe.options.get('prefix'), buildout_prefix)
recipe = self.make_recipe({}, 'test', { recipe = self.make_recipe({}, 'test', {
'url': 'file://%s/testdata/package-0.0.0.tar.gz' % os.path.dirname(__file__), 'url': 'file://%s/testdata/package-0.0.0.tar.gz' % os.path.dirname(__file__),
...@@ -256,7 +256,7 @@ class NonInformativeTests(unittest.TestCase): ...@@ -256,7 +256,7 @@ class NonInformativeTests(unittest.TestCase):
}, },
prefix=buildout_prefix prefix=buildout_prefix
) )
self.assertEquals(recipe.options.get('prefix'), self.dir) self.assertEqual(recipe.options.get('prefix'), self.dir)
def test_get_installed_files(self): def test_get_installed_files(self):
prefix = os.path.join(self.dir, 'test_parts/test_local') prefix = os.path.join(self.dir, 'test_parts/test_local')
...@@ -292,7 +292,8 @@ class NonInformativeTests(unittest.TestCase): ...@@ -292,7 +292,8 @@ class NonInformativeTests(unittest.TestCase):
recipe.buildout_prefix = prefix recipe.buildout_prefix = prefix
file_list = recipe.get_installed_files(ref_path) file_list = recipe.get_installed_files(ref_path)
installed_files.pop(2) installed_files.pop(2)
self.assertEquals(set([os.path.relpath(f, prefix) for f in file_list]), set(installed_files)) self.assertEqual(set(os.path.relpath(f, prefix) for f in file_list),
set(installed_files))
def test_honor_buidlout_keep_compile_directory(self): def test_honor_buidlout_keep_compile_directory(self):
buildout = {'keep-compile-dir' : 'true'} buildout = {'keep-compile-dir' : 'true'}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment