mtest: do not process zero byte reads in read_decode()
AsyncIO.StreamReader.readuntil() occasionally raises IncompleteRead
exception before a byte of data has been read. Do not process the "read"
data in those cases.
diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py
index 11e4d31..b5182cc 100644
--- a/mesonbuild/mtest.py
+++ b/mesonbuild/mtest.py
@@ -1123,10 +1123,11 @@
line_bytes = e.partial
except asyncio.LimitOverrunError as e:
line_bytes = await reader.readexactly(e.consumed)
- line = decode(line_bytes)
- stdo_lines.append(line)
- if console_mode is ConsoleUser.STDOUT:
- print(line, end='', flush=True)
+ if line_bytes:
+ line = decode(line_bytes)
+ stdo_lines.append(line)
+ if console_mode is ConsoleUser.STDOUT:
+ print(line, end='', flush=True)
return ''.join(stdo_lines)
except asyncio.CancelledError:
return ''.join(stdo_lines)