diff options
| author | Stamatis Katsaounis <[email protected]> | 2023-10-17 19:11:54 +0000 |
|---|---|---|
| committer | Server Team CI Bot <[email protected]> | 2023-10-17 19:11:54 +0000 |
| commit | 64b2744dc4c7c57e18beb46423cf6b563ccd76ab (patch) | |
| tree | e8dfe236c0af468c23da19179c40bd898582e264 /tests/unittests/test_commands_install_grub.py | |
| parent | 7c18bf6a24297ed465a341a1f53875b61c878d6b (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.py | 114 |
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): |
