Skip to content

Commit

Permalink
[ruby/irb] Avoid raising errors while running help for custom
Browse files Browse the repository at this point in the history
commands
(ruby/irb#944)

* 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

---------

ruby/irb@c8bba9f8dc

Co-authored-by: Stan Lo <stan001212@gmail.com>
  • Loading branch information
2 people authored and matzbot committed May 3, 2024
1 parent 70db150 commit a510175
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 a510175

Please sign in to comment.