diff --git a/lib/irb/debug.rb b/lib/irb/debug.rb index cd64b77ad..59be1365b 100644 --- a/lib/irb/debug.rb +++ b/lib/irb/debug.rb @@ -81,6 +81,7 @@ def configure_irb_for_debugger(irb) IRB.instance_variable_set(:@debugger_irb, irb) irb.context.with_debugger = true irb.context.irb_name += ":rdbg" + irb.context.io.load_history if irb.context.io.class < HistorySavingAbility end module SkipPathHelperForIRB diff --git a/test/irb/test_history.rb b/test/irb/test_history.rb index 15c16ed89..021bb682c 100644 --- a/test/irb/test_history.rb +++ b/test/irb/test_history.rb @@ -488,6 +488,36 @@ def foo HISTORY end + def test_direct_debug_session_loads_history + @envs['RUBY_DEBUG_IRB_CONSOLE'] = "1" + write_history <<~HISTORY + old_history_1 + old_history_2 + old_history_3 + HISTORY + + write_ruby <<~'RUBY' + require 'debug' + debugger + binding.irb # needed to satisfy run_ruby_file + RUBY + + output = run_ruby_file do + type "history" + type "puts 'foo'" + type "history" + type "exit!" + end + + assert_include(output, "irb:rdbg(main):002") # assert that we're in an irb:rdbg session + assert_include(output, "5: history") + assert_include(output, "4: puts 'foo'") + assert_include(output, "3: history") + assert_include(output, "2: old_history_3") + assert_include(output, "1: old_history_2") + assert_include(output, "0: old_history_1") + end + private def write_history(history)