зеркало из https://github.com/github/ruby.git
[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:
Родитель
d3311e5cc3
Коммит
43721b1d4a
|
@ -570,7 +570,8 @@ module IRB
|
|||
is_assignment = assignment_expression?(line)
|
||||
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 @context.echo_on_assignment?
|
||||
output_value(@context.echo_on_assignment? == :truncate)
|
||||
|
|
|
@ -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):017:0>
|
||||
irb(main):018:0> class A def b; self; end; def c; true; end; end;
|
||||
=> :c
|
||||
irb(main):019:0> a = A.new
|
||||
=> #<A>
|
||||
irb(main):020:0> a
|
||||
|
|
Загрузка…
Ссылка в новой задаче