1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[ruby/irb] Added assert_equal_with_term

b690da96d8
This commit is contained in:
Nobuyoshi Nakada 2021-04-08 00:09:30 +09:00 committed by git
parent fc24b0736e
commit 6ddaad606e

View file

@ -105,14 +105,10 @@ module TestIRB
tests.each do |code, result| tests.each do |code, result|
if colorize_code_supported? if colorize_code_supported?
actual = with_term { IRB::Color.colorize_code(code, complete: true) } assert_equal_with_term(result, code, complete: true)
assert_equal(result, actual, "Case: IRB::Color.colorize_code(#{code.dump}, complete: true)\nResult: #{humanized_literal(actual)}") assert_equal_with_term(result, code, complete: false)
actual = with_term { IRB::Color.colorize_code(code, complete: false) }
assert_equal(result, actual, "Case: IRB::Color.colorize_code(#{code.dump}, complete: false)\nResult: #{humanized_literal(actual)}")
else else
actual = with_term { IRB::Color.colorize_code(code) } assert_equal_with_term(code, code)
assert_equal(code, actual)
end end
end end
end end
@ -127,8 +123,7 @@ module TestIRB
"'foo' + 'bar" => "#{RED}#{BOLD}'#{CLEAR}#{RED}foo#{CLEAR}#{RED}#{BOLD}'#{CLEAR} + #{RED}#{BOLD}'#{CLEAR}#{RED}#{REVERSE}bar#{CLEAR}", "'foo' + 'bar" => "#{RED}#{BOLD}'#{CLEAR}#{RED}foo#{CLEAR}#{RED}#{BOLD}'#{CLEAR} + #{RED}#{BOLD}'#{CLEAR}#{RED}#{REVERSE}bar#{CLEAR}",
"('foo" => "(#{RED}#{BOLD}'#{CLEAR}#{RED}#{REVERSE}foo#{CLEAR}", "('foo" => "(#{RED}#{BOLD}'#{CLEAR}#{RED}#{REVERSE}foo#{CLEAR}",
}.each do |code, result| }.each do |code, result|
actual = with_term { IRB::Color.colorize_code(code, complete: true) } assert_equal_with_term(result, code, complete: true)
assert_equal(result, actual, "Case: colorize_code(#{code.dump}, complete: true)\nResult: #{humanized_literal(actual)}")
end end
end end
@ -139,16 +134,13 @@ module TestIRB
"('foo" => "(#{RED}#{BOLD}'#{CLEAR}#{RED}foo#{CLEAR}", "('foo" => "(#{RED}#{BOLD}'#{CLEAR}#{RED}foo#{CLEAR}",
}.each do |code, result| }.each do |code, result|
if colorize_code_supported? if colorize_code_supported?
actual = with_term { IRB::Color.colorize_code(code, complete: false) } assert_equal_with_term(result, code, complete: false)
assert_equal(result, actual, "Case: colorize_code(#{code.dump}, complete: false)\nResult: #{humanized_literal(actual)}")
unless complete_option_supported? unless complete_option_supported?
actual = with_term { IRB::Color.colorize_code(code, complete: true) } assert_equal_with_term(result, code, complete: true)
assert_equal(result, actual, "Case: colorize_code(#{code.dump}, complete: false)\nResult: #{humanized_literal(actual)}")
end end
else else
actual = with_term { IRB::Color.colorize_code(code) } assert_equal_with_term(code, code)
assert_equal(code, actual)
end end
end end
end end
@ -200,6 +192,16 @@ module TestIRB
ENV.replace(env) if env ENV.replace(env) if env
end end
def assert_equal_with_term(result, code, **opts)
actual = with_term { IRB::Color.colorize_code(code, **opts) }
message = -> {
args = [code.dump]
opts.each {|kwd, val| args << "#{kwd}: #{val}"}
"Case: colorize_code(#{args.join(', ')})\nResult: #{humanized_literal(actual)}"
}
assert_equal(result, actual, message)
end
def humanized_literal(str) def humanized_literal(str)
str str
.gsub(CLEAR, '@@@{CLEAR}') .gsub(CLEAR, '@@@{CLEAR}')