Sync IRB master: tool/sync_default_gems.rb irb
It looks like tool/sync_default_gems.rb is not capable of cherry-picking commits from ruby/irb. I just executed `tool/sync_default_gems.rb irb` to fix the sync status. I'm not sure if what's the cause. It could be related to some diff that doesn't exist in ruby/ruby, or it might be related to non-linear history due to merge commits. For next time, I'd like to at least exclude the second possibility, so I disabled merge commits in ruby/irb.
This commit is contained in:
parent
d01bcf378b
commit
d5985049c7
@ -376,50 +376,6 @@ module TestIRB
|
|||||||
assert_match(/Please specify the file name./, out)
|
assert_match(/Please specify the file name./, out)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_help
|
|
||||||
IRB.init_config(nil)
|
|
||||||
input = TestInputMethod.new([
|
|
||||||
"help 'String#gsub'\n",
|
|
||||||
"\n",
|
|
||||||
])
|
|
||||||
IRB.conf[:PROMPT_MODE] = :SIMPLE
|
|
||||||
IRB.conf[:VERBOSE] = false
|
|
||||||
irb = IRB::Irb.new(IRB::WorkSpace.new(self), input)
|
|
||||||
out, err = capture_output do
|
|
||||||
irb.eval_input
|
|
||||||
end
|
|
||||||
|
|
||||||
# the former is what we'd get without document content installed, like on CI
|
|
||||||
# the latter is what we may get locally
|
|
||||||
possible_rdoc_output = [/Nothing known about String#gsub/, /Returns a copy of self with all occurrences of the given pattern/]
|
|
||||||
assert(possible_rdoc_output.any? { |output| output.match?(out) }, "Expect the help command to match one of the possible outputs")
|
|
||||||
ensure
|
|
||||||
# this is the only way to reset the redefined method without coupling the test with its implementation
|
|
||||||
load "irb/cmd/help.rb"
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_help_without_rdoc
|
|
||||||
IRB.init_config(nil)
|
|
||||||
input = TestInputMethod.new([
|
|
||||||
"help 'String#gsub'\n",
|
|
||||||
"\n",
|
|
||||||
])
|
|
||||||
IRB.conf[:PROMPT_MODE] = :SIMPLE
|
|
||||||
IRB.conf[:VERBOSE] = false
|
|
||||||
irb = IRB::Irb.new(IRB::WorkSpace.new(self), input)
|
|
||||||
out, err = capture_output do
|
|
||||||
without_rdoc do
|
|
||||||
irb.eval_input
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# if it fails to require rdoc, it only returns the command object
|
|
||||||
assert_match(/=> IRB::ExtendCommand::Help\n/, out)
|
|
||||||
ensure
|
|
||||||
# this is the only way to reset the redefined method without coupling the test with its implementation
|
|
||||||
load "irb/cmd/help.rb"
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_irb_load
|
def test_irb_load
|
||||||
File.write("#{@tmpdir}/a.rb", "a = 'hi'\n")
|
File.write("#{@tmpdir}/a.rb", "a = 'hi'\n")
|
||||||
out, err = execute_lines(
|
out, err = execute_lines(
|
||||||
|
@ -706,6 +706,69 @@ module TestIRB
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_corresponding_token_depth_with_heredoc_and_embdoc
|
||||||
|
reference_code = <<~EOC.chomp
|
||||||
|
if true
|
||||||
|
hello
|
||||||
|
p(
|
||||||
|
)
|
||||||
|
EOC
|
||||||
|
code_with_heredoc = <<~EOC.chomp
|
||||||
|
if true
|
||||||
|
<<~A
|
||||||
|
A
|
||||||
|
p(
|
||||||
|
)
|
||||||
|
EOC
|
||||||
|
code_with_embdoc = <<~EOC.chomp
|
||||||
|
if true
|
||||||
|
=begin
|
||||||
|
=end
|
||||||
|
p(
|
||||||
|
)
|
||||||
|
EOC
|
||||||
|
[reference_code, code_with_heredoc, code_with_embdoc].each do |code|
|
||||||
|
lex = RubyLex.new
|
||||||
|
lines = code.lines
|
||||||
|
lex.instance_variable_set('@tokens', RubyLex.ripper_lex_without_warning(code))
|
||||||
|
assert_equal 2, lex.check_corresponding_token_depth(lines, lines.size)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_find_prev_spaces_with_multiline_literal
|
||||||
|
lex = RubyLex.new
|
||||||
|
reference_code = <<~EOC.chomp
|
||||||
|
if true
|
||||||
|
1
|
||||||
|
hello
|
||||||
|
1
|
||||||
|
world
|
||||||
|
end
|
||||||
|
EOC
|
||||||
|
code_with_percent_string = <<~EOC.chomp
|
||||||
|
if true
|
||||||
|
%w[
|
||||||
|
hello
|
||||||
|
]
|
||||||
|
world
|
||||||
|
end
|
||||||
|
EOC
|
||||||
|
code_with_quoted_string = <<~EOC.chomp
|
||||||
|
if true
|
||||||
|
'
|
||||||
|
hello
|
||||||
|
'
|
||||||
|
world
|
||||||
|
end
|
||||||
|
EOC
|
||||||
|
[reference_code, code_with_percent_string, code_with_quoted_string].each do |code|
|
||||||
|
lex = RubyLex.new
|
||||||
|
lex.instance_variable_set('@tokens', RubyLex.ripper_lex_without_warning(code))
|
||||||
|
prev_spaces = (1..code.lines.size).map { |index| lex.find_prev_spaces index }
|
||||||
|
assert_equal [0, 2, 2, 2, 2, 0], prev_spaces
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def build_context(local_variables = nil)
|
def build_context(local_variables = nil)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user