mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-18 22:35:39 +01:00
Merge bitcoin/bitcoin#25294: test: Fix wait_for_debug_log UnicodeDecodeError
fa74b63c01test: Fix wait_for_debug_log UnicodeDecodeError (MacroFake) Pull request description: Fix the intermittent `UnicodeDecodeError` when the debug log is truncated on an (multi-byte) unicode character by treating everything as bytes. Also, remove the `ignore_case` option and the`re.search+re.escape` wrap. All of this is unused and doesn't exist on raw byte strings. Fixes https://github.com/bitcoin/bitcoin/issues/24575 ACKs for top commit: jonatack: ACKfa74b63c01brunoerg: ACKfa74b63c01Tree-SHA512: c67c9355073e784fa8d9d48b8e79ff0c98f5ae9cd4d704ad12a76d2604733946054bc74b8ab346aa2184db23d740b85c8c13eb892d76cba92e42ebfd73f2f1bf
This commit is contained in:
@@ -423,7 +423,7 @@ class TestNode():
|
||||
self._raise_assertion_error('Expected messages "{}" does not partially match log:\n\n{}\n\n'.format(str(expected_msgs), print_log))
|
||||
|
||||
@contextlib.contextmanager
|
||||
def wait_for_debug_log(self, expected_msgs, timeout=60, ignore_case=False):
|
||||
def wait_for_debug_log(self, expected_msgs, timeout=60):
|
||||
"""
|
||||
Block until we see a particular debug log message fragment or until we exceed the timeout.
|
||||
Return:
|
||||
@@ -431,18 +431,17 @@ class TestNode():
|
||||
"""
|
||||
time_end = time.time() + timeout * self.timeout_factor
|
||||
prev_size = self.debug_log_bytes()
|
||||
re_flags = re.MULTILINE | (re.IGNORECASE if ignore_case else 0)
|
||||
|
||||
yield
|
||||
|
||||
while True:
|
||||
found = True
|
||||
with open(self.debug_log_path, encoding='utf-8') as dl:
|
||||
with open(self.debug_log_path, "rb") as dl:
|
||||
dl.seek(prev_size)
|
||||
log = dl.read()
|
||||
|
||||
for expected_msg in expected_msgs:
|
||||
if re.search(re.escape(expected_msg), log, flags=re_flags) is None:
|
||||
if expected_msg not in log:
|
||||
found = False
|
||||
|
||||
if found:
|
||||
|
||||
Reference in New Issue
Block a user