[createiso] Move runroot work to separate script
Instead of running a long command line in the runroot (or locally), move all that work into a separate script that will be installed. This means chroot will need to install pungi. Everything should work as it did before. The only exception to this is that there is logic to find lorax templates instead of harcoding the location. This is done using a separate script. Related: #230 Fixes: #231 Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
5b1b6c1c4f
commit
df400002d8
5 changed files with 411 additions and 89 deletions
197
tests/test_createiso_script.py
Executable file
197
tests/test_createiso_script.py
Executable file
|
|
@ -0,0 +1,197 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import unittest
|
||||
import mock
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
|
||||
from tests import helpers
|
||||
from pungi import createiso
|
||||
|
||||
|
||||
class OstreeScriptTest(helpers.PungiTestCase):
|
||||
|
||||
def assertEqualCalls(self, actual, expected):
|
||||
self.assertEqual(len(actual), len(expected))
|
||||
for x, y in zip(actual, expected):
|
||||
self.assertEqual(x, y)
|
||||
|
||||
@mock.patch('kobo.shortcuts.run')
|
||||
def test_minimal_run(self, run):
|
||||
createiso.main([
|
||||
'--output-dir={}/isos'.format(self.topdir),
|
||||
'--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',
|
||||
])
|
||||
self.maxDiff = None
|
||||
self.assertEqual(
|
||||
run.call_args_list,
|
||||
[mock.call(['/usr/bin/genisoimage', '-untranslated-filenames',
|
||||
'-volid', 'DP-1.0-20160405.t.3', '-J', '-joliet-long',
|
||||
'-rational-rock', '-translation-table',
|
||||
'-input-charset', 'utf-8', '-x', './lost+found',
|
||||
'-o', 'DP-1.0-20160405.t.3-x86_64.iso',
|
||||
'-graft-points', '-path-list', 'graft-list'],
|
||||
show_cmd=True, stdout=True),
|
||||
mock.call(['/usr/bin/implantisomd5', 'DP-1.0-20160405.t.3-x86_64.iso'],
|
||||
show_cmd=True, stdout=True),
|
||||
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)]
|
||||
)
|
||||
|
||||
@mock.patch('kobo.shortcuts.run')
|
||||
def test_bootable_run(self, run):
|
||||
run.return_value = (0, '/usr/share/lorax')
|
||||
|
||||
createiso.main([
|
||||
'--output-dir={}/isos'.format(self.topdir),
|
||||
'--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',
|
||||
'--buildinstall-method=lorax',
|
||||
])
|
||||
|
||||
self.maxDiff = None
|
||||
self.assertItemsEqual(
|
||||
run.call_args_list,
|
||||
[mock.call(['/usr/bin/genisoimage', '-untranslated-filenames',
|
||||
'-volid', 'DP-1.0-20160405.t.3', '-J', '-joliet-long',
|
||||
'-rational-rock', '-translation-table',
|
||||
'-input-charset', 'utf-8', '-x', './lost+found',
|
||||
'-b', 'isolinux/isolinux.bin', '-c', 'isolinux/boot.cat',
|
||||
'-no-emul-boot',
|
||||
'-boot-load-size', '4', '-boot-info-table',
|
||||
'-eltorito-alt-boot', '-e', 'images/efiboot.img',
|
||||
'-no-emul-boot',
|
||||
'-o', 'DP-1.0-20160405.t.3-x86_64.iso',
|
||||
'-graft-points', '-path-list', 'graft-list'],
|
||||
show_cmd=True, stdout=True),
|
||||
mock.call(['pungi-pylorax-find-templates', '/usr/share/lorax'],
|
||||
show_cmd=True, stdout=True),
|
||||
mock.call(['/usr/bin/implantisomd5', 'DP-1.0-20160405.t.3-x86_64.iso'],
|
||||
show_cmd=True, stdout=True),
|
||||
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)]
|
||||
)
|
||||
|
||||
@mock.patch('kobo.shortcuts.run')
|
||||
def test_bootable_run_ppc64(self, run):
|
||||
run.return_value = (0, '/usr/share/lorax')
|
||||
|
||||
createiso.main([
|
||||
'--output-dir={}/isos'.format(self.topdir),
|
||||
'--iso-name=DP-1.0-20160405.t.3-ppc64.iso',
|
||||
'--volid=DP-1.0-20160405.t.3',
|
||||
'--graft-points=graft-list',
|
||||
'--arch=ppc64',
|
||||
'--buildinstall-method=lorax',
|
||||
])
|
||||
|
||||
self.maxDiff = None
|
||||
self.assertItemsEqual(
|
||||
run.call_args_list,
|
||||
[mock.call(['/usr/bin/genisoimage', '-untranslated-filenames',
|
||||
'-volid', 'DP-1.0-20160405.t.3', '-J', '-joliet-long',
|
||||
'-rational-rock', '-translation-table',
|
||||
'-x', './lost+found',
|
||||
'-part', '-hfs', '-r', '-l', '-sysid', 'PPC', '-no-desktop',
|
||||
'-allow-multidot', '-chrp-boot', '-map', '/usr/share/lorax/config_files/ppc/mapping',
|
||||
'-hfs-bless', '/ppc/mac',
|
||||
'-o', 'DP-1.0-20160405.t.3-ppc64.iso',
|
||||
'-graft-points', '-path-list', 'graft-list'],
|
||||
show_cmd=True, stdout=True),
|
||||
mock.call(['pungi-pylorax-find-templates', '/usr/share/lorax'],
|
||||
show_cmd=True, stdout=True),
|
||||
mock.call(['/usr/bin/implantisomd5', 'DP-1.0-20160405.t.3-ppc64.iso'],
|
||||
show_cmd=True, stdout=True),
|
||||
mock.call('isoinfo -R -f -i DP-1.0-20160405.t.3-ppc64.iso | grep -v \'/TRANS.TBL$\' | sort >> DP-1.0-20160405.t.3-ppc64.iso.manifest',
|
||||
show_cmd=True, stdout=True)]
|
||||
)
|
||||
|
||||
@mock.patch('kobo.shortcuts.run')
|
||||
def test_bootable_run_buildinstall(self, run):
|
||||
createiso.main([
|
||||
'--output-dir={}/isos'.format(self.topdir),
|
||||
'--iso-name=DP-1.0-20160405.t.3-ppc64.iso',
|
||||
'--volid=DP-1.0-20160405.t.3',
|
||||
'--graft-points=graft-list',
|
||||
'--arch=ppc64',
|
||||
'--buildinstall-method=buildinstall',
|
||||
])
|
||||
|
||||
self.maxDiff = None
|
||||
self.assertItemsEqual(
|
||||
run.call_args_list,
|
||||
[mock.call(['/usr/bin/genisoimage', '-untranslated-filenames',
|
||||
'-volid', 'DP-1.0-20160405.t.3', '-J', '-joliet-long',
|
||||
'-rational-rock', '-translation-table',
|
||||
'-x', './lost+found',
|
||||
'-part', '-hfs', '-r', '-l', '-sysid', 'PPC', '-no-desktop',
|
||||
'-allow-multidot', '-chrp-boot',
|
||||
'-map', '/usr/lib/anaconda-runtime/boot/mapping',
|
||||
'-hfs-bless', '/ppc/mac',
|
||||
'-o', 'DP-1.0-20160405.t.3-ppc64.iso',
|
||||
'-graft-points', '-path-list', 'graft-list'],
|
||||
show_cmd=True, stdout=True),
|
||||
mock.call(['/usr/bin/implantisomd5', 'DP-1.0-20160405.t.3-ppc64.iso'],
|
||||
show_cmd=True, stdout=True),
|
||||
mock.call('isoinfo -R -f -i DP-1.0-20160405.t.3-ppc64.iso | grep -v \'/TRANS.TBL$\' | sort >> DP-1.0-20160405.t.3-ppc64.iso.manifest',
|
||||
show_cmd=True, stdout=True)]
|
||||
)
|
||||
|
||||
@mock.patch('sys.stderr')
|
||||
@mock.patch('kobo.shortcuts.run')
|
||||
def test_run_with_jigdo_bad_args(self, run, stderr):
|
||||
with self.assertRaises(SystemExit):
|
||||
createiso.main([
|
||||
'--output-dir={}/isos'.format(self.topdir),
|
||||
'--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),
|
||||
])
|
||||
|
||||
@mock.patch('kobo.shortcuts.run')
|
||||
def test_run_with_jigdo(self, run):
|
||||
createiso.main([
|
||||
'--output-dir={}/isos'.format(self.topdir),
|
||||
'--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),
|
||||
])
|
||||
self.maxDiff = None
|
||||
self.assertItemsEqual(
|
||||
run.call_args_list,
|
||||
[mock.call(['/usr/bin/genisoimage', '-untranslated-filenames',
|
||||
'-volid', 'DP-1.0-20160405.t.3', '-J', '-joliet-long',
|
||||
'-rational-rock', '-translation-table',
|
||||
'-input-charset', 'utf-8', '-x', './lost+found',
|
||||
'-o', 'DP-1.0-20160405.t.3-x86_64.iso',
|
||||
'-graft-points', '-path-list', 'graft-list'],
|
||||
show_cmd=True, stdout=True),
|
||||
mock.call(['/usr/bin/implantisomd5', 'DP-1.0-20160405.t.3-x86_64.iso'],
|
||||
show_cmd=True, stdout=True),
|
||||
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),
|
||||
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),
|
||||
'--no-servers-section', '--report=noprogress', self.topdir + '/os//'],
|
||||
show_cmd=True, stdout=True)]
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue