39 lines
1.6 KiB
Python
39 lines
1.6 KiB
Python
|
import os
|
||
|
import subprocess
|
||
|
import tempfile
|
||
|
import unittest
|
||
|
|
||
|
from pylorax.mount import IsoMountpoint
|
||
|
from pylorax.sysutils import joinpaths
|
||
|
|
||
|
|
||
|
def mktestiso(rootdir, volid):
|
||
|
# Make some fake files
|
||
|
for f in ("/images/pxeboot/vmlinuz", "/images/pxeboot/initrd.img", "/LiveOS/squashfs.img"):
|
||
|
p = joinpaths(rootdir, "sysroot", f)
|
||
|
os.makedirs(os.path.dirname(p), exist_ok=True)
|
||
|
with open(p, "w") as ff:
|
||
|
ff.write("I AM FAKE FILE %s" % f.upper())
|
||
|
|
||
|
# Make an iso of the files
|
||
|
make_iso = ["xorrisofs", "-o", joinpaths(rootdir, "test.iso"),
|
||
|
"-R", "-J", "-V", volid,
|
||
|
"-graft-points", "/=%s" % joinpaths(rootdir, "sysroot")]
|
||
|
subprocess.check_call(make_iso)
|
||
|
|
||
|
@unittest.skipUnless(os.geteuid() == 0 and not os.path.exists("/.in-container"), "requires root privileges, and no containers")
|
||
|
class IsoMountpointTest(unittest.TestCase):
|
||
|
def test_volid(self):
|
||
|
with tempfile.TemporaryDirectory(prefix="lorax.test.") as work_dir:
|
||
|
mktestiso(work_dir, "Fedora-test-iso-x86_64")
|
||
|
self.assertTrue(os.path.exists(joinpaths(work_dir, "test.iso")))
|
||
|
|
||
|
iso = IsoMountpoint(joinpaths(work_dir, "test.iso"))
|
||
|
self.addCleanup(iso.umount)
|
||
|
self.assertEqual(iso.iso_path, joinpaths(work_dir, "test.iso"))
|
||
|
self.assertIsNotNone(iso.mount_dir)
|
||
|
self.assertTrue(iso.stage2)
|
||
|
self.assertTrue(iso.kernel.endswith("vmlinuz"))
|
||
|
self.assertTrue(iso.initrd.endswith("initrd.img"))
|
||
|
self.assertEqual(iso.label, "Fedora-test-iso-x86_64")
|