Commit | Line | Data |
635c7876 |
1 | ##!/usr/local/bin/perl -w |
2 | |
3f23e2e2 |
3 | use lib qw(t) ; |
3f23e2e2 |
4 | use strict ; |
12444d55 |
5 | use Test::More ; |
635c7876 |
6 | |
12444d55 |
7 | BEGIN { |
8 | plan skip_all => "these tests need Perl 5.5" if $] < 5.005 ; |
9 | } |
10 | |
11 | use TestDriver ; |
12 | use File::Slurp qw( :all prepend_file ) ; |
13 | |
14 | my $is_win32 = $^O =~ /cygwin|win32/i ; |
635c7876 |
15 | |
3f23e2e2 |
16 | my $file_name = 'test_file' ; |
17 | my $dir_name = 'test_dir' ; |
635c7876 |
18 | |
3f23e2e2 |
19 | my $tests = [ |
3f23e2e2 |
20 | { |
21 | name => 'read_file open error', |
22 | sub => \&read_file, |
23 | args => [ $file_name ], |
12444d55 |
24 | error => qr/open/, |
3f23e2e2 |
25 | }, |
3f23e2e2 |
26 | { |
27 | name => 'write_file open error', |
28 | sub => \&write_file, |
12444d55 |
29 | args => [ $file_name, '' ], |
30 | override => 'sysopen', |
31 | error => qr/open/, |
8ed110f9 |
32 | }, |
8ed110f9 |
33 | { |
34 | name => 'write_file syswrite error', |
35 | sub => \&write_file, |
36 | args => [ $file_name, '' ], |
12444d55 |
37 | override => 'syswrite', |
38 | posttest => sub { unlink( $file_name ) }, |
39 | error => qr/write/, |
8ed110f9 |
40 | }, |
8ed110f9 |
41 | { |
42 | name => 'read_file small sysread error', |
43 | sub => \&read_file, |
44 | args => [ $file_name ], |
12444d55 |
45 | override => 'sysread', |
46 | pretest => sub { write_file( $file_name, '' ) }, |
47 | posttest => sub { unlink( $file_name ) }, |
48 | error => qr/read/, |
8ed110f9 |
49 | }, |
8ed110f9 |
50 | { |
51 | name => 'read_file loop sysread error', |
52 | sub => \&read_file, |
53 | args => [ $file_name ], |
12444d55 |
54 | override => 'sysread', |
55 | pretest => sub { write_file( $file_name, 'x' x 100_000 ) }, |
56 | posttest => sub { unlink( $file_name ) }, |
57 | error => qr/read/, |
3f23e2e2 |
58 | }, |
3f23e2e2 |
59 | { |
60 | name => 'atomic rename error', |
12444d55 |
61 | # this test is meaningless on Win32 |
62 | skip => $is_win32, |
3f23e2e2 |
63 | sub => \&write_file, |
12444d55 |
64 | args => [ $file_name, { atomic => 1 }, '' ], |
65 | override => 'rename', |
66 | posttest => sub { "$file_name.$$" }, |
67 | error => qr/rename/, |
3f23e2e2 |
68 | }, |
3f23e2e2 |
69 | { |
8ed110f9 |
70 | name => 'read_dir opendir error', |
3f23e2e2 |
71 | sub => \&read_dir, |
72 | args => [ $dir_name ], |
12444d55 |
73 | error => qr/open/, |
74 | }, |
75 | { |
76 | name => 'prepend_file read error', |
77 | sub => \&prepend_file, |
78 | args => [ $file_name ], |
79 | error => qr/read_file/, |
3f23e2e2 |
80 | }, |
12444d55 |
81 | { |
82 | name => 'prepend_file write error', |
83 | sub => \&prepend_file, |
84 | pretest => sub { write_file( $file_name, '' ) }, |
85 | args => [ $file_name, '' ], |
86 | override => 'syswrite', |
87 | error => qr/write_file/, |
88 | posttest => sub { unlink $file_name, "$file_name.$$" }, |
89 | }, |
90 | |
3f23e2e2 |
91 | ] ; |
635c7876 |
92 | |
8ed110f9 |
93 | test_driver( $tests ) ; |
635c7876 |
94 | |
3f23e2e2 |
95 | exit ; |
635c7876 |
96 | |