On 09/21/2018 12:55 AM, Stephen Warren wrote: > From: Stephen Warren <swar...@nvidia.com> > > After a test has failed, test/py drains the U-Boot console log to ensure > that any relevant output is captured. At this point, we don't care about > detecting any additional errors, since the test is already known to have > failed, and U-Boot will be restarted. To ensure that the test cleanup code > is not interrupted, and can correctly terminate the log sections for the > failed test, ignore any exception that occurs while reading the U-Boot > console output during this limited period of time. > > Signed-off-by: Stephen Warren <swar...@nvidia.com> > --- > v2: > * Combine the two except cases into one, since one was a superset of the > other. > * Fix TAB-vs-spaces issue in identation. > --- > test/py/u_boot_console_base.py | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/test/py/u_boot_console_base.py b/test/py/u_boot_console_base.py > index a14bad6e8c50..326b2ac51fbf 100644 > --- a/test/py/u_boot_console_base.py > +++ b/test/py/u_boot_console_base.py > @@ -304,7 +304,17 @@ class ConsoleBase(object): > # Wait for something U-Boot will likely never send. This will > # cause the console output to be read and logged. > self.p.expect(['This should never match U-Boot output']) > - except u_boot_spawn.Timeout: > + except: > + # We expect a timeout, since U-Boot won't print what we waited > + # for. Squash it when it happens. > + # > + # Squash any other exception too. This function is only used to > + # drain (and log) the U-Boot console output after a failed test. > + # The U-Boot process will be restarted, or target board reset, > once > + # this function returns. So, we don't care about detecting any > + # additional errors, so they're squashed so that the rest of the > + # post-test-failure cleanup code can continue operation, and > + # correctly terminate any log sections, etc. > pass > finally: > self.p.timeout = orig_timeout > This patch only covers this single usage of the expect(). Expect() is called from many test cases directly. In all these cases we still will not catch OSErrror if the U-Boot binary terminates breaking the pipes.
That is why in my patch I put the except statement into the except() method itself. What problem do you see in catching the exception where it is arising? Best regards Heinrich _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot