1package MakeMaker::Test::Setup::Problem; 2 3@ISA = qw(Exporter); 4require Exporter; 5@EXPORT = qw(setup_recurs teardown_recurs); 6 7use strict; 8use File::Path; 9use File::Basename; 10 11my %Files = ( 12 'Problem-Module/Makefile.PL' => <<'END', 13use ExtUtils::MakeMaker; 14 15WriteMakefile( 16 NAME => 'Problem::Module', 17); 18END 19 20 'Problem-Module/subdir/Makefile.PL' => <<'END', 21printf "\@INC %s .\n", (grep { $_ eq '.' } @INC) ? "has" : "doesn't have"; 22 23warn "I think I'm going to be sick\n"; 24die "YYYAaaaakkk\n"; 25END 26 27); 28 29 30sub setup_recurs { 31 while(my($file, $text) = each %Files) { 32 # Convert to a relative, native file path. 33 $file = File::Spec->catfile(File::Spec->curdir, split m{\/}, $file); 34 35 my $dir = dirname($file); 36 mkpath $dir; 37 open(FILE, ">$file") || die "Can't create $file: $!"; 38 print FILE $text; 39 close FILE; 40 } 41 42 return 1; 43} 44 45sub teardown_recurs { 46 foreach my $file (keys %Files) { 47 my $dir = dirname($file); 48 if( -e $dir ) { 49 rmtree($dir) || return; 50 } 51 } 52 return 1; 53} 54 55 561; 57