Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Repurpose the help command to display the help message #872

Merged
merged 1 commit into from
Feb 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 4 additions & 15 deletions lib/irb/cmd/help.rb
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
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
Loading