]> git.vpit.fr Git - perl/modules/IPC-MorseSignals.git/commitdiff
Importing IPC-MorseSignals-0.13.tar.gz v0.13
authorVincent Pit <vince@profvince.com>
Sun, 29 Jun 2008 16:37:15 +0000 (18:37 +0200)
committerVincent Pit <vince@profvince.com>
Sun, 29 Jun 2008 16:37:15 +0000 (18:37 +0200)
12 files changed:
Changes
META.yml
Makefile.PL
README
lib/IPC/MorseSignals.pm
lib/IPC/MorseSignals/Emitter.pm
lib/IPC/MorseSignals/Receiver.pm
t/60-fork-plain.t
t/61-fork-utf8.t
t/62-fork-storable.t
t/92-pod-coverage.t
t/lib/IPC/MorseSignals/TestSuite.pm

diff --git a/Changes b/Changes
index 26d69967ca9f28a063b830dd524fe9330c98f15f..986fd7c5f2bd3d6414690e0375f6a9f87a673017 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,15 @@
 Revision history for IPC-MorseSignals
 
 Revision history for IPC-MorseSignals
 
+0.13    2008-03-10 15:25 UTC
+        + Chg : Build prerequisites are now completely separated from run-time
+                prerequisites.
+        + Doc : The usual set of POD typos.
+        + Tst : Changed SIGHUP handlers in the parent for SIGUSR1's.
+        + Tst : Changed SIGHUP handlers in the child for SIGTSTP's.
+        + Tst : Meaningful fork tests labels.
+        + Tst : More synchronization barriers.
+        + Tst : Safe kills.
+
 0.12    2008-03-09 10:20 UTC
         + Doc : POD tweaks.
         + Fix : Correct Makefile.PL die messages.
 0.12    2008-03-09 10:20 UTC
         + Doc : POD tweaks.
         + Fix : Correct Makefile.PL die messages.
index bade59b4424d6399d2968dd0f70f3ab46564cd8a..c4bbd9172f1cedc55f0652400d1e1065e23dd5c3 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -1,26 +1,22 @@
 --- #YAML:1.0
 name:                IPC-MorseSignals
 --- #YAML:1.0
 name:                IPC-MorseSignals
-version:             0.12
+version:             0.13
 abstract:            Communicate between processes with Morse signals.
 license:             perl
 author:              
     - Vincent Pit <perl@profvince.com>
 abstract:            Communicate between processes with Morse signals.
 license:             perl
 author:              
     - Vincent Pit <perl@profvince.com>
-generated_by:        ExtUtils::MakeMaker version 6.42
+generated_by:        ExtUtils::MakeMaker version 6.44
 distribution_type:   module
 requires:     
     Bit::MorseSignals:             0
     Carp:                          0
 distribution_type:   module
 requires:     
     Bit::MorseSignals:             0
     Carp:                          0
-    Data::Dumper:                  0
-    Exporter:                      0
-    ExtUtils::MakeMaker:           0
     POSIX:                         0
     POSIX:                         0
-    Test::More:                    0
     Time::HiRes:                   0
     Time::HiRes:                   0
-    utf8:                          0
 meta-spec:
     url:     http://module-build.sourceforge.net/META-spec-v1.3.html
     version: 1.3
 build_requires:
 meta-spec:
     url:     http://module-build.sourceforge.net/META-spec-v1.3.html
     version: 1.3
 build_requires:
+    Config:                        0
     Data::Dumper:                  0
     Exporter:                      0
     ExtUtils::MakeMaker:           0
     Data::Dumper:                  0
     Exporter:                      0
     ExtUtils::MakeMaker:           0
