diff options
author | Eric Wong <e@yhbt.net> | 2020-07-02 03:32:56 +0000 |
---|---|---|
committer | Eric Wong <e@yhbt.net> | 2020-07-02 19:51:14 +0000 |
commit | 1bc3707e3e0983c9aed898980ec8acf6501813f7 (patch) | |
tree | ee00a849c6746dfee4e58691926e4e3a2f954f4a /t | |
parent | 62575c514f07260cff5865b7bf122e41178b0476 (diff) | |
download | public-inbox-1bc3707e3e0983c9aed898980ec8acf6501813f7.tar.gz |
Anonymous subs cost over 5K each on x86-64. So prefer the less-recommended-but-still-documented way of using Linux::Inotify2::watch to register watchers. This also updates FakeInotify to detect modifications correctly when used on systems with neither IO::KQueue nor Linux::Inotify2.
Diffstat (limited to 't')
-rw-r--r-- | t/fake_inotify.t | 18 | ||||
-rw-r--r-- | t/kqnotify.t | 12 |
2 files changed, 11 insertions, 19 deletions
diff --git a/t/fake_inotify.t b/t/fake_inotify.t index f0db0cb5..11dac117 100644 --- a/t/fake_inotify.t +++ b/t/fake_inotify.t @@ -16,29 +16,25 @@ close $fh or BAIL_OUT "close: $!"; my $fi = PublicInbox::FakeInotify->new; my $mask = PublicInbox::FakeInotify::MOVED_TO_OR_CREATE(); -my $hit = []; -my $cb = sub { push @$hit, map { $_->fullname } @_ }; -my $w = $fi->watch("$tmpdir/new", $mask, $cb); +my $w = $fi->watch("$tmpdir/new", $mask); select undef, undef, undef, $MIN_FS_TICK; rename("$tmpdir/tst", "$tmpdir/new/tst") or BAIL_OUT "rename: $!"; -$fi->poll; -is_deeply($hit, ["$tmpdir/new/tst"], 'rename(2) detected'); +my @events = map { $_->fullname } $fi->read; +is_deeply(\@events, ["$tmpdir/new/tst"], 'rename(2) detected'); -@$hit = (); select undef, undef, undef, $MIN_FS_TICK; open $fh, '>', "$tmpdir/tst" or BAIL_OUT "open: $!"; close $fh or BAIL_OUT "close: $!"; link("$tmpdir/tst", "$tmpdir/new/link") or BAIL_OUT "link: $!"; -$fi->poll; -is_deeply($hit, ["$tmpdir/new/link"], 'link(2) detected'); +@events = map { $_->fullname } $fi->read; +is_deeply(\@events, ["$tmpdir/new/link"], 'link(2) detected'); $w->cancel; -@$hit = (); select undef, undef, undef, $MIN_FS_TICK; link("$tmpdir/new/tst", "$tmpdir/new/link2") or BAIL_OUT "link: $!"; -$fi->poll; -is_deeply($hit, [], 'link(2) not detected after cancel'); +@events = map { $_->fullname } $fi->read; +is_deeply(\@events, [], 'link(2) not detected after cancel'); PublicInbox::DS->Reset; diff --git a/t/kqnotify.t b/t/kqnotify.t index b3414b8a..c3557d3e 100644 --- a/t/kqnotify.t +++ b/t/kqnotify.t @@ -17,25 +17,21 @@ close $fh or BAIL_OUT "close: $!"; my $kqn = PublicInbox::KQNotify->new; my $mask = PublicInbox::KQNotify::MOVED_TO_OR_CREATE(); -my $hit = []; -my $cb = sub { push @$hit, map { $_->fullname } @_ }; -my $w = $kqn->watch("$tmpdir/new", $mask, $cb); +my $w = $kqn->watch("$tmpdir/new", $mask); rename("$tmpdir/tst", "$tmpdir/new/tst") or BAIL_OUT "rename: $!"; -$kqn->poll; +my $hit = [ map { $_->fullname } $kqn->read ]; is_deeply($hit, ["$tmpdir/new/tst"], 'rename(2) detected (via NOTE_EXTEND)'); -@$hit = (); open $fh, '>', "$tmpdir/tst" or BAIL_OUT "open: $!"; close $fh or BAIL_OUT "close: $!"; link("$tmpdir/tst", "$tmpdir/new/link") or BAIL_OUT "link: $!"; -$kqn->poll; +$hit = [ grep m!/link$!, map { $_->fullname } $kqn->read ]; is_deeply($hit, ["$tmpdir/new/link"], 'link(2) detected (via NOTE_WRITE)'); $w->cancel; -@$hit = (); link("$tmpdir/new/tst", "$tmpdir/new/link2") or BAIL_OUT "link: $!"; -$kqn->poll; +$hit = [ map { $_->fullname } $kqn->read ]; is_deeply($hit, [], 'link(2) not detected after cancel'); done_testing; |