[ruby/irb] Fix easter_egg run without RDoc, fix input-method test

run without RDoc
(https://github.com/ruby/irb/pull/998)

* EasterEgg no longer depend on RDoc

* Run most of the input-method tests even if RDoc is not avialable

https://github.com/ruby/irb/commit/30fa1595d9
This commit is contained in:
tomoya ishida 2024-09-04 00:45:37 +09:00 committed by git
parent 0889f64021
commit f1349924df
2 changed files with 10 additions and 7 deletions

View File

@ -107,13 +107,14 @@ module IRB
end
private def easter_egg(type = nil)
print "\e[?1049h"
type ||= [:logo, :dancing].sample
case type
when :logo
require "rdoc"
RDoc::RI::Driver.new.page do |io|
type = STDOUT.external_encoding == Encoding::UTF_8 ? :unicode_large : :ascii_large
io.write easter_egg_logo(type)
Pager.page do |io|
logo_type = STDOUT.external_encoding == Encoding::UTF_8 ? :unicode_large : :ascii_large
io.write easter_egg_logo(logo_type)
STDIN.raw { STDIN.getc } if io == STDOUT
end
when :dancing
STDOUT.cooked do
@ -138,10 +139,11 @@ module IRB
end
rescue Interrupt
ensure
print "\e[0m\e[?1049l"
trap("SIGINT", prev_trap)
end
end
ensure
print "\e[0m\e[?1049l"
end
end
end

View File

@ -70,6 +70,7 @@ module TestIRB
end
def test_initialization_with_use_autocomplete
omit 'This test requires RDoc' unless defined?(RDoc)
original_show_doc_proc = Reline.dialog_proc(:show_doc)&.dialog_proc
empty_proc = Proc.new {}
Reline.add_dialog_proc(:show_doc, empty_proc)
@ -190,5 +191,5 @@ module TestIRB
def has_rdoc_content?
File.exist?(RDoc::RI::Paths::BASE)
end
end
end if defined?(RDoc)
end if defined?(RDoc)
end