summaryrefslogtreecommitdiff
path: root/tests/unittests/test_commands_install_grub.py
diff options
authorStamatis Katsaounis <[email protected]>2023-10-17 19:11:54 +0000
committerServer Team CI Bot <[email protected]>2023-10-17 19:11:54 +0000
commit64b2744dc4c7c57e18beb46423cf6b563ccd76ab (patch)
treee8dfe236c0af468c23da19179c40bd898582e264 /tests/unittests/test_commands_install_grub.py
parent7c18bf6a24297ed465a341a1f53875b61c878d6b (diff)
Add support for Oracle Linux
Diffstat (limited to 'tests/unittests/test_commands_install_grub.py')
-rw-r--r--tests/unittests/test_commands_install_grub.py114
1 files changed, 114 insertions, 0 deletions
diff --git a/tests/unittests/test_commands_install_grub.py b/tests/unittests/test_commands_install_grub.py
index 8fbf12e0..0289c4ba 100644
--- a/tests/unittests/test_commands_install_grub.py
+++ b/tests/unittests/test_commands_install_grub.py
@@ -1010,6 +1010,120 @@ class TestGenUefiInstallCommands(CiTestCase):
grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
devices, self.target))
+ def test_ol_install(self):
+ self.m_os_release.return_value = {'ID': 'ol'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ grub_name = 'grub2-efi-x64'
+ grub_target = 'x86_64-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = True
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_install = [
+ ['efibootmgr', '-v'],
+ [grub_cmd, '--target=%s' % grub_target,
+ '--efi-directory=/boot/efi',
+ '--bootloader-id=redhat', '--recheck'],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/grub2/grub.cfg'],
+ ['efibootmgr', '-v']
+ ]
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
+ def test_ol_install_existing(self):
+ # simulate existing bootloaders already installed in target system
+ # by touching the files grub would have installed, including shim
+ def _enable_loaders(bootid):
+ efi_path = 'boot/efi/EFI'
+ target_efi_path = os.path.join(self.target, efi_path)
+ loaders = [
+ os.path.join(target_efi_path, bootid, 'shimx64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ ]
+ for loader in loaders:
+ util.ensure_dir(os.path.dirname(loader))
+ with open(loader, 'w+') as fh:
+ fh.write('\n')
+
+ self.m_os_release.return_value = {'ID': 'ol'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ _enable_loaders("redhat")
+ grub_name = 'grub2-efi-x64'
+ grub_target = 'x86_64-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = True
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_loader = '/EFI/redhat/shimx64.efi'
+ expected_install = [
+ ['efibootmgr', '-v'],
+ ['efibootmgr', '--create', '--write-signature',
+ '--label', 'redhat', '--disk', disk, '--part', part,
+ '--loader', expected_loader],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/efi/EFI/redhat/grub.cfg'],
+ ['efibootmgr', '-v']
+ ]
+
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
+ def test_ol_install_existing_no_nvram(self):
+ # verify grub install command is not executed if update_nvram is False
+ # on ol.
+ def _enable_loaders(bootid):
+ efi_path = 'boot/efi/EFI'
+ target_efi_path = os.path.join(self.target, efi_path)
+ loaders = [
+ os.path.join(target_efi_path, bootid, 'shimx64.efi'),
+ os.path.join(target_efi_path, 'BOOT', 'BOOTX64.EFI'),
+ os.path.join(target_efi_path, bootid, 'grubx64.efi'),
+ ]
+ for loader in loaders:
+ util.write_file(loader, content="")
+
+ self.m_os_release.return_value = {'ID': 'ol'}
+ distroinfo = install_grub.distro.get_distroinfo()
+ _enable_loaders("redhat")
+ grub_name = 'grub2-efi-x64'
+ grub_target = 'x86_64-efi'
+ grub_cmd = 'grub2-install'
+ update_nvram = False
+ devices = ['/dev/disk-a-part1']
+ disk = '/dev/disk-a'
+ part = '1'
+ self.m_get_disk_part.return_value = (disk, part)
+
+ expected_install = [
+ ['efibootmgr', '-v'],
+ ]
+ expected_post = [
+ ['grub2-mkconfig', '-o', '/boot/efi/EFI/redhat/grub.cfg'],
+ ['efibootmgr', '-v']
+ ]
+
+ self.assertEqual(
+ (expected_install, expected_post),
+ install_grub.gen_uefi_install_commands(
+ grub_name, grub_target, grub_cmd, update_nvram, distroinfo,
+ devices, self.target))
+
class TestGenInstallCommands(CiTestCase):