diff options
Diffstat (limited to 't/op/lfs.t')
-rw-r--r-- | t/op/lfs.t | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/t/op/lfs.t b/t/op/lfs.t index ae6aac6079..af7853b270 100644 --- a/t/op/lfs.t +++ b/t/op/lfs.t @@ -29,13 +29,15 @@ sub explain { print <<EOM; # # If the lfs (large file support: large meaning larger than two gigabytes) -# tests are skipped or fail, it may mean either that your process is not -# allowed to write large files or that the file system you are running -# the tests on doesn't support large files, or both. You may also need -# to reconfigure your kernel. (This is all very system-dependent.) +# tests are skipped or fail, it may mean either that your process +# (or process group) is not allowed to write large files (resource +# limits) or that the file system you are running the tests on doesn't +# let your user/group have large files (quota) or the filesystem simply +# doesn't support large files. You may even need to reconfigure your kernel. +# (This is all very operating system and site-dependent.) # # Perl may still be able to support large files, once you have -# such a process and such a (file) system. +# such a process, enough quota, and such a (file) system. # EOM } @@ -82,15 +84,22 @@ unless (@s == 13 && # By now we better be sure that we do have sparse files: # if we are not, the following will hog 5 gigabytes of disk. Ooops. +$ENV{LC_ALL} = "C"; + open(BIG, ">big") or do { warn "open failed: $!\n"; bye }; binmode BIG; seek(BIG, 5_000_000_000, $SEEK_SET); + # Either the print or (more likely, thanks to buffering) the close will # fail if there are are filesize limitations (process or fs). my $print = print BIG "big"; my $close = close BIG if $print; unless ($print && $close) { - $ENV{LC_ALL} = "C"; + unless ($print) { + print "# print failed: $!\n" + } else { + print "# close failed: $!\n" + } if ($! =~/File too large/) { print "1..0\n# writing past 2GB failed\n"; explain(); |