1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[ruby/irb] Check existence of rc files in irb_info command

https://github.com/ruby/irb/commit/cdbb9dfc9f
This commit is contained in:
aycabta 2020-04-28 17:06:43 +09:00
parent 98a346d065
commit 3864fbc6d8
3 changed files with 62 additions and 9 deletions

View file

@ -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

View file

@ -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

View file

@ -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