diff options
-rw-r--r-- | lib/PublicInbox/TestCommon.pm | 18 | ||||
-rw-r--r-- | t/lei-import.t | 7 |
2 files changed, 18 insertions, 7 deletions
diff --git a/lib/PublicInbox/TestCommon.pm b/lib/PublicInbox/TestCommon.pm index 46e6a538..b84886a0 100644 --- a/lib/PublicInbox/TestCommon.pm +++ b/lib/PublicInbox/TestCommon.pm @@ -935,13 +935,25 @@ sub cfg_new ($;@) { } our $strace_cmd; -sub strace () { +sub strace (@) { + my ($for_daemon) = @_; skip 'linux only test' if $^O ne 'linux'; + if ($for_daemon) { + my $f = '/proc/sys/kernel/yama/ptrace_scope'; + # TODO: we could fiddle with prctl in the daemon to make + # things work, but I'm not sure it's worth it... + state $ps = do { + my $fh; + CORE::open($fh, '<', $f) ? readline($fh) : 0; + }; + chomp $ps; + skip "strace unusable on daemons\n$f is `$ps' (!= 0)" if $ps; + } require_cmd('strace', 1); } -sub strace_inject () { - my $cmd = strace; +sub strace_inject (;$) { + my $cmd = strace(@_); state $ver = do { require PublicInbox::Spawn; my $v = PublicInbox::Spawn::run_qx([$cmd, '--version']); diff --git a/t/lei-import.t b/t/lei-import.t index 6ad4c97b..1edd607d 100644 --- a/t/lei-import.t +++ b/t/lei-import.t @@ -155,19 +155,18 @@ do { like($lei_out, qr/\bbin\b/, 'commit-delay eventually commits'); SKIP: { - my $strace = strace_inject; # skips if strace is old or non-Linux + my $strace = strace_inject(1); # skips if strace is old or non-Linux my $tmpdir = tmpdir; my $tr = "$tmpdir/tr"; - my $cmd = [ $strace, "-o$tr", '-f', + my $cmd = [ $strace, '-q', "-o$tr", '-f', "-P", File::Spec->rel2abs('t/plack-qp.eml'), '-e', 'inject=readv,read:error=EIO']; lei_ok qw(daemon-pid); chomp(my $daemon_pid = $lei_out); push @$cmd, '-p', $daemon_pid; - my $strace_opt = { 1 => \my $out, 2 => \my $err }; require PublicInbox::Spawn; require PublicInbox::AutoReap; - my $pid = PublicInbox::Spawn::spawn($cmd, \%ENV, $strace_opt); + my $pid = PublicInbox::Spawn::spawn($cmd, \%ENV); my $ar = PublicInbox::AutoReap->new($pid); tick; # wait for strace to attach ok(!lei(qw(import -F eml t/plack-qp.eml)), |