X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=t%2Fdir_idle.t;h=19e54967bf8066af57f5cddb5d8c24936a8277fa;hb=4eee5af6011cc8cdefb66c9729952c7eff5c0b0b;hp=969c16e9bb77e328dd987a3d6d61263845c3d21a;hpb=671e7f4c9d82b053fba475aaeaa16a94dc3adad2;p=public-inbox.git diff --git a/t/dir_idle.t b/t/dir_idle.t index 969c16e9..19e54967 100644 --- a/t/dir_idle.t +++ b/t/dir_idle.t @@ -6,17 +6,39 @@ use PublicInbox::DS qw(now); use File::Path qw(make_path); use_ok 'PublicInbox::DirIdle'; my ($tmpdir, $for_destroy) = tmpdir(); -make_path("$tmpdir/a/b"); +make_path("$tmpdir/a/b", "$tmpdir/c"); my @x; my $cb = sub { push @x, \@_ }; -my $di = PublicInbox::DirIdle->new(["$tmpdir/a"], $cb, 1); +my $di = PublicInbox::DirIdle->new($cb); +$di->add_watches(["$tmpdir/a", "$tmpdir/c"], 1); PublicInbox::DS->SetLoopTimeout(1000); my $end = 3 + now; PublicInbox::DS->SetPostLoopCallback(sub { scalar(@x) == 0 && now < $end }); tick(0.011); rmdir("$tmpdir/a/b") or xbail "rmdir $!"; -PublicInbox::DS->EventLoop; +PublicInbox::DS::event_loop(); is(scalar(@x), 1, 'got an event') and - is($x[0]->[0]->fullname, "$tmpdir/a/b", 'got expected fullname'); + is($x[0]->[0]->fullname, "$tmpdir/a/b", 'got expected fullname') and + ok($x[0]->[0]->IN_DELETE, 'IN_DELETE set'); + +tick(0.011); +rmdir("$tmpdir/a") or xbail "rmdir $!"; +@x = (); +$end = 3 + now; +PublicInbox::DS::event_loop(); +is(scalar(@x), 1, 'got an event') and + is($x[0]->[0]->fullname, "$tmpdir/a", 'got expected fullname') and + ok($x[0]->[0]->IN_DELETE_SELF, 'IN_DELETE_SELF set'); + +tick(0.011); +rename("$tmpdir/c", "$tmpdir/j") or xbail "rmdir $!"; +@x = (); +$end = 3 + now; +PublicInbox::DS::event_loop(); +is(scalar(@x), 1, 'got an event') and + is($x[0]->[0]->fullname, "$tmpdir/c", 'got expected fullname') and + ok($x[0]->[0]->IN_DELETE_SELF || $x[0]->[0]->IN_MOVE_SELF, + 'IN_DELETE_SELF set on move'); + PublicInbox::DS->Reset; done_testing;