gdb_test_multiple contains -re "\r\n$gdb_prompt $" { if ![string match "" $message] then { fail "$message" but this may falsely match an unfinished output expected to be matched by: gdb_test_multiple "-environment-path" "-environment-path" { -re "\\\^done,path=\"\(.*\)\"\r\n$mi_gdb_prompt" { as mi_gdb_prompt is (without the angle brackets, ^M as \r\n delimiter): <[(]gdb[)] ^M > while gdb_prompt is (without the angle brackets): <\(gdb\)> Unfortunately there ar 23 uses of gdb_test_multiple in gdb.mi/*.exp. PASS: gdb.mi/mi2-basics.exp: environment-pwd operation -environment-path^M ^done,path="/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin"^M -(gdb) ^M +(gdb) FAIL: gdb.mi/mi2-basics.exp: -environment-path Expecting: ^(207-environment-path[^M ]+)?(207\^done,path="/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin"[^M ]+[(]gdb[)] ^M [ ]*) +^M 207-environment-path^M 207^done,path="/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin"^M (gdb) ^M -PASS: gdb.mi/mi2-basics.exp: environment-path no-args operation +FAIL: gdb.mi/mi2-basics.exp: environment-path no-args operation
This is only a special case of the general PR testsuite/12649. *** This bug has been marked as a duplicate of bug 12649 ***
Plus, gdb_test_multiple is tied to CLI's output internally. The fact that it works most of the time appears only to be a fortunate accident. Should we have an mi_gdb_test_multiple instead? Either that, or I think we should consider reverting all gdb_test_multiple uses under gdb.mi/ back to send_gdb/gdb_test. They were added not that long ago. The original patch: <http://sourceware.org/ml/gdb-patches/2010-05/msg00586.html>
I think using gdb_test_multiple in MI test hides more than testsuite/12649.