added tests for edit_file and edit_file_lines
[urisagit/Perl-Docs.git] / t / error.t
CommitLineData
635c7876 1##!/usr/local/bin/perl -w
2
3f23e2e2 3use lib qw(t) ;
3f23e2e2 4use strict ;
12444d55 5use Test::More ;
635c7876 6
12444d55 7BEGIN {
8 plan skip_all => "these tests need Perl 5.5" if $] < 5.005 ;
9}
10
11use TestDriver ;
d0834228 12use File::Slurp qw( :all prepend_file edit_file ) ;
12444d55 13
14my $is_win32 = $^O =~ /cygwin|win32/i ;
635c7876 15
3f23e2e2 16my $file_name = 'test_file' ;
17my $dir_name = 'test_dir' ;
635c7876 18
3f23e2e2 19my $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 },
d0834228 90 {
91 name => 'edit_file read error',
92 sub => \&edit_file,
93 args => [ sub{}, $file_name ],
94 error => qr/read_file/,
95 },
96 {
97 name => 'edit_file write error',
98 sub => \&edit_file,
99 pretest => sub { write_file( $file_name, '' ) },
100 args => [ sub{}, $file_name ],
101 override => 'syswrite',
102 error => qr/write_file/,
103 posttest => sub { unlink $file_name, "$file_name.$$" },
104 },
105 {
106 name => 'edit_file_lines read error',
107 sub => \&edit_file_lines,
108 args => [ sub{}, $file_name ],
109 error => qr/read_file/,
110 },
111 {
112 name => 'edit_file_lines write error',
113 sub => \&edit_file_lines,
114 pretest => sub { write_file( $file_name, '' ) },
115 args => [ sub{}, $file_name ],
116 override => 'syswrite',
117 error => qr/write_file/,
118 posttest => sub { unlink $file_name, "$file_name.$$" },
119 },
3f23e2e2 120] ;
635c7876 121
8ed110f9 122test_driver( $tests ) ;
635c7876 123
3f23e2e2 124exit ;
635c7876 125