From: Andrew Burgess Date: Mon, 16 Nov 2020 15:16:25 +0000 (+0000) Subject: gdb/testsuite: prevent timeout in gdb.gdb/unittest.exp X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c72e313608b86c45a822d385ea5bc7acd3b6582c;p=binutils-gdb.git gdb/testsuite: prevent timeout in gdb.gdb/unittest.exp When GDB is compiled with --enable-targets=all I would sometimes see the 'maintenance selftest' in gdb.gdb/unittest.exp test timeout. This one command causes GDB to run many separate self tests, this can take some time. The output of this command basically follows this pattern: (gdb) maintenance selftest Running selftest aarch64-analyze-prologue. Running selftest aarch64-process-record. Running selftest arm-record. Running selftest arm_analyze_prologue. Running selftest array_view. Running selftest child_path. Running selftest cli_utils. ..... snip lots more lines .... Ran 79 unit tests, 0 failed Currently the expect script waits for the final summary line ("Ran 79 unit test, 0 failed") before declaring pass or fail. The problem is that if the summary line takes too long to appear the test will timeout. As this test makes use of gdb_test_multiple then all I've done is add an extra pattern that matches the 'Running selftest ....' lines and then calls exp_continue. Doing this means we find matches much more frequently, and each time we do the timeout timer resets, preventing the overall test from timing out. gdb/testsuite/ChangeLog: * gdb.gdb/unittest.exp: Spot 'Running...' lines. --- diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 3795205309d..9c326d52431 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2020-11-17 Andrew Burgess + + * gdb.gdb/unittest.exp: Spot 'Running...' lines. + 2020-11-17 Andrew Burgess * gdb.base/completion.exp: Add new tests. diff --git a/gdb/testsuite/gdb.gdb/unittest.exp b/gdb/testsuite/gdb.gdb/unittest.exp index 20027b85e1f..28a14520f47 100644 --- a/gdb/testsuite/gdb.gdb/unittest.exp +++ b/gdb/testsuite/gdb.gdb/unittest.exp @@ -26,6 +26,13 @@ gdb_start set test "maintenance selftest" gdb_test_multiple $test $test { + -re ".*Running selftest \[^\n\r\]+\." { + # The selftests can take some time to complete. To prevent + # timeout spot the 'Running ...' lines going past, so long as + # these are produced quickly enough then the overall test will + # not timeout. + exp_continue + } -re "Ran ($decimal) unit tests, 0 failed\r\n$gdb_prompt $" { set num_ran $expect_out(1,string) gdb_assert "$num_ran > 0" $test