Skip to content

Commit

Permalink
Print deprecation warning for help command
Browse files Browse the repository at this point in the history
  • Loading branch information
st0012 committed Apr 24, 2023
1 parent 1d7461a commit 8319388
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 12 deletions.
9 changes: 9 additions & 0 deletions lib/irb/cmd/help.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,15 @@
module IRB
module ExtendCommand
class Help < ShowDoc
DEPRECATION_MESSAGE = <<~MSG
[Deprecation] The `help` command will be repurposed to show command help in the future.
Please use `show_doc` command for document look up instead.
MSG

def execute(*names)
warn DEPRECATION_MESSAGE
super
end
end
end
end
38 changes: 26 additions & 12 deletions test/irb/test_cmd.rb
Original file line number Diff line number Diff line change
Expand Up @@ -783,19 +783,33 @@ def test_ls_with_no_singleton_class
end

class ShowDocTest < CommandTestCase
def test_help_and_show_doc
["help", "show_doc"].each do |cmd|
out, err = execute_lines(
"#{cmd} String#gsub\n",
"\n",
)
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_empty err
assert(possible_rdoc_output.any? { |output| output.match?(out) }, "Expect the `#{cmd}` command to match one of the possible outputs. Got:\n#{out}")
end
# 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 show 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",
"\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_not_include err, "[Deprecation]"
assert(possible_rdoc_output.any? { |output| output.match?(out) }, "Expect the `show_doc` 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" }
Expand Down

0 comments on commit 8319388

Please sign in to comment.