about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/PublicInbox/TestCommon.pm18
-rw-r--r--t/lei-import.t7
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)),