[U-Boot] [PATCH 1/1] test/py: catch errors occurring when reading the console

Heinrich Schuchardt xypron.glpk at gmx.de
Thu Sep 20 18:19:32 UTC 2018


Spawn.exept has a try block without 'except'.

When the py test is running it is connected via pipes to the U-Boot
process. If the U-Boot process ends prematurely, e.g. due to a
segmentation fault, the pipes are broken. Trying to read from a broken
pipe results in an OSError. Catch the exception and treat the broken pipe
like any other end of output. By returning None expect() indicates that
the output does not match.

Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
Reviewed-by: Simon Glass <sjg at chromium.org>
---
I suggest that Alex takes the patch because we need it when working on
the efi-next branch.

v3
	add more comments
v2
	replace TAB by spaces
	fix type in subject
---
 test/py/u_boot_spawn.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/test/py/u_boot_spawn.py b/test/py/u_boot_spawn.py
index b011a3e3da..adc1d00287 100644
--- a/test/py/u_boot_spawn.py
+++ b/test/py/u_boot_spawn.py
@@ -181,6 +181,14 @@ class Spawn(object):
                 # unlimited substitutions, but in practice the version of
                 # Python in Ubuntu 14.04 appears to default to count=2!
                 self.buf = self.re_vt100.sub('', self.buf, count=1000000)
+        except OSError, EOFError:
+            # When the py test is running it is connected via pipes to the
+            # U-Boot process. If the U-Boot process ends prematurely, e.g. due
+            # to a segmentation fault, the pipes are broken. Trying to read
+            # from a broken pipe results in an OSError. Treat the broken pipe
+            # like any other end of output. By returning None expect()
+            # indicates that the output does not match.
+            pass
         finally:
             if self.logfile_read:
                 self.logfile_read.flush()
-- 
2.18.0



More information about the U-Boot mailing list