diff mbox series

[v3,7/7] support/testing/tests/fs/test_iso9660.py: add support to test using EFI BIOS

Message ID 20210923155726.87851-8-kory.maincent@bootlin.com
State Accepted
Headers show
Series Add support for ISO9660 image compatible with Legacy and EFI BIOS | expand

Commit Message

Köry Maincent Sept. 23, 2021, 3:57 p.m. UTC
The ISO9660 tests are only testing BIOS Legacy.
Add support to test an ISO9660 image based on EFI BIOS.
Add support to test an ISO9660 hybrid image based on Legacy and EFI BIOS.
Add dedicated Grub2 builtin config for the EFI compatible cases.

Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
---
 support/testing/conf/grub2-efi.cfg       |  2 +
 support/testing/tests/fs/test_iso9660.py | 74 +++++++++++++++++++++++-
 2 files changed, 74 insertions(+), 2 deletions(-)
 create mode 100644 support/testing/conf/grub2-efi.cfg

Comments

Yann E. MORIN Oct. 3, 2021, 12:50 p.m. UTC | #1
Köry, All,

On 2021-09-23 17:57 +0200, Kory Maincent spake thusly:
> The ISO9660 tests are only testing BIOS Legacy.
> Add support to test an ISO9660 image based on EFI BIOS.
> Add support to test an ISO9660 hybrid image based on Legacy and EFI BIOS.
> Add dedicated Grub2 builtin config for the EFI compatible cases.
> 
> Signed-off-by: Kory Maincent <kory.maincent@bootlin.com>
> ---
>  support/testing/conf/grub2-efi.cfg       |  2 +
>  support/testing/tests/fs/test_iso9660.py | 74 +++++++++++++++++++++++-
>  2 files changed, 74 insertions(+), 2 deletions(-)
>  create mode 100644 support/testing/conf/grub2-efi.cfg
> 
> diff --git a/support/testing/conf/grub2-efi.cfg b/support/testing/conf/grub2-efi.cfg
> new file mode 100644
> index 0000000000..11c32e880e
> --- /dev/null
> +++ b/support/testing/conf/grub2-efi.cfg
> @@ -0,0 +1,2 @@
> +set root=(cd0)
> +set prefix=/boot/grub
> diff --git a/support/testing/tests/fs/test_iso9660.py b/support/testing/tests/fs/test_iso9660.py
> index 1b699e1fef..8315442604 100644
> --- a/support/testing/tests/fs/test_iso9660.py
> +++ b/support/testing/tests/fs/test_iso9660.py
> @@ -25,9 +25,13 @@ BASIC_CONFIG = \
>      """.format(infra.filepath("conf/minimal-x86-qemu-kernel.config"))
>  
>  
> -def test_mount_internal_external(emulator, builddir, internal=True):
> +def test_mount_internal_external(emulator, builddir, internal=True, efi=False):
>      img = os.path.join(builddir, "images", "rootfs.iso9660")
> -    emulator.boot(arch="i386", options=["-cdrom", img])
> +    if efi:
> +        efi_img = os.path.join(builddir, "images", "OVMF.fd")
> +        emulator.boot(arch="i386", options=["-cdrom", img, "-bios", efi_img])
> +    else:
> +        emulator.boot(arch="i386", options=["-cdrom", img])
>      emulator.login()
>  
>      if internal:
> @@ -53,6 +57,7 @@ class TestIso9660Grub2External(infra.basetest.BRTest):
>          BR2_TARGET_ROOTFS_ISO9660=y
>          # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
>          BR2_TARGET_GRUB2=y
> +        BR2_TARGET_GRUB2_I386_PC=y

This is no longer needed now that we ensure that it is the default
setting. Ditto for the following two, of course.

Applied to master, thanks.

Regards,
Yann E. MORIN.

>          BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
>          BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660"
>          BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
> @@ -74,6 +79,7 @@ class TestIso9660Grub2ExternalCompress(infra.basetest.BRTest):
>          # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
>          BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION=y
>          BR2_TARGET_GRUB2=y
> +        BR2_TARGET_GRUB2_I386_PC=y
>          BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
>          BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660"
>          BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
> @@ -94,6 +100,7 @@ class TestIso9660Grub2Internal(infra.basetest.BRTest):
>          BR2_TARGET_ROOTFS_ISO9660=y
>          BR2_TARGET_ROOTFS_ISO9660_INITRD=y
>          BR2_TARGET_GRUB2=y
> +        BR2_TARGET_GRUB2_I386_PC=y
>          BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
>          BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660"
>          BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
> @@ -107,6 +114,69 @@ class TestIso9660Grub2Internal(infra.basetest.BRTest):
>          exit_code = test_touch_file(self.emulator)
>          self.assertEqual(exit_code, 0)
>  
> +
> +class TestIso9660Grub2EFI(infra.basetest.BRTest):
> +    config = BASIC_CONFIG + \
> +        """
> +        BR2_TARGET_ROOTFS_ISO9660=y
> +        BR2_TARGET_ROOTFS_ISO9660_INITRD=y
> +        BR2_TARGET_GRUB2=y
> +        BR2_TARGET_GRUB2_I386_EFI=y
> +        BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat part_msdos part_gpt normal iso9660"
> +        BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="{}"
> +        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
> +        BR2_TARGET_EDK2=y
> +        """.format(infra.filepath("conf/grub2-efi.cfg"),
> +                   infra.filepath("conf/grub2.cfg"))
> +
> +    def test_run(self):
> +        exit_code = test_mount_internal_external(self.emulator,
> +                                                 self.builddir, internal=True,
> +                                                 efi=True)
> +        self.assertEqual(exit_code, 0)
> +
> +        exit_code = test_touch_file(self.emulator)
> +        self.assertEqual(exit_code, 0)
> +
> +
> +class TestIso9660Grub2Hybrid(infra.basetest.BRTest):
> +    config = BASIC_CONFIG + \
> +        """
> +        BR2_TARGET_ROOTFS_ISO9660=y
> +        BR2_TARGET_ROOTFS_ISO9660_INITRD=y
> +        BR2_TARGET_GRUB2=y
> +        BR2_TARGET_GRUB2_I386_PC=y
> +        BR2_TARGET_GRUB2_I386_EFI=y
> +        BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
> +        BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal iso9660 biosdisk"
> +        BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC=""
> +        BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal iso9660 efi_gop"
> +        BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="{}"
> +        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
> +        BR2_TARGET_EDK2=y
> +        """.format(infra.filepath("conf/grub2-efi.cfg"),
> +                   infra.filepath("conf/grub2.cfg"))
> +
> +    def test_run(self):
> +        exit_code = test_mount_internal_external(self.emulator,
> +                                                 self.builddir, internal=True,
> +                                                 efi=False)
> +        self.assertEqual(exit_code, 0)
> +
> +        exit_code = test_touch_file(self.emulator)
> +        self.assertEqual(exit_code, 0)
> +
> +        self.emulator.stop()
> +
> +        exit_code = test_mount_internal_external(self.emulator,
> +                                                 self.builddir, internal=True,
> +                                                 efi=True)
> +        self.assertEqual(exit_code, 0)
> +
> +        exit_code = test_touch_file(self.emulator)
> +        self.assertEqual(exit_code, 0)
> +
> +
>  #
>  # Syslinux
>  
> -- 
> 2.25.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@lists.buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/support/testing/conf/grub2-efi.cfg b/support/testing/conf/grub2-efi.cfg
new file mode 100644
index 0000000000..11c32e880e
--- /dev/null
+++ b/support/testing/conf/grub2-efi.cfg
@@ -0,0 +1,2 @@ 
+set root=(cd0)
+set prefix=/boot/grub
diff --git a/support/testing/tests/fs/test_iso9660.py b/support/testing/tests/fs/test_iso9660.py
index 1b699e1fef..8315442604 100644
--- a/support/testing/tests/fs/test_iso9660.py
+++ b/support/testing/tests/fs/test_iso9660.py
@@ -25,9 +25,13 @@  BASIC_CONFIG = \
     """.format(infra.filepath("conf/minimal-x86-qemu-kernel.config"))
 
 
