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