index a24f63f66ca1cb74c80efdfc884492046afcc386..f7ab125617e60c79750de36880f4ec3ee71d6b24 100644 (file)
@@ -22,6 +22,7 @@ for (qw/USR1 USR2/) {
 
 my $BUILD_REQUIRES = {
  'utf8'                => 0,
 
 my $BUILD_REQUIRES = {
  'utf8'                => 0,
+ 'Config'              => 0,
  'Data::Dumper'        => 0,
  'Exporter'            => 0,
  'ExtUtils::MakeMaker' => 0,
  'Data::Dumper'        => 0,
  'Exporter'            => 0,
  'ExtUtils::MakeMaker' => 0,
@@ -51,7 +52,6 @@ WriteMakefile(
         'Carp'              => 0,
         'POSIX'             => 0,
         'Time::HiRes'       => 0,
         'Carp'              => 0,
         'POSIX'             => 0,
         'Time::HiRes'       => 0,
-        %$BUILD_REQUIRES
     },
     dist                => {
         PREOP => 'pod2text lib/IPC/MorseSignals.pm > $(DISTVNAME)/README; '
     },
     dist                => {
         PREOP => 'pod2text lib/IPC/MorseSignals.pm > $(DISTVNAME)/README; '
diff --git a/README b/README
index b1ad4068b04583348e9a1b6f946f3ff0b80feeac..215ebedcf1e9cd55531fceb9c89c017c45e3d598 100644 (file)
--- a/README
+++ b/README
@@ -2,7 +2,7 @@ NAME
     IPC::MorseSignals - Communicate between processes with Morse signals.
 
 VERSION
     IPC::MorseSignals - Communicate between processes with Morse signals.
 
 VERSION
-    Version 0.12
+    Version 0.13
 
 SYNOPSIS
         # In the sender process
 
 SYNOPSIS
         # In the sender process
index 4433afdbecb275b1f6db9cf923ec59ec6dc6df2a..7cb39284b99102753dcaded98c65bcac9fcebe63 100644 (file)
@@ -9,11 +9,11 @@ IPC::MorseSignals - Communicate between processes with Morse signals.
 
 =head1 VERSION
 
 
 =head1 VERSION
 
-Version 0.12
+Version 0.13
 
 =cut
 
 
 =cut
 
-our $VERSION = '0.12';
+our $VERSION = '0.13';
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
index bb02ac8e7da60e63dbb453fa6980aa1561e24745..940fd16c64e7b09f66b7b02a1a376c7c91257e7f 100644 (file)
@@ -16,11 +16,11 @@ IPC::MorseSignals::Emitter - Base class for IPC::MorseSignals emitters.
 
 =head1 VERSION
 
 
 =head1 VERSION
 
-Version 0.12
+Version 0.13
 
 =cut
 
 
 =cut
 
-our $VERSION = '0.12';
+our $VERSION = '0.13';
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
index c6e83069233f4d203011ac7fb90806ec793b8f84..44a21b902b4367693e7a9f61482ca98bad9d512a 100644 (file)
@@ -14,11 +14,11 @@ IPC::MorseSignals::Receiver - Base class for IPC::MorseSignals receivers.
 
 =head1 VERSION
 
 
 =head1 VERSION
 
-Version 0.12
+Version 0.13
 
 =cut
 
 
 =cut
 
-our $VERSION = '0.12';
+our $VERSION = '0.13';
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
index 54b73a7d5d543e34b07844607690988b7a2aa706..a65dde8690b1254e735fc316ea484fdc763d73e8 100644 (file)
@@ -19,7 +19,9 @@ my @msgs = qw/hlagh hlaghlaghlagh HLAGH HLAGHLAGHLAGH \x{0dd0}\x{00}
 
 init 6;
 
 
 init 6;
 
-test 'plain' => $_ for @msgs;
+for (0 .. $#msgs) {
+ test 'plain ' . $_ => $msgs[$_];
+}
 
 cleanup;
 
 
 cleanup;
 
index 8ad2011f7fe603a2b7555c8328fd3a31f9e6abb0..29b19105b9411ca9b705ba5a2ca2c843aa7ea26c 100644 (file)
@@ -20,7 +20,9 @@ my @msgs = qw/€éèë 月語 x tata たTÂ/;
 
 init 6;
 
 
 init 6;
 
-test 'plain' => $_ for @msgs;
+for (0 .. $#msgs) {
+ test 'utf8 ' . $_ => $msgs[$_];
+}
 
 cleanup;
 
 
 cleanup;
 
index aeab377249d9698c0b57ed3721de11e0cf72633c..6aafeebc053ed8424a083d605dc4ff62c24be70d 100644 (file)
@@ -26,7 +26,9 @@ $msgs[7]->{y} = $msgs[7];
 
 init 6;
 
 
 init 6;
 
-test 'plain' => $_ for @msgs;
+for (0 .. $#msgs) {
+ test 'storable ' . $_ => $msgs[$_];
+}
 
 cleanup;
 
 
 cleanup;
 
index 13665e8fc30f206c2ad75e753f2aaca64dfbf610..b4aff527c4f907291247ef15a1da24f56356e07d 100644 (file)
@@ -8,16 +8,14 @@ use Test::More;
 # Ensure a recent version of Test::Pod::Coverage
 my $min_tpc = 1.08;
 eval "use Test::Pod::Coverage $min_tpc";
 # Ensure a recent version of Test::Pod::Coverage
 my $min_tpc = 1.08;
 eval "use Test::Pod::Coverage $min_tpc";
-plan skip_all => "Test::Pod::Coverage $min_tpc required for testing POD coverage"
-    if $@;
+plan skip_all => "Test::Pod::Coverage $min_tpc required for testing POD coverage" if $@;
 
 # Test::Pod::Coverage doesn't require a minimum Pod::Coverage version,
 # but older versions don't recognize some common documentation styles
 my $min_pc = 0.18;
 eval "use Pod::Coverage $min_pc";
 
 # Test::Pod::Coverage doesn't require a minimum Pod::Coverage version,
 # but older versions don't recognize some common documentation styles
 my $min_pc = 0.18;
 eval "use Pod::Coverage $min_pc";
-plan skip_all => "Pod::Coverage $min_pc required for testing POD coverage"
-    if $@;
+plan skip_all => "Pod::Coverage $min_pc required for testing POD coverage" if $@;
 
 all_pod_coverage_ok(
 
 all_pod_coverage_ok(
-# also_private => [ qr/^_/ ]
+ { also_private => [ qr/^_/ ] }
 );
 );
index e11025ba1c9ffdd057eccf2a6bffa5190659532c..8e5900d360de6d29fe7685a4c0c60699b9e2debb 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 use warnings;
 
 use Data::Dumper;
 use warnings;
 
 use Data::Dumper;
-use POSIX qw/pause SIGINT SIGTERM SIGKILL SIGHUP EXIT_FAILURE/;
+use POSIX qw/pause SIGUSR1 SIGTSTP SIGKILL EXIT_FAILURE/;
 
 use IPC::MorseSignals::Emitter;
 use IPC::MorseSignals::Receiver;
 
 use IPC::MorseSignals::Emitter;
 use IPC::MorseSignals::Receiver;
@@ -17,6 +17,9 @@ $Data::Dumper::Indent = 0;
 
 my ($lives, $pid, $rdr);
 
 
 my ($lives, $pid, $rdr);
 
+my $ready = 0;
+$SIG{USR1} = sub { $ready = 1 };
+
 sub spawn {
  --$lives;
  die 'forked too many times' if $lives < 0;
 sub spawn {
  --$lives;
  die 'forked too many times' if $lives < 0;
@@ -29,24 +32,30 @@ sub spawn {
   close $rdr or die "close() failed: $!";
   select $wtr;
   $| = 1;
   close $rdr or die "close() failed: $!";
   select $wtr;
   $| = 1;
-  $SIG{__WARN__} = sub { print $wtr "!warn\n"; };
+  my $ppid = getppid;
   my $rcv = new IPC::MorseSignals::Receiver \%SIG, done => sub {
    print $wtr Dumper($_[1]), "\n";
   my $rcv = new IPC::MorseSignals::Receiver \%SIG, done => sub {
    print $wtr Dumper($_[1]), "\n";
+   kill SIGUSR1 => $ppid if $ppid;
   };
   };
-  my $ppid = getppid;
-  $SIG{ALRM} = sub { alarm 1; kill SIGHUP => $ppid };
-  alarm 1;
-  $SIG{HUP}  = sub { alarm 0; $rcv->reset }; # We can reset the alarm here.
+  $SIG{__WARN__} = sub {
+   my $warn = join '', @_;
+   $warn =~ s/\n\r/ /g;
+   print $wtr "!warn : $warn\n";
+   kill SIGUSR1 => $ppid if $ppid;
+  };
+  $SIG{TSTP} = sub {
+   $rcv->reset;
+   kill SIGUSR1 => $ppid if $ppid;
+  };
+  print $wtr "ok\n";
   pause while 1;
   exit EXIT_FAILURE;
  }
   pause while 1;
   exit EXIT_FAILURE;
  }
- my $ready = 0;
- local $SIG{HUP} = sub { $ready = 1 };
- sleep 1 until $ready;
  close $wtr or die "close() failed: $!";
  my $oldfh = select $rdr;
  $| = 1;
  select $oldfh;
  close $wtr or die "close() failed: $!";
  my $oldfh = select $rdr;
  $| = 1;
  select $oldfh;
+ my $t = <$rdr>;
 }
 
 sub slaughter {
 }
 
 sub slaughter {
@@ -54,9 +63,7 @@ sub slaughter {
   close $rdr or die "close() falied: $!";
   undef $rdr;
  }
   close $rdr or die "close() falied: $!";
   undef $rdr;
  }
- if (defined $pid) {
-  kill SIGINT  => $pid;
-  kill SIGTERM => $pid;
+ if ($pid) {
   kill SIGKILL => $pid;
   waitpid $pid, 0;
   undef $pid;
   kill SIGKILL => $pid;
   waitpid $pid, 0;
   undef $pid;
@@ -90,10 +97,11 @@ sub try {
    my $a = (int(100 * (3 * length $msg) / $speed) || 1);
    $a = 10 if $a > 10;
    alarm $a;
    my $a = (int(100 * (3 * length $msg) / $speed) || 1);
    $a = 10 if $a > 10;
    alarm $a;
-   kill SIGHUP => $pid;
    $snd->post($msg);
    $snd->speed($speed);
    $snd->post($msg);
    $snd->speed($speed);
+   $ready = 0;
    $snd->send($pid);
    $snd->send($pid);
+   pause until $ready;
    $r = <$rdr>;
    alarm 0;
   };
    $r = <$rdr>;
    alarm 0;
   };
@@ -105,7 +113,10 @@ sub try {
    if ($r eq $dump) {
     $ok = 1;
    } else {
    if ($r eq $dump) {
     $ok = 1;
    } else {
-    kill SIGHUP => $pid;
+    warn $1 if $r =~ /^warn\s*:\s*(.*)/;
+    $ready = 0;
+    kill SIGTSTP => $pid if $pid;
+    pause until $ready;
    }
   }
  }
    }
   }
  }
@@ -133,10 +144,11 @@ TRY:
     my $a = (int(100 * (3 * $l) / $speed) || 1);
     $a = 10 if $a > 10;
     alarm $a;
     my $a = (int(100 * (3 * $l) / $speed) || 1);
     $a = 10 if $a > 10;
     alarm $a;
-    kill SIGHUP => $pid;
     $snd->post($msg);
     $snd->speed($speed);
     $snd->post($msg);
     $snd->speed($speed);
+    $ready = 0;
     $snd->send($pid);
     $snd->send($pid);
+    pause until $ready;
     $r = <$rdr>;
     alarm 0;
    };
     $r = <$rdr>;
     alarm 0;
    };
@@ -149,7 +161,9 @@ TRY:
     if ($r eq $dump) {
      ++$ok;
     } else {
     if ($r eq $dump) {
      ++$ok;
     } else {
-     kill SIGHUP => $pid;
+     $ready = 0;
+     kill SIGTSTP => $pid if $pid;
+     pause until $ready;
      last TRY;
     }
    }
      last TRY;
     }
    }