File: 07_handle.t

package info (click to toggle)
libparams-util-perl 1.102-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,044 kB
  • sloc: perl: 5,398; makefile: 3
file content (94 lines) | stat: -rw-r--r-- 2,117 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/perl

use strict;

BEGIN
{
    $|  = 1;
    $^W = 1;
    $ENV{PERL_PARAMS_UTIL_PP} ||= 1;
}

use Test::More tests => 23;
use File::Spec::Functions ':ALL';

BEGIN
{
    ok(!defined &_HANDLE, '_HANDLE does not exist');
    use_ok('Params::Util', qw(_HANDLE));
    ok(defined &_HANDLE, '_HANDLE imported ok');
}

# Import refaddr to make certain we have it
use Scalar::Util 'refaddr';

#####################################################################
# Preparing

my $readfile = catfile('t', 'handles', 'readfile.txt');
ok(-f $readfile, "$readfile exists");
my $writefile = catfile('t', 'handles', 'writefile.txt');
if (-f $writefile) { unlink $writefile }

END
{
    if (-f $writefile) { unlink $writefile }
}
ok(!-e $writefile, "$writefile does not exist");

sub is_handle
{
    my $maybe   = shift;
    my $message = shift || 'Is a file handle';
    my $result  = _HANDLE($maybe);
    ok(defined $result, '_HANDLE does not return undef');
    is(refaddr($result), refaddr($maybe), '_HANDLE returns the passed value');
}

sub not_handle
{
    my $maybe   = shift;
    my $message = shift || 'Is not a file handle';
    my $result  = _HANDLE($maybe);
    ok(!defined $result, '_HANDLE returns undef');
}

#####################################################################
# Basic Filesystem Handles

# A read filehandle
SCOPE:
{
    local *HANDLE;
    open(HANDLE, $readfile);
    is_handle(\*HANDLE, 'Ordinary read filehandle');
    close HANDLE;
}

# A write filehandle
SCOPE:
{
    local *HANDLE;
    open(HANDLE, "> $readfile");
    is_handle(\*HANDLE, 'Ordinary read filehandle');
    print HANDLE "A write filehandle";
    close HANDLE;
    if (-f $writefile) { unlink $writefile }
}

# On 5.8+ the new style filehandle
SKIP:
{
    skip("Skipping 5.8-style 'my \$fh' handles", 2) if $] < 5.008;
    open(my $handle, $readfile);
    is_handle($handle, '5.8-style read filehandle');
}

#####################################################################
# Things that are not file handles

foreach (undef, '', ' ', 'foo', 1, 0, -1, 1.23, [], {}, \'', bless({}, "foo"))
{
    not_handle($_);
}