diff --git a/lib/irb/cmd/info.rb b/lib/irb/cmd/info.rb index a23d502eda..2f3fef16ca 100644 --- a/lib/irb/cmd/info.rb +++ b/lib/irb/cmd/info.rb @@ -16,6 +16,10 @@ module IRB str += "RUBY_PLATFORM: #{RUBY_PLATFORM}\n" str += "LANG env: #{ENV["LANG"]}\n" if ENV["LANG"] && !ENV["LANG"].empty? str += "LC_ALL env: #{ENV["LC_ALL"]}\n" if ENV["LC_ALL"] && !ENV["LC_ALL"].empty? + if RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/ + codepage = `chcp`.sub(/Active code page: (\d+)\n/, '\1') + str += "Code page: #{codepage}\n" + end str end alias_method :to_s, :inspect diff --git a/test/irb/test_cmd.rb b/test/irb/test_cmd.rb index adf671f205..e6bb587b5c 100644 --- a/test/irb/test_cmd.rb +++ b/test/irb/test_cmd.rb @@ -47,6 +47,7 @@ module TestIRB @default_encoding = [Encoding.default_external, Encoding.default_internal] @stdio_encodings = [STDIN, STDOUT, STDERR].map {|io| [io.external_encoding, io.internal_encoding] } IRB.instance_variable_get(:@CONF).clear + @is_win = (RbConfig::CONFIG['host_os'] =~ /mswin|msys|mingw|cygwin|bccwin|wince|emc/) end def teardown @@ -80,6 +81,7 @@ module TestIRB InputMethod:\sAbstract\sInputMethod\n \.irbrc\spath:\s.+\n RUBY_PLATFORM:\s.+\n + #{@is_win ? 'Code\spage:\s\d+\n' : ''} }x assert_match expected, irb.context.main.irb_info.to_s ensure @@ -105,6 +107,7 @@ module TestIRB InputMethod:\sAbstract\sInputMethod\n \.irbrc\spath:\s.+\n RUBY_PLATFORM:\s.+\n + #{@is_win ? 'Code\spage:\s\d+\n' : ''} }x assert_match expected, irb.context.main.irb_info.to_s ensure @@ -132,6 +135,7 @@ module TestIRB IRB\sversion:\sirb\s.+\n InputMethod:\sAbstract\sInputMethod\n RUBY_PLATFORM:\s.+\n + #{@is_win ? 'Code\spage:\s\d+\n' : ''} \z }x assert_match expected, irb.context.main.irb_info.to_s @@ -163,6 +167,7 @@ module TestIRB IRB\sversion:\sirb\s.+\n InputMethod:\sAbstract\sInputMethod\n RUBY_PLATFORM:\s.+\n + #{@is_win ? 'Code\spage:\s\d+\n' : ''} \z }x assert_match expected, irb.context.main.irb_info.to_s