diff options
author | aycabta <aycabta@gmail.com> | 2020-09-03 22:51:15 +0900 |
---|---|---|
committer | aycabta <aycabta@gmail.com> | 2020-09-14 02:13:18 +0900 |
commit | 8f9b1902f48b413bd161666630c878ad58418c04 (patch) | |
tree | 5a27c1126d53504a84a72fce349a25b4f47d7264 /test/irb | |
parent | e468d9f49ca34f713c030c623f655a40370e186d (diff) |
[ruby/irb] Omit output if first line of multiline is too long
https://github.com/ruby/irb/commit/0feeae38c5
Diffstat (limited to 'test/irb')
-rw-r--r-- | test/irb/test_context.rb | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/test/irb/test_context.rb b/test/irb/test_context.rb index 3a4c98729e..fa628bba46 100644 --- a/test/irb/test_context.rb +++ b/test/irb/test_context.rb @@ -286,6 +286,82 @@ module TestIRB assert_equal("", out) end + def test_omit_multiline_on_assignment + input = TestInputMethod.new([ + "class A; def inspect; ([?* * 1000] * 3).join(%{\\n}); end; end; a = A.new\n", + "a\n" + ]) + value = ([?* * 1000] * 3).join(%{\n}) + value_first_line = (?* * 1000).to_s + irb = IRB::Irb.new(IRB::WorkSpace.new(Object.new), input) + irb.context.return_format = "=> %s\n" + + irb.context.echo = true + irb.context.echo_on_assignment = false + irb.context.omit_on_assignment = true + out, err = capture_io do + irb.eval_input + end + assert_empty err + assert_equal("=> \n#{value}\n", out) + irb.context.evaluate('A.remove_method(:inspect)', 0) + + input.reset + irb.context.echo = true + irb.context.echo_on_assignment = true + irb.context.omit_on_assignment = true + out, err = capture_io do + irb.eval_input + end + assert_empty err + assert_equal("=> #{value_first_line[0..(input.winsize.last - 9)]}...\e[0m\n=> \n#{value}\n", out) + irb.context.evaluate('A.remove_method(:inspect)', 0) + + input.reset + irb.context.echo = true + irb.context.echo_on_assignment = true + irb.context.omit_on_assignment = false + out, err = capture_io do + irb.eval_input + end + assert_empty err + assert_equal("=> \n#{value}\n=> \n#{value}\n", out) + irb.context.evaluate('A.remove_method(:inspect)', 0) + + input.reset + irb.context.echo = false + irb.context.echo_on_assignment = false + irb.context.omit_on_assignment = true + out, err = capture_io do + irb.eval_input + end + assert_empty err + assert_equal("", out) + irb.context.evaluate('A.remove_method(:inspect)', 0) + + input.reset + irb.context.echo = false + irb.context.echo_on_assignment = true + irb.context.omit_on_assignment = true + out, err = capture_io do + irb.eval_input + end + assert_empty err + assert_equal("", out) + irb.context.evaluate('A.remove_method(:inspect)', 0) + + input.reset + irb.context.echo = false + irb.context.echo_on_assignment = true + irb.context.omit_on_assignment = false + out, err = capture_io do + irb.eval_input + end + assert_empty err + assert_equal("", out) + irb.context.evaluate('A.remove_method(:inspect)', 0) + end + def test_echo_on_assignment_conf # Default IRB.conf[:ECHO] = nil |