diff options
| author | aycabta <aycabta@gmail.com> | 2020-04-28 17:06:43 +0900 |
|---|---|---|
| committer | aycabta <aycabta@gmail.com> | 2020-04-29 19:13:14 +0900 |
| commit | 3864fbc6d85b834be4567fa1d5bd0dccc4dfd808 (patch) | |
| tree | a1ce65277028a5179104bb826af9424bd5580c97 | |
| parent | 98a346d065cc981d60ec0e45f7f15ba7328b6ad6 (diff) | |
[ruby/irb] Check existence of rc files in irb_info command
https://github.com/ruby/irb/commit/cdbb9dfc9f
| -rw-r--r-- | lib/irb/cmd/info.rb | 11 | ||||
| -rw-r--r-- | lib/irb/input-method.rb | 10 | ||||
| -rw-r--r-- | test/irb/test_cmd.rb | 50 |
3 files changed, 62 insertions, 9 deletions
diff --git a/lib/irb/cmd/info.rb b/lib/irb/cmd/info.rb index ddf57b00b4..53ec71d754 100644 --- a/lib/irb/cmd/info.rb +++ b/lib/irb/cmd/info.rb @@ -9,12 +9,11 @@ module IRB def execute Class.new { def inspect - <<~EOM.chomp - Ruby version: #{RUBY_VERSION} - IRB version: #{IRB.version} - InputMethod: #{IRB.CurrentContext.io.inspect} - .irbrc path: #{IRB.rc_file} - EOM + str = "Ruby version: #{RUBY_VERSION}\n" + str += "IRB version: #{IRB.version}\n" + str += "InputMethod: #{IRB.CurrentContext.io.inspect}\n" + str += ".irbrc path: #{IRB.rc_file}\n" if File.exist?(IRB.rc_file) + str end alias_method :to_s, :inspect }.new diff --git a/lib/irb/input-method.rb b/lib/irb/input-method.rb index 47fc5db84f..8f337e0eac 100644 --- a/lib/irb/input-method.rb +++ b/lib/irb/input-method.rb @@ -220,9 +220,11 @@ module IRB # For debug message def inspect - inputrc_path = File.expand_path(ENV['INPUTRC'] || '~/.inputrc') readline_impl = (defined?(Reline) && Readline == Reline) ? 'Reline' : 'ext/readline' - "ReadlineInputMethod with #{readline_impl} #{Readline::VERSION} and #{inputrc_path}" + str = "ReadlineInputMethod with #{readline_impl} #{Readline::VERSION}" + inputrc_path = File.expand_path(ENV['INPUTRC'] || '~/.inputrc') + str += " and #{inputrc_path}" if File.exist?(inputrc_path) + str end end rescue LoadError @@ -323,12 +325,14 @@ module IRB # For debug message def inspect config = Reline::Config.new + str = "ReidlineInputMethod with Reline #{Reline::VERSION}" if config.respond_to?(:inputrc_path) inputrc_path = config.inputrc_path else inputrc_path = File.expand_path(ENV['INPUTRC'] || '~/.inputrc') end - "ReidlineInputMethod with Reline #{Reline::VERSION} and #{inputrc_path}" + str += " and #{inputrc_path}" if File.exist?(inputrc_path) + str end end end diff --git a/test/irb/test_cmd.rb b/test/irb/test_cmd.rb index 1f385512a6..7a9e7d79e1 100644 --- a/test/irb/test_cmd.rb +++ b/test/irb/test_cmd.rb @@ -60,5 +60,55 @@ module TestIRB }x assert_match expected, irb.context.main.irb_info.to_s end + + def test_irb_info_multiline_without_rc_files + inputrc_backup = ENV["INPUTRC"] + ENV["INPUTRC"] = "unkown_inpurc" + ext_backup = IRB::IRBRC_EXT + IRB.__send__(:remove_const, :IRBRC_EXT) + IRB.const_set(:IRBRC_EXT, "unkown_ext") + IRB.setup(__FILE__, argv: []) + IRB.conf[:USE_MULTILINE] = true + IRB.conf[:USE_SINGLELINE] = false + workspace = IRB::WorkSpace.new(self) + irb = IRB::Irb.new(workspace) + IRB.conf[:MAIN_CONTEXT] = irb.context + expected = %r{ + Ruby\sversion: .+\n + IRB\sversion:\sirb .+\n + InputMethod:\sReidlineInputMethod\swith\sReline\s[^ ]+(?!\sand\s.+)\n + \z + }x + assert_match expected, irb.context.main.irb_info.to_s + ensure + ENV["INPUTRC"] = inputrc_backup + IRB.__send__(:remove_const, :IRBRC_EXT) + IRB.const_set(:IRBRC_EXT, ext_backup) + end + + def test_irb_info_singleline_without_rc_files + inputrc_backup = ENV["INPUTRC"] + ENV["INPUTRC"] = "unkown_inpurc" + ext_backup = IRB::IRBRC_EXT + IRB.__send__(:remove_const, :IRBRC_EXT) + IRB.const_set(:IRBRC_EXT, "unkown_ext") + IRB.setup(__FILE__, argv: []) + IRB.conf[:USE_MULTILINE] = false + IRB.conf[:USE_SINGLELINE] = true + workspace = IRB::WorkSpace.new(self) + irb = IRB::Irb.new(workspace) + IRB.conf[:MAIN_CONTEXT] = irb.context + expected = %r{ + Ruby\sversion: .+\n + IRB\sversion:\sirb .+\n + InputMethod:\sReadlineInputMethod\swith\s[^ ]+\s[^ ]+(?!\sand\s.+)\n + \z + }x + assert_match expected, irb.context.main.irb_info.to_s + ensure + ENV["INPUTRC"] = inputrc_backup + IRB.__send__(:remove_const, :IRBRC_EXT) + IRB.const_set(:IRBRC_EXT, ext_backup) + end end end |
