diff options
author | Karl Williamson <khw@cpan.org> | 2016-02-11 20:24:37 -0700 |
---|---|---|
committer | Karl Williamson <khw@cpan.org> | 2016-02-11 20:29:08 -0700 |
commit | 47ed9d9e89922a8e165d6dfc5737772cc5ee7a45 (patch) | |
tree | 9469d65f743aabaeb8aadd4d47c15f2e4a149c75 /ext/POSIX/t | |
parent | bef74c256c389edeb1dfa9c30dc71e00d17476eb (diff) | |
download | perl-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.t | 140 | ||||
-rw-r--r-- | ext/POSIX/t/posix.t | 36 |
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" ); |