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') 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) 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()