10 my $TB = Test::More->builder;
19 # First we create a file
20 open(F, ">file-$$") or die;
21 binmode F; # for DOSISH platforms, because test 3 copies to stdout
25 copy "file-$$", "copy-$$";
27 open(F, "copy-$$") or die;
31 is -s "file-$$", -s "copy-$$";
35 binmode STDOUT unless $^O eq 'VMS'; # Copy::copy works in binary mode
36 # This outputs "ok" so its a test.
37 copy "copy-$$", \*STDOUT;
38 $TB->current_test($TB->current_test + 1);
39 unlink "copy-$$" or die "unlink: $!";
43 open(R, "copy-$$") or die "open copy-$$: $!"; $foo = <R>; close(R);
45 unlink "copy-$$" or die "unlink: $!";
49 close(F) or die "close: $!";
50 open(R, "copy-$$") or die; $foo = <R>; close(R) or die "close: $!";
52 unlink "copy-$$" or die "unlink: $!";
55 $fh = IO::File->new(">copy-$$") or die "Cannot open copy-$$:$!";
58 $fh->close or die "close: $!";
59 open(R, "copy-$$") or die; $foo = <R>; close(R);
61 unlink "copy-$$" or die "unlink: $!";
64 my $fh = FileHandle->new(">copy-$$") or die "Cannot open copy-$$:$!";
68 open(R, "copy-$$") or die; $foo = <R>; close(R);
70 unlink "file-$$" or die "unlink: $!";
72 ok !move("file-$$", "copy-$$"), "move on missing file";
73 ok -e "copy-$$", ' target still there';
75 ok move "copy-$$", "file-$$", 'move';
76 ok -e "file-$$", ' destination exists';
77 ok !-e "copy-$$", ' source does not';
78 open(R, "file-$$") or die; $foo = <R>; close(R);
81 copy "file-$$", "lib";
82 open(R, "lib/file-$$") or die; $foo = <R>; close(R);
84 unlink "lib/file-$$" or die "unlink: $!";
86 # Do it twice to ensure copying over the same file works.
87 copy "file-$$", "lib";
88 open(R, "lib/file-$$") or die; $foo = <R>; close(R);
90 unlink "lib/file-$$" or die "unlink: $!";
92 eval { copy("file-$$", "file-$$") };
93 like $@, qr/are identical/;
96 move "file-$$", "lib";
97 open(R, "lib/file-$$") or die "open lib/file-$$: $!"; $foo = <R>; close(R);
100 unlink "lib/file-$$" or die "unlink: $!";
103 skip "Testing symlinks", 2 unless $Config{d_symlink};
105 open(F, ">file-$$") or die $!;
106 print F "dummy content\n";
108 symlink("file-$$", "symlink-$$") or die $!;
109 eval { copy("file-$$", "symlink-$$") };
110 like $@, qr/are identical/;
112 'rt.perl.org 5196: copying to itself would truncate the file';
119 skip "Testing hard links", 2 if !$Config{d_link} or $^O eq 'MSWin32';
121 open(F, ">file-$$") or die $!;
122 print F "dummy content\n";
124 link("file-$$", "hardlink-$$") or die $!;
125 eval { copy("file-$$", "hardlink-$$") };
126 like $@, qr/are identical/;
128 'rt.perl.org 5196: copying to itself would truncate the file';
130 unlink "hardlink-$$";
138 1 while unlink "file-$$";
139 1 while unlink "lib/file-$$";