# Copyright 2016-2021 Free Software Foundation, Inc.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# Regression test for PR mi/20034.  Trying to turn on "set editing"
# when the top-level interpreter is MI would result in GDB/readline
# aborting with:
#
# readline: readline_callback_read_char() called with no handler!
# Aborted (core dumped)

load_lib mi-support.exp
set MIFLAGS "-i=mi"

gdb_exit
if {[mi_gdb_start]} {
    continue
}

mi_gdb_test "-interpreter-exec console \"set editing on\"" \
  {=cmd-param-changed,param=\"editing\",.*\^done} \
  "-interpreter-exec console \"set editing on\""

mi_gdb_test "-interpreter-exec console \"show editing\"" \
  ".*Editing of command lines as they are typed is off.*" \
  "-interpreter-exec console \"show editing\""
