RE: [PATCH] Warning on pararameterless 'use IO' and doc update
Paul Marquess [Mon, 28 Oct 2002 12:53:52 +0000 (12:53 +0000)]
From: "Paul Marquess" <Paul.Marquess@btinternet.com>
Message-ID: <AIEAJICLCBDNAAOLLOKLAEOEFLAA.Paul.Marquess@btinternet.com>

p4raw-id: //depot/perl@18071

ext/IO/IO.pm
ext/IO/lib/IO/t/IO.t

index 6a4a7ff..287671e 100644 (file)
@@ -4,17 +4,18 @@ package IO;
 
 use XSLoader ();
 use Carp;
+use strict;
+use warnings;
 
-$VERSION = "1.20";
+our $VERSION = "1.20";
 XSLoader::load 'IO', $VERSION;
 
 sub import {
     shift;
-    if (@_ == 0) {
-       require warnings;
-       warnings::warn('deprecated', qq{parameterless "use IO" deprecated})
-               if warnings::enabled('deprecated');
-    }
+
+    warnings::warnif('deprecated', qq{parameterless "use IO" deprecated})
+        if @_ == 0 ;
+    
     my @l = @_ ? @_ : qw(Handle Seekable File Pipe Socket Dir);
 
     eval join("", map { "require IO::" . (/(\w+)/)[0] . ";\n" } @l)
index d3f87a1..89226af 100644 (file)
@@ -9,7 +9,7 @@ BEGIN
 use strict;
 use File::Path;
 use File::Spec;
-use Test::More tests => 13;
+use Test::More tests => 18;
 
 {
        local $INC{'XSLoader.pm'} = 1;
@@ -30,7 +30,47 @@ use Test::More tests => 13;
 my @default = map { "IO/$_.pm" } qw( Handle Seekable File Pipe Socket Dir );
 delete @INC{ @default };
 
-IO->import();
+my $warn = '' ;
+local $SIG{__WARN__} = sub { $warn = "@_" } ;
+
+{
+    no warnings ;
+    IO->import();
+    is( $warn, '', "... import default, should not warn");
+    $warn = '' ;
+}
+
+{
+    local $^W = 0;
+    IO->import();
+    is( $warn, '', "... import default, should not warn");
+    $warn = '' ;
+}
+
+{
+    local $^W = 1;
+    IO->import();
+    like( $warn, qr/^parameterless "use IO" deprecated at/, 
+              "... import default, should warn");
+    $warn = '' ;
+}
+
+{
+    use warnings 'deprecated' ;
+    IO->import(); 
+    like( $warn, qr/^parameterless "use IO" deprecated at/, 
+              "... import default, should warn");
+    $warn = '' ;
+}
+
+{
+    use warnings ;
+    IO->import();
+    like( $warn, qr/^parameterless "use IO" deprecated at/, 
+              "... import default, should warn");
+    $warn = '' ;
+}
+
 foreach my $default (@default)
 {
        ok( exists $INC{ $default }, "... import should default load $default" );