-def test_mount_internal_external(emulator, builddir, internal=True):
+def test_mount_internal_external(emulator, builddir, internal=True, efi=False):
     img = os.path.join(builddir, "images", "rootfs.iso9660")
-    emulator.boot(arch="i386", options=["-cdrom", img])
+    if efi:
+        efi_img = os.path.join(builddir, "images", "OVMF.fd")
+        emulator.boot(arch="i386", options=["-cdrom", img, "-bios", efi_img])
+    else:
+        emulator.boot(arch="i386", options=["-cdrom", img])
     emulator.login()
 
     if internal:
@@ -53,6 +57,7 @@  class TestIso9660Grub2External(infra.basetest.BRTest):
         BR2_TARGET_ROOTFS_ISO9660=y
         # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
         BR2_TARGET_GRUB2=y
+        BR2_TARGET_GRUB2_I386_PC=y
         BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
         BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660"
         BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
@@ -74,6 +79,7 @@  class TestIso9660Grub2ExternalCompress(infra.basetest.BRTest):
         # BR2_TARGET_ROOTFS_ISO9660_INITRD is not set
         BR2_TARGET_ROOTFS_ISO9660_TRANSPARENT_COMPRESSION=y
         BR2_TARGET_GRUB2=y
+        BR2_TARGET_GRUB2_I386_PC=y
         BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
         BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660"
         BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
@@ -94,6 +100,7 @@  class TestIso9660Grub2Internal(infra.basetest.BRTest):
         BR2_TARGET_ROOTFS_ISO9660=y
         BR2_TARGET_ROOTFS_ISO9660_INITRD=y
         BR2_TARGET_GRUB2=y
+        BR2_TARGET_GRUB2_I386_PC=y
         BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
         BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat part_msdos part_gpt normal biosdisk iso9660"
         BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
@@ -107,6 +114,69 @@  class TestIso9660Grub2Internal(infra.basetest.BRTest):
         exit_code = test_touch_file(self.emulator)
         self.assertEqual(exit_code, 0)
 
+
+class TestIso9660Grub2EFI(infra.basetest.BRTest):
+    config = BASIC_CONFIG + \
+        """
+        BR2_TARGET_ROOTFS_ISO9660=y
+        BR2_TARGET_ROOTFS_ISO9660_INITRD=y
+        BR2_TARGET_GRUB2=y
+        BR2_TARGET_GRUB2_I386_EFI=y
+        BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat part_msdos part_gpt normal iso9660"
+        BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="{}"
+        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
+        BR2_TARGET_EDK2=y
+        """.format(infra.filepath("conf/grub2-efi.cfg"),
+                   infra.filepath("conf/grub2.cfg"))
+
+    def test_run(self):
+        exit_code = test_mount_internal_external(self.emulator,
+                                                 self.builddir, internal=True,
+                                                 efi=True)
+        self.assertEqual(exit_code, 0)
+
+        exit_code = test_touch_file(self.emulator)
+        self.assertEqual(exit_code, 0)
+
+
+class TestIso9660Grub2Hybrid(infra.basetest.BRTest):
+    config = BASIC_CONFIG + \
+        """
+        BR2_TARGET_ROOTFS_ISO9660=y
+        BR2_TARGET_ROOTFS_ISO9660_INITRD=y
+        BR2_TARGET_GRUB2=y
+        BR2_TARGET_GRUB2_I386_PC=y
+        BR2_TARGET_GRUB2_I386_EFI=y
+        BR2_TARGET_GRUB2_BOOT_PARTITION="cd"
+        BR2_TARGET_GRUB2_BUILTIN_MODULES_PC="boot linux ext2 fat squash4 part_msdos part_gpt normal iso9660 biosdisk"
+        BR2_TARGET_GRUB2_BUILTIN_CONFIG_PC=""
+        BR2_TARGET_GRUB2_BUILTIN_MODULES_EFI="boot linux ext2 fat squash4 part_msdos part_gpt normal iso9660 efi_gop"
+        BR2_TARGET_GRUB2_BUILTIN_CONFIG_EFI="{}"
+        BR2_TARGET_ROOTFS_ISO9660_BOOT_MENU="{}"
+        BR2_TARGET_EDK2=y
+        """.format(infra.filepath("conf/grub2-efi.cfg"),
+                   infra.filepath("conf/grub2.cfg"))
+
+    def test_run(self):
+        exit_code = test_mount_internal_external(self.emulator,
+                                                 self.builddir, internal=True,
+                                                 efi=False)
+        self.assertEqual(exit_code, 0)
+
+        exit_code = test_touch_file(self.emulator)
+        self.assertEqual(exit_code, 0)
+
+        self.emulator.stop()
+
+        exit_code = test_mount_internal_external(self.emulator,
+                                                 self.builddir, internal=True,
+                                                 efi=True)
+        self.assertEqual(exit_code, 0)
+
+        exit_code = test_touch_file(self.emulator)
+        self.assertEqual(exit_code, 0)
+
+
 #
 # Syslinux