#!perl -w # Copyright (C) all contributors # License: AGPL-3.0+ use v5.12; use PublicInbox::TestCommon; use POSIX qw(_exit); my ($tmpdir, $for_destroy) = tmpdir(); use_ok 'PublicInbox::TailNotify'; my $f = "$tmpdir/log"; open my $fh, '>>', $f or xbail $!; my $tn = PublicInbox::TailNotify->new($f); my @x = $tn->getlines(1); is_deeply(\@x, [], 'nothing, yet'); my $pid = fork // xbail "fork: $!"; if ($pid == 0) { tick; syswrite $fh, "hi\n" // xbail "syswrite: $!"; _exit(0); } @x = $tn->getlines; is_deeply(\@x, [ "hi\n" ], 'got line'); waitpid($pid, 0) // xbail "waitpid: $!"; is($?, 0, 'writer done'); $pid = fork // xbail "fork: $!"; if ($pid == 0) { tick; unlink $f // xbail "unlink($f): $!"; open $fh, '>>', $f or xbail $!; syswrite $fh, "bye\n" // xbail "syswrite: $!"; _exit(0); } @x = $tn->getlines; is_deeply(\@x, [ "bye\n" ], 'got line after reopen'); waitpid($pid, 0) // xbail "waitpid: $!"; is($?, 0, 'writer done'); done_testing;