[ruby/irb] Group command test cases with class
(https://github.com/ruby/irb/pull/491) Currently, IRB has 35 test cases for 10 non-debugging commands, with the rest 10 commands untested. So in the long-term, it could have around 70 test cases for all existing commands. With this number of test cases, I think it's easier to manage them by grouping them in classes (by command).
This commit is contained in:
parent
4959e01932
commit
f9148d1580
@ -7,23 +7,6 @@ require_relative "helper"
|
||||
|
||||
module TestIRB
|
||||
class CommandTestCase < TestCase
|
||||
def execute_lines(*lines, conf: {}, main: self, irb_path: nil)
|
||||
IRB.init_config(nil)
|
||||
IRB.conf[:VERBOSE] = false
|
||||
IRB.conf[:PROMPT_MODE] = :SIMPLE
|
||||
IRB.conf.merge!(conf)
|
||||
input = TestInputMethod.new(lines)
|
||||
irb = IRB::Irb.new(IRB::WorkSpace.new(main), input)
|
||||
irb.context.return_format = "=> %s\n"
|
||||
irb.context.irb_path = irb_path if irb_path
|
||||
IRB.conf[:MAIN_CONTEXT] = irb.context
|
||||
capture_output do
|
||||
irb.eval_input
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class ExtendCommandTest < CommandTestCase
|
||||
def setup
|
||||
@pwd = Dir.pwd
|
||||
@tmpdir = File.join(Dir.tmpdir, "test_reline_config_#{$$}")
|
||||
@ -50,7 +33,40 @@ module TestIRB
|
||||
restore_encodings
|
||||
end
|
||||
|
||||
class InfoCommandTest < ExtendCommandTest
|
||||
def execute_lines(*lines, conf: {}, main: self, irb_path: nil)
|
||||
IRB.init_config(nil)
|
||||
IRB.conf[:VERBOSE] = false
|
||||
IRB.conf[:PROMPT_MODE] = :SIMPLE
|
||||
IRB.conf.merge!(conf)
|
||||
input = TestInputMethod.new(lines)
|
||||
irb = IRB::Irb.new(IRB::WorkSpace.new(main), input)
|
||||
irb.context.return_format = "=> %s\n"
|
||||
irb.context.irb_path = irb_path if irb_path
|
||||
IRB.conf[:MAIN_CONTEXT] = irb.context
|
||||
capture_output do
|
||||
irb.eval_input
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class CommnadAliasTest < CommandTestCase
|
||||
def test_vars_with_aliases
|
||||
@foo = "foo"
|
||||
$bar = "bar"
|
||||
out, err = execute_lines(
|
||||
"@foo\n",
|
||||
"$bar\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(/"foo"/, out)
|
||||
assert_match(/"bar"/, out)
|
||||
ensure
|
||||
remove_instance_variable(:@foo)
|
||||
$bar = nil
|
||||
end
|
||||
end
|
||||
|
||||
class InfoTest < CommandTestCase
|
||||
def setup
|
||||
super
|
||||
@locals_backup = ENV.delete("LANG"), ENV.delete("LC_ALL")
|
||||
@ -192,6 +208,7 @@ module TestIRB
|
||||
end
|
||||
end
|
||||
|
||||
class MeasureTest < CommandTestCase
|
||||
def test_measure
|
||||
conf = {
|
||||
PROMPT: {
|
||||
@ -349,7 +366,9 @@ module TestIRB
|
||||
assert_match(/\A=> 3\nBLOCK is added\.\n=> nil\naaa\n=> 3\nBLOCK is added.\naaa\n=> nil\nbbb\n=> 3\n=> nil\n=> 3\n/, out)
|
||||
assert_empty(c.class_variables)
|
||||
end
|
||||
end
|
||||
|
||||
class IrbSourceTest < CommandTestCase
|
||||
def test_irb_source
|
||||
File.write("#{@tmpdir}/a.rb", "a = 'hi'\n")
|
||||
out, err = execute_lines(
|
||||
@ -375,7 +394,9 @@ module TestIRB
|
||||
assert_empty err
|
||||
assert_match(/Please specify the file name./, out)
|
||||
end
|
||||
end
|
||||
|
||||
class IrbLoadTest < CommandTestCase
|
||||
def test_irb_load
|
||||
File.write("#{@tmpdir}/a.rb", "a = 'hi'\n")
|
||||
out, err = execute_lines(
|
||||
@ -402,7 +423,92 @@ module TestIRB
|
||||
assert_empty err
|
||||
assert_match(/Please specify the file name./, out)
|
||||
end
|
||||
end
|
||||
|
||||
class ShowSourceTest < CommandTestCase
|
||||
def test_show_source
|
||||
out, err = execute_lines(
|
||||
"show_source IRB.conf\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(%r[/irb\.rb], out)
|
||||
end
|
||||
|
||||
def test_show_source_method
|
||||
out, err = execute_lines(
|
||||
"p show_source('IRB.conf')\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(%r[/irb\.rb], out)
|
||||
end
|
||||
|
||||
def test_show_source_string
|
||||
out, err = execute_lines(
|
||||
"show_source 'IRB.conf'\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(%r[/irb\.rb], out)
|
||||
end
|
||||
|
||||
def test_show_source_alias
|
||||
out, err = execute_lines(
|
||||
"$ 'IRB.conf'\n",
|
||||
conf: { COMMAND_ALIASES: { :'$' => :show_source } }
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(%r[/irb\.rb], out)
|
||||
end
|
||||
|
||||
def test_show_source_end_finder
|
||||
pend if RUBY_ENGINE == 'truffleruby'
|
||||
eval(code = <<-EOS, binding, __FILE__, __LINE__ + 1)
|
||||
def show_source_test_method
|
||||
unless true
|
||||
end
|
||||
end unless defined?(show_source_test_method)
|
||||
EOS
|
||||
|
||||
out, err = execute_lines(
|
||||
"show_source '#{self.class.name}#show_source_test_method'\n",
|
||||
)
|
||||
|
||||
assert_empty err
|
||||
assert_include(out, code)
|
||||
end
|
||||
end
|
||||
|
||||
class WhereamiTest < CommandTestCase
|
||||
def test_whereami
|
||||
out, err = execute_lines(
|
||||
"whereami\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(/^From: .+ @ line \d+ :\n/, out)
|
||||
end
|
||||
|
||||
def test_whereami_alias
|
||||
out, err = execute_lines(
|
||||
"@\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(/^From: .+ @ line \d+ :\n/, out)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
class ShowCmdsTest < CommandTestCase
|
||||
def test_show_cmds
|
||||
out, err = execute_lines(
|
||||
"show_cmds\n"
|
||||
)
|
||||
|
||||
assert_empty err
|
||||
assert_match(/List all available commands and their description/, out)
|
||||
assert_match(/Start the debugger of debug\.gem/, out)
|
||||
end
|
||||
end
|
||||
|
||||
class LsTest < CommandTestCase
|
||||
def test_ls
|
||||
out, err = execute_lines(
|
||||
"class P\n",
|
||||
@ -488,96 +594,6 @@ module TestIRB
|
||||
assert_match(/Numeric#methods:\s+/, out)
|
||||
assert_match(/Integer#methods:\s+/, out)
|
||||
end
|
||||
|
||||
def test_show_source
|
||||
out, err = execute_lines(
|
||||
"show_source IRB.conf\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(%r[/irb\.rb], out)
|
||||
end
|
||||
|
||||
def test_show_source_method
|
||||
out, err = execute_lines(
|
||||
"p show_source('IRB.conf')\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(%r[/irb\.rb], out)
|
||||
end
|
||||
|
||||
def test_show_source_string
|
||||
out, err = execute_lines(
|
||||
"show_source 'IRB.conf'\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(%r[/irb\.rb], out)
|
||||
end
|
||||
|
||||
def test_show_source_alias
|
||||
out, err = execute_lines(
|
||||
"$ 'IRB.conf'\n",
|
||||
conf: { COMMAND_ALIASES: { :'$' => :show_source } }
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(%r[/irb\.rb], out)
|
||||
end
|
||||
|
||||
def test_show_source_end_finder
|
||||
pend if RUBY_ENGINE == 'truffleruby'
|
||||
eval(code = <<-EOS, binding, __FILE__, __LINE__ + 1)
|
||||
def show_source_test_method
|
||||
unless true
|
||||
end
|
||||
end unless defined?(show_source_test_method)
|
||||
EOS
|
||||
|
||||
out, err = execute_lines(
|
||||
"show_source 'TestIRB::ExtendCommandTest#show_source_test_method'\n",
|
||||
)
|
||||
|
||||
assert_empty err
|
||||
assert_include(out, code)
|
||||
end
|
||||
|
||||
def test_whereami
|
||||
out, err = execute_lines(
|
||||
"whereami\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(/^From: .+ @ line \d+ :\n/, out)
|
||||
end
|
||||
|
||||
def test_whereami_alias
|
||||
out, err = execute_lines(
|
||||
"@\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(/^From: .+ @ line \d+ :\n/, out)
|
||||
end
|
||||
|
||||
def test_vars_with_aliases
|
||||
@foo = "foo"
|
||||
$bar = "bar"
|
||||
out, err = execute_lines(
|
||||
"@foo\n",
|
||||
"$bar\n",
|
||||
)
|
||||
assert_empty err
|
||||
assert_match(/"foo"/, out)
|
||||
assert_match(/"bar"/, out)
|
||||
ensure
|
||||
remove_instance_variable(:@foo)
|
||||
$bar = nil
|
||||
end
|
||||
|
||||
def test_show_cmds
|
||||
out, err = execute_lines(
|
||||
"show_cmds\n"
|
||||
)
|
||||
|
||||
assert_empty err
|
||||
assert_match(/List all available commands and their description/, out)
|
||||
assert_match(/Start the debugger of debug\.gem/, out)
|
||||
end
|
||||
|
||||
class ShowDocTest < CommandTestCase
|
||||
@ -689,4 +705,3 @@ module TestIRB
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user