[ruby/irb] Repurpose the help command to display the help message

(https://github.com/ruby/irb/pull/872)

See #787 for more details.

https://github.com/ruby/irb/commit/d9192d92d0
This commit is contained in:
Stan Lo 2024-02-14 13:47:41 +00:00 committed by git
parent d0412599e0
commit c84581f1d9
2 changed files with 14 additions and 31 deletions

View File

@ -1,23 +1,12 @@
# frozen_string_literal: true
require_relative "show_doc"
require_relative "show_cmds"
module IRB
module ExtendCommand
class Help < ShowDoc
category "Context"
description "[DEPRECATED] Enter the mode to look up RI documents."
DEPRECATION_MESSAGE = <<~MSG
[Deprecation] The `help` command will be repurposed to display command help in the future.
For RI document lookup, please use the `show_doc` command instead.
For command help, please use `show_cmds` for now.
MSG
def execute(*names)
warn DEPRECATION_MESSAGE
super
end
class Help < ShowCmds
category "IRB"
description "List all available commands and their description."
end
end
end

View File

@ -603,6 +603,16 @@ module TestIRB
class ShowCmdsTest < CommandTestCase
def test_help
out, err = execute_lines(
"help\n",
)
assert_empty err
assert_match(/List all available commands and their description/, out)
assert_match(/Start the debugger of debug\.gem/, out)
end
def test_show_cmds
out, err = execute_lines(
"show_cmds\n"
@ -774,22 +784,6 @@ module TestIRB
end
class ShowDocTest < CommandTestCase
def test_help
out, err = execute_lines(
"help String#gsub\n",
"\n",
)
# the former is what we'd get without document content installed, like on CI
# the latter is what we may get locally
possible_rdoc_output = [/Nothing known about String#gsub/, /gsub\(pattern\)/]
assert_include err, "[Deprecation] The `help` command will be repurposed to display command help in the future.\n"
assert(possible_rdoc_output.any? { |output| output.match?(out) }, "Expect the `help` command to match one of the possible outputs. Got:\n#{out}")
ensure
# this is the only way to reset the redefined method without coupling the test with its implementation
EnvUtil.suppress_warning { load "irb/cmd/help.rb" }
end
def test_show_doc
out, err = execute_lines(
"show_doc String#gsub\n",