Skip to content

Commit

Permalink
Avoid raising errors while running help for custom commands (#944)
Browse files Browse the repository at this point in the history
* Avoid raising errors while running help for custom commands

Raising an error from the help command is not a pleasure for the
end user, even if the command does not define any attributes

* Update test/irb/command/test_custom_command.rb

---------

Co-authored-by: Stan Lo <stan001212@gmail.com>
  • Loading branch information
kachick and st0012 authored May 3, 2024
1 parent f2b5fc1 commit c8bba9f
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/irb/command/help.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def execute(command_name)
help_message
else
if command_class = Command.load_command(command_name)
command_class.help_message || command_class.description
command_class.help_message || command_class.description || ""
else
"Can't find command `#{command_name}`. Please check the command name and try again.\n\n"
end
Expand Down
26 changes: 26 additions & 0 deletions test/irb/command/test_custom_command.rb
Original file line number Diff line number Diff line change
Expand Up @@ -123,5 +123,31 @@ def execute(*)
assert_include(output, "2 FooBar executed")
assert_include(output, "foobar_description")
end

def test_no_meta_command_also_works
write_ruby <<~RUBY
require "irb/command"
class NoMetaCommand < IRB::Command::Base
def execute(*)
puts "This command does not override meta attributes"
nil
end
end
IRB::Command.register(:no_meta, NoMetaCommand)
binding.irb
RUBY

output = run_ruby_file do
type "no_meta\n"
type "help no_meta\n"
type "exit"
end

assert_include(output, "This command does not override meta attributes")
assert_not_include(output, "Maybe IRB bug")
end
end
end

0 comments on commit c8bba9f

Please sign in to comment.