Skip to content

Commit

Permalink
[ruby/irb] Repurpose the help command to display the help message
Browse files Browse the repository at this point in the history
(ruby/irb#872)

See #787 for more details.

ruby/irb@d9192d92d0
  • Loading branch information
st0012 authored and matzbot committed Feb 14, 2024
1 parent d041259 commit c84581f
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 31 deletions.
19 changes: 4 additions & 15 deletions lib/irb/cmd/help.rb
@@ -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
26 changes: 10 additions & 16 deletions test/irb/test_cmd.rb
Expand Up @@ -603,6 +603,16 @@ def test_whereami_alias


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"
Expand Down Expand Up @@ -774,22 +784,6 @@ def test_ls_with_no_singleton_class
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",
Expand Down

0 comments on commit c84581f

Please sign in to comment.