From: Michael G. Schwern Date: Mon, 11 Jul 2005 18:45:42 +0000 (-0700) Subject: Cleanup File::Copy tests X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=83519ebf741b18d4584f441b54b093db74aea412;p=p5sagit%2Fp5-mst-13.2.git Cleanup File::Copy tests Message-ID: <20050712014542.GB20855@windhund.schwern.org> (and fix the SKIP: {} blocks to say $how_many) p4raw-id: //depot/perl@25121 --- diff --git a/lib/File/Copy.t b/lib/File/Copy.t index 0fcc130..557a0e1 100755 --- a/lib/File/Copy.t +++ b/lib/File/Copy.t @@ -3,26 +3,23 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; - push @INC, "::lib:$MacPerl::Architecture" if $^O eq 'MacOS'; } -$| = 1; +use Test::More; -my @pass = (0,1); -my $tests = $^O eq 'MacOS' ? 17 : 14; -printf "1..%d\n", $tests * scalar(@pass); +my $TB = Test::More->builder; + +plan tests => 46; use File::Copy; use Config; -for my $pass (@pass) { - - my $loopconst = $pass*$tests; +for (1..2) { # First we create a file open(F, ">file-$$") or die; binmode F; # for DOSISH platforms, because test 3 copies to stdout - printf F "ok %d\n", 3 + $loopconst; + printf F "ok\n"; close F; copy "file-$$", "copy-$$"; @@ -31,28 +28,27 @@ for my $pass (@pass) { $foo = ; close(F); - print "not " if -s "file-$$" != -s "copy-$$"; - printf "ok %d\n", 1 + $loopconst; + is -s "file-$$", -s "copy-$$"; - print "not " unless $foo eq sprintf "ok %d\n", 3+$loopconst; - printf "ok %d\n", 2+$loopconst; + is $foo, "ok\n"; binmode STDOUT unless $^O eq 'VMS'; # Copy::copy works in binary mode + # This outputs "ok" so its a test. copy "copy-$$", \*STDOUT; + $TB->current_test($TB->current_test + 1); unlink "copy-$$" or die "unlink: $!"; open(F,"file-$$"); copy(*F, "copy-$$"); open(R, "copy-$$") or die "open copy-$$: $!"; $foo = ; close(R); - print "not " unless $foo eq sprintf "ok %d\n", 3+$loopconst; - printf "ok %d\n", 4+$loopconst; + is $foo, "ok\n"; unlink "copy-$$" or die "unlink: $!"; + open(F,"file-$$"); copy(\*F, "copy-$$"); close(F) or die "close: $!"; open(R, "copy-$$") or die; $foo = ; close(R) or die "close: $!"; - print "not " unless $foo eq sprintf "ok %d\n", 3+$loopconst; - printf "ok %d\n", 5+$loopconst; + is $foo, "ok\n"; unlink "copy-$$" or die "unlink: $!"; require IO::File; @@ -61,124 +57,78 @@ for my $pass (@pass) { copy("file-$$",$fh); $fh->close or die "close: $!"; open(R, "copy-$$") or die; $foo = ; close(R); - print "# foo=`$foo'\nnot " unless $foo eq sprintf "ok %d\n", 3+$loopconst; - printf "ok %d\n", 6+$loopconst; + is $foo, "ok\n"; unlink "copy-$$" or die "unlink: $!"; + require FileHandle; my $fh = FileHandle->new(">copy-$$") or die "Cannot open copy-$$:$!"; binmode $fh or die; copy("file-$$",$fh); $fh->close; open(R, "copy-$$") or die; $foo = ; close(R); - print "not " unless $foo eq sprintf "ok %d\n", 3+$loopconst; - printf "ok %d\n", 7+$loopconst; + is $foo, "ok\n"; unlink "file-$$" or die "unlink: $!"; - print "# moved missing file.\nnot " if move("file-$$", "copy-$$"); - print "# target disappeared.\nnot " if not -e "copy-$$"; - printf "ok %d\n", 8+$loopconst; + ok !move("file-$$", "copy-$$"), "move on missing file"; + ok -e "copy-$$", ' target still there'; - move "copy-$$", "file-$$" or print "# move did not succeed.\n"; - print "# not moved: $!\nnot " unless -e "file-$$" and not -e "copy-$$"; + ok move "copy-$$", "file-$$", 'move'; + ok -e "file-$$", ' destination exists'; + ok !-e "copy-$$", ' source does not'; open(R, "file-$$") or die; $foo = ; close(R); - print "# foo=`$foo'\nnot " unless $foo eq sprintf "ok %d\n", 3+$loopconst; - printf "ok %d\n", 9+$loopconst; - - my $test_i; - if ($^O eq 'MacOS') { - - copy "file-$$", "lib"; - open(R, ":lib:file-$$") or die; $foo = ; close(R); - print "not " unless $foo eq sprintf "ok %d\n", 3+$loopconst; - printf "ok %d\n", 10+$loopconst; - unlink ":lib:file-$$" or die "unlink: $!"; - - copy "file-$$", ":lib"; - open(R, ":lib:file-$$") or die; $foo = ; close(R); - print "not " unless $foo eq sprintf "ok %d\n", 3+$loopconst; - printf "ok %d\n", 11+$loopconst; - unlink ":lib:file-$$" or die "unlink: $!"; - - copy "file-$$", ":lib:"; - open(R, ":lib:file-$$") or die; $foo = ; close(R); - print "not " unless $foo eq sprintf "ok %d\n", 3+$loopconst; - printf "ok %d\n", 12+$loopconst; - unlink ":lib:file-$$" or die "unlink: $!"; - - unless (-e 'lib:') { # make sure there's no volume called 'lib' - undef $@; - eval { (copy "file-$$", "lib:") || die "'lib:' is not a volume name"; }; - print "# Died: $@"; - print "not " unless ( $@ =~ m|'lib:' is not a volume name| ); - } - printf "ok %d\n", 13+$loopconst; - - move "file-$$", ":lib:"; - open(R, ":lib:file-$$") or die "open :lib:file-$$: $!"; $foo = ; close(R); - print "not " unless $foo eq sprintf("ok %d\n", 3+$loopconst) - and not -e "file-$$";; - printf "ok %d\n", 14+$loopconst; - - eval { copy("copy-$$", "copy-$$") }; - printf "ok %d\n", 15+$loopconst - unless $@ =~ /are identical/ && -s "copy-$$"; - - unlink ":lib:file-$$" or die "unlink: $!"; - - $test_i = 15; - } else { - - copy "file-$$", "lib"; - open(R, "lib/file-$$") or die; $foo = ; close(R); - print "not " unless $foo eq sprintf "ok %d\n", 3+$loopconst; - printf "ok %d\n", 10+$loopconst; - unlink "lib/file-$$" or die "unlink: $!"; - - move "file-$$", "lib"; - open(R, "lib/file-$$") or die "open lib/file-$$: $!"; $foo = ; close(R); - print "not " unless $foo eq sprintf("ok %d\n", 3+$loopconst) - and not -e "file-$$";; - printf "ok %d\n", 11+$loopconst; - - eval { copy("copy-$$", "copy-$$") }; - printf "ok %d\n", 12+$loopconst - unless $@ =~ /are identical/ && -s "copy-$$"; - - unlink "lib/file-$$" or die "unlink: $!"; - - $test_i = 12; - } + is $foo, "ok\n"; + + copy "file-$$", "lib"; + open(R, "lib/file-$$") or die; $foo = ; close(R); + is $foo, "ok\n"; + unlink "lib/file-$$" or die "unlink: $!"; + + # Do it twice to ensure copying over the same file works. + copy "file-$$", "lib"; + open(R, "lib/file-$$") or die; $foo = ; close(R); + is $foo, "ok\n"; + unlink "lib/file-$$" or die "unlink: $!"; + + eval { copy("file-$$", "file-$$") }; + like $@, qr/are identical/; + ok -s "file-$$"; + + move "file-$$", "lib"; + open(R, "lib/file-$$") or die "open lib/file-$$: $!"; $foo = ; close(R); + is $foo, "ok\n"; + ok !-e "file-$$"; + unlink "lib/file-$$" or die "unlink: $!"; + + SKIP: { + skip "Testing symlinks", 2 unless $Config{d_symlink}; - if ($Config{d_symlink}) { open(F, ">file-$$") or die $!; print F "dummy content\n"; close F; symlink("file-$$", "symlink-$$") or die $!; eval { copy("file-$$", "symlink-$$") }; - print "not " if $@ !~ /are identical/ || -z "file-$$"; - printf "ok %d\n", (++$test_i)+$loopconst; + like $@, qr/are identical/; + ok !-z "file-$$", + 'rt.perl.org 5196: copying to itself would truncate the file'; + unlink "symlink-$$"; unlink "file-$$"; - } else { - printf "ok %d # Skipped: no symlinks on this platform\n", (++$test_i)+$loopconst; } - if ($Config{d_link}) { - if ($^O ne 'MSWin32') { - open(F, ">file-$$") or die $!; - print F "dummy content\n"; - close F; - link("file-$$", "hardlink-$$") or die $!; - eval { copy("file-$$", "hardlink-$$") }; - print "not " if $@ !~ /are identical/ || -z "file-$$"; - printf "ok %d\n", (++$test_i)+$loopconst; - unlink "hardlink-$$"; - unlink "file-$$"; - } else { - printf "ok %d # Skipped: can't test hardlinks on MSWin32\n", (++$test_i)+$loopconst; - } - } else { - printf "ok %d # Skipped: no hardlinks on this platform\n", (++$test_i)+$loopconst; + SKIP: { + skip "Testing hard links", 2 if !$Config{d_link} or $^O eq 'MSWin32'; + + open(F, ">file-$$") or die $!; + print F "dummy content\n"; + close F; + link("file-$$", "hardlink-$$") or die $!; + eval { copy("file-$$", "hardlink-$$") }; + like $@, qr/are identical/; + ok ! -z "file-$$", + 'rt.perl.org 5196: copying to itself would truncate the file'; + + unlink "hardlink-$$"; + unlink "file-$$"; } } @@ -186,9 +136,5 @@ for my $pass (@pass) { END { 1 while unlink "file-$$"; - if ($^O eq 'MacOS') { - 1 while unlink ":lib:file-$$"; - } else { - 1 while unlink "lib/file-$$"; - } + 1 while unlink "lib/file-$$"; }