… | |
… | |
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 => 9 } |
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 | |
16 | my $some_dir = "$tempdir/some_dir/"; |
16 | my $some_dir = "$tempdir/some_dir"; |
17 | my $some_file = "$some_dir/some_file"; |
17 | my $some_file = "$some_dir/some_file"; |
|
|
18 | my $some_link = "$some_dir/some_link"; |
18 | |
19 | |
19 | # create a file in a non-existent directory |
20 | # create a file in a non-existent directory |
20 | aio_open $some_file, O_RDWR|O_CREAT|O_TRUNC, 0, sub { |
21 | aio_open $some_file, O_RDWR|O_CREAT|O_TRUNC, 0, sub { |
21 | ok((!defined $_[0]) && $! == ENOENT); |
22 | ok((!defined $_[0]) && $! == ENOENT); |
22 | }; |
23 | }; |
… | |
… | |
26 | ok(mkdir $some_dir); |
27 | ok(mkdir $some_dir); |
27 | aio_open $some_file, O_RDWR|O_CREAT|O_TRUNC, 0644, sub { |
28 | aio_open $some_file, O_RDWR|O_CREAT|O_TRUNC, 0644, sub { |
28 | my $fh = shift; |
29 | my $fh = shift; |
29 | ok(defined $fh); |
30 | ok(defined $fh); |
30 | print $fh "contents."; |
31 | print $fh "contents."; |
|
|
32 | ok(-e $some_file); |
31 | close $fh; |
33 | close $fh; |
32 | ok(-e $some_file); |
|
|
33 | }; |
34 | }; |
34 | pcb; |
35 | pcb; |
35 | |
36 | |
36 | # test error on unlinking non-empty directory |
37 | # test error on unlinking nonexistent file |
37 | aio_unlink "$some_dir/notfound.txt", sub { |
38 | aio_unlink "$some_dir/notfound.txt", sub { |
38 | ok($_[0] < 0); |
39 | ok($_[0] < 0); |
39 | ok($! == ENOENT); |
40 | ok($! == ENOENT); |
40 | }; |
41 | }; |
41 | pcb; |
42 | pcb; |
42 | |
43 | |
43 | # write to file open for reading |
44 | # write to file open for reading |
44 | ok(open(F, $some_file)) or die $!; |
45 | ok(open(F, $some_file)) or die $!; |
45 | aio_write *F, 0, 10, "foobarbaz.", 0, sub { |
46 | eval { aio_write *F, 0, 10, "foobarbaz.", 0, sub { ok (0) } }; |
46 | my $written = shift; |
47 | ok ($@ =~ /mode mismatch/); |
47 | ok($written < 0); |
48 | pcb; |
48 | ok($! == EBADF); |
49 | |
|
|
50 | close F; |
|
|
51 | |
|
|
52 | aio_symlink "\\test\\", $some_link, sub { |
|
|
53 | ok (!$_[0]); |
|
|
54 | ok ("\\test\\" eq readlink $some_link); |
49 | }; |
55 | }; |
|
|
56 | pcb; |
|
|
57 | unlink $some_link; |
|
|
58 | |
|
|
59 | # test unlinking and rmdir |
|
|
60 | aio_unlink $some_file, sub { |
|
|
61 | ok (!shift); |
|
|
62 | }; |
|
|
63 | pcb; |
|
|
64 | aio_rmdir $some_dir, sub { |
|
|
65 | ok (!shift); |
|
|
66 | }; |
|
|
67 | pcb; |
50 | |
68 | |
51 | |
69 | |
52 | |
70 | |
53 | |
|
|