The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package CLIDTestClass::Single::Help;

use strict;
use warnings;
use Test::Classy::Base;
use CLIDTest::Single;
use File::Spec;
use Try::Tiny;

sub help_command : Test {
  my $class = shift;

  my $ret = $class->dispatch(qw( help ));

  ok $ret eq 'help', $class->message('help command is ignored');
}

sub help_option : Tests(2) {
  my $class = shift;

  my $ret = $class->dispatch(qw( --help ));

  ok $ret =~ /single command test/, $class->message('has description');
  ok $ret !~ /dump me/, $class->message('name section is removed');
}

sub dispatch {
  my $class = shift;

  local @ARGV = @_;

  open my $null, '>', File::Spec->devnull;
  my $stdout = select($null);

  my $ret;
  try   { $ret = CLIDTest::Single->run }
  catch { $ret = $_ || 'Obscure error' };

  select($stdout);

  return $ret;
}

1;