AnyEvent-Filesys-Watcher
view release on metacpan or search on metacpan
t/41-bug-modified-in-cb.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use AnyEvent;
use AnyEvent::Filesys::Watcher;
use lib 't/lib';
use TestSupport qw(create_test_files delete_test_files);
if ($^O eq 'MSWin32' ) {
plan skip_all => 'Test temporarily disabled for MSWin32';
}
$|++;
sub run_test {
my %extra_config = @_;
my $done = AnyEvent->condvar;
my @received;
my $n = AnyEvent::Filesys::Watcher->new(
directories => [$TestSupport::dir],
callback => sub {
push @received, @_;
# This call back deletes any created files
foreach my $event (@_) {
unlink $event->path if $event->type eq 'created'
&& !$event->isDirectory;
if ('deleted' eq $event->type) {
$done->send;
}
}
},
%extra_config,
);
isa_ok $n, 'AnyEvent::Filesys::Watcher';
# Create a file, which will be delete in the callback
create_test_files 'foo';
my $timer = AnyEvent->timer(
after => 5,
cb => sub {
ok 0, "lame test";
$done->send;
}
);
$done->recv;
my $created_seen;
my $deleted_seen;
foreach my $event (@received) {
if ($event->path =~ m{/foo$}) {
if ('deleted' eq $event->type) {
$deleted_seen = 1;
} elsif ('created' eq $event->type) {
$created_seen = 1;
}
}
}
ok $created_seen, 'created';
ok $deleted_seen, 'deleted';
}
run_test;
SKIP: {
skip 'Requires Mac with IO::KQueue', 3
unless $^O eq 'darwin' and eval { require IO::KQueue; 1; };
run_test backend => 'KQueue';
}
done_testing;
( run in 2.165 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )