[ruby/irb] Don't echo an expression's result when it ends with a
semicolon (https://github.com/ruby/irb/pull/669) https://github.com/ruby/irb/commit/50185c2833
This commit is contained in:
parent
d3311e5cc3
commit
43721b1d4a
@ -570,7 +570,8 @@ module IRB
|
|||||||
is_assignment = assignment_expression?(line)
|
is_assignment = assignment_expression?(line)
|
||||||
evaluate_line(line, line_no)
|
evaluate_line(line, line_no)
|
||||||
|
|
||||||
if @context.echo?
|
# Don't echo if the line ends with a semicolon
|
||||||
|
if @context.echo? && !line.match?(/;\s*\z/)
|
||||||
if is_assignment
|
if is_assignment
|
||||||
if @context.echo_on_assignment?
|
if @context.echo_on_assignment?
|
||||||
output_value(@context.echo_on_assignment? == :truncate)
|
output_value(@context.echo_on_assignment? == :truncate)
|
||||||
|
44
test/irb/test_evaluation.rb
Normal file
44
test/irb/test_evaluation.rb
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "tempfile"
|
||||||
|
|
||||||
|
require_relative "helper"
|
||||||
|
|
||||||
|
module TestIRB
|
||||||
|
class EchoingTest < IntegrationTestCase
|
||||||
|
def test_irb_echos_by_default
|
||||||
|
write_ruby <<~'RUBY'
|
||||||
|
binding.irb
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
output = run_ruby_file do
|
||||||
|
type "123123"
|
||||||
|
type "exit"
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_include(output, "=> 123123")
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_irb_doesnt_echo_line_with_semicolon
|
||||||
|
write_ruby <<~'RUBY'
|
||||||
|
binding.irb
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
output = run_ruby_file do
|
||||||
|
type "123123;"
|
||||||
|
type "123123 ;"
|
||||||
|
type "123123; "
|
||||||
|
type <<~RUBY
|
||||||
|
if true
|
||||||
|
123123
|
||||||
|
end;
|
||||||
|
RUBY
|
||||||
|
type "'evaluation ends'"
|
||||||
|
type "exit"
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_include(output, "=> \"evaluation ends\"")
|
||||||
|
assert_not_include(output, "=> 123123")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
@ -143,7 +143,6 @@ class IRB::RenderingTest < Yamatanooroti::TestCase
|
|||||||
irb(main):016:0>
|
irb(main):016:0>
|
||||||
irb(main):017:0>
|
irb(main):017:0>
|
||||||
irb(main):018:0> class A def b; self; end; def c; true; end; end;
|
irb(main):018:0> class A def b; self; end; def c; true; end; end;
|
||||||
=> :c
|
|
||||||
irb(main):019:0> a = A.new
|
irb(main):019:0> a = A.new
|
||||||
=> #<A>
|
=> #<A>
|
||||||
irb(main):020:0> a
|
irb(main):020:0> a
|
||||||
|
Loading…
x
Reference in New Issue
Block a user