]> git.sur5r.net Git - i3/i3/commitdiff
testworker: handle EAGAIN
authorMichael Stapelberg <michael@stapelberg.de>
Sat, 11 Aug 2012 22:22:17 +0000 (00:22 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Sat, 11 Aug 2012 22:22:17 +0000 (00:22 +0200)
Hopefully this fixes the case where a testworker would die and leave the
whole testsuite run hanging in the air, never completing.

testcases/lib/TestWorker.pm

index a224b718a90f245c954bba1cfa20a05e94d0a479..140537d4c74d54a46c61d576df76ee01fe642eb8 100644 (file)
@@ -8,6 +8,8 @@ use IO::Handle; # for ->autoflush
 
 use POSIX ();
 
+use Errno qw(EAGAIN);
+
 use Exporter 'import';
 our @EXPORT = qw(worker worker_next);
 
@@ -74,7 +76,12 @@ sub worker_wait {
     my $ipc = $self->{ipc};
     my $ipc_fd = fileno($ipc);
 
-    while (defined(my $file = $ipc->getline)) {
+    while (1) {
+        my $file = $ipc->getline;
+        if (!defined($file)) {
+            next if $! == EAGAIN;
+            last;
+        }
         chomp $file;
 
         exit unless $file;