iso-wrapper: Remove the class

It really is just a group of independent functions, so we can simplify
it by removing the unused wrapper class. Instead of importing the
wrapper, instantiating it and calling its methods we can import the
module and call its functions directly.

Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
Lubomír Sedlář 2016-10-12 13:56:19 +02:00
parent b2b5dd919b
commit e58c78fd2f
11 changed files with 333 additions and 345 deletions

View File

@ -6,7 +6,7 @@ import os
import pipes import pipes
from collections import namedtuple from collections import namedtuple
from .wrappers.iso import IsoWrapper from .wrappers import iso
from .wrappers.jigdo import JigdoWrapper from .wrappers.jigdo import JigdoWrapper
@ -40,7 +40,7 @@ fi
""".replace('\n', '') """.replace('\n', '')
def make_image(f, iso, opts): def make_image(f, opts):
mkisofs_kwargs = {} mkisofs_kwargs = {}
if opts.buildinstall_method: if opts.buildinstall_method:
@ -62,12 +62,12 @@ def make_image(f, iso, opts):
emit(f, cmd) emit(f, cmd)
def implant_md5(f, iso, opts): def implant_md5(f, opts):
cmd = iso.get_implantisomd5_cmd(opts.iso_name, opts.supported) cmd = iso.get_implantisomd5_cmd(opts.iso_name, opts.supported)
emit(f, cmd) emit(f, cmd)
def run_isohybrid(f, iso, opts): def run_isohybrid(f, opts):
"""If the image is bootable, it should include an MBR or GPT so that it can """If the image is bootable, it should include an MBR or GPT so that it can
be booted when written to USB disk. This is done by running isohybrid on be booted when written to USB disk. This is done by running isohybrid on
the image. the image.
@ -77,7 +77,7 @@ def run_isohybrid(f, iso, opts):
emit(f, cmd) emit(f, cmd)
def make_manifest(f, iso, opts): def make_manifest(f, opts):
emit(f, iso.get_manifest_cmd(opts.iso_name)) emit(f, iso.get_manifest_cmd(opts.iso_name))
@ -103,10 +103,9 @@ def write_script(opts, f):
emit(f, "#!/bin/bash") emit(f, "#!/bin/bash")
emit(f, "set -ex") emit(f, "set -ex")
emit(f, "cd %s" % opts.output_dir) emit(f, "cd %s" % opts.output_dir)
iso = IsoWrapper() make_image(f, opts)
make_image(f, iso, opts) run_isohybrid(f, opts)
run_isohybrid(f, iso, opts) implant_md5(f, opts)
implant_md5(f, iso, opts) make_manifest(f, opts)
make_manifest(f, iso, opts)
if opts.jigdo_dir: if opts.jigdo_dir:
make_jigdo(f, opts) make_jigdo(f, opts)

View File

@ -31,7 +31,7 @@ from pungi.util import get_buildroot_rpms, get_volid, get_arch_variant_data
from pungi.util import get_file_size, get_mtime, failable from pungi.util import get_file_size, get_mtime, failable
from pungi.wrappers.lorax import LoraxWrapper from pungi.wrappers.lorax import LoraxWrapper
from pungi.wrappers.kojiwrapper import KojiWrapper from pungi.wrappers.kojiwrapper import KojiWrapper
from pungi.wrappers.iso import IsoWrapper from pungi.wrappers import iso
from pungi.wrappers.scm import get_file_from_scm from pungi.wrappers.scm import get_file_from_scm
from pungi.phases.base import PhaseBase from pungi.phases.base import PhaseBase
@ -312,7 +312,6 @@ def link_boot_iso(compose, arch, variant, can_fail):
except OSError: except OSError:
shutil.copy2(boot_iso_path, new_boot_iso_path) shutil.copy2(boot_iso_path, new_boot_iso_path)
iso = IsoWrapper()
implant_md5 = iso.get_implanted_md5(new_boot_iso_path) implant_md5 = iso.get_implanted_md5(new_boot_iso_path)
iso_name = os.path.basename(new_boot_iso_path) iso_name = os.path.basename(new_boot_iso_path)
iso_dir = os.path.dirname(new_boot_iso_path) iso_dir = os.path.dirname(new_boot_iso_path)

View File

