From 6e10d8c7136ef751fb6c4c3eb0236a70c5682b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Wed, 25 May 2016 11:40:22 +0200 Subject: [PATCH 1/5] [ostree] Rename duplicated test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Lubomír Sedlář --- tests/test_ostree_installer_phase.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_ostree_installer_phase.py b/tests/test_ostree_installer_phase.py index d8a28325..bcc36937 100644 --- a/tests/test_ostree_installer_phase.py +++ b/tests/test_ostree_installer_phase.py @@ -169,8 +169,8 @@ class OstreeThreadTest(helpers.PungiTestCase): @mock.patch('pungi.wrappers.iso.IsoWrapper') @mock.patch('os.link') @mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper') - def test_run(self, KojiWrapper, link, IsoWrapper, - get_file_size, get_mtime, ImageCls, run): + def test_run_external_source(self, KojiWrapper, link, IsoWrapper, + get_file_size, get_mtime, ImageCls, run): compose = helpers.DummyCompose(self.topdir, { 'release_name': 'Fedora', 'release_version': 'Rawhide', From 9ab9aaf8d989c65fe4d1dfb6f259abe1ce6ee3ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Wed, 25 May 2016 13:22:47 +0200 Subject: [PATCH 2/5] The message attribute on exception is deprecated MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One should rather use str(exception) to get the text message. Signed-off-by: Lubomír Sedlář --- tests/test_buildinstall.py | 6 +++--- tests/test_koji_wrapper.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/test_buildinstall.py b/tests/test_buildinstall.py index 6cfb1e05..48d5bbf6 100755 --- a/tests/test_buildinstall.py +++ b/tests/test_buildinstall.py @@ -183,7 +183,7 @@ class TestBuildinstallPhase(PungiTestCase): phase.validate() self.assertIn('Deprecated config option: buildinstall_upgrade_image', - ctx.exception.message) + str(ctx.exception)) def test_lorax_options_with_buildinstall(self): compose = BuildInstallCompose(self.topdir, { @@ -197,8 +197,8 @@ class TestBuildinstallPhase(PungiTestCase): with self.assertRaises(ValueError) as ctx: phase.validate() - self.assertIn('buildinstall', ctx.exception.message) - self.assertIn('lorax_options', ctx.exception.message) + self.assertIn('buildinstall', str(ctx.exception)) + self.assertIn('lorax_options', str(ctx.exception)) @mock.patch('pungi.phases.buildinstall.ThreadPool') @mock.patch('pungi.phases.buildinstall.LoraxWrapper') diff --git a/tests/test_koji_wrapper.py b/tests/test_koji_wrapper.py index 185ad7f5..1a043824 100755 --- a/tests/test_koji_wrapper.py +++ b/tests/test_koji_wrapper.py @@ -442,7 +442,7 @@ class RunBlockingCmdTest(KojiWrapperBaseTestCase): self.assertItemsEqual(run.mock_calls, [mock.call('cmd', can_fail=True, logfile=None)]) - self.assertIn('Could not find task ID', ctx.exception.message) + self.assertIn('Could not find task ID', str(ctx.exception)) @mock.patch('pungi.wrappers.kojiwrapper.run') def test_disconnect_and_retry(self, run): @@ -497,7 +497,7 @@ class RunBlockingCmdTest(KojiWrapperBaseTestCase): with self.assertRaises(RuntimeError) as ctx: self.koji.run_blocking_cmd('cmd', max_retries=2) - self.assertIn('Failed to wait', ctx.exception.message) + self.assertIn('Failed to wait', str(ctx.exception)) self.assertEqual(run.mock_calls, [mock.call('cmd', can_fail=True, logfile=None), mock.call(['koji', 'watch-task', '1234'], can_fail=True, logfile=None), From b55f8abd29486f2437e27e508fec77e68d2fc336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Wed, 25 May 2016 13:27:57 +0200 Subject: [PATCH 3/5] Stop using functools.total_ordering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It is only available since 2.7, and only saves us from defining three trivial methods. Signed-off-by: Lubomír Sedlář --- tests/test_pkgset_pkgsets.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/test_pkgset_pkgsets.py b/tests/test_pkgset_pkgsets.py index 6d6f88f6..72e2bdd4 100755 --- a/tests/test_pkgset_pkgsets.py +++ b/tests/test_pkgset_pkgsets.py @@ -6,7 +6,6 @@ import os import sys import unittest import json -import functools import tempfile sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) @@ -32,7 +31,6 @@ class MockPathInfo(object): return os.path.join('rpms', self.get_filename(rpm_info)) -@functools.total_ordering class MockFile(object): def __init__(self, path): if path.startswith('/tmp'): @@ -63,6 +61,15 @@ class MockFile(object): except AttributeError: return self.file_path < other + def __lt__(self, other): + return self <= other and self != other + + def __ge__(self, other): + return not (self <= other) or self == other + + def __gt__(self, other): + return not (self <= other) + class MockFileCache(dict): """Mock for kobo.pkgset.FileCache. From b634a18a7f59a4bd065d42dc02e63e2fd9c3c403 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Wed, 25 May 2016 13:37:39 +0200 Subject: [PATCH 4/5] Stop using str.format MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On Python 2.6, it requires the format placeholder to have explicit index of argument, so using % formatting is easier. There are a couple places where the method is still used because the same argument is used twice. Signed-off-by: Lubomír Sedlář --- pungi/ostree.py | 6 ++-- pungi/phases/base.py | 10 +++--- pungi/phases/createiso.py | 16 ++++----- pungi/phases/ostree.py | 10 +++--- pungi/phases/ostree_installer.py | 2 +- pungi/util.py | 4 +-- pungi/wrappers/lorax.py | 10 +++--- tests/test_createiso_phase.py | 50 ++++++++++++++-------------- tests/test_createiso_script.py | 26 +++++++-------- tests/test_imagebuildphase.py | 28 +++++++++------- tests/test_ostree_installer_phase.py | 10 +++--- tests/test_ostree_phase.py | 14 ++++---- tests/test_ostree_script.py | 22 ++++++------ tests/test_util.py | 8 ++--- 14 files changed, 110 insertions(+), 106 deletions(-) diff --git a/pungi/ostree.py b/pungi/ostree.py index f36c794e..8047c5cc 100644 --- a/pungi/ostree.py +++ b/pungi/ostree.py @@ -25,7 +25,7 @@ def make_log_file(log_dir, filename): if not log_dir: return None ensure_dir(log_dir) - return os.path.join(log_dir, '{}.log'.format(filename)) + return os.path.join(log_dir, '%s.log' % filename) def init_ostree_repo(repo, log_dir=None): @@ -33,13 +33,13 @@ def init_ostree_repo(repo, log_dir=None): log_file = make_log_file(log_dir, 'init-ostree-repo') if not os.path.isdir(repo) or not os.listdir(repo): ensure_dir(repo) - shortcuts.run(['ostree', 'init', '--repo={}'.format(repo), '--mode=archive-z2'], + shortcuts.run(['ostree', 'init', '--repo=%s' % repo, '--mode=archive-z2'], show_cmd=True, stdout=True, logfile=log_file) def make_ostree_repo(repo, config, log_dir=None): log_file = make_log_file(log_dir, 'create-ostree-repo') - shortcuts.run(['rpm-ostree', 'compose', 'tree', '--repo={}'.format(repo), config], + shortcuts.run(['rpm-ostree', 'compose', 'tree', '--repo=%s' % repo, config], show_cmd=True, stdout=True, logfile=log_file) diff --git a/pungi/phases/base.py b/pungi/phases/base.py index 6e242498..8e8fe639 100644 --- a/pungi/phases/base.py +++ b/pungi/phases/base.py @@ -103,8 +103,8 @@ class ImageConfigMixin(object): def get_config(self, cfg, opt): return cfg.get( opt, self.compose.conf.get( - '{}_{}'.format(self.name, opt), self.compose.conf.get( - 'global_{}'.format(opt)))) + '%s_%s' % (self.name, opt), self.compose.conf.get( + 'global_%s' % opt))) def get_release(self, cfg): """ @@ -113,7 +113,7 @@ class ImageConfigMixin(object): global settings. """ for key, conf in [('release', cfg), - ('{}_release'.format(self.name), self.compose.conf), + ('%s_release' % self.name, self.compose.conf), ('global_release', self.compose.conf)]: if key in conf: return conf[key] or self.compose.image_release @@ -126,7 +126,7 @@ class ImageConfigMixin(object): """ if 'ksurl' in cfg: return util.resolve_git_url(cfg['ksurl']) - if '{}_ksurl'.format(self.name) in self.compose.conf: + if '%s_ksurl' % self.name in self.compose.conf: return self.phase_ksurl if 'global_ksurl' in self.compose.conf: return self.global_ksurl @@ -137,7 +137,7 @@ class ImageConfigMixin(object): """Get phase level ksurl, making sure to resolve it only once.""" # The phase-level setting is cached as instance attribute of the phase. if not self._phase_ksurl: - ksurl = self.compose.conf.get('{}_ksurl'.format(self.name)) + ksurl = self.compose.conf.get('%s_ksurl' % self.name) self._phase_ksurl = util.resolve_git_url(ksurl) return self._phase_ksurl diff --git a/pungi/phases/createiso.py b/pungi/phases/createiso.py index 03ce3886..ff7e7d79 100644 --- a/pungi/phases/createiso.py +++ b/pungi/phases/createiso.py @@ -127,16 +127,16 @@ class CreateisoPhase(PhaseBase): cmd['cmd'] = [ 'pungi-createiso', - '--output-dir={}'.format(iso_dir), - '--iso-name={}'.format(filename), - '--volid={}'.format(volid), - '--graft-points={}'.format(graft_points), - '--arch={}'.format(arch), + '--output-dir=%s' % iso_dir, + '--iso-name=%s' % filename, + '--volid=%s' % volid, + '--graft-points=%s' % graft_points, + '--arch=%s' % arch, ] if bootable: cmd['cmd'].append( - '--buildinstall-method={}'.format(self.compose.conf['buildinstall_method']) + '--buildinstall-method=%s' % self.compose.conf['buildinstall_method'] ) if self.compose.supported: @@ -145,8 +145,8 @@ class CreateisoPhase(PhaseBase): if self.compose.conf.get('create_jigdo', True): jigdo_dir = self.compose.paths.compose.jigdo_dir(arch, variant) cmd['cmd'].extend([ - '--jigdo-dir={}'.format(jigdo_dir), - '--os-tree={}'.format(os_tree), + '--jigdo-dir=%s' % jigdo_dir, + '--os-tree=%s' % os_tree, ]) commands.append((cmd, variant, arch)) diff --git a/pungi/phases/ostree.py b/pungi/phases/ostree.py index f9014c1d..95813256 100644 --- a/pungi/phases/ostree.py +++ b/pungi/phases/ostree.py @@ -67,8 +67,8 @@ class OSTreeThread(WorkerThread): def _run_ostree_cmd(self, compose, variant, arch, config, config_repo): cmd = [ 'pungi-make-ostree', - '--log-dir={}'.format(os.path.join(self.logdir)), - '--treefile={}'.format(os.path.join(config_repo, config['treefile'])), + '--log-dir=%s' % os.path.join(self.logdir), + '--treefile=%s' % os.path.join(config_repo, config['treefile']), config['ostree_repo'] ] @@ -107,8 +107,8 @@ def tweak_file(path, source_repo): """ with open(path, 'r') as f: contents = f.read() - replacement = 'baseurl={}'.format(source_repo) - contents = re.sub(r'^(mirrorlist|metalink|baseurl)=.*$', - replacement, contents, flags=re.MULTILINE) + replacement = 'baseurl=%s' % source_repo + exp = re.compile(r'^(mirrorlist|metalink|baseurl)=.*$', re.MULTILINE) + contents = exp.sub(replacement, contents) with open(path, 'w') as f: f.write(contents) diff --git a/pungi/phases/ostree_installer.py b/pungi/phases/ostree_installer.py index 5d8a7628..ea1059ef 100644 --- a/pungi/phases/ostree_installer.py +++ b/pungi/phases/ostree_installer.py @@ -48,7 +48,7 @@ class OstreeInstallerThread(WorkerThread): def worker(self, compose, variant, arch, config): msg = 'Ostree phase for variant %s, arch %s' % (variant.uid, arch) self.pool.log_info('[BEGIN] %s' % msg) - self.logdir = compose.paths.log.topdir('{}/ostree_installer'.format(arch)) + self.logdir = compose.paths.log.topdir('%s/ostree_installer' % arch) source_repo = self._get_source_repo(compose, arch, config['source_repo_from']) output_dir = os.path.join(compose.paths.work.topdir(arch), variant.uid, 'ostree_installer') diff --git a/pungi/util.py b/pungi/util.py index 0522eeb1..31d25337 100644 --- a/pungi/util.py +++ b/pungi/util.py @@ -456,10 +456,10 @@ def find_old_compose(old_compose_dirs, release_short, release_version, def process_args(fmt, args): """Given a list of arguments, format each value with the format string. - >>> process_args('--opt={}', ['foo', 'bar']) + >>> process_args('--opt=%s', ['foo', 'bar']) ['--opt=foo', '--opt=bar'] """ - return [fmt.format(val) for val in force_list(args or [])] + return [fmt % val for val in force_list(args or [])] @contextlib.contextmanager diff --git a/pungi/wrappers/lorax.py b/pungi/wrappers/lorax.py index cbe4e230..98fdd949 100644 --- a/pungi/wrappers/lorax.py +++ b/pungi/wrappers/lorax.py @@ -58,11 +58,11 @@ class LoraxWrapper(object): if volid: cmd.append("--volid=%s" % volid) - cmd.extend(process_args('--installpkgs={}', buildinstallpackages)) - cmd.extend(process_args('--add-template={}', add_template)) - cmd.extend(process_args('--add-arch-template={}', add_arch_template)) - cmd.extend(process_args('--add-template-var={}', add_template_var)) - cmd.extend(process_args('--add-arch-template-var={}', add_arch_template_var)) + cmd.extend(process_args('--installpkgs=%s', buildinstallpackages)) + cmd.extend(process_args('--add-template=%s', add_template)) + cmd.extend(process_args('--add-arch-template=%s', add_arch_template)) + cmd.extend(process_args('--add-template-var=%s', add_template_var)) + cmd.extend(process_args('--add-arch-template-var=%s', add_arch_template_var)) output_dir = os.path.abspath(output_dir) cmd.append(output_dir) diff --git a/tests/test_createiso_phase.py b/tests/test_createiso_phase.py index 46156814..304aea8a 100755 --- a/tests/test_createiso_phase.py +++ b/tests/test_createiso_phase.py @@ -96,15 +96,15 @@ class CreateisoPhaseTest(helpers.PungiTestCase): [mock.call(( compose, { - 'iso_path': '{}/compose/Server/x86_64/iso/image-name'.format(self.topdir), + 'iso_path': '%s/compose/Server/x86_64/iso/image-name' % self.topdir, 'bootable': False, 'cmd': ['pungi-createiso', - '--output-dir={}/compose/Server/x86_64/iso'.format(self.topdir), + '--output-dir=%s/compose/Server/x86_64/iso' % self.topdir, '--iso-name=image-name', '--volid=test-1.0 Server.x86_64', '--graft-points=dummy-graft-points', '--arch=x86_64', '--supported', - '--jigdo-dir={}/compose/Server/x86_64/jigdo'.format(self.topdir), - '--os-tree={}/compose/Server/x86_64/os'.format(self.topdir)], + '--jigdo-dir=%s/compose/Server/x86_64/jigdo' % self.topdir, + '--os-tree=%s/compose/Server/x86_64/os' % self.topdir], 'label': '', 'disc_num': 1, 'disc_count': 1, @@ -157,32 +157,32 @@ class CreateisoPhaseTest(helpers.PungiTestCase): self.assertItemsEqual( pool.queue_put.call_args_list, [mock.call((compose, - {'iso_path': '{}/compose/Server/x86_64/iso/image-name'.format(self.topdir), + {'iso_path': '%s/compose/Server/x86_64/iso/image-name' % self.topdir, 'bootable': True, 'cmd': ['pungi-createiso', - '--output-dir={}/compose/Server/x86_64/iso'.format(self.topdir), + '--output-dir=%s/compose/Server/x86_64/iso' % self.topdir, '--iso-name=image-name', '--volid=test-1.0 Server.x86_64', '--graft-points=dummy-graft-points', '--arch=x86_64', '--buildinstall-method=lorax', '--supported', - '--jigdo-dir={}/compose/Server/x86_64/jigdo'.format(self.topdir), - '--os-tree={}/compose/Server/x86_64/os'.format(self.topdir)], + '--jigdo-dir=%s/compose/Server/x86_64/jigdo' % self.topdir, + '--os-tree=%s/compose/Server/x86_64/os' % self.topdir], 'label': '', 'disc_num': 1, 'disc_count': 1}, compose.variants['Server'], 'x86_64')), mock.call((compose, - {'iso_path': '{}/compose/Server/source/iso/image-name'.format(self.topdir), + {'iso_path': '%s/compose/Server/source/iso/image-name' % self.topdir, 'bootable': False, 'cmd': ['pungi-createiso', - '--output-dir={}/compose/Server/source/iso'.format(self.topdir), + '--output-dir=%s/compose/Server/source/iso' % self.topdir, '--iso-name=image-name', '--volid=test-1.0 Server.src', '--graft-points=dummy-graft-points', '--arch=src', '--supported', - '--jigdo-dir={}/compose/Server/source/jigdo'.format(self.topdir), - '--os-tree={}/compose/Server/source/tree'.format(self.topdir)], + '--jigdo-dir=%s/compose/Server/source/jigdo' % self.topdir, + '--os-tree=%s/compose/Server/source/tree' % self.topdir], 'label': '', 'disc_num': 1, 'disc_count': 1}, @@ -207,7 +207,7 @@ class CreateisoThreadTest(helpers.PungiTestCase): 'koji_profile': 'koji', }) cmd = { - 'iso_path': '{}/compose/Server/x86_64/iso/image-name'.format(self.topdir), + 'iso_path': '%s/compose/Server/x86_64/iso/image-name' % self.topdir, 'bootable': False, 'cmd': mock.Mock(), 'label': '', @@ -233,14 +233,14 @@ class CreateisoThreadTest(helpers.PungiTestCase): self.assertEqual(getTag.call_args_list, [mock.call('f25-build')]) self.assertEqual(get_runroot_cmd.call_args_list, [mock.call('f25-build', 'x86_64', cmd['cmd'], channel=None, - mounts=['{}'.format(self.topdir)], + mounts=[self.topdir], packages=['coreutils', 'genisoimage', 'isomd5sum', 'jigdo', 'pungi'], task_id=True, use_shell=True)]) self.assertEqual( run_runroot.call_args_list, [mock.call(get_runroot_cmd.return_value, - log_file='{}/logs/x86_64/createiso-image-name.x86_64.log'.format(self.topdir))]) + log_file='%s/logs/x86_64/createiso-image-name.x86_64.log' % self.topdir)]) self.assertEqual(IsoWrapper.return_value.get_implanted_md5.call_args_list, [mock.call(cmd['iso_path'])]) self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list, @@ -273,7 +273,7 @@ class CreateisoThreadTest(helpers.PungiTestCase): 'koji_profile': 'koji', }) cmd = { - 'iso_path': '{}/compose/Server/x86_64/iso/image-name'.format(self.topdir), + 'iso_path': '%s/compose/Server/x86_64/iso/image-name' % self.topdir, 'bootable': True, 'cmd': mock.Mock(), 'label': '', @@ -299,14 +299,14 @@ class CreateisoThreadTest(helpers.PungiTestCase): self.assertEqual(getTag.call_args_list, [mock.call('f25-build')]) self.assertEqual(get_runroot_cmd.call_args_list, [mock.call('f25-build', 'x86_64', cmd['cmd'], channel=None, - mounts=['{}'.format(self.topdir)], + mounts=[self.topdir], packages=['coreutils', 'genisoimage', 'isomd5sum', 'jigdo', 'pungi', 'lorax'], task_id=True, use_shell=True)]) self.assertEqual( run_runroot.call_args_list, [mock.call(get_runroot_cmd.return_value, - log_file='{}/logs/x86_64/createiso-image-name.x86_64.log'.format(self.topdir))]) + log_file='%s/logs/x86_64/createiso-image-name.x86_64.log' % self.topdir)]) self.assertEqual(IsoWrapper.return_value.get_implanted_md5.call_args_list, [mock.call(cmd['iso_path'])]) self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list, @@ -340,7 +340,7 @@ class CreateisoThreadTest(helpers.PungiTestCase): ] }) cmd = { - 'iso_path': '{}/compose/Server/x86_64/iso/image-name'.format(self.topdir), + 'iso_path': '%s/compose/Server/x86_64/iso/image-name' % self.topdir, 'bootable': False, 'cmd': mock.Mock(), 'label': '', @@ -378,7 +378,7 @@ class CreateisoThreadTest(helpers.PungiTestCase): ] }) cmd = { - 'iso_path': '{}/compose/Server/x86_64/iso/image-name'.format(self.topdir), + 'iso_path': '%s/compose/Server/x86_64/iso/image-name' % self.topdir, 'bootable': False, 'cmd': mock.Mock(), 'label': '', @@ -400,8 +400,8 @@ class CreateisoThreadTest(helpers.PungiTestCase): compose.log_info.assert_has_calls([ mock.call('[FAIL] Iso (variant Server, arch x86_64) failed, but going on anyway.'), - mock.call('Runroot task failed: 1234. See {} for more details.'.format( - self.topdir + '/logs/x86_64/createiso-image-name.x86_64.log')) + mock.call('Runroot task failed: 1234. See %s for more details.' + % (self.topdir + '/logs/x86_64/createiso-image-name.x86_64.log')) ]) @mock.patch('pungi.phases.createiso.IsoWrapper') @@ -417,7 +417,7 @@ class CreateisoThreadTest(helpers.PungiTestCase): 'runroot': False, }) cmd = { - 'iso_path': '{}/compose/Server/x86_64/iso/image-name'.format(self.topdir), + 'iso_path': '%s/compose/Server/x86_64/iso/image-name' % self.topdir, 'bootable': False, 'cmd': mock.Mock(), 'label': '', @@ -435,7 +435,7 @@ class CreateisoThreadTest(helpers.PungiTestCase): self.assertEqual( run.call_args_list, [mock.call(cmd['cmd'], show_cmd=True, - logfile='{}/logs/x86_64/createiso-image-name.x86_64.log'.format(self.topdir))]) + logfile='%s/logs/x86_64/createiso-image-name.x86_64.log' % self.topdir)]) self.assertEqual(IsoWrapper.return_value.get_implanted_md5.call_args_list, [mock.call(cmd['iso_path'])]) self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list, @@ -465,7 +465,7 @@ class CreateisoThreadTest(helpers.PungiTestCase): ] }) cmd = { - 'iso_path': '{}/compose/Server/x86_64/iso/image-name'.format(self.topdir), + 'iso_path': '%s/compose/Server/x86_64/iso/image-name' % self.topdir, 'bootable': False, 'cmd': mock.Mock(), 'label': '', diff --git a/tests/test_createiso_script.py b/tests/test_createiso_script.py index 6597ef2d..d214dc7c 100755 --- a/tests/test_createiso_script.py +++ b/tests/test_createiso_script.py @@ -27,7 +27,7 @@ class CreateIsoScriptTest(helpers.PungiTestCase): @mock.patch('kobo.shortcuts.run') def test_minimal_run(self, run): createiso.main([ - '--output-dir={}'.format(self.outdir), + '--output-dir=%s' % self.outdir, '--iso-name=DP-1.0-20160405.t.3-x86_64.iso', '--volid=DP-1.0-20160405.t.3', '--graft-points=graft-list', @@ -54,7 +54,7 @@ class CreateIsoScriptTest(helpers.PungiTestCase): run.return_value = (0, '/usr/share/lorax') createiso.main([ - '--output-dir={}'.format(self.outdir), + '--output-dir=%s' % self.outdir, '--iso-name=DP-1.0-20160405.t.3-x86_64.iso', '--volid=DP-1.0-20160405.t.3', '--graft-points=graft-list', @@ -93,7 +93,7 @@ class CreateIsoScriptTest(helpers.PungiTestCase): run.return_value = (0, '/usr/share/lorax') createiso.main([ - '--output-dir={}'.format(self.outdir), + '--output-dir=%s' % self.outdir, '--iso-name=DP-1.0-20160405.t.3-i386.iso', '--volid=DP-1.0-20160405.t.3', '--graft-points=graft-list', @@ -129,7 +129,7 @@ class CreateIsoScriptTest(helpers.PungiTestCase): run.return_value = (0, '/usr/share/lorax') createiso.main([ - '--output-dir={}'.format(self.outdir), + '--output-dir=%s' % self.outdir, '--iso-name=DP-1.0-20160405.t.3-ppc64.iso', '--volid=DP-1.0-20160405.t.3', '--graft-points=graft-list', @@ -161,7 +161,7 @@ class CreateIsoScriptTest(helpers.PungiTestCase): @mock.patch('kobo.shortcuts.run') def test_bootable_run_buildinstall(self, run): createiso.main([ - '--output-dir={}'.format(self.outdir), + '--output-dir=%s' % self.outdir, '--iso-name=DP-1.0-20160405.t.3-ppc64.iso', '--volid=DP-1.0-20160405.t.3', '--graft-points=graft-list', @@ -194,24 +194,24 @@ class CreateIsoScriptTest(helpers.PungiTestCase): def test_run_with_jigdo_bad_args(self, run, stderr): with self.assertRaises(SystemExit): createiso.main([ - '--output-dir={}'.format(self.outdir), + '--output-dir=%s' % self.outdir, '--iso-name=DP-1.0-20160405.t.3-x86_64.iso', '--volid=DP-1.0-20160405.t.3', '--graft-points=graft-list', '--arch=x86_64', - '--jigdo-dir={}/jigdo'.format(self.topdir), + '--jigdo-dir=%s/jigdo' % self.topdir, ]) @mock.patch('kobo.shortcuts.run') def test_run_with_jigdo(self, run): createiso.main([ - '--output-dir={}'.format(self.outdir), + '--output-dir=%s' % self.outdir, '--iso-name=DP-1.0-20160405.t.3-x86_64.iso', '--volid=DP-1.0-20160405.t.3', '--graft-points=graft-list', '--arch=x86_64', - '--jigdo-dir={}/jigdo'.format(self.topdir), - '--os-tree={}/os'.format(self.topdir), + '--jigdo-dir=%s/jigdo' % self.topdir, + '--os-tree=%s/os' % self.topdir, ]) self.maxDiff = None self.assertItemsEqual( @@ -228,9 +228,9 @@ class CreateIsoScriptTest(helpers.PungiTestCase): mock.call('isoinfo -R -f -i DP-1.0-20160405.t.3-x86_64.iso | grep -v \'/TRANS.TBL$\' | sort >> DP-1.0-20160405.t.3-x86_64.iso.manifest', show_cmd=True, stdout=True, workdir=self.outdir), mock.call(['jigdo-file', 'make-template', '--force', - '--image={}/isos/DP-1.0-20160405.t.3-x86_64.iso'.format(self.topdir), - '--jigdo={}/jigdo/DP-1.0-20160405.t.3-x86_64.iso.jigdo'.format(self.topdir), - '--template={}/jigdo/DP-1.0-20160405.t.3-x86_64.iso.template'.format(self.topdir), + '--image=%s/isos/DP-1.0-20160405.t.3-x86_64.iso' % self.topdir, + '--jigdo=%s/jigdo/DP-1.0-20160405.t.3-x86_64.iso.jigdo' % self.topdir, + '--template=%s/jigdo/DP-1.0-20160405.t.3-x86_64.iso.template' % self.topdir, '--no-servers-section', '--report=noprogress', self.topdir + '/os//'], show_cmd=True, stdout=True, workdir=self.outdir)] ) diff --git a/tests/test_imagebuildphase.py b/tests/test_imagebuildphase.py index 33933c31..40e383f6 100755 --- a/tests/test_imagebuildphase.py +++ b/tests/test_imagebuildphase.py @@ -558,18 +558,22 @@ class TestCreateImageBuildThread(PungiTestCase): self.assertItemsEqual( linker.mock_calls, - [mock.call('/koji/task/1235/Fedora-Docker-Base-20160103.amd64.qcow2', - self.topdir + '/compose/Client/amd64/images/Fedora-Docker-Base-20160103.amd64.qcow2', - link_type='hardlink-or-copy'), - mock.call('/koji/task/1235/Fedora-Docker-Base-20160103.amd64.tar.xz', - self.topdir + '/compose/Client/amd64/images/Fedora-Docker-Base-20160103.amd64.tar.xz', - link_type='hardlink-or-copy'), - mock.call('/koji/task/1235/Fedora-Docker-Base-20160103.x86_64.qcow2', - self.topdir + '/compose/Client/x86_64/images/Fedora-Docker-Base-20160103.x86_64.qcow2', - link_type='hardlink-or-copy'), - mock.call('/koji/task/1235/Fedora-Docker-Base-20160103.x86_64.tar.xz', - self.topdir + '/compose/Client/x86_64/images/Fedora-Docker-Base-20160103.x86_64.tar.xz', - link_type='hardlink-or-copy')]) + [mock.call.link( + '/koji/task/1235/Fedora-Docker-Base-20160103.amd64.qcow2', + self.topdir + '/compose/Client/amd64/images/Fedora-Docker-Base-20160103.amd64.qcow2', + link_type='hardlink-or-copy'), + mock.call.link( + '/koji/task/1235/Fedora-Docker-Base-20160103.amd64.tar.xz', + self.topdir + '/compose/Client/amd64/images/Fedora-Docker-Base-20160103.amd64.tar.xz', + link_type='hardlink-or-copy'), + mock.call.link( + '/koji/task/1235/Fedora-Docker-Base-20160103.x86_64.qcow2', + self.topdir + '/compose/Client/x86_64/images/Fedora-Docker-Base-20160103.x86_64.qcow2', + link_type='hardlink-or-copy'), + mock.call.link( + '/koji/task/1235/Fedora-Docker-Base-20160103.x86_64.tar.xz', + self.topdir + '/compose/Client/x86_64/images/Fedora-Docker-Base-20160103.x86_64.tar.xz', + link_type='hardlink-or-copy')]) image_relative_paths = { 'image_dir/Client/amd64/Fedora-Docker-Base-20160103.amd64.qcow2': { diff --git a/tests/test_ostree_installer_phase.py b/tests/test_ostree_installer_phase.py index bcc36937..f1aef46f 100644 --- a/tests/test_ostree_installer_phase.py +++ b/tests/test_ostree_installer_phase.py @@ -139,7 +139,7 @@ class OstreeThreadTest(helpers.PungiTestCase): '--product=Fedora', '--version=Rawhide', '--release=20160321.n.0', - '--source=file://{}/compose/Everything/x86_64/os'.format(self.topdir), + '--source=file://%s/compose/Everything/x86_64/os' % self.topdir, '--variant=Everything', '--nomacboot', self.topdir + '/work/x86_64/Everything/ostree_installer'], @@ -314,11 +314,11 @@ class OstreeThreadTest(helpers.PungiTestCase): '--product=Fedora', '--version=Rawhide', '--release=20160321.n.0', - '--source=file://{}/compose/Everything/x86_64/os'.format(self.topdir), + '--source=file://%s/compose/Everything/x86_64/os' % self.topdir, '--variant=Everything', '--nomacboot', - '--add-template={}/some_file.txt'.format(templ_dir), - '--add-arch-template={}/other_file.txt'.format(templ_dir), + '--add-template=%s/some_file.txt' % templ_dir, + '--add-arch-template=%s/other_file.txt' % templ_dir, self.topdir + '/work/x86_64/Everything/ostree_installer'], channel=None, mounts=[self.topdir], packages=['pungi', 'lorax', 'ostree'], @@ -391,7 +391,7 @@ class OstreeThreadTest(helpers.PungiTestCase): ['lorax', '--product=Fedora', '--version=Rawhide', '--release=20151203.t.0', - '--source=file://{}/compose/Everything/x86_64/os'.format(self.topdir), + '--source=file://%s/compose/Everything/x86_64/os' % self.topdir, '--variant=Everything', '--nomacboot', '--installpkgs=fedora-productimg-atomic', diff --git a/tests/test_ostree_phase.py b/tests/test_ostree_phase.py index 1e2c4729..a962d618 100755 --- a/tests/test_ostree_phase.py +++ b/tests/test_ostree_phase.py @@ -125,8 +125,8 @@ class OSTreeThreadTest(helpers.PungiTestCase): self.assertEqual(koji.get_runroot_cmd.call_args_list, [mock.call('rrt', 'x86_64', ['pungi-make-ostree', - '--log-dir={}/logs/x86_64/Everything/ostree-1'.format(self.topdir), - '--treefile={}/fedora-atomic-docker-host.json'.format( + '--log-dir=%s/logs/x86_64/Everything/ostree-1' % self.topdir, + '--treefile=%s/fedora-atomic-docker-host.json' % ( self.topdir + '/work/ostree-1/config_repo'), self.repo], channel=None, mounts=[self.topdir, self.repo], @@ -137,13 +137,13 @@ class OSTreeThreadTest(helpers.PungiTestCase): log_file=self.topdir + '/logs/x86_64/Everything/ostree-1/runroot.log')]) with open(self.topdir + '/work/ostree-1/config_repo/fedora-rawhide.repo') as f: - self.assertIn('baseurl=http://example.com/Everything/x86_64/os'.format(self.topdir), + self.assertIn('baseurl=http://example.com/Everything/x86_64/os', f.read()) with open(self.topdir + '/work/ostree-1/config_repo/fedora-24.repo') as f: - self.assertIn('baseurl=http://example.com/Everything/x86_64/os'.format(self.topdir), + self.assertIn('baseurl=http://example.com/Everything/x86_64/os', f.read()) with open(self.topdir + '/work/ostree-1/config_repo/fedora-23.repo') as f: - self.assertIn('baseurl=http://example.com/Everything/x86_64/os'.format(self.topdir), + self.assertIn('baseurl=http://example.com/Everything/x86_64/os', f.read()) self.assertTrue(os.path.isdir(self.repo)) @@ -180,8 +180,8 @@ class OSTreeThreadTest(helpers.PungiTestCase): compose.log_info.assert_has_calls([ mock.call('[FAIL] Ostree (variant Everything, arch x86_64) failed, but going on anyway.'), - mock.call('Runroot task failed: 1234. See {} for more details.'.format( - self.topdir + '/logs/x86_64/Everything/ostree-1/runroot.log')) + mock.call('Runroot task failed: 1234. See %s for more details.' + % (self.topdir + '/logs/x86_64/Everything/ostree-1/runroot.log')) ]) @mock.patch('pungi.wrappers.scm.get_dir_from_scm') diff --git a/tests/test_ostree_script.py b/tests/test_ostree_script.py index 318565fa..f17b5620 100755 --- a/tests/test_ostree_script.py +++ b/tests/test_ostree_script.py @@ -22,17 +22,17 @@ class OstreeScriptTest(helpers.PungiTestCase): repo = os.path.join(self.topdir, 'atomic') ostree.main([ - '--log-dir={}'.format(os.path.join(self.topdir, 'logs', 'Atomic')), - '--treefile={}/fedora-atomic-docker-host.json'.format(self.topdir), + '--log-dir=%s' % os.path.join(self.topdir, 'logs', 'Atomic'), + '--treefile=%s/fedora-atomic-docker-host.json' % self.topdir, repo, ]) self.maxDiff = None self.assertItemsEqual( run.call_args_list, - [mock.call(['ostree', 'init', '--repo={}'.format(repo), '--mode=archive-z2'], + [mock.call(['ostree', 'init', '--repo=%s' % repo, '--mode=archive-z2'], logfile=self.topdir + '/logs/Atomic/init-ostree-repo.log', show_cmd=True, stdout=True), - mock.call(['rpm-ostree', 'compose', 'tree', '--repo={}'.format(repo), + mock.call(['rpm-ostree', 'compose', 'tree', '--repo=%s' % repo, self.topdir + '/fedora-atomic-docker-host.json'], logfile=self.topdir + '/logs/Atomic/create-ostree-repo.log', show_cmd=True, stdout=True)]) @@ -43,17 +43,17 @@ class OstreeScriptTest(helpers.PungiTestCase): os.mkdir(repo) ostree.main([ - '--log-dir={}'.format(os.path.join(self.topdir, 'logs', 'Atomic')), - '--treefile={}/fedora-atomic-docker-host.json'.format(self.topdir), + '--log-dir=%s' % os.path.join(self.topdir, 'logs', 'Atomic'), + '--treefile=%s/fedora-atomic-docker-host.json' % self.topdir, repo, ]) self.maxDiff = None self.assertItemsEqual( run.call_args_list, - [mock.call(['ostree', 'init', '--repo={}'.format(repo), '--mode=archive-z2'], + [mock.call(['ostree', 'init', '--repo=%s' % repo, '--mode=archive-z2'], logfile=self.topdir + '/logs/Atomic/init-ostree-repo.log', show_cmd=True, stdout=True), - mock.call(['rpm-ostree', 'compose', 'tree', '--repo={}'.format(repo), + mock.call(['rpm-ostree', 'compose', 'tree', '--repo=%s' % repo, self.topdir + '/fedora-atomic-docker-host.json'], logfile=self.topdir + '/logs/Atomic/create-ostree-repo.log', show_cmd=True, stdout=True)]) @@ -64,15 +64,15 @@ class OstreeScriptTest(helpers.PungiTestCase): helpers.touch(os.path.join(repo, 'initialized')) ostree.main([ - '--log-dir={}'.format(os.path.join(self.topdir, 'logs', 'Atomic')), - '--treefile={}/fedora-atomic-docker-host.json'.format(self.topdir), + '--log-dir=%s' % os.path.join(self.topdir, 'logs', 'Atomic'), + '--treefile=%s/fedora-atomic-docker-host.json' % self.topdir, repo, ]) self.maxDiff = None self.assertItemsEqual( run.call_args_list, - [mock.call(['rpm-ostree', 'compose', 'tree', '--repo={}'.format(repo), + [mock.call(['rpm-ostree', 'compose', 'tree', '--repo=%s' % repo, self.topdir + '/fedora-atomic-docker-host.json'], logfile=self.topdir + '/logs/Atomic/create-ostree-repo.log', show_cmd=True, stdout=True)]) diff --git a/tests/test_util.py b/tests/test_util.py index af28cdc5..6678a274 100755 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -204,11 +204,11 @@ class TestFindOldCompose(unittest.TestCase): class TestHelpers(PungiTestCase): def test_process_args(self): - self.assertEqual(util.process_args('--opt={}', None), []) - self.assertEqual(util.process_args('--opt={}', []), []) - self.assertEqual(util.process_args('--opt={}', ['foo', 'bar']), + self.assertEqual(util.process_args('--opt=%s', None), []) + self.assertEqual(util.process_args('--opt=%s', []), []) + self.assertEqual(util.process_args('--opt=%s', ['foo', 'bar']), ['--opt=foo', '--opt=bar']) - self.assertEqual(util.process_args('--opt={}', 'foo'), ['--opt=foo']) + self.assertEqual(util.process_args('--opt=%s', 'foo'), ['--opt=foo']) def test_makedirs(self): util.makedirs(self.topdir + '/foo/bar/baz') From d5512fd6ff98197a67623bd35f255764b5a98840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Wed, 25 May 2016 13:39:02 +0200 Subject: [PATCH 5/5] Use unittest2 if available MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The module backports features to Python 2.6 and 2.7. If it is available, the tests will use it. If it is not available, it will fall back to regular unittest. On Python 2.7, the tests pass anyway. On Python 2.6, there are failures with Python 2.6. Signed-off-by: Lubomír Sedlář --- tests/helpers.py | 5 ++++- tests/test_buildinstall.py | 5 ++++- tests/test_checks.py | 5 ++++- tests/test_compose.py | 5 ++++- tests/test_createiso_phase.py | 5 ++++- tests/test_createrepo_wrapper.py | 5 ++++- tests/test_createrepophase.py | 5 ++++- tests/test_imagebuildphase.py | 5 ++++- tests/test_imagechecksumphase.py | 6 ++++-- tests/test_koji_wrapper.py | 5 ++++- tests/test_lorax_wrapper.py | 5 ++++- tests/test_pkgset_pkgsets.py | 5 ++++- tests/test_scm.py | 5 ++++- tests/test_test_phase.py | 5 ++++- tests/test_util.py | 5 ++++- 15 files changed, 60 insertions(+), 16 deletions(-) diff --git a/tests/helpers.py b/tests/helpers.py index d0049af4..9a6b04bd 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -2,7 +2,10 @@ import mock import os -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import tempfile import shutil import errno diff --git a/tests/test_buildinstall.py b/tests/test_buildinstall.py index 48d5bbf6..b4c1653d 100755 --- a/tests/test_buildinstall.py +++ b/tests/test_buildinstall.py @@ -2,7 +2,10 @@ # -*- coding: utf-8 -*- -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import mock import os diff --git a/tests/test_checks.py b/tests/test_checks.py index 0e2a9e2b..d39dbf86 100755 --- a/tests/test_checks.py +++ b/tests/test_checks.py @@ -2,7 +2,10 @@ # -*- coding: utf-8 -*- import mock -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import os import sys import StringIO diff --git a/tests/test_compose.py b/tests/test_compose.py index c40c9d1d..a590929e 100755 --- a/tests/test_compose.py +++ b/tests/test_compose.py @@ -2,7 +2,10 @@ # -*- coding: utf-8 -*- import mock -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import os import sys import tempfile diff --git a/tests/test_createiso_phase.py b/tests/test_createiso_phase.py index 304aea8a..7861fe0a 100755 --- a/tests/test_createiso_phase.py +++ b/tests/test_createiso_phase.py @@ -2,7 +2,10 @@ # -*- coding: utf-8 -*- -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import mock import os diff --git a/tests/test_createrepo_wrapper.py b/tests/test_createrepo_wrapper.py index 708720c5..29dadfb0 100755 --- a/tests/test_createrepo_wrapper.py +++ b/tests/test_createrepo_wrapper.py @@ -1,7 +1,10 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import os import sys diff --git a/tests/test_createrepophase.py b/tests/test_createrepophase.py index a1084d91..43593bad 100755 --- a/tests/test_createrepophase.py +++ b/tests/test_createrepophase.py @@ -2,7 +2,10 @@ # -*- coding: utf-8 -*- -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import mock import os diff --git a/tests/test_imagebuildphase.py b/tests/test_imagebuildphase.py index 40e383f6..f87fe6a0 100755 --- a/tests/test_imagebuildphase.py +++ b/tests/test_imagebuildphase.py @@ -2,7 +2,10 @@ # -*- coding: utf-8 -*- -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import mock import os diff --git a/tests/test_imagechecksumphase.py b/tests/test_imagechecksumphase.py index 6e235950..30d1f856 100755 --- a/tests/test_imagechecksumphase.py +++ b/tests/test_imagechecksumphase.py @@ -1,8 +1,10 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- - -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import mock import os diff --git a/tests/test_koji_wrapper.py b/tests/test_koji_wrapper.py index 1a043824..72ec13ff 100755 --- a/tests/test_koji_wrapper.py +++ b/tests/test_koji_wrapper.py @@ -2,7 +2,10 @@ # -*- coding: utf-8 -*- import mock -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import tempfile import os diff --git a/tests/test_lorax_wrapper.py b/tests/test_lorax_wrapper.py index 64567da7..0dfd6cdf 100755 --- a/tests/test_lorax_wrapper.py +++ b/tests/test_lorax_wrapper.py @@ -1,7 +1,10 @@ #!/usr/bin/env python2 # -*- coding: utf-8 -*- -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import os import sys diff --git a/tests/test_pkgset_pkgsets.py b/tests/test_pkgset_pkgsets.py index 72e2bdd4..8c88b267 100755 --- a/tests/test_pkgset_pkgsets.py +++ b/tests/test_pkgset_pkgsets.py @@ -4,7 +4,10 @@ import mock import os import sys -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import json import tempfile diff --git a/tests/test_scm.py b/tests/test_scm.py index 624381a5..d713669b 100755 --- a/tests/test_scm.py +++ b/tests/test_scm.py @@ -2,7 +2,10 @@ # -*- coding: utf-8 -*- import mock -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import shutil import tempfile diff --git a/tests/test_test_phase.py b/tests/test_test_phase.py index e21dd238..ef8e40fc 100755 --- a/tests/test_test_phase.py +++ b/tests/test_test_phase.py @@ -2,7 +2,10 @@ # -*- coding: utf-8 -*- -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import os import sys diff --git a/tests/test_util.py b/tests/test_util.py index 6678a274..1c37915e 100755 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -4,7 +4,10 @@ import mock import os import sys -import unittest +try: + import unittest2 as unittest +except ImportError: + import unittest import tempfile import shutil