[ruby/irb] Make rendering test faster using updated yamatanooroti
(https://github.com/ruby/irb/pull/1001) https://github.com/ruby/irb/commit/2c2956bc1f
This commit is contained in:
parent
ad5641fd34
commit
199b298049
@ -39,49 +39,44 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_launch
|
def test_launch
|
||||||
write_irbrc <<~'LINES'
|
start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
|
||||||
start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
|
||||||
write(<<~EOC)
|
write(<<~EOC)
|
||||||
'Hello, World!'
|
'Hello, World!'
|
||||||
EOC
|
EOC
|
||||||
close
|
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
start IRB
|
|
||||||
irb(main):001> 'Hello, World!'
|
irb(main):001> 'Hello, World!'
|
||||||
=> "Hello, World!"
|
=> "Hello, World!"
|
||||||
irb(main):002>
|
irb(main):002>
|
||||||
EOC
|
EOC
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_configuration_file_is_skipped_with_dash_f
|
def test_configuration_file_is_skipped_with_dash_f
|
||||||
write_irbrc <<~'LINES'
|
write_irbrc <<~'LINES'
|
||||||
puts '.irbrc file should be ignored when -f is used'
|
puts '.irbrc file should be ignored when -f is used'
|
||||||
LINES
|
LINES
|
||||||
start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb -f}, startup_message: '')
|
start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb -f}, startup_message: /irb\(main\)/)
|
||||||
write(<<~EOC)
|
write(<<~EOC)
|
||||||
'Hello, World!'
|
'Hello, World!'
|
||||||
EOC
|
EOC
|
||||||
close
|
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
irb(main):001> 'Hello, World!'
|
irb(main):001> 'Hello, World!'
|
||||||
=> "Hello, World!"
|
=> "Hello, World!"
|
||||||
irb(main):002>
|
irb(main):002>
|
||||||
EOC
|
EOC
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_configuration_file_is_skipped_with_dash_f_for_nested_sessions
|
def test_configuration_file_is_skipped_with_dash_f_for_nested_sessions
|
||||||
write_irbrc <<~'LINES'
|
write_irbrc <<~'LINES'
|
||||||
puts '.irbrc file should be ignored when -f is used'
|
puts '.irbrc file should be ignored when -f is used'
|
||||||
LINES
|
LINES
|
||||||
start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb -f}, startup_message: '')
|
start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb -f}, startup_message: /irb\(main\)/)
|
||||||
write(<<~EOC)
|
write(<<~EOC)
|
||||||
'Hello, World!'
|
'Hello, World!'
|
||||||
binding.irb
|
binding.irb
|
||||||
exit!
|
exit!
|
||||||
EOC
|
EOC
|
||||||
close
|
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
irb(main):001> 'Hello, World!'
|
irb(main):001> 'Hello, World!'
|
||||||
=> "Hello, World!"
|
=> "Hello, World!"
|
||||||
@ -89,13 +84,11 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
irb(main):003> exit!
|
irb(main):003> exit!
|
||||||
irb(main):001>
|
irb(main):001>
|
||||||
EOC
|
EOC
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_nomultiline
|
def test_nomultiline
|
||||||
write_irbrc <<~'LINES'
|
start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb --nomultiline}, startup_message: /irb\(main\)/)
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
|
||||||
start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb --nomultiline}, startup_message: 'start IRB')
|
|
||||||
write(<<~EOC)
|
write(<<~EOC)
|
||||||
if true
|
if true
|
||||||
if false
|
if false
|
||||||
@ -105,9 +98,7 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
EOC
|
EOC
|
||||||
close
|
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
start IRB
|
|
||||||
irb(main):001> if true
|
irb(main):001> if true
|
||||||
irb(main):002* if false
|
irb(main):002* if false
|
||||||
irb(main):003* a = "hello
|
irb(main):003* a = "hello
|
||||||
@ -118,13 +109,11 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
=> nil
|
=> nil
|
||||||
irb(main):008>
|
irb(main):008>
|
||||||
EOC
|
EOC
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_multiline_paste
|
def test_multiline_paste
|
||||||
write_irbrc <<~'LINES'
|
start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
|
||||||
start_terminal(25, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
|
||||||
write(<<~EOC)
|
write(<<~EOC)
|
||||||
class A
|
class A
|
||||||
def inspect; '#<A>'; end
|
def inspect; '#<A>'; end
|
||||||
@ -139,9 +128,7 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
.b
|
.b
|
||||||
.itself
|
.itself
|
||||||
EOC
|
EOC
|
||||||
close
|
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
start IRB
|
|
||||||
irb(main):001* class A
|
irb(main):001* class A
|
||||||
irb(main):002* def inspect; '#<A>'; end
|
irb(main):002* def inspect; '#<A>'; end
|
||||||
irb(main):003* def a; self; end
|
irb(main):003* def a; self; end
|
||||||
@ -159,13 +146,11 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
=> true
|
=> true
|
||||||
irb(main):013>
|
irb(main):013>
|
||||||
EOC
|
EOC
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_evaluate_each_toplevel_statement_by_multiline_paste
|
def test_evaluate_each_toplevel_statement_by_multiline_paste
|
||||||
write_irbrc <<~'LINES'
|
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
|
||||||
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
|
||||||
write(<<~EOC)
|
write(<<~EOC)
|
||||||
class A
|
class A
|
||||||
def inspect; '#<A>'; end
|
def inspect; '#<A>'; end
|
||||||
@ -193,9 +178,7 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
&.b()
|
&.b()
|
||||||
.itself
|
.itself
|
||||||
EOC
|
EOC
|
||||||
close
|
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
start IRB
|
|
||||||
irb(main):001* class A
|
irb(main):001* class A
|
||||||
irb(main):002* def inspect; '#<A>'; end
|
irb(main):002* def inspect; '#<A>'; end
|
||||||
irb(main):003* def b; self; end
|
irb(main):003* def b; self; end
|
||||||
@ -230,36 +213,28 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
=> #<A>
|
=> #<A>
|
||||||
irb(main):026>
|
irb(main):026>
|
||||||
EOC
|
EOC
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_symbol_with_backtick
|
def test_symbol_with_backtick
|
||||||
write_irbrc <<~'LINES'
|
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
|
||||||
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
|
||||||
write(<<~EOC)
|
write(<<~EOC)
|
||||||
:`
|
:`
|
||||||
EOC
|
EOC
|
||||||
close
|
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
start IRB
|
|
||||||
irb(main):001> :`
|
irb(main):001> :`
|
||||||
=> :`
|
=> :`
|
||||||
irb(main):002>
|
irb(main):002>
|
||||||
EOC
|
EOC
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_autocomplete_with_multiple_doc_namespaces
|
def test_autocomplete_with_multiple_doc_namespaces
|
||||||
write_irbrc <<~'LINES'
|
start_terminal(3, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
|
||||||
start_terminal(3, 50, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
|
||||||
write("{}.__id_")
|
write("{}.__id_")
|
||||||
write("\C-i")
|
write("\C-i")
|
||||||
sleep 0.2
|
assert_screen(/irb\(main\):001> {}\.__id__\n }\.__id__(?:Press )?/)
|
||||||
close
|
close
|
||||||
screen = result.join("\n").sub(/\n*\z/, "\n")
|
|
||||||
assert_match(/start\ IRB\nirb\(main\):001> {}\.__id__\n }\.__id__(?:Press )?/, screen)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_autocomplete_with_showdoc_in_gaps_on_narrow_screen_right
|
def test_autocomplete_with_showdoc_in_gaps_on_narrow_screen_right
|
||||||
@ -273,31 +248,27 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
:PROMPT_C => "%03n> "
|
:PROMPT_C => "%03n> "
|
||||||
}
|
}
|
||||||
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
LINES
|
||||||
start_terminal(4, 19, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
start_terminal(4, 19, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /001>/)
|
||||||
write("IR")
|
write("IR")
|
||||||
write("\C-i")
|
write("\C-i")
|
||||||
sleep 0.2
|
|
||||||
close
|
|
||||||
|
|
||||||
# This is because on macOS we display different shortcut for displaying the full doc
|
# This is because on macOS we display different shortcut for displaying the full doc
|
||||||
# 'O' is for 'Option' and 'A' is for 'Alt'
|
# 'O' is for 'Option' and 'A' is for 'Alt'
|
||||||
if RUBY_PLATFORM =~ /darwin/
|
if RUBY_PLATFORM =~ /darwin/
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
start IRB
|
|
||||||
001> IRB
|
001> IRB
|
||||||
IRBPress Opti
|
IRBPress Opti
|
||||||
IRB
|
IRB
|
||||||
EOC
|
EOC
|
||||||
else
|
else
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
start IRB
|
|
||||||
001> IRB
|
001> IRB
|
||||||
IRBPress Alt+
|
IRBPress Alt+
|
||||||
IRB
|
IRB
|
||||||
EOC
|
EOC
|
||||||
end
|
end
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_autocomplete_with_showdoc_in_gaps_on_narrow_screen_left
|
def test_autocomplete_with_showdoc_in_gaps_on_narrow_screen_left
|
||||||
@ -311,154 +282,129 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
:PROMPT_C => "%03n> "
|
:PROMPT_C => "%03n> "
|
||||||
}
|
}
|
||||||
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
LINES
|
||||||
start_terminal(4, 12, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
start_terminal(4, 12, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /001>/)
|
||||||
write("IR")
|
write("IR")
|
||||||
write("\C-i")
|
write("\C-i")
|
||||||
sleep 0.2
|
|
||||||
close
|
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
start IRB
|
|
||||||
001> IRB
|
001> IRB
|
||||||
PressIRB
|
PressIRB
|
||||||
IRB
|
IRB
|
||||||
EOC
|
EOC
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_assignment_expression_truncate
|
def test_assignment_expression_truncate
|
||||||
write_irbrc <<~'LINES'
|
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
|
||||||
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
|
||||||
# Assignment expression code that turns into non-assignment expression after evaluation
|
# Assignment expression code that turns into non-assignment expression after evaluation
|
||||||
code = "a /'/i if false; a=1; x=1000.times.to_a#'.size"
|
code = "a /'/i if false; a=1; x=1000.times.to_a#'.size"
|
||||||
write(code + "\n")
|
write(code + "\n")
|
||||||
close
|
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
start IRB
|
|
||||||
irb(main):001> #{code}
|
irb(main):001> #{code}
|
||||||
=>
|
=>
|
||||||
[0,
|
[0,
|
||||||
...
|
...
|
||||||
irb(main):002>
|
irb(main):002>
|
||||||
EOC
|
EOC
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_ctrl_c_is_handled
|
def test_ctrl_c_is_handled
|
||||||
write_irbrc <<~'LINES'
|
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
|
||||||
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
|
||||||
# Assignment expression code that turns into non-assignment expression after evaluation
|
# Assignment expression code that turns into non-assignment expression after evaluation
|
||||||
write("\C-c")
|
write("\C-c")
|
||||||
close
|
|
||||||
assert_screen(<<~EOC)
|
assert_screen(<<~EOC)
|
||||||
start IRB
|
|
||||||
irb(main):001>
|
irb(main):001>
|
||||||
^C
|
^C
|
||||||
irb(main):001>
|
irb(main):001>
|
||||||
EOC
|
EOC
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_show_cmds_with_pager_can_quit_with_ctrl_c
|
def test_show_cmds_with_pager_can_quit_with_ctrl_c
|
||||||
write_irbrc <<~'LINES'
|
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
puts 'start IRB'
|
|
||||||
LINES
|
|
||||||
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
|
||||||
write("help\n")
|
write("help\n")
|
||||||
write("G") # move to the end of the screen
|
write("G") # move to the end of the screen
|
||||||
write("\C-c") # quit pager
|
write("\C-c") # quit pager
|
||||||
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
||||||
close
|
|
||||||
|
|
||||||
screen = result.join("\n").sub(/\n*\z/, "\n")
|
|
||||||
# IRB::Abort should be rescued
|
|
||||||
assert_not_match(/IRB::Abort/, screen)
|
|
||||||
# IRB should resume
|
# IRB should resume
|
||||||
assert_match(/foobar/, screen)
|
assert_screen(/foobar/)
|
||||||
|
# IRB::Abort should be rescued
|
||||||
|
assert_screen(/\A(?!IRB::Abort)/)
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_pager_page_content_pages_output_when_it_does_not_fit_in_the_screen_because_of_total_length
|
def test_pager_page_content_pages_output_when_it_does_not_fit_in_the_screen_because_of_total_length
|
||||||
write_irbrc <<~'LINES'
|
write_irbrc <<~'LINES'
|
||||||
puts 'start IRB'
|
|
||||||
require "irb/pager"
|
require "irb/pager"
|
||||||
LINES
|
LINES
|
||||||
start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
write("IRB::Pager.page_content('a' * (80 * 8))\n")
|
write("IRB::Pager.page_content('a' * (80 * 8))\n")
|
||||||
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
||||||
close
|
|
||||||
|
|
||||||
screen = result.join("\n").sub(/\n*\z/, "\n")
|
assert_screen(/a{80}/)
|
||||||
assert_match(/a{80}/, screen)
|
|
||||||
# because pager is invoked, foobar will not be evaluated
|
# because pager is invoked, foobar will not be evaluated
|
||||||
assert_not_match(/foobar/, screen)
|
assert_screen(/\A(?!foobar)/)
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_pager_page_content_pages_output_when_it_does_not_fit_in_the_screen_because_of_screen_height
|
def test_pager_page_content_pages_output_when_it_does_not_fit_in_the_screen_because_of_screen_height
|
||||||
write_irbrc <<~'LINES'
|
write_irbrc <<~'LINES'
|
||||||
puts 'start IRB'
|
|
||||||
require "irb/pager"
|
require "irb/pager"
|
||||||
LINES
|
LINES
|
||||||
start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
write("IRB::Pager.page_content('a\n' * 8)\n")
|
write("IRB::Pager.page_content('a\n' * 8)\n")
|
||||||
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
||||||
close
|
|
||||||
|
|
||||||
screen = result.join("\n").sub(/\n*\z/, "\n")
|
assert_screen(/(a\n){8}/)
|
||||||
assert_match(/(a\n){8}/, screen)
|
|
||||||
# because pager is invoked, foobar will not be evaluated
|
# because pager is invoked, foobar will not be evaluated
|
||||||
assert_not_match(/foobar/, screen)
|
assert_screen(/\A(?!foobar)/)
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_pager_page_content_doesnt_page_output_when_it_fits_in_the_screen
|
def test_pager_page_content_doesnt_page_output_when_it_fits_in_the_screen
|
||||||
write_irbrc <<~'LINES'
|
write_irbrc <<~'LINES'
|
||||||
puts 'start IRB'
|
|
||||||
require "irb/pager"
|
require "irb/pager"
|
||||||
LINES
|
LINES
|
||||||
start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
write("IRB::Pager.page_content('a' * (80 * 7))\n")
|
write("IRB::Pager.page_content('a' * (80 * 7))\n")
|
||||||
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
||||||
close
|
|
||||||
|
|
||||||
screen = result.join("\n").sub(/\n*\z/, "\n")
|
assert_screen(/a{80}/)
|
||||||
assert_match(/a{80}/, screen)
|
|
||||||
# because pager is not invoked, foobar will be evaluated
|
# because pager is not invoked, foobar will be evaluated
|
||||||
assert_match(/foobar/, screen)
|
assert_screen(/foobar/)
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_long_evaluation_output_is_paged
|
def test_long_evaluation_output_is_paged
|
||||||
write_irbrc <<~'LINES'
|
write_irbrc <<~'LINES'
|
||||||
puts 'start IRB'
|
|
||||||
require "irb/pager"
|
require "irb/pager"
|
||||||
LINES
|
LINES
|
||||||
start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
write("'a' * 80 * 11\n")
|
write("'a' * 80 * 11\n")
|
||||||
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
||||||
close
|
|
||||||
|
|
||||||
screen = result.join("\n").sub(/\n*\z/, "\n")
|
assert_screen(/(a{80}\n){8}/)
|
||||||
assert_match(/(a{80}\n){8}/, screen)
|
|
||||||
# because pager is invoked, foobar will not be evaluated
|
# because pager is invoked, foobar will not be evaluated
|
||||||
assert_not_match(/foobar/, screen)
|
assert_screen(/\A(?!foobar)/)
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_long_evaluation_output_is_preserved_after_paging
|
def test_long_evaluation_output_is_preserved_after_paging
|
||||||
write_irbrc <<~'LINES'
|
write_irbrc <<~'LINES'
|
||||||
puts 'start IRB'
|
|
||||||
require "irb/pager"
|
require "irb/pager"
|
||||||
LINES
|
LINES
|
||||||
start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB')
|
start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: /irb\(main\)/)
|
||||||
write("'a' * 80 * 11\n")
|
write("'a' * 80 * 11\n")
|
||||||
write("q") # quit pager
|
write("q") # quit pager
|
||||||
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
write("'foo' + 'bar'\n") # eval something to make sure IRB resumes
|
||||||
close
|
|
||||||
|
|
||||||
screen = result.join("\n").sub(/\n*\z/, "\n")
|
|
||||||
# confirm pager has exited
|
# confirm pager has exited
|
||||||
assert_match(/foobar/, screen)
|
assert_screen(/foobar/)
|
||||||
# confirm output is preserved
|
# confirm output is preserved
|
||||||
assert_match(/(a{80}\n){6}/, screen)
|
assert_screen(/(a{80}\n){6}/)
|
||||||
|
close
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_debug_integration_hints_debugger_commands
|
def test_debug_integration_hints_debugger_commands
|
||||||
@ -467,21 +413,19 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
LINES
|
LINES
|
||||||
script = Tempfile.create(["debug", ".rb"])
|
script = Tempfile.create(["debug", ".rb"])
|
||||||
script.write <<~RUBY
|
script.write <<~RUBY
|
||||||
puts 'start IRB'
|
|
||||||
binding.irb
|
binding.irb
|
||||||
RUBY
|
RUBY
|
||||||
script.close
|
script.close
|
||||||
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{script.to_path}}, startup_message: 'start IRB')
|
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{script.to_path}}, startup_message: /irb\(main\)/)
|
||||||
write("debug\n")
|
write("debug\n")
|
||||||
write("pp 1\n")
|
write("pp 1\n")
|
||||||
write("pp 1")
|
write("pp 1")
|
||||||
close
|
|
||||||
|
|
||||||
screen = result.join("\n").sub(/\n*\z/, "\n")
|
|
||||||
# submitted input shouldn't contain hint
|
# submitted input shouldn't contain hint
|
||||||
assert_include(screen, "irb:rdbg(main):002> pp 1\n")
|
assert_screen(/irb:rdbg\(main\):002> pp 1\n/)
|
||||||
# unsubmitted input should contain hint
|
# unsubmitted input should contain hint
|
||||||
assert_include(screen, "irb:rdbg(main):003> pp 1 # debug command\n")
|
assert_screen(/irb:rdbg\(main\):003> pp 1 # debug command\n/)
|
||||||
|
close
|
||||||
ensure
|
ensure
|
||||||
File.unlink(script) if script
|
File.unlink(script) if script
|
||||||
end
|
end
|
||||||
@ -492,17 +436,14 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
LINES
|
LINES
|
||||||
script = Tempfile.create(["debug", ".rb"])
|
script = Tempfile.create(["debug", ".rb"])
|
||||||
script.write <<~RUBY
|
script.write <<~RUBY
|
||||||
puts 'start IRB'
|
|
||||||
binding.irb
|
binding.irb
|
||||||
RUBY
|
RUBY
|
||||||
script.close
|
script.close
|
||||||
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{script.to_path}}, startup_message: 'start IRB')
|
start_terminal(40, 80, %W{ruby -I#{@pwd}/lib #{script.to_path}}, startup_message: /irb\(main\)/)
|
||||||
write("debug\n")
|
write("debug\n")
|
||||||
write("foo")
|
write("foo")
|
||||||
|
assert_screen(/irb:rdbg\(main\):002> foo\n/)
|
||||||
close
|
close
|
||||||
|
|
||||||
screen = result.join("\n").sub(/\n*\z/, "\n")
|
|
||||||
assert_include(screen, "irb:rdbg(main):002> foo\n")
|
|
||||||
ensure
|
ensure
|
||||||
File.unlink(script) if script
|
File.unlink(script) if script
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user