1package MakeMaker::Test::Setup::Recurs;
2
3@ISA = qw(Exporter);
4require Exporter;
5@EXPORT = qw(setup_recurs teardown_recurs);
6
7use strict;
8use File::Path;
9use File::Basename;
10use MakeMaker::Test::Utils;
11
12my %Files = (
13             'Recurs/Makefile.PL'          => <<'END',
14use ExtUtils::MakeMaker;
15
16WriteMakefile(
17    NAME          => 'Recurs',
18    VERSION       => 1.00,
19);
20END
21
22             'Recurs/prj2/Makefile.PL'     => <<'END',
23use ExtUtils::MakeMaker;
24
25WriteMakefile(
26    NAME => 'Recurs::prj2',
27    VERSION => 1.00,
28);
29END
30            );
31
32sub setup_recurs {
33    setup_mm_test_root();
34    chdir 'MM_TEST_ROOT:[t]' if $^O eq 'VMS';
35
36    while(my($file, $text) = each %Files) {
37        # Convert to a relative, native file path.
38        $file = File::Spec->catfile(File::Spec->curdir, split m{\/}, $file);
39
40        my $dir = dirname($file);
41        mkpath $dir;
42        open(FILE, ">$file") || die "Can't create $file: $!";
43        print FILE $text;
44        close FILE;
45    }
46
47    return 1;
48}
49
50sub teardown_recurs {
51    foreach my $file (keys %Files) {
52        my $dir = dirname($file);
53        if( -e $dir ) {
54            rmtree($dir) || return;
55        }
56    }
57    return 1;
58}
59
60
611;
62