diff options
| author | Stan Lo <stan001212@gmail.com> | 2023-07-26 09:31:58 +0100 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2023-07-26 08:32:02 +0000 |
| commit | 283b2fdab4be77d8721d7cf298168eb6e3798490 (patch) | |
| tree | a660b377328de9a6aee25c859cf212a9e56a1865 /test | |
| parent | 26aef1c73639718bc00c271ce7176bf3ee565c12 (diff) | |
[ruby/irb] Page `ls`'s output (https://github.com/ruby/irb/pull/657)
* Page ls command's output
* Use Pager.page_content in show_cmds too
https://github.com/ruby/irb/commit/82d1687302
Diffstat (limited to 'test')
| -rw-r--r-- | test/irb/test_cmd.rb | 10 | ||||
| -rw-r--r-- | test/irb/yamatanooroti/test_rendering.rb | 48 |
2 files changed, 58 insertions, 0 deletions
diff --git a/test/irb/test_cmd.rb b/test/irb/test_cmd.rb index 71d64a0ec2..dcea020b1e 100644 --- a/test/irb/test_cmd.rb +++ b/test/irb/test_cmd.rb @@ -710,6 +710,16 @@ module TestIRB end class LsTest < CommandTestCase + def setup + STDIN.singleton_class.define_method :tty? do + false + end + end + + def teardown + STDIN.singleton_class.remove_method :tty? + end + def test_ls out, err = execute_lines( "class P\n", diff --git a/test/irb/yamatanooroti/test_rendering.rb b/test/irb/yamatanooroti/test_rendering.rb index 12467b0913..420339c452 100644 --- a/test/irb/yamatanooroti/test_rendering.rb +++ b/test/irb/yamatanooroti/test_rendering.rb @@ -270,6 +270,54 @@ class IRB::RenderingTest < Yamatanooroti::TestCase assert_match(/foobar/, screen) end + def test_pager_page_content_pages_output_when_it_does_not_fit_in_the_screen_because_of_total_length + write_irbrc <<~'LINES' + puts 'start IRB' + require "irb/pager" + LINES + start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB') + write("IRB::Pager.page_content('a' * (80 * 8))\n") + write("'foo' + 'bar'\n") # eval something to make sure IRB resumes + close + + screen = result.join("\n").sub(/\n*\z/, "\n") + assert_match(/a{80}/, screen) + # because pager is invoked, foobar will not be evaluated + assert_not_match(/foobar/, screen) + end + + def test_pager_page_content_pages_output_when_it_does_not_fit_in_the_screen_because_of_screen_height + write_irbrc <<~'LINES' + puts 'start IRB' + require "irb/pager" + LINES + start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB') + write("IRB::Pager.page_content('a\n' * 8)\n") + write("'foo' + 'bar'\n") # eval something to make sure IRB resumes + close + + screen = result.join("\n").sub(/\n*\z/, "\n") + assert_match(/(a\n){8}/, screen) + # because pager is invoked, foobar will not be evaluated + assert_not_match(/foobar/, screen) + end + + def test_pager_page_content_doesnt_page_output_when_it_fits_in_the_screen + write_irbrc <<~'LINES' + puts 'start IRB' + require "irb/pager" + LINES + start_terminal(10, 80, %W{ruby -I#{@pwd}/lib #{@pwd}/exe/irb}, startup_message: 'start IRB') + write("IRB::Pager.page_content('a' * (80 * 7))\n") + write("'foo' + 'bar'\n") # eval something to make sure IRB resumes + close + + screen = result.join("\n").sub(/\n*\z/, "\n") + assert_match(/a{80}/, screen) + # because pager is not invoked, foobar will be evaluated + assert_match(/foobar/, screen) + end + private def write_irbrc(content) |
