summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraycabta <aycabta@gmail.com>2021-03-28 22:47:20 +0900
committergit <svn-admin@ruby-lang.org>2021-03-29 05:10:08 +0900
commita1938ec308543d1649069bddd3bf0aeb541f3804 (patch)
tree55dc9737d6861d5ace65da9951930a0e991434fe
parent1cdecb43499a9e821e892fd4edb4ca27b992ab09 (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
-rw-r--r--test/irb/test_cmd.rb86
1 files changed, 42 insertions, 44 deletions
diff --git a/test/irb/test_cmd.rb b/test/irb/test_cmd.rb
index f2e9cfb..9bf78a4 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