Upgrade to Win32-0.38
Steve Hay [Mon, 30 Jun 2008 07:37:29 +0000 (07:37 +0000)]
(including changes to GetCurrentThreadId.t which should have gone into
the 0.37 upgrade, but which I missed then)

p4raw-id: //depot/perl@34094

ext/Win32/Changes
ext/Win32/Win32.pm
ext/Win32/t/GetCurrentThreadId.t

index 1f80899..62077ba 100644 (file)
@@ -1,5 +1,9 @@
 Revision history for the Perl extension Win32.
 
+0.38   [2008-06-27]
+       - Fix Cygwin releated problems in t/GetCurrentThreadId.t
+         (Jerry D. Hedden).
+
 0.37   [2008-06-26]
        - Add Win32::GetCurrentProcessId() function
 
index b032d99..7091783 100644 (file)
@@ -8,7 +8,7 @@ BEGIN {
     require DynaLoader;
 
     @ISA = qw|Exporter DynaLoader|;
-    $VERSION = '0.37';
+    $VERSION = '0.38';
     $XS_VERSION = $VERSION;
     $VERSION = eval $VERSION;
 
index 4db2c14..ce98f3e 100644 (file)
@@ -3,16 +3,34 @@ use Config qw(%Config);
 use Test;
 use Win32;
 
-plan tests => 1;
+my $fork_emulation = $Config{ccflags} =~ /PERL_IMPLICIT_SYS/;
 
-# This test relies on the implementation detail that the fork() emulation
-# uses the negative value of the thread id as a pseudo process id.
-if ($Config{ccflags} =~ /PERL_IMPLICIT_SYS/) {
-    if (my $pid = fork) {
-       waitpid($pid, 0);
+my $tests = $fork_emulation ? 4 : 2;
+plan tests => $tests;
+
+my $pid = $$+0; # make sure we don't copy any magic to $pid
+
+if ($^O eq "cygwin") {
+    skip(!defined &Cygwin::pid_to_winpid,
+        Cygwin::pid_to_winpid($pid),
+        Win32::GetCurrentProcessId());
+}
+else {
+    ok($pid, Win32::GetCurrentProcessId());
+}
+
+if ($fork_emulation) {
+    # This test relies on the implementation detail that the fork() emulation
+    # uses the negative value of the thread id as a pseudo process id.
+    if (my $child = fork) {
+       waitpid($child, 0);
        exit 0;
     }
     ok(-$$, Win32::GetCurrentThreadId());
+
+    # GetCurrentProcessId() should still return the real PID
+    ok($pid, Win32::GetCurrentProcessId());
+    ok($$ != Win32::GetCurrentProcessId());
 }
 else {
     # here we just want to see something.