diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 1999-08-14 11:31:58 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 1999-08-14 11:31:58 +0000 |
commit | fcbfa962e80dc16f8db1afaeb5287e8a393d3942 (patch) | |
tree | 8cfa988ea6f68bdb08401eda2e982f6c055213cf /t/op/lfs.t | |
parent | 6cd4fc3dff4f36289f387ad002d64474187e2fe0 (diff) | |
download | perl-fcbfa962e80dc16f8db1afaeb5287e8a393d3942.tar.gz |
Catch the case of filesize limits.
p4raw-id: //depot/cfgperl@3989
Diffstat (limited to 't/op/lfs.t')
-rw-r--r-- | t/op/lfs.t | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/t/op/lfs.t b/t/op/lfs.t index 2683a69b00..96180a1958 100644 --- a/t/op/lfs.t +++ b/t/op/lfs.t @@ -25,6 +25,20 @@ sub bye { exit(0); } +sub explain { + print STDERR <<EOM; +# +# If the lfs (large file support: large meaning larger than two gigabytes) +# tests 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. +# +# Perl may still be able to support large files, once you have +# such a process and such a file system. +# +EOM +} + # Known have-nots. if ($^O eq 'win32' || $^O eq 'vms') { print "1..0\n# no sparse files\n"; @@ -67,15 +81,21 @@ 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. -print "1..8\n"; - -my $fail = 0; - open(BIG, ">big") or do { warn "open failed: $!\n"; bye }; binmode BIG; seek(BIG, 5_000_000_000, $SEEK_SET); -print BIG "big"; -close BIG; +# 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"; + if ($! =~/File too large/) { + print "1..0\n# writing past 2GB failed\n"; + explain(); + } + bye(); +} @s = stat("big"); @@ -86,6 +106,10 @@ sub fail () { $fail++; } +print "1..8\n"; + +my $fail = 0; + fail unless $s[7] == 5_000_000_003; # exercizes pp_stat print "ok 1\n"; @@ -123,16 +147,7 @@ print "ok 7\n"; fail unless $big eq "big"; print "ok 8\n"; -if ($fail) { - print STDERR <<EOM; -# -# If the lfs (large file support) tests fail, it may mean that -# the *file system* you are running the tests on doesn't support -# large files (files larger than two gigabytes). Perl may still -# be able to support such files, once you have such a file system. -# -EOM -} +explain if $fail; bye(); |