Blame t/02_directories.t

Packit Service 4fa2ae
#!/usr/bin/perl
Packit Service 4fa2ae
Packit Service 4fa2ae
use strict;
Packit Service 4fa2ae
BEGIN {
Packit Service 4fa2ae
	$| = 1;
Packit Service 4fa2ae
	$^W = 1;
Packit Service 4fa2ae
}
Packit Service 4fa2ae
Packit Service 4fa2ae
use Test::More 'no_plan';
Packit Service 4fa2ae
use File::Remove qw{ remove trash };
Packit Service 4fa2ae
Packit Service 4fa2ae
Packit Service 4fa2ae
Packit Service 4fa2ae
Packit Service 4fa2ae
Packit Service 4fa2ae
# Set up the tests
Packit Service 4fa2ae
my @dirs = ("$0.tmp", map { "$0.tmp/$_" } qw(a a/b c c/d e e/f g));
Packit Service 4fa2ae
Packit Service 4fa2ae
for my $path ( reverse @dirs ) {
Packit Service 4fa2ae
	if ( -e $path ) {
Packit Service 4fa2ae
		ok( rmdir($path), "rmdir: $path" );
Packit Service 4fa2ae
		ok( !-e $path,    "!-e: $path"   );
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
}
Packit Service 4fa2ae
Packit Service 4fa2ae
for my $path ( @dirs ) {
Packit Service 4fa2ae
	ok( ! -e $path,   "!-e: $path"   );
Packit Service 4fa2ae
	ok( mkdir($path, 0777), "mkdir: $path" );
Packit Service 4fa2ae
	chmod 0777, $path;
Packit Service 4fa2ae
	ok( -e $path,     "-e: $path"    );
Packit Service 4fa2ae
}
Packit Service 4fa2ae
Packit Service 4fa2ae
for my $path (reverse @dirs) {
Packit Service 4fa2ae
	ok( -e $path,     "-e: $path"    );
Packit Service 4fa2ae
	ok( rmdir($path), "rmdir: $path" );
Packit Service 4fa2ae
	ok( !-e $path,    "!-e: $path"   );
Packit Service 4fa2ae
}
Packit Service 4fa2ae
Packit Service 4fa2ae
for my $path ( @dirs ) {
Packit Service 4fa2ae
	ok( ! -e $path,   "!-e: $path"   );
Packit Service 4fa2ae
	ok( mkdir($path, 0777), "mkdir: $path" );
Packit Service 4fa2ae
	chmod 0777, $path;
Packit Service 4fa2ae
	ok( -e $path,     "-e: $path"    );
Packit Service 4fa2ae
}
Packit Service 4fa2ae
Packit Service 4fa2ae
for my $path (reverse @dirs) {
Packit Service 4fa2ae
	ok( -e $path,          "-e: $path"         );
Packit Service 4fa2ae
	ok( remove(\1, $path), "remove \\1: $path" );
Packit Service 4fa2ae
	ok( !-e $path,         "!-e: $path"        );
Packit Service 4fa2ae
}
Packit Service 4fa2ae
Packit Service 4fa2ae
for my $path (@dirs) {
Packit Service 4fa2ae
	ok( !-e $path,    "!-e: $path"   );
Packit Service 4fa2ae
	ok( mkdir($path, 0777), "mkdir: $path" );
Packit Service 4fa2ae
	chmod 0777, $path;
Packit Service 4fa2ae
	ok( -e $path,     "-e: $path"    );
Packit Service 4fa2ae
}
Packit Service 4fa2ae
Packit Service 4fa2ae
for my $path (reverse @dirs) {
Packit Service 4fa2ae
	ok( -e $path,      "-e: $path"     );
Packit Service 4fa2ae
	ok( remove($path), "remove: $path" );
Packit Service 4fa2ae
	ok( !-e $path,     "!-e: $path"    );
Packit Service 4fa2ae
}
Packit Service 4fa2ae
Packit Service 4fa2ae
for my $path (reverse @dirs) {
Packit Service 4fa2ae
	ok( !-e $path, "-e: $path" );
Packit Service 4fa2ae
	if (-e _) {
Packit Service 4fa2ae
		ok( rmdir($path), "rmdir: $path" );
Packit Service 4fa2ae
		ok( !-e $path,    "!-e: $path"   );
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
}
Packit Service 4fa2ae
Packit Service 4fa2ae
SKIP: {
Packit Service 4fa2ae
	if ($^O eq 'darwin') {
Packit Service 4fa2ae
		eval 'use Mac::Glue ();';
Packit Service 4fa2ae
		skip "Undelete support requires Mac::Glue", 0 if length $@;
Packit Service 4fa2ae
		eval 'Mac::Glue->new("Finder")';
Packit Service 4fa2ae
		skip "Undelete support requires Mac::Glue with Finder support", 0 if length $@;
Packit Service 4fa2ae
	} elsif ($^O eq 'cygwin' || $^O =~ /^MSWin/) {
Packit Service 4fa2ae
		eval 'use Win32::FileOp::Recycle;';
Packit Service 4fa2ae
		skip "Undelete support requires Win32::FileOp::Recycle", 0 if length $@;
Packit Service 4fa2ae
	} else {
Packit Service 4fa2ae
		skip "Undelete support not available by default", 0;
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
Packit Service 4fa2ae
	for my $path (@dirs) {
Packit Service 4fa2ae
		ok( !-e $path,    "!-e: $path"   );
Packit Service 4fa2ae
		ok( mkdir($path, 0777), "mkdir: $path" );
Packit Service 4fa2ae
		chmod 0777, $path;
Packit Service 4fa2ae
		ok( -e $path,     "-e: $path"    );
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
Packit Service 4fa2ae
	for my $path (reverse @dirs) {
Packit Service 4fa2ae
		ok( -e $path,              "-e: $path"    );
Packit Service 4fa2ae
		ok( eval { trash($path) }, "trash: $path" );
Packit Service 4fa2ae
		is( $@, '',                "trash: \$@"   );
Packit Service 4fa2ae
		ok( !-e $path,             "!-e: $path"   );
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
Packit Service 4fa2ae
	for my $path (reverse @dirs) {
Packit Service 4fa2ae
		ok( !-e $path, "-e: $path" );
Packit Service 4fa2ae
		if (-e _) {
Packit Service 4fa2ae
			ok( rmdir($path), "rmdir: $path" );
Packit Service 4fa2ae
			ok( !-e $path,    "!-e: $path"   );
Packit Service 4fa2ae
		}
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
Packit Service 4fa2ae
	for my $path (@dirs) {
Packit Service 4fa2ae
		ok( !-e $path,    "!-e: $path"   );
Packit Service 4fa2ae
		ok( mkdir($path, 0777), "mkdir: $path" );
Packit Service 4fa2ae
		chmod 0777, $path;
Packit Service 4fa2ae
		ok( -e $path,     "-e: $path"    );
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
Packit Service 4fa2ae
	for my $path (reverse @dirs) {
Packit Service 4fa2ae
		ok( -e $path,      "-e: $path"     );
Packit Service 4fa2ae
		ok( remove($path), "remove: $path" );
Packit Service 4fa2ae
		ok( !-e $path,     "!-e: $path"    );
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
Packit Service 4fa2ae
	for my $path (reverse @dirs) {
Packit Service 4fa2ae
		ok( !-e $path, "-e: $path" );
Packit Service 4fa2ae
		if (-e _) {
Packit Service 4fa2ae
			ok( rmdir($path), "rmdir: $path" );
Packit Service 4fa2ae
			ok( !-e $path,    "!-e: $path"   );
Packit Service 4fa2ae
		}
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
Packit Service 4fa2ae
	for my $path (@dirs) {
Packit Service 4fa2ae
		ok( !-e $path,    "!-e: $path"   );
Packit Service 4fa2ae
		ok( mkdir($path, 0777), "mkdir: $path" );
Packit Service 4fa2ae
		chmod 0777, $path;
Packit Service 4fa2ae
		ok( -e $path,     "-e: $path"    );
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
Packit Service 4fa2ae
	for my $path (reverse @dirs) {
Packit Service 4fa2ae
		ok( -e $path, "-e: $path"        );
Packit Service 4fa2ae
		ok(
Packit Service 4fa2ae
			# Fake callbacks will not remove directories, so trash() would return empty list
Packit Service 4fa2ae
			eval { trash({ 'rmdir' => sub { 1 }, 'unlink' => sub { 1 } }, $path); 1 },
Packit Service 4fa2ae
			"trash: $path",
Packit Service 4fa2ae
		);
Packit Service 4fa2ae
		ok( -e $path, "-e: $path"        );
Packit Service 4fa2ae
		ok( rmdir($path), "rmdir: $path" );
Packit Service 4fa2ae
		ok( !-e $path, "!-e: $path"      );
Packit Service 4fa2ae
	}
Packit Service 4fa2ae
Packit Service 4fa2ae
	UNDELETE: 1;
Packit Service 4fa2ae
}