summaryrefslogtreecommitdiff
path: root/ext/POSIX/t
diff options
context:
space:
mode:
authorKarl Williamson <khw@cpan.org>2016-02-11 20:24:37 -0700
committerKarl Williamson <khw@cpan.org>2016-02-11 20:29:08 -0700
commit47ed9d9e89922a8e165d6dfc5737772cc5ee7a45 (patch)
tree9469d65f743aabaeb8aadd4d47c15f2e4a149c75 /ext/POSIX/t
parentbef74c256c389edeb1dfa9c30dc71e00d17476eb (diff)
downloadperl-47ed9d9e89922a8e165d6dfc5737772cc5ee7a45.tar.gz
Remove POSIX isfoo() as scheduled
The functions like isalnum() have been scheduled for removal in 5.24. This does that.
Diffstat (limited to 'ext/POSIX/t')
-rw-r--r--ext/POSIX/t/is.t140
-rw-r--r--ext/POSIX/t/posix.t36
2 files changed, 1 insertions, 175 deletions
diff --git a/ext/POSIX/t/is.t b/ext/POSIX/t/is.t
deleted file mode 100644
index 1625e03542..0000000000
--- a/ext/POSIX/t/is.t
+++ /dev/null
@@ -1,140 +0,0 @@
-#!./perl -w
-
-use strict;
-use Test::More;
-use Config;
-
-BEGIN {
- plan(skip_all => "\$^O eq '$^O'") if $^O eq 'VMS';
- plan(skip_all => "POSIX is unavailable")
- unless $Config{extensions} =~ /\bPOSIX\b/;
- unshift @INC, "../../t";
- require 'loc_tools.pl';
-}
-
-use POSIX;
-
-# E.g. \t might or might not be isprint() depending on the locale,
-# so let's reset to the default.
-setlocale(LC_ALL, 'C') if locales_enabled('LC_ALL');
-
-$| = 1;
-
-# List of characters (and strings) to feed to the is<xxx> functions.
-#
-# The left-hand side (key) is a character or string.
-# The right-hand side (value) is a list of character classes to which
-# this string belongs. This is a *complete* list: any classes not
-# listed, are expected to return '0' for the given string.
-my %classes =
- (
- 'a' => [ qw(print graph alnum alpha lower xdigit) ],
- 'A' => [ qw(print graph alnum alpha upper xdigit) ],
- 'z' => [ qw(print graph alnum alpha lower) ],
- 'Z' => [ qw(print graph alnum alpha upper) ],
- '0' => [ qw(print graph alnum digit xdigit) ],
- '9' => [ qw(print graph alnum digit xdigit) ],
- '.' => [ qw(print graph punct) ],
- '?' => [ qw(print graph punct) ],
- ' ' => [ qw(print space) ],
- "\t" => [ qw(cntrl space) ],
- "\001" => [ qw(cntrl) ],
-
- # Multi-character strings. These are logically ANDed, so the
- # presence of different types of chars in one string will
- # reduce the list on the right.
- 'abc' => [ qw(print graph alnum alpha lower xdigit) ],
- 'az' => [ qw(print graph alnum alpha lower) ],
- 'aZ' => [ qw(print graph alnum alpha) ],
- 'abc ' => [ qw(print) ],
-
- '012aF' => [ qw(print graph alnum xdigit) ],
-
- " \t" => [ qw(space) ],
-
- "abcde\001" => [],
-
- # An empty string. Always true (al least in old days) [bug #24554]
- '' => [ qw(print graph alnum alpha lower upper digit xdigit
- punct cntrl space) ],
- );
-
-
-# Pass 1: convert the above arrays to hashes. While doing so, obtain
-# a complete list of all the 'is<xxx>' functions. At least, the ones
-# listed above.
-my %functions;
-foreach my $s (keys %classes) {
- $classes{$s} = { map {
- $functions{"is$_"}++; # Keep track of all the 'is<xxx>' functions
- "is$_" => 1; # Our return value: is<xxx>($s) should pass.
- } @{$classes{$s}} };
-}
-
-# Expected number of tests is one each for every combination of a
-# known is<xxx> function and string listed above.
-plan(tests => keys(%classes) * keys(%functions) + 2);
-
-# Main test loop: Run all POSIX::is<xxx> tests on each string defined above.
-# Only the character classes listed for that string should return 1. We
-# always run all functions on every string, and expect to get 0 for the
-# character classes not listed in the given string's hash value.
-#
-foreach my $s (sort keys %classes) {
- foreach my $f (sort keys %functions) {
- my $expected = exists $classes{$s}->{$f};
- my $actual = eval "no warnings 'deprecated'; POSIX::$f( \$s )";
-
- cmp_ok($actual, '==', $expected, "$f('$s')");
- }
-}
-
-{
- my @warnings;
- local $SIG {__WARN__} = sub { push @warnings, @_; };
-
- foreach (0 .. 3) {
- my $a;
- $a =POSIX::isalnum("a");
- $a =POSIX::isalpha("a");
- $a =POSIX::iscntrl("a");
- $a =POSIX::isdigit("a");
- $a =POSIX::isgraph("a");
- $a =POSIX::islower("a");
- $a =POSIX::ispunct("a");
- $a =POSIX::isspace("a");
- $a =POSIX::isupper("a");
- $a =POSIX::isxdigit("a");
- $a =POSIX::isalnum("a");
- $a =POSIX::isalpha("a");
- $a =POSIX::iscntrl("a");
- $a =POSIX::isdigit("a");
- $a =POSIX::isgraph("a");
- $a =POSIX::islower("a");
- $a =POSIX::ispunct("a");
- $a =POSIX::isspace("a");
- $a =POSIX::isupper("a");
- $a =POSIX::isxdigit("a");
- }
-
- # Each of the 10 classes should warn twice, because each has 2 lexical
- # calls
- is(scalar @warnings, 20);
-}
-
-SKIP:
-{
- # [perl #122476] - is*() could crash when threads were involved on Win32
- # this only crashed on Win32, only test there
- # When the is*() functions are removed, also remove "iscrash"
- skip("Not Win32", 1) unless $^O eq "MSWin32";
- skip("No threads", 1) unless $Config{useithreads};
- skip("No Win32API::File", 1)
- unless $Config{extensions} =~ m(\bWin32API/File\b);
-
- local $ENV{PERL5LIB} =
- join($Config{path_sep},
- map / / ? qq("$_") : $_, @INC);
- my $result = `$^X t/iscrash`;
- like($result, qr/\bok\b/, "is in threads didn't crash");
-}
diff --git a/ext/POSIX/t/posix.t b/ext/POSIX/t/posix.t
index 0e5f086be5..bd5c3009fc 100644
--- a/ext/POSIX/t/posix.t
+++ b/ext/POSIX/t/posix.t
@@ -10,7 +10,7 @@ BEGIN {
require 'loc_tools.pl';
}
-use Test::More tests => 120;
+use Test::More tests => 94;
use POSIX qw(fcntl_h signal_h limits_h _exit getcwd open read strftime write
errno localeconv dup dup2 lseek access);
@@ -308,40 +308,6 @@ is ($result, undef, "fgets should fail");
like ($@, qr/^Use method IO::Handle::gets\(\) instead/,
"check its redef message");
-{
- no warnings 'deprecated';
- # Simplistic tests for the isXXX() functions (bug #16799)
- ok( POSIX::isalnum('1'), 'isalnum' );
- ok(!POSIX::isalnum('*'), 'isalnum' );
- ok( POSIX::isalpha('f'), 'isalpha' );
- ok(!POSIX::isalpha('7'), 'isalpha' );
- ok( POSIX::iscntrl("\cA"),'iscntrl' );
- ok(!POSIX::iscntrl("A"), 'iscntrl' );
- ok( POSIX::isdigit('1'), 'isdigit' );
- ok(!POSIX::isdigit('z'), 'isdigit' );
- ok( POSIX::isgraph('@'), 'isgraph' );
- ok(!POSIX::isgraph(' '), 'isgraph' );
- ok( POSIX::islower('l'), 'islower' );
- ok(!POSIX::islower('L'), 'islower' );
- ok( POSIX::isupper('U'), 'isupper' );
- ok(!POSIX::isupper('u'), 'isupper' );
- ok( POSIX::isprint('$'), 'isprint' );
- ok(!POSIX::isprint("\n"), 'isprint' );
- ok( POSIX::ispunct('%'), 'ispunct' );
- ok(!POSIX::ispunct('u'), 'ispunct' );
- ok( POSIX::isspace("\t"), 'isspace' );
- ok(!POSIX::isspace('_'), 'isspace' );
- ok( POSIX::isxdigit('f'), 'isxdigit' );
- ok(!POSIX::isxdigit('g'), 'isxdigit' );
- # metaphysical question : what should be returned for an empty string ?
- # anyway this shouldn't segfault (bug #24554)
- ok( POSIX::isalnum(''), 'isalnum empty string' );
- ok( POSIX::isalnum(undef),'isalnum undef' );
- # those functions should stringify their arguments
- ok(!POSIX::isalpha([]), 'isalpha []' );
- ok( POSIX::isprint([]), 'isprint []' );
-}
-
eval { use strict; POSIX->import("S_ISBLK"); my $x = S_ISBLK };
unlike( $@, qr/Can't use string .* as a symbol ref/, "Can import autoloaded constants" );