From 7746785035f7003e33f9b101c8bbb4d7a74f216f Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 10 Oct 2024 16:24:28 +1100 Subject: [PATCH] tests/run-tests.py: Wait for soft reset if a target skips a test. Commit 69c25ea8653566ec97690b5121bd10b753c89426 made raising `SystemExit` do a soft reset (on bare-metal targets). This means that any test which is skipped by a target (by raising `SystemExit`) will trigger a soft reset on that target, and then it must execute its startup code, such as `boot.py`. If the timing is right, this startup code can be unintentionally interrupted by the test runner when preparing the next test, because the test runner enters the raw REPL again via a Ctrl-C Ctrl-A ctrl-D sequence (in `Pyboard.enter_raw_repl()`). When this happens (`boot.py` is interrupted) the target may not be set up correctly, and it may (in the case of stm32 boards) flash LEDs and take extra time, slowing down the test run. Fix this by explicitly waiting for the target to finish its soft reset when it skips a test. Signed-off-by: Damien George --- tests/run-tests.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/run-tests.py b/tests/run-tests.py index 07280666dc8c2..a9fb458f2cde4 100755 --- a/tests/run-tests.py +++ b/tests/run-tests.py @@ -824,6 +824,12 @@ def run_one_test(test_file): output_mupy = run_micropython(pyb, args, test_file, test_file_abspath) if output_mupy == b"SKIP\n": + if pyb is not None and hasattr(pyb, "read_until"): + # Running on a target over a serial connection, and the target requested + # to skip the test. It does this via a SystemExit which triggers a soft + # reset. Wait for the soft reset to finish, so we don't interrupt the + # start-up code (eg boot.py) when preparing to run the next test. + pyb.read_until(1, b"raw REPL; CTRL-B to exit\r\n") print("skip ", test_file) skipped_tests.append(test_name) return pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy