File: err-rw.t

package info (click to toggle)
libio-stream-perl 2.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 332 kB
  • sloc: perl: 775; makefile: 7
file content (70 lines) | stat: -rw-r--r-- 1,534 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
# errors in sysread/syswrite
use warnings;
use strict;
use lib 't';
use share;

use Config;
plan skip_all => 'unstable on CPAN Testers (libev crashes)'
    if !$ENV{RELEASE_TESTING}
    && ($ENV{AUTOMATED_TESTING} || $ENV{PERL_CPAN_REPORTER_CONFIG})
    && $Config{osname} eq 'MSWin32' && $Config{osvers} eq '6.3';


@CheckPoint = (
    {
	win32 => [
	    [ 'reader', 0, EBADF		    ], 'reader: Bad file descriptor',
	    {
		unknown => [
		    [ 'writer', 0, 'Unknown error'  ], 'writer: Unknown error',
		],
		aborted => [
		    [ 'writer', 0, ECONNABORTED     ], 'writer: established connection was aborted',
		],
	    },
	    [ 'writer', 0, EBADF		    ], 'writer: Bad file descriptor',
	],
	other => [
	    [ 'writer', 0, EPIPE		    ], 'writer: Broken pipe',
	    [ 'writer', 0, EBADF		    ], 'writer: Bad file descriptor',
	    [ 'reader', 0, EBADF		    ], 'reader: Bad file descriptor',
	],
    },
);
plan tests => checkpoint_count();

socketpair my $server, my $client, AF_UNIX, SOCK_STREAM, PF_UNSPEC or die "socketpair: $!";
nonblocking($server);
nonblocking($client);

my $r = IO::Stream->new({
    fh		=> $server,
    cb		=> \&reader,
    wait_for	=> 0,
});
close $server;

my $w = IO::Stream->new({
    fh		=> $client,
    cb		=> \&writer,
    wait_for	=> 0,
});
$w->write('x' x 204800);
EV::loop;
EV::loop;


sub writer {
    my ($io, $e, $err) = @_;
    checkpoint($e, 0+$err);
    $io->close();
    EV::unloop;
}

sub reader {
    my ($io, $e, $err) = @_;
    checkpoint($e, 0+$err);
    $io->close();
    EV::unloop;
}