зеркало из https://github.com/github/ruby.git
[ruby/irb] Split test files for IRB::Color and IRB::ColorPrinter
https://github.com/ruby/irb/commit/d95e8daab3
This commit is contained in:
Родитель
10d12afa41
Коммит
328df00712
|
@ -1,7 +1,6 @@
|
||||||
# frozen_string_literal: false
|
# frozen_string_literal: false
|
||||||
require 'test/unit'
|
require 'test/unit'
|
||||||
require 'irb/color'
|
require 'irb/color'
|
||||||
require 'irb/color_printer'
|
|
||||||
require 'rubygems'
|
require 'rubygems'
|
||||||
require 'stringio'
|
require 'stringio'
|
||||||
|
|
||||||
|
@ -166,23 +165,6 @@ module TestIRB
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
IRBTestColorPrinter = Struct.new(:a)
|
|
||||||
|
|
||||||
def test_color_printer
|
|
||||||
unless ripper_lexer_scan_supported?
|
|
||||||
skip 'Ripper::Lexer#scan is supported in Ruby 2.7+'
|
|
||||||
end
|
|
||||||
{
|
|
||||||
1 => "#{BLUE}#{BOLD}1#{CLEAR}\n",
|
|
||||||
IRBTestColorPrinter.new('test') => "#{GREEN}#<struct TestIRB::TestColor::IRBTestColorPrinter#{CLEAR} a#{GREEN}=#{CLEAR}#{RED}#{BOLD}\"#{CLEAR}#{RED}test#{CLEAR}#{RED}#{BOLD}\"#{CLEAR}#{GREEN}>#{CLEAR}\n",
|
|
||||||
Ripper::Lexer.new('1').scan => "[#{GREEN}#<Ripper::Lexer::Elem:#{CLEAR} on_int@1:0 END token: #{RED}#{BOLD}\"#{CLEAR}#{RED}1#{CLEAR}#{RED}#{BOLD}\"#{CLEAR}#{GREEN}>#{CLEAR}]\n",
|
|
||||||
Class.new{define_method(:pretty_print){|q| q.text("[__FILE__, __LINE__, __ENCODING__]")}}.new => "[#{CYAN}#{BOLD}__FILE__#{CLEAR}, #{CYAN}#{BOLD}__LINE__#{CLEAR}, #{CYAN}#{BOLD}__ENCODING__#{CLEAR}]\n",
|
|
||||||
}.each do |object, result|
|
|
||||||
actual = with_term { IRB::ColorPrinter.pp(object, '') }
|
|
||||||
assert_equal(result, actual, "Case: IRB::ColorPrinter.pp(#{object.inspect}, '')")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_inspect_colorable
|
def test_inspect_colorable
|
||||||
{
|
{
|
||||||
1 => true,
|
1 => true,
|
||||||
|
@ -215,10 +197,6 @@ module TestIRB
|
||||||
Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.0')
|
Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.0')
|
||||||
end
|
end
|
||||||
|
|
||||||
def ripper_lexer_scan_supported?
|
|
||||||
Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.0')
|
|
||||||
end
|
|
||||||
|
|
||||||
def with_term
|
def with_term
|
||||||
stdout = $stdout
|
stdout = $stdout
|
||||||
io = StringIO.new
|
io = StringIO.new
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
# frozen_string_literal: false
|
||||||
|
require 'test/unit'
|
||||||
|
require 'irb/color_printer'
|
||||||
|
require 'rubygems'
|
||||||
|
require 'stringio'
|
||||||
|
|
||||||
|
module TestIRB
|
||||||
|
class TestColorPrinter < Test::Unit::TestCase
|
||||||
|
CLEAR = "\e[0m"
|
||||||
|
BOLD = "\e[1m"
|
||||||
|
UNDERLINE = "\e[4m"
|
||||||
|
REVERSE = "\e[7m"
|
||||||
|
RED = "\e[31m"
|
||||||
|
GREEN = "\e[32m"
|
||||||
|
YELLOW = "\e[33m"
|
||||||
|
BLUE = "\e[34m"
|
||||||
|
MAGENTA = "\e[35m"
|
||||||
|
CYAN = "\e[36m"
|
||||||
|
|
||||||
|
def setup
|
||||||
|
@get_screen_size = Reline.method(:get_screen_size)
|
||||||
|
Reline.instance_eval { undef :get_screen_size }
|
||||||
|
def Reline.get_screen_size
|
||||||
|
[36, 80]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def teardown
|
||||||
|
Reline.instance_eval { undef :get_screen_size }
|
||||||
|
Reline.define_singleton_method(:get_screen_size, @get_screen_size)
|
||||||
|
end
|
||||||
|
|
||||||
|
IRBTestColorPrinter = Struct.new(:a)
|
||||||
|
|
||||||
|
def test_color_printer
|
||||||
|
unless ripper_lexer_scan_supported?
|
||||||
|
skip 'Ripper::Lexer#scan is supported in Ruby 2.7+'
|
||||||
|
end
|
||||||
|
{
|
||||||
|
1 => "#{BLUE}#{BOLD}1#{CLEAR}\n",
|
||||||
|
IRBTestColorPrinter.new('test') => "#{GREEN}#<struct TestIRB::TestColorPrinter::IRBTestColorPrinter#{CLEAR} a#{GREEN}=#{CLEAR}#{RED}#{BOLD}\"#{CLEAR}#{RED}test#{CLEAR}#{RED}#{BOLD}\"#{CLEAR}#{GREEN}>#{CLEAR}\n",
|
||||||
|
Ripper::Lexer.new('1').scan => "[#{GREEN}#<Ripper::Lexer::Elem:#{CLEAR} on_int@1:0 END token: #{RED}#{BOLD}\"#{CLEAR}#{RED}1#{CLEAR}#{RED}#{BOLD}\"#{CLEAR}#{GREEN}>#{CLEAR}]\n",
|
||||||
|
Class.new{define_method(:pretty_print){|q| q.text("[__FILE__, __LINE__, __ENCODING__]")}}.new => "[#{CYAN}#{BOLD}__FILE__#{CLEAR}, #{CYAN}#{BOLD}__LINE__#{CLEAR}, #{CYAN}#{BOLD}__ENCODING__#{CLEAR}]\n",
|
||||||
|
}.each do |object, result|
|
||||||
|
actual = with_term { IRB::ColorPrinter.pp(object, '') }
|
||||||
|
assert_equal(result, actual, "Case: IRB::ColorPrinter.pp(#{object.inspect}, '')")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def ripper_lexer_scan_supported?
|
||||||
|
Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.0')
|
||||||
|
end
|
||||||
|
|
||||||
|
def with_term
|
||||||
|
stdout = $stdout
|
||||||
|
io = StringIO.new
|
||||||
|
def io.tty?; true; end
|
||||||
|
$stdout = io
|
||||||
|
|
||||||
|
env = ENV.to_h.dup
|
||||||
|
ENV['TERM'] = 'xterm-256color'
|
||||||
|
|
||||||
|
yield
|
||||||
|
ensure
|
||||||
|
$stdout = stdout
|
||||||
|
ENV.replace(env) if env
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Загрузка…
Ссылка в новой задаче