… | |
… | |
5 | use POSIX qw(ENOENT EACCES EBADF); |
5 | use POSIX qw(ENOENT EACCES EBADF); |
6 | use FindBin; |
6 | use FindBin; |
7 | use lib "$FindBin::Bin"; |
7 | use lib "$FindBin::Bin"; |
8 | use aio_test_common; |
8 | use aio_test_common; |
9 | |
9 | |
10 | BEGIN { plan tests => 13 } |
10 | BEGIN { plan tests => 12 } |
11 | |
11 | |
12 | IO::AIO::min_parallel 2; |
12 | IO::AIO::min_parallel 2; |
13 | |
13 | |
14 | my $tempdir = tempdir(); |
14 | my $tempdir = tempdir(); |
15 | |
15 | |
… | |
… | |
41 | }; |
41 | }; |
42 | pcb; |
42 | pcb; |
43 | |
43 | |
44 | # write to file open for reading |
44 | # write to file open for reading |
45 | ok(open(F, $some_file)) or die $!; |
45 | ok(open(F, $some_file)) or die $!; |
46 | aio_write *F, 0, 10, "foobarbaz.", 0, sub { |
46 | eval { aio_write *F, 0, 10, "foobarbaz.", 0, sub { ok (0) } }; |
47 | my $written = shift; |
47 | ok ($@ =~ /mode mismatch/); |
48 | ok($written < 0); |
|
|
49 | ok($! == EBADF); |
|
|
50 | }; |
|
|
51 | pcb; |
48 | pcb; |
52 | |
49 | |
53 | close F; |
50 | close F; |
54 | |
51 | |
55 | aio_symlink "\\test\\", $some_link, sub { |
52 | aio_symlink "\\test\\", $some_link, sub { |
|
|
53 | if ($^O eq "cygwin") { |
|
|
54 | ok (1); |
|
|
55 | ok (1); |
|
|
56 | } else { |
56 | ok (!$_[0]); |
57 | ok (!$_[0]); |
57 | ok ("\\test\\" eq readlink $some_link); |
58 | ok ("\\test\\" eq readlink $some_link); |
|
|
59 | } |
58 | }; |
60 | }; |
59 | pcb; |
61 | pcb; |
60 | unlink $some_link; |
62 | unlink $some_link; |
61 | |
63 | |
62 | # test unlinking and rmdir, also test order of these |
64 | # test unlinking and rmdir |
63 | aio_unlink $some_file, sub { |
65 | aio_unlink $some_file, sub { |
64 | ok (!shift); |
66 | ok (!shift); |
65 | }; |
67 | }; |
|
|
68 | pcb; |
66 | aio_rmdir $some_dir, sub { |
69 | aio_rmdir $some_dir, sub { |
67 | ok (!shift); |
70 | ok (!shift); |
68 | }; |
71 | }; |
69 | pcb; |
72 | pcb; |
70 | |
73 | |