use Test::More 'no_plan';
use File::Monitor::Simple;
use File::Spec::Functions; # provides catfile
use Data::Dumper;
use strict;
my $watcher = File::Monitor::Simple->new(
directory => 't',
regex => '\.txt$',
);
my $tmp_txt = catfile('t', 'tmp.txt');
# fails RE
my $tmp_text = catfile('t', 'tmp.text');
# warm up
my @changed_files = $watcher->watch;
unlink $tmp_txt, $tmp_text; # just in case;
open (T1,">$tmp_txt") || die "couldn't open $tmp_txt: $!";
print T1 "new";
close (T1);
{
my @changed_files = $watcher->watch;
like($changed_files[0], qr/tmp.txt/, "basic test of adding a new file");
}
{
my @changed_files = $watcher->watch;
is_deeply(\@changed_files,[], "a new file disappears on the next watch") ;
}
{
open (T1,">$tmp_text") || die "couldn't open $tmp_text: $!";
print T1 "newer";
close (T1);
my @changed_files = $watcher->watch;
is_deeply(\@changed_files,[], "a file that doesn't match the RE doesn't trigger it.") ;
}
{
open (T2,">$tmp_txt") || die "couldn't open $tmp_txt: $!";
print T2 "newer";
close (T2);
my @changed_files = $watcher->watch;
like($changed_files[0], qr/tmp.txt/, "a changed file triggers the change.")
|| diag Dumper ('changed files:',\@changed_files);
}
{
my @changed_files = $watcher->watch;
is_deeply(\@changed_files,[], "a changed file disappears on the next watch") ;
}
{
unlink $tmp_txt || diag "failed to unlink $!";
my @changed_files = $watcher->watch;
like($changed_files[0], qr/tmp.txt/, "a deleted file triggers the change.") ;
}
{
my @changed_files = $watcher->watch;
is_deeply(\@changed_files,[], "a deleted file disappears on the next watch") ;
}
END {
unlink $tmp_txt, $tmp_text;
}