test/py: test EFI_SIMPLE_TEXT_INPUT_PROTOCOL
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Thu, 6 Sep 2018 18:19:31 +0000 (20:19 +0200)
committerAlexander Graf <agraf@suse.de>
Sun, 23 Sep 2018 19:55:29 +0000 (21:55 +0200)
Execute the EFI selftest for the EFI_SIMPLE_TEXT_INPUT_PROTOCOL.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
test/py/tests/test_efi_selftest.py

index 747d52d935a4142af1f816f4473a3c343ede1105..9d3a11575e7725d8cb94d9a4f2234620c59c74b8 100644 (file)
@@ -48,3 +48,61 @@ def test_efi_selftest_watchdog_reboot(u_boot_console):
        if m != 0:
                raise Exception('Reset failed in \'watchdog reboot\' test')
        u_boot_console.restart_uboot();
+
+@pytest.mark.buildconfigspec('cmd_bootefi_selftest')
+def test_efi_selftest_text_input(u_boot_console):
+       """Test the EFI_SIMPLE_TEXT_INPUT_PROTOCOL
+
+       :param u_boot_console: U-Boot console
+
+       This function calls the text input EFI selftest.
+       """
+       u_boot_console.run_command(cmd='setenv efi_selftest text input')
+       output = u_boot_console.run_command(cmd='bootefi selftest',
+                                           wait_for_prompt=False)
+       m = u_boot_console.p.expect(['To terminate type \'x\''])
+       if m != 0:
+               raise Exception('No prompt for \'text input\' test')
+       u_boot_console.drain_console()
+       u_boot_console.p.timeout = 500
+       # EOT
+       u_boot_console.run_command(cmd=chr(4), wait_for_echo=False,
+                                  send_nl=False, wait_for_prompt=False)
+       m = u_boot_console.p.expect(['Unicode char 4'])
+       if m != 0:
+               raise Exception('EOT failed in \'text input\' test')
+       u_boot_console.drain_console()
+       # BS
+       u_boot_console.run_command(cmd=chr(8), wait_for_echo=False,
+                                  send_nl=False, wait_for_prompt=False)
+       m = u_boot_console.p.expect(['(BS)'])
+       if m != 0:
+               raise Exception('BS failed in \'text input\' test')
+       u_boot_console.drain_console()
+       # TAB
+       u_boot_console.run_command(cmd=chr(9), wait_for_echo=False,
+                                  send_nl=False, wait_for_prompt=False)
+       m = u_boot_console.p.expect(['(TAB)'])
+       if m != 0:
+               raise Exception('BS failed in \'text input\' test')
+       u_boot_console.drain_console()
+       # a
+       u_boot_console.run_command(cmd='a', wait_for_echo=False, send_nl=False,
+                                  wait_for_prompt=False)
+       m = u_boot_console.p.expect(['(\'a\')'])
+       if m != 0:
+               raise Exception('\'a\' failed in \'text input\' test')
+       u_boot_console.drain_console()
+       # UP escape sequence
+       u_boot_console.run_command(cmd=chr(27) + '[A', wait_for_echo=False,
+                                  send_nl=False, wait_for_prompt=False)
+       m = u_boot_console.p.expect(['(Up)'])
+       if m != 0:
+               raise Exception('UP failed in \'text input\' test')
+       u_boot_console.drain_console()
+       u_boot_console.run_command(cmd='x', wait_for_echo=False, send_nl=False,
+                                  wait_for_prompt=False)
+       m = u_boot_console.p.expect(['Summary: 0 failures', 'Press any key'])
+       if m != 0:
+               raise Exception('Failures occurred during the EFI selftest')
+       u_boot_console.restart_uboot();