@ -25,7 +25,7 @@ from productmd.images import Image
from kobo.threads import ThreadPool, WorkerThread from kobo.threads import ThreadPool, WorkerThread
from kobo.shortcuts import run, relative_path from kobo.shortcuts import run, relative_path
from pungi.wrappers.iso import IsoWrapper from pungi.wrappers import iso
from pungi.wrappers.createrepo import CreaterepoWrapper from pungi.wrappers.createrepo import CreaterepoWrapper
from pungi.wrappers.kojiwrapper import KojiWrapper from pungi.wrappers.kojiwrapper import KojiWrapper
from pungi.phases.base import PhaseBase from pungi.phases.base import PhaseBase
@ -246,8 +246,6 @@ class CreateIsoThread(WorkerThread):
self.fail(compose, cmd, variant, arch) self.fail(compose, cmd, variant, arch)
raise raise
iso = IsoWrapper()
img = Image(compose.im) img = Image(compose.im)
img.path = cmd["iso_path"].replace(compose.paths.compose.topdir(), '').lstrip('/') img.path = cmd["iso_path"].replace(compose.paths.compose.topdir(), '').lstrip('/')
img.mtime = get_mtime(cmd["iso_path"]) img.mtime = get_mtime(cmd["iso_path"])
@ -412,13 +410,12 @@ def prepare_iso(compose, arch, variant, disc_num=1, disc_count=None, split_iso_d
new_di_path = os.path.join(iso_dir, ".discinfo") new_di_path = os.path.join(iso_dir, ".discinfo")
write_discinfo(new_di_path, **data) write_discinfo(new_di_path, **data)
i = IsoWrapper()
if not disc_count or disc_count == 1: if not disc_count or disc_count == 1:
data = i.get_graft_points([tree_dir, iso_dir]) data = iso.get_graft_points([tree_dir, iso_dir])
else: else:
data = i.get_graft_points([i._paths_from_list(tree_dir, split_iso_data["files"]), iso_dir]) data = iso.get_graft_points([iso._paths_from_list(tree_dir, split_iso_data["files"]), iso_dir])
# TODO: /content /graft-points # TODO: /content /graft-points
gp = "%s-graft-points" % iso_dir gp = "%s-graft-points" % iso_dir
i.write_graft_points(gp, data, exclude=["*/lost+found", "*/boot.iso"]) iso.write_graft_points(gp, data, exclude=["*/lost+found", "*/boot.iso"])
return gp return gp

View File

@ -25,7 +25,7 @@ from kobo.shortcuts import run, save_to_file, force_list
from productmd.images import Image from productmd.images import Image
from pungi.wrappers.kojiwrapper import KojiWrapper from pungi.wrappers.kojiwrapper import KojiWrapper
from pungi.wrappers.iso import IsoWrapper from pungi.wrappers import iso
from pungi.phases import base from pungi.phases import base
from pungi.util import get_arch_variant_data, makedirs, get_mtime, get_file_size, failable from pungi.util import get_arch_variant_data, makedirs, get_mtime, get_file_size, failable
from pungi.paths import translate_path from pungi.paths import translate_path
@ -268,7 +268,6 @@ class CreateLiveImageThread(WorkerThread):
:param iso_path: (str) absolute path to the ISO :param iso_path: (str) absolute path to the ISO
""" """
dir, filename = os.path.split(iso_path) dir, filename = os.path.split(iso_path)
iso = IsoWrapper()
run("cd %s && %s" % (pipes.quote(dir), iso.get_manifest_cmd(filename))) run("cd %s && %s" % (pipes.quote(dir), iso.get_manifest_cmd(filename)))
def _sign_image(self, koji_wrapper, compose, cmd, koji_task_id): def _sign_image(self, koji_wrapper, compose, cmd, koji_task_id):

View File

@ -100,8 +100,7 @@ class OstreeInstallerThread(WorkerThread):
def _add_to_manifest(self, compose, variant, arch, filename): def _add_to_manifest(self, compose, variant, arch, filename):
full_iso_path = compose.paths.compose.iso_path(arch, variant, filename) full_iso_path = compose.paths.compose.iso_path(arch, variant, filename)
iso_path = compose.paths.compose.iso_path(arch, variant, filename, relative=True) iso_path = compose.paths.compose.iso_path(arch, variant, filename, relative=True)
iso_wrapper = iso.IsoWrapper() implant_md5 = iso.get_implanted_md5(full_iso_path)
implant_md5 = iso_wrapper.get_implanted_md5(full_iso_path)
img = images.Image(compose.im) img = images.Image(compose.im)
img.path = iso_path img.path = iso_path
@ -118,7 +117,7 @@ class OstreeInstallerThread(WorkerThread):
setattr(img, 'can_fail', self.can_fail) setattr(img, 'can_fail', self.can_fail)
setattr(img, 'deliverable', 'ostree-installer') setattr(img, 'deliverable', 'ostree-installer')
try: try:
img.volume_id = iso_wrapper.get_volume_id(full_iso_path) img.volume_id = iso.get_volume_id(full_iso_path)
except RuntimeError: except RuntimeError:
pass pass
compose.im.add(variant.uid, arch, img) compose.im.add(variant.uid, arch, img)

View File

@ -47,7 +47,7 @@ from kobo.shortcuts import run
from pungi.arch import split_name_arch from pungi.arch import split_name_arch
from pungi.util import makedirs, pkg_is_rpm from pungi.util import makedirs, pkg_is_rpm
from pungi.phases.base import PhaseBase from pungi.phases.base import PhaseBase
from pungi.wrappers.iso import IsoWrapper from pungi.wrappers import iso
from pungi.wrappers.scm import get_file_from_scm, get_dir_from_scm from pungi.wrappers.scm import get_file_from_scm, get_dir_from_scm
@ -178,8 +178,6 @@ def rebuild_boot_iso(compose, arch, variant, package_sets):
compose.log_info("[BEGIN] %s" % msg) compose.log_info("[BEGIN] %s" % msg)
iso = IsoWrapper()
# read the original volume id # read the original volume id
volume_id = iso.get_volume_id(boot_iso) volume_id = iso.get_volume_id(boot_iso)

View File

@ -380,10 +380,6 @@ def get_volid(compose, arch, variant=None, escape_spaces=False, disc_type=False)
if len(volid) <= 32: if len(volid) <= 32:
break break
# from wrappers.iso import IsoWrapper
# iso = IsoWrapper(logger=compose._logger)
# volid = iso._truncate_volid(volid)
if volid and len(volid) > 32: if volid and len(volid) > 32:
raise ValueError("Could not create volume ID <= 32 characters") raise ValueError("Could not create volume ID <= 32 characters")

View File

@ -29,309 +29,312 @@ if sys.version_info[0] == 3:
return (a > b) - (a < b) return (a > b) - (a < b)
class IsoWrapper(kobo.log.LoggingBase): def get_boot_options(arch, createfrom, efi=True):
"""Checks to see what we need as the -b option for mkisofs"""
def get_boot_options(self, arch, createfrom, efi=True): if arch in ("arm", "armhfp"):
"""Checks to see what we need as the -b option for mkisofs""" result = []
return result
if arch in ("arm", "armhfp"): if arch in ("aarch64", ):
result = [] result = [
return result '-eltorito-alt-boot',
'-e', 'images/efiboot.img',
'-no-emul-boot',
]
return result
if arch in ("aarch64", ): if arch in ("i386", "i686", "x86_64"):
result = [ result = [
'-b', 'isolinux/isolinux.bin',
'-c', 'isolinux/boot.cat',
'-no-emul-boot',
'-boot-load-size', '4',
'-boot-info-table',
]
# EFI args
if arch == "x86_64":
result.extend([
'-eltorito-alt-boot', '-eltorito-alt-boot',
'-e', 'images/efiboot.img', '-e', 'images/efiboot.img',
'-no-emul-boot', '-no-emul-boot',
] ])
return result return result
if arch in ("i386", "i686", "x86_64"): if arch == "ia64":
result = [ result = [
'-b', 'isolinux/isolinux.bin', '-b', 'images/boot.img',
'-c', 'isolinux/boot.cat', '-no-emul-boot',
'-no-emul-boot', ]
'-boot-load-size', '4', return result
'-boot-info-table',
]
# EFI args if arch in ("ppc", "ppc64", "ppc64le"):
if arch == "x86_64": result = [
result.extend([ '-part',
'-eltorito-alt-boot', '-hfs',
'-e', 'images/efiboot.img', '-r',
'-no-emul-boot', '-l',
]) '-sysid', 'PPC',
return result '-no-desktop',
'-allow-multidot',
'-chrp-boot',
"-map", os.path.join(createfrom, 'mapping'), # -map %s/ppc/mapping
'-hfs-bless', "/ppc/mac", # must be the last
]
return result
if arch == "ia64": if arch == "sparc":
result = [ result = [
'-b', 'images/boot.img', '-G', '/boot/isofs.b',
'-no-emul-boot', '-B', '...',
] '-s', '/boot/silo.conf',
return result '-sparc-label', '"sparc"',
]
return result
if arch in ("ppc", "ppc64", "ppc64le"): if arch in ("s390", "s390x"):
result = [ result = [
'-part', # "-no-emul-boot",
'-hfs', # "-b", "images/cdboot.img",
'-r', # "-c", "boot.cat",
'-l', ]
'-sysid', 'PPC', return result
'-no-desktop',
'-allow-multidot',
'-chrp-boot',
"-map", os.path.join(createfrom, 'mapping'), # -map %s/ppc/mapping
'-hfs-bless', "/ppc/mac", # must be the last
]
return result
if arch == "sparc": raise ValueError("Unknown arch: %s" % arch)
result = [
'-G', '/boot/isofs.b',
'-B', '...',
'-s', '/boot/silo.conf',
'-sparc-label', '"sparc"',
]
return result
if arch in ("s390", "s390x"):
result = [
# "-no-emul-boot",
# "-b", "images/cdboot.img",
# "-c", "boot.cat",
]
return result
raise ValueError("Unknown arch: %s" % arch) def _truncate_volid(volid):
if len(volid) > 32:
volid = volid.replace("-", "")
def _truncate_volid(self, volid): if len(volid) > 32:
if len(volid) > 32: volid = volid.replace(" ", "")
old_volid = volid
volid = volid.replace("-", "")
self.log_warning("Truncating volume ID from '%s' to '%s'" % (old_volid, volid))
if len(volid) > 32: if len(volid) > 32:
old_volid = volid volid = volid.replace("Supplementary", "Supp")
volid = volid.replace(" ", "")
self.log_warning("Truncating volume ID from '%s' to '%s'" % (old_volid, volid))
if len(volid) > 32: if len(volid) > 32:
old_volid = volid raise ValueError("Volume ID must be less than 32 character: %s" % volid)
volid = volid.replace("Supplementary", "Supp")
self.log_warning("Truncating volume ID from '%s' to '%s'" % (old_volid, volid))
if len(volid) > 32: return volid
raise ValueError("Volume ID must be less than 32 character: %s" % volid)
return volid
def get_mkisofs_cmd(self, iso, paths, appid=None, volid=None, volset=None, exclude=None, verbose=False, boot_args=None, input_charset="utf-8", graft_points=None): def get_mkisofs_cmd(iso, paths, appid=None, volid=None, volset=None, exclude=None, verbose=False, boot_args=None, input_charset="utf-8", graft_points=None):
# following options are always enabled # following options are always enabled
untranslated_filenames = True untranslated_filenames = True
translation_table = True translation_table = True
joliet = True joliet = True
joliet_long = True joliet_long = True
rock = True rock = True
cmd = ["/usr/bin/genisoimage"] cmd = ["/usr/bin/genisoimage"]
if appid: if appid:
cmd.extend(["-appid", appid]) cmd.extend(["-appid", appid])
if untranslated_filenames: if untranslated_filenames:
cmd.append("-untranslated-filenames") cmd.append("-untranslated-filenames")
if volid: if volid:
cmd.extend(["-volid", self._truncate_volid(volid)]) cmd.extend(["-volid", _truncate_volid(volid)])
if joliet: if joliet:
cmd.append("-J") cmd.append("-J")
if joliet_long: if joliet_long:
cmd.append("-joliet-long") cmd.append("-joliet-long")
if volset: if volset:
cmd.extend(["-volset", volset]) cmd.extend(["-volset", volset])
if rock: if rock:
cmd.append("-rational-rock") cmd.append("-rational-rock")
if verbose: if verbose:
cmd.append("-verbose") cmd.append("-verbose")
if translation_table: if translation_table:
cmd.append("-translation-table") cmd.append("-translation-table")
if input_charset: if input_charset:
cmd.extend(["-input-charset", input_charset]) cmd.extend(["-input-charset", input_charset])
if exclude: if exclude:
for i in force_list(exclude): for i in force_list(exclude):
cmd.extend(["-x", i]) cmd.extend(["-x", i])
if boot_args: if boot_args:
cmd.extend(boot_args) cmd.extend(boot_args)
cmd.extend(["-o", iso]) cmd.extend(["-o", iso])
if graft_points: if graft_points:
cmd.append("-graft-points") cmd.append("-graft-points")
cmd.extend(["-path-list", graft_points]) cmd.extend(["-path-list", graft_points])
else:
# we're either using graft points or file lists, not both
cmd.extend(force_list(paths))
return cmd
def get_implantisomd5_cmd(iso_path, supported=False):
cmd = ["/usr/bin/implantisomd5"]
if supported:
cmd.append("--supported-iso")
cmd.append(iso_path)
return cmd
def get_checkisomd5_cmd(iso_path, just_print=False):
cmd = ["/usr/bin/checkisomd5"]
if just_print:
cmd.append("--md5sumonly")
cmd.append(iso_path)
return cmd
def get_implanted_md5(iso_path):
cmd = get_checkisomd5_cmd(iso_path, just_print=True)
retcode, output = run(cmd)
line = output.splitlines()[0]
return line.rsplit(":")[-1].strip()
def get_isohybrid_cmd(iso_path, arch):
# isohybrid is in syslinux which is x86 only
cmd = ["/usr/bin/isohybrid"]
# uefi is only supported on x86_64
if arch == "x86_64":
cmd.append("--uefi")
cmd.append(iso_path)
return cmd
def get_manifest_cmd(iso_name):
return "isoinfo -R -f -i %s | grep -v '/TRANS.TBL$' | sort >> %s.manifest" % (pipes.quote(iso_name), pipes.quote(iso_name))
def get_volume_id(path):
cmd = ["isoinfo", "-d", "-i", path]
retcode, output = run(cmd)
for line in output.splitlines():
line = line.strip()
if line.startswith("Volume id:"):
return line[11:].strip()
raise RuntimeError("Could not read Volume ID")
def get_graft_points(paths, exclusive_paths=None, exclude=None):
# path priority in ascending order (1st = lowest prio)
# paths merge according to priority
# exclusive paths override whole dirs
result = {}
exclude = exclude or []
exclusive_paths = exclusive_paths or []
for i in paths:
if isinstance(i, dict):
tree = i
else: else:
# we're either using graft points or file lists, not both tree = _scan_tree(i)
cmd.extend(force_list(paths)) result = _merge_trees(result, tree)
return cmd for i in exclusive_paths:
tree = _scan_tree(i)
result = _merge_trees(result, tree, exclusive=True)
def get_implantisomd5_cmd(self, iso_path, supported=False): # TODO: exclude
cmd = ["/usr/bin/implantisomd5"] return result
if supported:
cmd.append("--supported-iso")
cmd.append(iso_path)
return cmd
def get_checkisomd5_cmd(self, iso_path, just_print=False): def _paths_from_list(root, paths):
cmd = ["/usr/bin/checkisomd5"] root = os.path.abspath(root).rstrip("/") + "/"
if just_print: result = {}
cmd.append("--md5sumonly") for i in paths:
cmd.append(iso_path) i = os.path.normpath(os.path.join(root, i))
return cmd key = i[len(root):]
result[key] = i
return result
def get_implanted_md5(self, iso_path):
cmd = self.get_checkisomd5_cmd(iso_path, just_print=True)
retcode, output = run(cmd)
line = output.splitlines()[0]
result = line.rsplit(":")[-1].strip()
return result
def get_isohybrid_cmd(self, iso_path, arch): def _scan_tree(path):
# isohybrid is in syslinux which is x86 only path = os.path.abspath(path)
cmd = ["/usr/bin/isohybrid"] result = {}
# uefi is only supported on x86_64 for root, dirs, files in os.walk(path):
if arch == "x86_64": for f in files:
cmd.append("--uefi") abspath = os.path.join(root, f)
cmd.append(iso_path) relpath = relative_path(abspath, path.rstrip("/") + "/")
return cmd result[relpath] = abspath
def get_manifest_cmd(self, iso_name): # include empty dirs
return "isoinfo -R -f -i %s | grep -v '/TRANS.TBL$' | sort >> %s.manifest" % (pipes.quote(iso_name), pipes.quote(iso_name)) if root != path:
abspath = os.path.join(root, "")
relpath = relative_path(abspath, path.rstrip("/") + "/")
result[relpath] = abspath
def get_volume_id(self, path): return result
cmd = ["isoinfo", "-d", "-i", path]
retcode, output = run(cmd)
for line in output.splitlines():
line = line.strip()
if line.startswith("Volume id:"):
return line[11:].strip()
raise RuntimeError("Could not read Volume ID") def _merge_trees(tree1, tree2, exclusive=False):
# tree2 has higher priority
result = tree2.copy()
all_dirs = set([os.path.dirname(i).rstrip("/") for i in result if os.path.dirname(i) != ""])
def get_graft_points(self, paths, exclusive_paths=None, exclude=None): for i in tree1:
# path priority in ascending order (1st = lowest prio) dn = os.path.dirname(i)
# paths merge according to priority if exclusive:
# exclusive paths override whole dirs match = False
for a in all_dirs:
result = {} if dn == a or dn.startswith("%s/" % a):
exclude = exclude or [] match = True
exclusive_paths = exclusive_paths or []
for i in paths:
if isinstance(i, dict):
tree = i
else:
tree = self._scan_tree(i)
result = self._merge_trees(result, tree)
for i in exclusive_paths:
tree = self._scan_tree(i)
result = self._merge_trees(result, tree, exclusive=True)
# TODO: exclude
return result
def _paths_from_list(self, root, paths):
root = os.path.abspath(root).rstrip("/") + "/"
result = {}
for i in paths:
i = os.path.normpath(os.path.join(root, i))
key = i[len(root):]
result[key] = i
return result
def _scan_tree(self, path):
path = os.path.abspath(path)
result = {}
for root, dirs, files in os.walk(path):
for f in files:
abspath = os.path.join(root, f)
relpath = relative_path(abspath, path.rstrip("/") + "/")
result[relpath] = abspath
# include empty dirs
if root != path:
abspath = os.path.join(root, "")
relpath = relative_path(abspath, path.rstrip("/") + "/")
result[relpath] = abspath
return result
def _merge_trees(self, tree1, tree2, exclusive=False):
# tree2 has higher priority
result = tree2.copy()
all_dirs = set([os.path.dirname(i).rstrip("/") for i in result if os.path.dirname(i) != ""])
for i in tree1:
dn = os.path.dirname(i)
if exclusive:
match = False
for a in all_dirs:
if dn == a or dn.startswith("%s/" % a):
match = True
break
if match:
continue
if i in result:
continue
result[i] = tree1[i]
return result
def write_graft_points(self, file_name, h, exclude=None):
exclude = exclude or []
result = {}
seen_dirs = set()
for i in sorted(h, reverse=True):
dn = os.path.dirname(i)
if not i.endswith("/"):
result[i] = h[i]
seen_dirs.add(dn)
continue
found = False
for j in seen_dirs:
if j.startswith(dn):
found = True
break break
if not found: if match:
result[i] = h[i] continue
if i in result:
continue
result[i] = tree1[i]
return result
def write_graft_points(file_name, h, exclude=None):
exclude = exclude or []
result = {}
seen_dirs = set()
for i in sorted(h, reverse=True):
dn = os.path.dirname(i)
if not i.endswith("/"):
result[i] = h[i]
seen_dirs.add(dn) seen_dirs.add(dn)
continue
f = open(file_name, "w") found = False
for i in sorted(result, cmp=cmp_graft_points): for j in seen_dirs:
# make sure all files required for boot come first, if j.startswith(dn):
# otherwise there may be problems with booting (large LBA address, etc.) found = True
found = False break
for excl in exclude: if not found:
if fnmatch(i, excl): result[i] = h[i]
found = True seen_dirs.add(dn)
break
if found: f = open(file_name, "w")
continue for i in sorted(result, cmp=cmp_graft_points):
f.write("%s=%s\n" % (i, h[i])) # make sure all files required for boot come first,
f.close() # otherwise there may be problems with booting (large LBA address, etc.)
found = False
for excl in exclude:
if fnmatch(i, excl):
found = True
break
if found:
continue
f.write("%s=%s\n" % (i, h[i]))
f.close()
def _is_rpm(path): def _is_rpm(path):

View File

@ -636,11 +636,10 @@ class TestSymlinkIso(PungiTestCase):
@mock.patch('pungi.phases.buildinstall.Image') @mock.patch('pungi.phases.buildinstall.Image')
@mock.patch('pungi.phases.buildinstall.get_mtime') @mock.patch('pungi.phases.buildinstall.get_mtime')
@mock.patch('pungi.phases.buildinstall.get_file_size') @mock.patch('pungi.phases.buildinstall.get_file_size')
@mock.patch('pungi.phases.buildinstall.IsoWrapper') @mock.patch('pungi.phases.buildinstall.iso')
@mock.patch('pungi.phases.buildinstall.run') @mock.patch('pungi.phases.buildinstall.run')
def test_hardlink(self, run, IsoWrapperCls, get_file_size, get_mtime, ImageCls): def test_hardlink(self, run, iso, get_file_size, get_mtime, ImageCls):
self.compose.conf = {'buildinstall_symlink': False, 'disc_types': {}} self.compose.conf = {'buildinstall_symlink': False, 'disc_types': {}}
IsoWrapper = IsoWrapperCls.return_value
get_file_size.return_value = 1024 get_file_size.return_value = 1024
get_mtime.return_value = 13579 get_mtime.return_value = 13579
@ -655,14 +654,14 @@ class TestSymlinkIso(PungiTestCase):
self.compose.get_image_name.mock_calls, self.compose.get_image_name.mock_calls,
[mock.call('x86_64', self.compose.variants['Server'], [mock.call('x86_64', self.compose.variants['Server'],
disc_type='boot', disc_num=None, suffix='.iso')]) disc_type='boot', disc_num=None, suffix='.iso')])
self.assertItemsEqual(IsoWrapper.get_implanted_md5.mock_calls, self.assertItemsEqual(iso.get_implanted_md5.mock_calls,
[mock.call(tgt)]) [mock.call(tgt)])
self.assertItemsEqual(IsoWrapper.get_manifest_cmd.mock_calls, self.assertItemsEqual(iso.get_manifest_cmd.mock_calls,
[mock.call('image-name')]) [mock.call('image-name')])
self.assertItemsEqual(IsoWrapper.get_volume_id.mock_calls, self.assertItemsEqual(iso.get_volume_id.mock_calls,
[mock.call(tgt)]) [mock.call(tgt)])
self.assertItemsEqual(run.mock_calls, self.assertItemsEqual(run.mock_calls,
[mock.call(IsoWrapper.get_manifest_cmd.return_value, [mock.call(iso.get_manifest_cmd.return_value,
workdir=self.topdir + '/compose/Server/x86_64/iso')]) workdir=self.topdir + '/compose/Server/x86_64/iso')])
image = ImageCls.return_value image = ImageCls.return_value
@ -675,7 +674,7 @@ class TestSymlinkIso(PungiTestCase):
self.assertEqual(image.disc_number, 1) self.assertEqual(image.disc_number, 1)
self.assertEqual(image.disc_count, 1) self.assertEqual(image.disc_count, 1)
self.assertEqual(image.bootable, True) self.assertEqual(image.bootable, True)
self.assertEqual(image.implant_md5, IsoWrapper.get_implanted_md5.return_value) self.assertEqual(image.implant_md5, iso.get_implanted_md5.return_value)
self.assertEqual(image.can_fail, False) self.assertEqual(image.can_fail, False)
self.assertEqual(self.compose.im.add.mock_calls, self.assertEqual(self.compose.im.add.mock_calls,
[mock.call('Server', 'x86_64', image)]) [mock.call('Server', 'x86_64', image)])
@ -683,14 +682,13 @@ class TestSymlinkIso(PungiTestCase):
@mock.patch('pungi.phases.buildinstall.Image') @mock.patch('pungi.phases.buildinstall.Image')
@mock.patch('pungi.phases.buildinstall.get_mtime') @mock.patch('pungi.phases.buildinstall.get_mtime')
@mock.patch('pungi.phases.buildinstall.get_file_size') @mock.patch('pungi.phases.buildinstall.get_file_size')
@mock.patch('pungi.phases.buildinstall.IsoWrapper') @mock.patch('pungi.phases.buildinstall.iso')
@mock.patch('pungi.phases.buildinstall.run') @mock.patch('pungi.phases.buildinstall.run')
def test_hardlink_with_custom_type(self, run, IsoWrapperCls, get_file_size, get_mtime, ImageCls): def test_hardlink_with_custom_type(self, run, iso, get_file_size, get_mtime, ImageCls):
self.compose.conf = { self.compose.conf = {
'buildinstall_symlink': False, 'buildinstall_symlink': False,
'disc_types': {'boot': 'netinst'}, 'disc_types': {'boot': 'netinst'},
} }
IsoWrapper = IsoWrapperCls.return_value
get_file_size.return_value = 1024 get_file_size.return_value = 1024
get_mtime.return_value = 13579 get_mtime.return_value = 13579
@ -705,14 +703,14 @@ class TestSymlinkIso(PungiTestCase):
self.compose.get_image_name.mock_calls, self.compose.get_image_name.mock_calls,
[mock.call('x86_64', self.compose.variants['Server'], [mock.call('x86_64', self.compose.variants['Server'],
disc_type='netinst', disc_num=None, suffix='.iso')]) disc_type='netinst', disc_num=None, suffix='.iso')])
self.assertItemsEqual(IsoWrapper.get_implanted_md5.mock_calls, self.assertItemsEqual(iso.get_implanted_md5.mock_calls,
[mock.call(tgt)]) [mock.call(tgt)])
self.assertItemsEqual(IsoWrapper.get_manifest_cmd.mock_calls, self.assertItemsEqual(iso.get_manifest_cmd.mock_calls,
[mock.call('image-name')]) [mock.call('image-name')])
self.assertItemsEqual(IsoWrapper.get_volume_id.mock_calls, self.assertItemsEqual(iso.get_volume_id.mock_calls,
[mock.call(tgt)]) [mock.call(tgt)])
self.assertItemsEqual(run.mock_calls, self.assertItemsEqual(run.mock_calls,
[mock.call(IsoWrapper.get_manifest_cmd.return_value, [mock.call(iso.get_manifest_cmd.return_value,
workdir=self.topdir + '/compose/Server/x86_64/iso')]) workdir=self.topdir + '/compose/Server/x86_64/iso')])
image = ImageCls.return_value image = ImageCls.return_value
@ -725,7 +723,7 @@ class TestSymlinkIso(PungiTestCase):
self.assertEqual(image.disc_number, 1) self.assertEqual(image.disc_number, 1)
self.assertEqual(image.disc_count, 1) self.assertEqual(image.disc_count, 1)
self.assertEqual(image.bootable, True) self.assertEqual(image.bootable, True)
self.assertEqual(image.implant_md5, IsoWrapper.get_implanted_md5.return_value) self.assertEqual(image.implant_md5, iso.get_implanted_md5.return_value)
self.assertEqual(image.can_fail, True) self.assertEqual(image.can_fail, True)
self.assertEqual(self.compose.im.add.mock_calls, self.assertEqual(self.compose.im.add.mock_calls,
[mock.call('Server', 'x86_64', image)]) [mock.call('Server', 'x86_64', image)])

