Fix t\op\magic.t when building with ALL_STATIC=define on Windows
authorSteve Hay <steve.m.hay@googlemail.com>
Tue, 18 Jun 2013 08:02:14 +0000 (09:02 +0100)
committerSteve Hay <steve.m.hay@googlemail.com>
Tue, 18 Jun 2013 11:59:12 +0000 (12:59 +0100)
Two tests must be skipped in this case since Tie::Hash::NamedCapture is
already loaded, but the existing skip doesn't cover this case. The Windows
static build statically links extensions into perl519.dll, not perl.exe
(although there is a separate perl-static.exe as well for anyone wanting
that), so $Config{usedl} is still set to 'define'.

So instead, check $Config{static_ext} to see if the package is really
statically linked, which is a more accurate check anyway and renders the
$Config{usedl} check redundant.

t/op/magic.t

index ac66b60..fc7e205 100644 (file)
@@ -466,11 +466,13 @@ SKIP:  {
 }
 
 # Check that we don't auto-load packages
-SKIP: {
-    skip "staticly linked; may be preloaded", 4 unless $Config{usedl};
-    foreach (['powie::!', 'Errno'],
-            ['powie::+', 'Tie::Hash::NamedCapture']) {
-       my ($symbol, $package) = @$_;
+foreach (['powie::!', 'Errno'],
+        ['powie::+', 'Tie::Hash::NamedCapture']) {
+    my ($symbol, $package) = @$_;
+    SKIP: {
+       (my $extension = $package) =~ s|::|/|g;
+       skip "$package is statically linked", 2
+           if $Config{static_ext} =~ m|\b\Q$extension\E\b|;
        foreach my $scalar_first ('', '$$symbol;') {
            my $desc = qq{Referencing %{"$symbol"}};
            $desc .= qq{ after mentioning \${"$symbol"}} if $scalar_first;