diff options
author | aycabta <aycabta@gmail.com> | 2021-03-28 22:47:20 +0900 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2021-03-29 05:10:08 +0900 |
commit | a1938ec308543d1649069bddd3bf0aeb541f3804 (patch) | |
tree | 55dc9737d6861d5ace65da9951930a0e991434fe /test | |
parent | 1cdecb43499a9e821e892fd4edb4ca27b992ab09 (diff) |
[ruby/irb] Always add input method when calling Irb.new in tests
When passes input method as nil to Context.new through Irb.new,
ReidlineInputMethod.new is executed and the global internal state of Reline is
rewritten, therefore other tests are failed in the Ruby repository. This
commit changes to use TestInputMethod.
https://github.com/ruby/irb/commit/010dce9210
Diffstat (limited to 'test')
-rw-r--r-- | test/irb/test_cmd.rb | 86 |
1 files changed, 42 insertions, 44 deletions
diff --git a/test/irb/test_cmd.rb b/test/irb/test_cmd.rb index f2e9cfb600..9bf78a47e6 100644 --- a/test/irb/test_cmd.rb +++ b/test/irb/test_cmd.rb @@ -5,6 +5,32 @@ require "irb/extend-command" module TestIRB class ExtendCommand < Test::Unit::TestCase + class TestInputMethod < ::IRB::InputMethod + attr_reader :list, :line_no + + def initialize(list = []) + super("test") + @line_no = 0 + @list = list + end + + def gets + @list[@line_no]&.tap {@line_no += 1} + end + + def eof? + @line_no >= @list.size + end + + def encoding + Encoding.default_external + end + + def reset + @line_no = 0 + end + end + def setup @pwd = Dir.pwd @tmpdir = File.join(Dir.tmpdir, "test_reline_config_#{$$}") @@ -44,12 +70,12 @@ module TestIRB IRB.conf[:USE_SINGLELINE] = false IRB.conf[:VERBOSE] = false workspace = IRB::WorkSpace.new(self) - irb = IRB::Irb.new(workspace) + irb = IRB::Irb.new(workspace, TestInputMethod.new([])) IRB.conf[:MAIN_CONTEXT] = irb.context expected = %r{ Ruby\sversion: .+\n IRB\sversion:\sirb .+\n - InputMethod:\sReidlineInputMethod\swith\sReline .+ and .+\n + InputMethod:\sAbstract\sInputMethod\n \.irbrc\spath: .+\n RUBY_PLATFORM: .+ }x @@ -64,12 +90,12 @@ module TestIRB IRB.conf[:USE_SINGLELINE] = true IRB.conf[:VERBOSE] = false workspace = IRB::WorkSpace.new(self) - irb = IRB::Irb.new(workspace) + irb = IRB::Irb.new(workspace, TestInputMethod.new([])) IRB.conf[:MAIN_CONTEXT] = irb.context expected = %r{ Ruby\sversion: .+\n IRB\sversion:\sirb .+\n - InputMethod:\sReadlineInputMethod\swith .+ and .+\n + InputMethod:\sAbstract\sInputMethod\n \.irbrc\spath: .+\n RUBY_PLATFORM: .+ }x @@ -87,12 +113,12 @@ module TestIRB IRB.conf[:USE_SINGLELINE] = false IRB.conf[:VERBOSE] = false workspace = IRB::WorkSpace.new(self) - irb = IRB::Irb.new(workspace) + irb = IRB::Irb.new(workspace, TestInputMethod.new([])) IRB.conf[:MAIN_CONTEXT] = irb.context expected = %r{ Ruby\sversion: .+\n IRB\sversion:\sirb .+\n - InputMethod:\sReidlineInputMethod\swith\sReline\s[^ ]+(?!\sand\s.+)\n + InputMethod:\sAbstract\sInputMethod\n RUBY_PLATFORM: .+\n \z }x @@ -114,12 +140,12 @@ module TestIRB IRB.conf[:USE_SINGLELINE] = true IRB.conf[:VERBOSE] = false workspace = IRB::WorkSpace.new(self) - irb = IRB::Irb.new(workspace) + irb = IRB::Irb.new(workspace, TestInputMethod.new([])) IRB.conf[:MAIN_CONTEXT] = irb.context expected = %r{ Ruby\sversion: .+\n IRB\sversion:\sirb .+\n - InputMethod:\sReadlineInputMethod\swith\s(?~.*\sand\s.+)\n + InputMethod:\sAbstract\sInputMethod\n RUBY_PLATFORM: .+\n \z }x @@ -130,32 +156,6 @@ module TestIRB IRB.const_set(:IRBRC_EXT, ext_backup) end - class TestInputMethod < ::IRB::InputMethod - attr_reader :list, :line_no - - def initialize(list = []) - super("test") - @line_no = 0 - @list = list - end - - def gets - @list[@line_no]&.tap {@line_no += 1} - end - - def eof? - @line_no >= @list.size - end - - def encoding - Encoding.default_external - end - - def reset - @line_no = 0 - end - end - def test_measure IRB.init_config(nil) IRB.conf[:PROMPT] = { @@ -376,15 +376,14 @@ module TestIRB end def test_ls + input = TestInputMethod.new([ + "ls Object.new.tap { |o| o.instance_variable_set(:@a, 1) }\n", + ]) IRB.init_config(nil) workspace = IRB::WorkSpace.new(self) + irb = IRB::Irb.new(workspace, input) IRB.conf[:VERBOSE] = false - irb = IRB::Irb.new(workspace) IRB.conf[:MAIN_CONTEXT] = irb.context - input = TestInputMethod.new([ - "ls Object.new.tap { |o| o.instance_variable_set(:@a, 1) }\n", - ]) - irb = IRB::Irb.new(IRB::WorkSpace.new(Object.new), input) irb.context.return_format = "=> %s\n" out, err = capture_output do irb.eval_input @@ -394,15 +393,14 @@ module TestIRB end def test_whereami + input = TestInputMethod.new([ + "whereami\n", + ]) IRB.init_config(nil) workspace = IRB::WorkSpace.new(self) + irb = IRB::Irb.new(workspace, input) IRB.conf[:VERBOSE] = false - irb = IRB::Irb.new(workspace) IRB.conf[:MAIN_CONTEXT] = irb.context - input = TestInputMethod.new([ - "whereami\n", - ]) - irb = IRB::Irb.new(IRB::WorkSpace.new(Object.new), input) irb.context.return_format = "=> %s\n" out, err = capture_output do irb.eval_input |