Config-Crontab
view release on metacpan or search on metacpan
t/03_event.t view on Meta::CPAN
#-*- mode: cperl -*-#
use Test::More;
use blib;
chdir 't' if -d 't';
require './setup.pl';
unless( have_crontab() ) {
plan skip_all => "no crontab available";
exit;
}
plan tests => 110;
use_ok('Config::Crontab');
my $event;
## empty object
$event = new Config::Crontab::Event;
is( $event->dump, '' );
undef $event;
## setting via datetime
$event = new Config::Crontab::Event( -datetime => '@hourly',
-command => '/usr/sbin/backup_everything' );
is( $event->datetime, '@hourly' );
is( $event->command, '/usr/sbin/backup_everything' );
is( $event->dump, '@hourly /usr/sbin/backup_everything' );
undef $event;
## setting via datetime
$event = new Config::Crontab::Event( -datetime => '@hourly',
-command => '/usr/sbin/backup_everything' );
is( $event->datetime, '@hourly' );
is( $event->datetime, '@hourly' );
is( $event->command, '/usr/sbin/backup_everything' );
is( $event->dump, '@hourly /usr/sbin/backup_everything' );
undef $event;
## setting via datetime
$event = new Config::Crontab::Event( -datetime => '5 0 * * *',
-command => '/usr/sbin/backup_everything' );
is( $event->datetime, '5 0 * * *' );
is( $event->special, '' );
is( $event->minute, 5 );
is( $event->hour, 0 );
undef $event;
## setting via datetime
$event = new Config::Crontab::Event( -datetime => '*/5 0 * * *',
-command => '/usr/sbin/backup_everything' );
is( $event->datetime, '*/5 0 * * *' );
is( $event->special, '' );
is( $event->minute, '*/5' );
is( $event->hour, 0 );
undef $event;
## setting via datetime
$event = new Config::Crontab::Event( -datetime => '*/2,*/5 0 * * *',
-command => '/bin/echo' );
is( $event->datetime, '*/2,*/5 0 * * *', 'multiple wildcards (rus)' );
## setting via special
$event = new Config::Crontab::Event( -special => '@monthly',
-command => '/usr/sbin/backup_everything' );
is( $event->datetime, '@monthly' );
is( $event->special, '@monthly' );
is( $event->minute, '*' );
is( $event->hour, '*' );
undef $event;
## FIXME: currently no checks for bogus 'special' strings
## FIXME: if we ever do checking on -special, these tests will have
## FIXME: to be changed
## setting via special
$event = new Config::Crontab::Event( -special => '5 0 1 * *',
-command => '/usr/sbin/backup_everything' );
is( $event->datetime, '5 0 1 * *' );
is( $event->special, '5 0 1 * *' );
is( $event->minute, '*' );
is( $event->hour, '*' );
undef $event;
## setting via -data
$event = new Config::Crontab::Event( -data => '@reboot /usr/sbin/food' );
is( $event->special, '@reboot' );
is( $event->datetime, '@reboot' );
is( $event->command, '/usr/sbin/food' );
undef $event;
## setting via -data: -data overrides all other attributes
$event = new Config::Crontab::Event( -data => '@reboot /usr/sbin/food',
-active => 0, ## ignored
-hour => 5, ## ignored
-special => '@daily', ## ignored
-datetime => '5 2 * * Fri', ## ignored
);
is( $event->special, '@reboot' );
is( $event->datetime, '@reboot' );
is( $event->command, '/usr/sbin/food' );
is( $event->hour, '*' );
is( $event->dump, '@reboot /usr/sbin/food' );
undef $event;
## setting via -data
$event = new Config::Crontab::Event( -data => '6 1 * * Fri /usr/sbin/backup' );
is( $event->special, '' );
is( $event->datetime, '6 1 * * Fri' );
is( $event->command, '/usr/sbin/backup' );
undef $event;
## try some disabled events
$event = new Config::Crontab::Event( -data => '## 7 2 * * Mon /bin/monday' );
is( $event->active, 0 );
is( $event->datetime, '7 2 * * Mon' );
is( $event->command, '/bin/monday' );
undef $event;
## setting via attributes
$event = new Config::Crontab::Event( -minute => 0,
-hour => 4,
-command => '/usr/sbin/foo' );
is( $event->hour, 4 );
is( $event->minute, 0 );
is( $event->command, '/usr/sbin/foo' );
is( $event->special, '' );
is( $event->dump, '0 4 * * * /usr/sbin/foo' );
is( $event->active(0), 0 );
is( $event->dump, '#0 4 * * * /usr/sbin/foo' );
is( $event->data, '0 4 * * * /usr/sbin/foo' );
undef $event;
## setting via attributes: datetime takes precedence over fields
$event = new Config::Crontab::Event( -minute => 5,
-datetime => '@reboot',
-command => '/usr/sbin/doofus' );
is( $event->minute, '*' );
is( $event->hour, '*' );
is( $event->special, '@reboot' );
is( $event->datetime, '@reboot' );
is( $event->command, '/usr/sbin/doofus' );
# do not undef $event here
## resetting object via methods
is( $event->datetime('6 8 * Mar Fri,Sat,Sun'), '6 8 * Mar Fri,Sat,Sun' );
is( $event->special, '' );
is( $event->dump, '6 8 * Mar Fri,Sat,Sun /usr/sbin/doofus' );
# do not undef $event here
## resetting object via methods
$event->datetime([6, 9, '*', 'Mar', 'Fri,Sun'], '6 9 * Mar Fri,Sun');
is( $event->special, '' );
is( $event->dump, '6 9 * Mar Fri,Sun /usr/sbin/doofus' );
# do not undef here
## resetting object via methods
$event->datetime([6, '*/2', '*', 'Mar', 'Fri,Sun'], '6 */2 * Mar Fri,Sun');
is( $event->special, '' );
is( $event->dump, '6 */2 * Mar Fri,Sun /usr/sbin/doofus', "event set by datetime" );
# do not undef here
## resetting object via methods
$event->datetime(['@daily'], '@daily');
is( $event->special, '@daily' );
is( $event->dump, '@daily /usr/sbin/doofus' );
undef $event;
## set pieces via methods
$event = new Config::Crontab::Event( -minute => 5 );
( run in 1.715 second using v1.01-cache-2.11-cpan-df04353d9ac )