Files
Hydra-OS/tests/test_branding.py

64 lines
2.6 KiB
Python

import shlex
from pathlib import Path
import tempfile
import unittest
from hydra import image
class BrandingTests(unittest.TestCase):
def setUp(self):
self.tmp = tempfile.TemporaryDirectory()
self.addCleanup(self.tmp.cleanup)
self.root = Path(self.tmp.name) / 'rootfs'
self.root.mkdir()
version = '6.18.54-gentoo-dist-bin'
(self.root / 'lib/modules' / version).mkdir(parents=True)
(self.root / 'boot').mkdir()
(self.root / 'boot' / ('vmlinuz-' + version)).write_text('kernel')
tmpfiles = self.root / 'usr/lib/tmpfiles.d'
tmpfiles.mkdir(parents=True)
for name, content in (
('home.conf', 'Q /home 0755 - - -\nq /srv 0755 - - -\n'),
('portables.conf', 'Q /var/lib/portables 0700\n'),
('systemd-nspawn.conf', 'Q /var/lib/machines 0700 - - -\n'),
):
(tmpfiles / name).write_text(content)
def release(self):
return dict(line.split('=', 1)[0:1] + shlex.split(line.split('=', 1)[1])
for line in (self.root / 'etc/os-release').read_text().splitlines()
if line and not line.startswith('#'))
def test_export_brands_derivative_without_rewriting_packaged_gentoo_metadata(self):
vendor = self.root / 'usr/lib/os-release'
vendor.parent.mkdir(parents=True, exist_ok=True)
original = "NAME='Gentoo'\nID=gentoo\nPRETTY_NAME='Gentoo Linux'\nVERSION_ID=2.18\nHOME_URL='https://www.gentoo.org/'\n"
vendor.write_text(original)
(self.root / 'etc').mkdir()
(self.root / 'etc/os-release').symlink_to('../usr/lib/os-release')
image.configure_rootfs(self.root, Path(__file__).resolve().parents[1])
self.assertEqual(self.release(), {
'NAME': 'Hydra OS', 'PRETTY_NAME': 'Hydra OS', 'ID': 'hydra-os',
'ID_LIKE': 'gentoo', 'VERSION_ID': '2.18',
'HOME_URL': 'https://www.gentoo.org/',
})
self.assertFalse((self.root / 'etc/os-release').is_symlink())
self.assertEqual(vendor.read_text(), original)
self.assertEqual((self.root / 'etc/hostname').read_text(), 'hydra-os\n')
def test_export_can_brand_minimal_payload_without_os_release(self):
image.configure_rootfs(self.root, Path(__file__).resolve().parents[1])
self.assertTrue((self.root / 'etc/os-release').is_file())
self.assertEqual(self.release(), {
'NAME': 'Hydra OS', 'PRETTY_NAME': 'Hydra OS',
'ID': 'hydra-os', 'ID_LIKE': 'gentoo',
})
if __name__ == '__main__':
unittest.main()