diff options
Diffstat (limited to 't')
-rw-r--r-- | t/test.pl | 7 | ||||
-rw-r--r-- | t/test_pl/can_isa_ok.t | 6 | ||||
-rw-r--r-- | t/test_pl/plan_skip_all.t | 6 | ||||
-rw-r--r-- | t/test_pl/tempfile.t | 24 |
4 files changed, 32 insertions, 11 deletions
@@ -1001,8 +1001,8 @@ sub _num_to_alpha { $max_char = 0 if !defined($max_char) or $max_char < 0; while( 1 ){ - $alpha = $letters[ $num % 26 ] . $alpha; - $num = int( $num / 26 ); + $alpha = $letters[ $num % @letters ] . $alpha; + $num = int( $num / @letters ); last if $num == 0; $num = $num - 1; @@ -1033,6 +1033,9 @@ $::tempfile_regexp = 'tmp_[A-Z]+_[A-Z]+'; # Avoid ++, avoid ranges, avoid split // my $tempfile_count = 0; my $max_file_chars = 3; +# Note that the max number of is NOT 26**3, it is 26**3 + 26**2 + 26, +# as 3 character files are distinct from 2 character files, from 1 characters +# files, etc. sub tempfile { # if you change the format returned by tempfile() you MUST change # the $::tempfile_regex define above. diff --git a/t/test_pl/can_isa_ok.t b/t/test_pl/can_isa_ok.t index 081d3e563b..5e18ba94d8 100644 --- a/t/test_pl/can_isa_ok.t +++ b/t/test_pl/can_isa_ok.t @@ -5,7 +5,11 @@ use strict; use warnings; -BEGIN { require "test.pl"; } +BEGIN { + chdir 't' if -d 't'; + push @INC, "."; + require 'test.pl'; +} require Test::More; diff --git a/t/test_pl/plan_skip_all.t b/t/test_pl/plan_skip_all.t index fddb8f0c66..66c39eb901 100644 --- a/t/test_pl/plan_skip_all.t +++ b/t/test_pl/plan_skip_all.t @@ -2,6 +2,10 @@ use strict; use warnings; -BEGIN { require "test.pl"; } +BEGIN { + chdir 't' if -d 't'; + push @INC, "."; + require 'test.pl'; +} plan skip_all => "Test Test::More compatible plan skip_all => \$foo"; diff --git a/t/test_pl/tempfile.t b/t/test_pl/tempfile.t index d507d60642..f35738bfae 100644 --- a/t/test_pl/tempfile.t +++ b/t/test_pl/tempfile.t @@ -2,11 +2,14 @@ BEGIN { chdir 't' if -d 't'; - require './test.pl'; + push @INC, "."; + push @INC, "../lib"; + require 'test.pl'; } + use strict; -my $prefix = 'tmp'.$$; +my $prefix = 'tmp_'._num_to_alpha($$)."_"; sub skip_files{ my($skip,$to,$next) = @_; @@ -29,7 +32,7 @@ sub skip_files{ if( $check eq $cmp ){ pass( $common_mess ); }else{ - my($alpha) = $check =~ /\Atmp\d+([A-Z][A-Z]?)\Z/; + my($alpha) = $check =~ /\Atmp_[A-Z]+_([A-Z]+)\Z/; fail( $common_mess ); diag( "only skipped to $alpha" ); } @@ -68,12 +71,15 @@ skip_files(24,'AY','AZ'); is( tempfile(), "${prefix}AZ"); is( tempfile(), "${prefix}BA"); -skip_files(26 * 24 + 24,'ZY','ZZ'); +# note that 3 character suffixes are distinct from 2 character suffixes, +# which are distinct from 1 character suffixes. Thus 18278 files max for +# a 3 character suffix max. +skip_files((26 * 26 * 26) + (26*24 + 24) ,'ZZY','ZZZ'); -is( tempfile(), "${prefix}ZZ", 'Last available filename'); +is( tempfile(), "${prefix}ZZZ", 'Last available filename'); ok( !eval{tempfile()}, 'Should bail after Last available filename' ); my $err = "$@"; -like( $err, qr{^Can't find temporary file name starting}, 'check error string' ); +like( $err, qr{^panic: Too many tempfile\(\)s}, 'check error string' ); { my $returned = runperl( progs => [ @@ -82,11 +88,15 @@ like( $err, qr{^Can't find temporary file name starting}, 'check error string' ) 'print qq[$t|];', 'print open(FH,q[>],$t) ? qq[ok|] : qq[not ok|] ;', 'print -e $t ? qq[ok|] : qq[not ok|];', + 'print close(FH) ? qq[ok] : qq[not ok];', # see comment below ] ); - my($filename,$opened,$existed) = split /\|/, $returned; + # NOTE, on Win32 we cannot unlink an open file, so we MUST + # close the file before the program exits. + my($filename,$opened,$existed,$closed) = split /\|/, $returned; is( $opened, 'ok', "$filename created" ); is( $existed, 'ok', "$filename did exist" ); + is( $closed, 'ok', "$filename was closed" ); ok( !-e $filename, "$filename doesn't exist now" ); } |