#!/usr/bin/perl use strict; BEGIN { $| = 1; $^W = 1; } use Test::More tests => 13; use File::Spec::Functions ':ALL'; use File::Remove (); use Cwd (); # Create the test directories my $base = Cwd::abs_path(Cwd::cwd()); my $cwd = rel2abs(catdir('t', 'cwd')); my $foo = rel2abs(catdir('t', 'cwd', 'foo')); my $file = rel2abs(catdir('t', 'cwd', 'foo', 'bar.txt')); File::Remove::clear($cwd); mkdir($cwd,0777) or die "mkdir($cwd): $!"; mkdir($foo,0777) or die "mkdir($foo): $!"; open( FILE, ">$file" ) or die "open($file): $!"; print FILE "blah\n"; close( FILE ) or die "close($file): $!"; ok( -d $cwd, "$cwd directory exists" ); ok( -d $foo, "$foo directory exists" ); ok( -f $file, "$file file exists" ); # Test that _moveto behaves as expected SCOPE: { is( File::Remove::_moveto( File::Spec->catdir($base, 't'), # remove File::Spec->catdir($base), # cwd ), '', '_moveto returns correct for normal case', ); my $moveto1 = File::Remove::_moveto( File::Spec->catdir($base, 't'), # remove File::Spec->catdir($base, 't'), # cwd ); $moveto1 =~ s/\\/\//g; is( $moveto1, $base, '_moveto returns correct for normal case' ); my $moveto2 = File::Remove::_moveto( File::Spec->catdir($base, 't'), # remove File::Spec->catdir($base, 't', 'cwd'), # cwd ); $moveto2 =~ s/\\/\//g; is( $moveto2, $base, '_moveto returns correct for normal case' ); # Regression: _moveto generates false positives # cwd: /tmp/cpan2/PITA-Image/PITA-Image-0.50 # remove: /tmp/eBtQxTPGHC # moveto: /tmp # expected: '' is( File::Remove::_moveto( File::Spec->catdir($base, 't'), # remove File::Spec->catdir($base, 'lib', 'File'), # cwd ), '', '_moveto returns null as expected', ); } # Change the current working directory into the first # test directory and store the absolute path. chdir($cwd) or die "chdir($cwd): $!"; my $cwdabs = Cwd::abs_path(Cwd::cwd()); ok( $cwdabs =~ /\bcwd$/, "Expected abs path is $cwdabs" ); # Change into the directory that should be deleted chdir('foo') or die "chdir($foo): $!"; my $fooabs = Cwd::abs_path(Cwd::cwd()); ok( $fooabs =~ /\bfoo$/, "Deleting from abs path is $fooabs" ); # Delete the foo directory ok( File::Remove::remove(\1, $foo), "remove($foo) ok" ); # We should now be in the bottom directory again is( Cwd::abs_path(Cwd::cwd()), $cwdabs, "We are now back in the original directory" ); # Move back to the base dir and confirm everything was deleted. chdir($base) or die "chdir($base): $!"; ok( ! -e $foo, "$foo does not exist" ); ok( ! -e $file, "$file does not exist" );