[12/23] CI: Do not lost errors on failed processes

Message ID 20240325155540.4162990-13-amikan@ilbers.de
State New
Headers show
Series Additional CI improvements | expand

Commit Message

Anton Mikanovich March 25, 2024, 3:55 p.m. UTC
If subprocess failed before parsing its output we should try to get
error output at least once. Otherwise it will be lost.

Signed-off-by: Anton Mikanovich <amikan@ilbers.de>
---
 testsuite/cibuilder.py | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

Patch

diff --git a/testsuite/cibuilder.py b/testsuite/cibuilder.py
index ec2c0044..a4658ea7 100755
--- a/testsuite/cibuilder.py
+++ b/testsuite/cibuilder.py
@@ -197,7 +197,7 @@  class CIBuilder(Test):
             poller = select.poll()
             poller.register(p1.stdout, select.POLLIN)
             poller.register(p1.stderr, select.POLLIN)
-            while p1.poll() is None:
+            while True:
                 events = poller.poll(1000)
                 for fd, event in events:
                     if event != select.POLLIN:
@@ -206,6 +206,8 @@  class CIBuilder(Test):
                         self.log.info(p1.stdout.readline().rstrip())
                     if fd == p1.stderr.fileno():
                         self.log.error(p1.stderr.readline().rstrip())
+                if p1.poll() is not None:
+                    break
             p1.wait()
             if p1.returncode:
                 self.fail('Bitbake failed')
@@ -477,7 +479,7 @@  BBPATH .= ":${LAYERDIR}"\
         databuf = bytearray(b'')
         databuf_size = 1024 * 2 + len(login_prompt)
 
-        while time.time() < timeout and p1.poll() is None:
+        while time.time() < timeout:
             events = poller.poll(1000 * (timeout - time.time()))
             for fd, event in events:
                 if event != select.POLLIN:
@@ -491,6 +493,8 @@  BBPATH .= ":${LAYERDIR}"\
                         return 0
                 if fd == p1.stderr.fileno():
                     self.log.error(p1.stderr.readline().rstrip())
+            if p1.poll() is not None:
+                break
 
         rc = 1
         if time.time() > timeout: