+2016-06-21  Pedro Alves  <palves@redhat.com>
+
+       * gdb.mi/mi-break.exp (test_breakpoint_commands): Always expect
+       breakpoint command's output on the main UI.
+       (test_break): New procedure, factored out from calls in the top
+       level.
+       (top level): Use foreach_with_prefix to test MI as main UI and as
+       separate UI.
+
 2016-06-21  Pedro Alves  <palves@redhat.com>
 
        * gdb.mi/mi-watch.exp (test_watchpoint_creation_and_listing)
 
 load_lib mi-support.exp
 set MIFLAGS "-i=mi"
 
-gdb_exit
-if [mi_gdb_start] {
-    continue
-}
-
 standard_testfile basics.c
 
 if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
      return -1
 }
 
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
 # Locate line numbers in basics.c.
 set line_callee4_head  [gdb_get_line_number "callee4 ("]
 set line_callee4_body  [expr $line_callee4_head + 2]
 
     mi_send_resuming_command "exec-continue" "breakpoint commands: continue"
 
-    set test "intermediate stop and continue"
+
+    # The breakpoint command's output is always sent to the main UI,
+    # even when testing with MI running on a secondary UI.
+    global gdb_main_spawn_id
+
+    set test "intermediate stop and continue, bp commands"
     gdb_expect {
-        -re ".*\\\$1 = 0.*\\\$10 = 9.*\\*running" {
+       -i $gdb_main_spawn_id
+       -re ".*\\\$1 = 0.*\\\$10 = 9" {
+           pass $test
+       }
+       timeout {
+           fail $test
+       }
+    }
+
+    set test "intermediate stop and continue, mi running"
+    gdb_expect {
+        -re "\\*running" {
            pass $test
        }
         timeout {
        ".*Source filename requires function, label, or line offset.*"
 }
 
-test_tbreak_creation_and_listing
-test_rbreak_creation_and_listing
+proc test_break {mi_mode} {
+    global srcdir subdir binfile
+
+    mi_gdb_exit
+
+    if {$mi_mode == "separate"} {
+       set start_ops "separate-mi-tty"
+    } else {
+       set start_ops ""
+    }
+    if [mi_gdb_start $start_ops] {
+       return
+    }
+
+    mi_delete_breakpoints
+    mi_gdb_reinitialize_dir $srcdir/$subdir
+    mi_gdb_load ${binfile}
 
-test_ignore_count
+    test_tbreak_creation_and_listing
+    test_rbreak_creation_and_listing
 
-test_error
+    test_ignore_count
 
-test_disabled_creation
+    test_error
 
-test_breakpoint_commands
+    test_disabled_creation
 
-test_abreak_creation
+    test_breakpoint_commands
 
-test_explicit_breakpoints
+    test_abreak_creation
 
-mi_gdb_exit
-return 0
+    test_explicit_breakpoints
+}
+
+foreach_with_prefix mi-mode {"main" "separate"} {
+    test_break ${mi-mode}
+}