54 lines
1.5 KiB
Perl
54 lines
1.5 KiB
Perl
#!/usr/bin/perl
|
|
use warnings;
|
|
use strict;
|
|
use Test::More;
|
|
|
|
use Daemon::Control;
|
|
|
|
# Make sure the user and group don't exist
|
|
my $user = 'bogus1';
|
|
$user++ while getpwnam( $user );
|
|
|
|
my $group = 'bogus1';
|
|
$group++ while getgrnam( $group );
|
|
|
|
my $dc = eval { Daemon::Control->new({
|
|
name => "My Daemon",
|
|
lsb_start => '$syslog $remote_fs',
|
|
lsb_stop => '$syslog',
|
|
lsb_sdesc => 'My Daemon Short',
|
|
lsb_desc => 'My Daemon controls the My Daemon daemon.',
|
|
path => '/usr/sbin/mydaemon/init.pl',
|
|
|
|
program => sub { sleep shift },
|
|
program_args => [ 10 ],
|
|
|
|
user => $user,
|
|
group => $group,
|
|
|
|
pid_file => '/tmp/mydaemon.pid',
|
|
stderr_file => '/dev/null',
|
|
stdout_file => '/dev/null',
|
|
|
|
}) };
|
|
|
|
isa_ok( $dc, 'Daemon::Control' );
|
|
|
|
for my $method (qw(do_help do_show_warnings do_get_init_file)) {
|
|
local( *STDOUT, *STDERR );
|
|
my ($stdout, $stderr) = ("", "");
|
|
open( STDOUT, '>', \$stdout ) or die "can't redirect stdout: $!";
|
|
open( STDERR, '>', \$stderr ) or die "can't redirect stderr: $!";
|
|
eval { $dc->$method };
|
|
is( $@, "", "calling $method with bogus user + group lives" );
|
|
isnt( $method =~ /warnings/ ? $stderr : $stdout, "",
|
|
"calling $method with bogus user + group generates output" );
|
|
}
|
|
|
|
for my $method (qw(uid gid)) {
|
|
eval { $dc->$method };
|
|
like( $@, qr/Couldn't get $method for non-existent (?:user|group)/,
|
|
"getting $method with bogus user + group dies" );
|
|
}
|
|
|
|
done_testing;
|