View File

@ -208,11 +208,11 @@ class CreateisoPhaseTest(helpers.PungiTestCase):
class CreateisoThreadTest(helpers.PungiTestCase): class CreateisoThreadTest(helpers.PungiTestCase):
@mock.patch('pungi.phases.createiso.IsoWrapper') @mock.patch('pungi.phases.createiso.iso')
@mock.patch('pungi.phases.createiso.get_mtime') @mock.patch('pungi.phases.createiso.get_mtime')
@mock.patch('pungi.phases.createiso.get_file_size') @mock.patch('pungi.phases.createiso.get_file_size')
@mock.patch('pungi.phases.createiso.KojiWrapper') @mock.patch('pungi.phases.createiso.KojiWrapper')
def test_process_in_runroot(self, KojiWrapper, get_file_size, get_mtime, IsoWrapper): def test_process_in_runroot(self, KojiWrapper, get_file_size, get_mtime, iso):
compose = helpers.DummyCompose(self.topdir, { compose = helpers.DummyCompose(self.topdir, {
'release_short': 'test', 'release_short': 'test',
'release_version': '1.0', 'release_version': '1.0',
@ -256,9 +256,9 @@ class CreateisoThreadTest(helpers.PungiTestCase):
run_runroot.call_args_list, run_runroot.call_args_list,
[mock.call(get_runroot_cmd.return_value, [mock.call(get_runroot_cmd.return_value,
log_file='%s/logs/x86_64/createiso-image-name.x86_64.log' % 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, self.assertEqual(iso.get_implanted_md5.call_args_list,
[mock.call(cmd['iso_path'])]) [mock.call(cmd['iso_path'])])
self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list, self.assertEqual(iso.get_volume_id.call_args_list,
[mock.call(cmd['iso_path'])]) [mock.call(cmd['iso_path'])])
self.assertEqual(len(compose.im.add.call_args_list), 1) self.assertEqual(len(compose.im.add.call_args_list), 1)
@ -272,11 +272,11 @@ class CreateisoThreadTest(helpers.PungiTestCase):
self.assertEqual(image.type, 'dvd') self.assertEqual(image.type, 'dvd')
self.assertEqual(image.subvariant, 'Server') self.assertEqual(image.subvariant, 'Server')
@mock.patch('pungi.phases.createiso.IsoWrapper') @mock.patch('pungi.phases.createiso.iso')
@mock.patch('pungi.phases.createiso.get_mtime') @mock.patch('pungi.phases.createiso.get_mtime')
@mock.patch('pungi.phases.createiso.get_file_size') @mock.patch('pungi.phases.createiso.get_file_size')
@mock.patch('pungi.phases.createiso.KojiWrapper') @mock.patch('pungi.phases.createiso.KojiWrapper')
def test_process_source_iso(self, KojiWrapper, get_file_size, get_mtime, IsoWrapper): def test_process_source_iso(self, KojiWrapper, get_file_size, get_mtime, iso):
compose = helpers.DummyCompose(self.topdir, { compose = helpers.DummyCompose(self.topdir, {
'release_short': 'test', 'release_short': 'test',
'release_version': '1.0', 'release_version': '1.0',
@ -320,9 +320,9 @@ class CreateisoThreadTest(helpers.PungiTestCase):
run_runroot.call_args_list, run_runroot.call_args_list,
[mock.call(get_runroot_cmd.return_value, [mock.call(get_runroot_cmd.return_value,
log_file='%s/logs/src/createiso-image-name.src.log' % self.topdir)]) log_file='%s/logs/src/createiso-image-name.src.log' % self.topdir)])
self.assertEqual(IsoWrapper.return_value.get_implanted_md5.call_args_list, self.assertEqual(iso.get_implanted_md5.call_args_list,
[mock.call(cmd['iso_path'])]) [mock.call(cmd['iso_path'])])
self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list, self.assertEqual(iso.get_volume_id.call_args_list,
[mock.call(cmd['iso_path'])]) [mock.call(cmd['iso_path'])])
self.assertEqual(len(compose.im.add.call_args_list), 2) self.assertEqual(len(compose.im.add.call_args_list), 2)
@ -336,11 +336,11 @@ class CreateisoThreadTest(helpers.PungiTestCase):
self.assertEqual(image.type, 'dvd') self.assertEqual(image.type, 'dvd')
self.assertEqual(image.subvariant, 'Server') self.assertEqual(image.subvariant, 'Server')
@mock.patch('pungi.phases.createiso.IsoWrapper') @mock.patch('pungi.phases.createiso.iso')
@mock.patch('pungi.phases.createiso.get_mtime') @mock.patch('pungi.phases.createiso.get_mtime')
@mock.patch('pungi.phases.createiso.get_file_size') @mock.patch('pungi.phases.createiso.get_file_size')
@mock.patch('pungi.phases.createiso.KojiWrapper') @mock.patch('pungi.phases.createiso.KojiWrapper')
def test_process_bootable(self, KojiWrapper, get_file_size, get_mtime, IsoWrapper): def test_process_bootable(self, KojiWrapper, get_file_size, get_mtime, iso):
compose = helpers.DummyCompose(self.topdir, { compose = helpers.DummyCompose(self.topdir, {
'release_short': 'test', 'release_short': 'test',
'release_version': '1.0', 'release_version': '1.0',
@ -386,9 +386,9 @@ class CreateisoThreadTest(helpers.PungiTestCase):
run_runroot.call_args_list, run_runroot.call_args_list,
[mock.call(get_runroot_cmd.return_value, [mock.call(get_runroot_cmd.return_value,
log_file='%s/logs/x86_64/createiso-image-name.x86_64.log' % 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, self.assertEqual(iso.get_implanted_md5.call_args_list,
[mock.call(cmd['iso_path'])]) [mock.call(cmd['iso_path'])])
self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list, self.assertEqual(iso.get_volume_id.call_args_list,
[mock.call(cmd['iso_path'])]) [mock.call(cmd['iso_path'])])
self.assertEqual(len(compose.im.add.call_args_list), 1) self.assertEqual(len(compose.im.add.call_args_list), 1)
@ -402,12 +402,12 @@ class CreateisoThreadTest(helpers.PungiTestCase):
self.assertEqual(image.type, 'dvd') self.assertEqual(image.type, 'dvd')
self.assertEqual(image.subvariant, 'Server') self.assertEqual(image.subvariant, 'Server')
@mock.patch('pungi.phases.createiso.IsoWrapper') @mock.patch('pungi.phases.createiso.iso')
@mock.patch('pungi.phases.createiso.get_mtime') @mock.patch('pungi.phases.createiso.get_mtime')
@mock.patch('pungi.phases.createiso.get_file_size') @mock.patch('pungi.phases.createiso.get_file_size')
@mock.patch('pungi.phases.createiso.KojiWrapper') @mock.patch('pungi.phases.createiso.KojiWrapper')
def test_process_in_runroot_non_existing_tag(self, KojiWrapper, get_file_size, def test_process_in_runroot_non_existing_tag(self, KojiWrapper, get_file_size,
get_mtime, IsoWrapper): get_mtime, iso):
compose = helpers.DummyCompose(self.topdir, { compose = helpers.DummyCompose(self.topdir, {
'release_short': 'test', 'release_short': 'test',
'release_version': '1.0', 'release_version': '1.0',
@ -434,11 +434,11 @@ class CreateisoThreadTest(helpers.PungiTestCase):
self.assertEqual('Tag "f25-build" does not exist.', str(ctx.exception)) self.assertEqual('Tag "f25-build" does not exist.', str(ctx.exception))
@mock.patch('pungi.phases.createiso.IsoWrapper') @mock.patch('pungi.phases.createiso.iso')
@mock.patch('pungi.phases.createiso.get_mtime') @mock.patch('pungi.phases.createiso.get_mtime')
@mock.patch('pungi.phases.createiso.get_file_size') @mock.patch('pungi.phases.createiso.get_file_size')
@mock.patch('pungi.phases.createiso.KojiWrapper') @mock.patch('pungi.phases.createiso.KojiWrapper')
def test_process_in_runroot_crash(self, KojiWrapper, get_file_size, get_mtime, IsoWrapper): def test_process_in_runroot_crash(self, KojiWrapper, get_file_size, get_mtime, iso):
compose = helpers.DummyCompose(self.topdir, { compose = helpers.DummyCompose(self.topdir, {
'release_short': 'test', 'release_short': 'test',
'release_version': '1.0', 'release_version': '1.0',
@ -472,11 +472,11 @@ class CreateisoThreadTest(helpers.PungiTestCase):
mock.call('BOOM') mock.call('BOOM')
]) ])
@mock.patch('pungi.phases.createiso.IsoWrapper') @mock.patch('pungi.phases.createiso.iso')
@mock.patch('pungi.phases.createiso.get_mtime') @mock.patch('pungi.phases.createiso.get_mtime')
@mock.patch('pungi.phases.createiso.get_file_size') @mock.patch('pungi.phases.createiso.get_file_size')
@mock.patch('pungi.phases.createiso.KojiWrapper') @mock.patch('pungi.phases.createiso.KojiWrapper')
def test_process_in_runroot_fail(self, KojiWrapper, get_file_size, get_mtime, IsoWrapper): def test_process_in_runroot_fail(self, KojiWrapper, get_file_size, get_mtime, iso):
compose = helpers.DummyCompose(self.topdir, { compose = helpers.DummyCompose(self.topdir, {
'release_short': 'test', 'release_short': 'test',
'release_version': '1.0', 'release_version': '1.0',
@ -515,12 +515,12 @@ class CreateisoThreadTest(helpers.PungiTestCase):
% (self.topdir + '/logs/x86_64/createiso-image-name.x86_64.log')) % (self.topdir + '/logs/x86_64/createiso-image-name.x86_64.log'))
]) ])
@mock.patch('pungi.phases.createiso.IsoWrapper') @mock.patch('pungi.phases.createiso.iso')
@mock.patch('pungi.phases.createiso.get_mtime') @mock.patch('pungi.phases.createiso.get_mtime')
@mock.patch('pungi.phases.createiso.get_file_size') @mock.patch('pungi.phases.createiso.get_file_size')
@mock.patch('pungi.phases.createiso.run') @mock.patch('pungi.phases.createiso.run')
@mock.patch('pungi.phases.createiso.KojiWrapper') @mock.patch('pungi.phases.createiso.KojiWrapper')
def test_process_locally(self, KojiWrapper, run, get_file_size, get_mtime, IsoWrapper): def test_process_locally(self, KojiWrapper, run, get_file_size, get_mtime, iso):
compose = helpers.DummyCompose(self.topdir, { compose = helpers.DummyCompose(self.topdir, {
'release_short': 'test', 'release_short': 'test',
'release_version': '1.0', 'release_version': '1.0',
@ -547,9 +547,9 @@ class CreateisoThreadTest(helpers.PungiTestCase):
run.call_args_list, run.call_args_list,
[mock.call(cmd['cmd'], show_cmd=True, [mock.call(cmd['cmd'], show_cmd=True,
logfile='%s/logs/x86_64/createiso-image-name.x86_64.log' % 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, self.assertEqual(iso.get_implanted_md5.call_args_list,
[mock.call(cmd['iso_path'])]) [mock.call(cmd['iso_path'])])
self.assertEqual(IsoWrapper.return_value.get_volume_id.call_args_list, self.assertEqual(iso.get_volume_id.call_args_list,
[mock.call(cmd['iso_path'])]) [mock.call(cmd['iso_path'])])
self.assertEqual(len(compose.im.add.call_args_list), 1) self.assertEqual(len(compose.im.add.call_args_list), 1)

View File

@ -55,7 +55,7 @@ class OstreeThreadTest(helpers.PungiTestCase):
'image_volid_formats': ['{release_short}-{variant}-{arch}'], 'image_volid_formats': ['{release_short}-{variant}-{arch}'],
}) })
def assertImageAdded(self, compose, ImageCls, IsoWrapper): def assertImageAdded(self, compose, ImageCls, iso):
image = ImageCls.return_value image = ImageCls.return_value
self.assertEqual(image.path, 'Everything/x86_64/iso/image-name') self.assertEqual(image.path, 'Everything/x86_64/iso/image-name')
self.assertEqual(image.mtime, 13579) self.assertEqual(image.mtime, 13579)
@ -66,7 +66,7 @@ class OstreeThreadTest(helpers.PungiTestCase):
self.assertEqual(image.disc_number, 1) self.assertEqual(image.disc_number, 1)
self.assertEqual(image.disc_count, 1) self.assertEqual(image.disc_count, 1)
self.assertEqual(image.bootable, True) self.assertEqual(image.bootable, True)
self.assertEqual(image.implant_md5, IsoWrapper.return_value.get_implanted_md5.return_value) self.assertEqual(image.implant_md5, iso.get_implanted_md5.return_value)
self.assertEqual(compose.im.add.mock_calls, self.assertEqual(compose.im.add.mock_calls,
[mock.call('Everything', 'x86_64', image)]) [mock.call('Everything', 'x86_64', image)])
@ -111,10 +111,10 @@ class OstreeThreadTest(helpers.PungiTestCase):
@mock.patch('productmd.images.Image') @mock.patch('productmd.images.Image')
@mock.patch('pungi.util.get_mtime') @mock.patch('pungi.util.get_mtime')
@mock.patch('pungi.util.get_file_size') @mock.patch('pungi.util.get_file_size')
@mock.patch('pungi.wrappers.iso.IsoWrapper') @mock.patch('pungi.phases.ostree_installer.iso')
@mock.patch('os.link') @mock.patch('os.link')
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper') @mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
def test_run(self, KojiWrapper, link, IsoWrapper, def test_run(self, KojiWrapper, link, iso,
get_file_size, get_mtime, ImageCls, run): get_file_size, get_mtime, ImageCls, run):
self.compose.supported = False self.compose.supported = False
pool = mock.Mock() pool = mock.Mock()
@ -140,17 +140,17 @@ class OstreeThreadTest(helpers.PungiTestCase):
'file://%s/compose/Everything/x86_64/os' % self.topdir, 'file://%s/compose/Everything/x86_64/os' % self.topdir,
cfg['release']) cfg['release'])
self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path) self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path)
self.assertImageAdded(self.compose, ImageCls, IsoWrapper) self.assertImageAdded(self.compose, ImageCls, iso)
self.assertAllCopied(run) self.assertAllCopied(run)
@mock.patch('kobo.shortcuts.run') @mock.patch('kobo.shortcuts.run')
@mock.patch('productmd.images.Image') @mock.patch('productmd.images.Image')
@mock.patch('pungi.util.get_mtime') @mock.patch('pungi.util.get_mtime')
@mock.patch('pungi.util.get_file_size') @mock.patch('pungi.util.get_file_size')
@mock.patch('pungi.wrappers.iso.IsoWrapper') @mock.patch('pungi.phases.ostree_installer.iso')
@mock.patch('os.link') @mock.patch('os.link')
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper') @mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
def test_run_external_source(self, KojiWrapper, link, IsoWrapper, def test_run_external_source(self, KojiWrapper, link, iso,
get_file_size, get_mtime, ImageCls, run): get_file_size, get_mtime, ImageCls, run):
pool = mock.Mock() pool = mock.Mock()
cfg = { cfg = {
@ -173,18 +173,18 @@ class OstreeThreadTest(helpers.PungiTestCase):
self.assertRunrootCall(koji, 'http://example.com/repo/x86_64/', cfg['release'], isfinal=True) self.assertRunrootCall(koji, 'http://example.com/repo/x86_64/', cfg['release'], isfinal=True)
self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path) self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path)
self.assertImageAdded(self.compose, ImageCls, IsoWrapper) self.assertImageAdded(self.compose, ImageCls, iso)
self.assertAllCopied(run) self.assertAllCopied(run)
@mock.patch('kobo.shortcuts.run') @mock.patch('kobo.shortcuts.run')
@mock.patch('productmd.images.Image') @mock.patch('productmd.images.Image')
@mock.patch('pungi.util.get_mtime') @mock.patch('pungi.util.get_mtime')
@mock.patch('pungi.util.get_file_size') @mock.patch('pungi.util.get_file_size')
@mock.patch('pungi.wrappers.iso.IsoWrapper') @mock.patch('pungi.wrappers.iso')
@mock.patch('os.link') @mock.patch('os.link')
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper') @mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
def test_fail_with_relative_template_path_but_no_repo(self, KojiWrapper, link, def test_fail_with_relative_template_path_but_no_repo(self, KojiWrapper, link,
IsoWrapper, get_file_size, iso, get_file_size,
get_mtime, ImageCls, run): get_mtime, ImageCls, run):
pool = mock.Mock() pool = mock.Mock()
cfg = { cfg = {
@ -213,10 +213,10 @@ class OstreeThreadTest(helpers.PungiTestCase):
@mock.patch('productmd.images.Image') @mock.patch('productmd.images.Image')
@mock.patch('pungi.util.get_mtime') @mock.patch('pungi.util.get_mtime')
@mock.patch('pungi.util.get_file_size') @mock.patch('pungi.util.get_file_size')
@mock.patch('pungi.wrappers.iso.IsoWrapper') @mock.patch('pungi.phases.ostree_installer.iso')
@mock.patch('os.link') @mock.patch('os.link')
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper') @mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
def test_run_clone_templates(self, KojiWrapper, link, IsoWrapper, def test_run_clone_templates(self, KojiWrapper, link, iso,
get_file_size, get_mtime, ImageCls, run, get_file_size, get_mtime, ImageCls, run,
get_dir_from_scm): get_dir_from_scm):
pool = mock.Mock() pool = mock.Mock()
@ -254,17 +254,17 @@ class OstreeThreadTest(helpers.PungiTestCase):
extra=['--add-template=%s/some_file.txt' % templ_dir, extra=['--add-template=%s/some_file.txt' % templ_dir,
'--add-arch-template=%s/other_file.txt' % templ_dir]) '--add-arch-template=%s/other_file.txt' % templ_dir])
self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path) self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path)
self.assertImageAdded(self.compose, ImageCls, IsoWrapper) self.assertImageAdded(self.compose, ImageCls, iso)
self.assertAllCopied(run) self.assertAllCopied(run)
@mock.patch('kobo.shortcuts.run') @mock.patch('kobo.shortcuts.run')
@mock.patch('productmd.images.Image') @mock.patch('productmd.images.Image')
@mock.patch('pungi.util.get_mtime') @mock.patch('pungi.util.get_mtime')
@mock.patch('pungi.util.get_file_size') @mock.patch('pungi.util.get_file_size')
@mock.patch('pungi.wrappers.iso.IsoWrapper') @mock.patch('pungi.phases.ostree_installer.iso')
@mock.patch('os.link') @mock.patch('os.link')
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper') @mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
def test_run_with_implicit_release(self, KojiWrapper, link, IsoWrapper, def test_run_with_implicit_release(self, KojiWrapper, link, iso,
get_file_size, get_mtime, ImageCls, run): get_file_size, get_mtime, ImageCls, run):
pool = mock.Mock() pool = mock.Mock()
cfg = { cfg = {
@ -312,17 +312,17 @@ class OstreeThreadTest(helpers.PungiTestCase):
'--add-arch-template-var=ostree_ref=fedora-atomic/Rawhide/x86_64/docker-host'] '--add-arch-template-var=ostree_ref=fedora-atomic/Rawhide/x86_64/docker-host']
) )
self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path) self.assertIsoLinked(link, get_file_size, get_mtime, final_iso_path)
self.assertImageAdded(self.compose, ImageCls, IsoWrapper) self.assertImageAdded(self.compose, ImageCls, iso)
self.assertAllCopied(run) self.assertAllCopied(run)
@mock.patch('kobo.shortcuts.run') @mock.patch('kobo.shortcuts.run')
@mock.patch('productmd.images.Image') @mock.patch('productmd.images.Image')
@mock.patch('pungi.util.get_mtime') @mock.patch('pungi.util.get_mtime')
@mock.patch('pungi.util.get_file_size') @mock.patch('pungi.util.get_file_size')
@mock.patch('pungi.wrappers.iso.IsoWrapper') @mock.patch('pungi.phases.ostree_installer.iso')
@mock.patch('os.link') @mock.patch('os.link')
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper') @mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
def test_fail_crash(self, KojiWrapper, link, IsoWrapper, get_file_size, def test_fail_crash(self, KojiWrapper, link, iso, get_file_size,
get_mtime, ImageCls, run): get_mtime, ImageCls, run):
pool = mock.Mock() pool = mock.Mock()
cfg = { cfg = {
@ -345,10 +345,10 @@ class OstreeThreadTest(helpers.PungiTestCase):
@mock.patch('productmd.images.Image') @mock.patch('productmd.images.Image')
@mock.patch('pungi.util.get_mtime') @mock.patch('pungi.util.get_mtime')
@mock.patch('pungi.util.get_file_size') @mock.patch('pungi.util.get_file_size')
@mock.patch('pungi.wrappers.iso.IsoWrapper') @mock.patch('pungi.phases.ostree_installer.iso')
@mock.patch('os.link') @mock.patch('os.link')
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper') @mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
def test_fail_runroot_fail(self, KojiWrapper, link, IsoWrapper, def test_fail_runroot_fail(self, KojiWrapper, link, iso,
get_file_size, get_mtime, ImageCls, run): get_file_size, get_mtime, ImageCls, run):
pool = mock.Mock() pool = mock.Mock()
cfg = { cfg = {