add Module::Build 0.27_08
[p5sagit/p5-mst-13.2.git] / lib / Module / Build / t / tilde.t
1 #!/usr/bin/perl -w
2
3 # Test ~ expansion from command line arguments.
4
5 use strict;
6 use lib $ENV{PERL_CORE} ? '../lib/Module/Build/t/lib' : 't/lib';
7 use MBTest tests => 11;
8
9 use Cwd ();
10 my $cwd = Cwd::cwd;
11 my $tmp = File::Spec->catdir( $cwd, 't', '_tmp' );
12
13 use DistGen;
14 my $dist = DistGen->new( dir => $tmp );
15 $dist->regen;
16
17 chdir( $dist->dirname ) or die "Can't chdir to '@{[$dist->dirname]}': $!";
18
19
20 use Module::Build;
21
22 sub run_sample {
23     my @args = @_;
24
25     local $Test::Builder::Level = $Test::Builder::Level + 1;
26
27     $dist->clean;
28
29     my $mb;
30     stdout_of( sub {
31       $mb = Module::Build->new_from_context( @args );
32     } );
33
34     return $mb;
35 }
36
37
38 {
39     local $ENV{HOME} = 'home';
40
41     my $mb;
42
43     $mb = run_sample( install_base => '~' );
44     is( $mb->install_base,      $ENV{HOME} );
45
46     $mb = run_sample( install_base => '~/foo' );
47     is( $mb->install_base,      "$ENV{HOME}/foo" );
48
49     $mb = run_sample( install_base => '~~' );
50     is( $mb->install_base,      '~~' );
51
52     $mb = run_sample( install_base => 'foo~' );
53     is( $mb->install_base,      'foo~' );
54
55     $mb = run_sample( prefix => '~' );
56     is( $mb->prefix,            $ENV{HOME} );
57
58     $mb = run_sample( install_path => { html => '~/html',
59                                         lib  => '~/lib'   }
60                     );
61     is( $mb->install_destination('lib'),  "$ENV{HOME}/lib" );
62     # 'html' is translated to 'binhtml' & 'libhtml'
63     is( $mb->install_destination('binhtml'), "$ENV{HOME}/html" );
64     is( $mb->install_destination('libhtml'), "$ENV{HOME}/html" );
65
66     $mb = run_sample( install_path => { lib => '~/lib' } );
67     is( $mb->install_destination('lib'),  "$ENV{HOME}/lib" );
68
69     $mb = run_sample( destdir => '~' );
70     is( $mb->destdir,           $ENV{HOME} );
71
72     $mb->install_base('~');
73     is( $mb->install_base,      '~', 'API does not expand tildes' );
74 }
75
76
77 # cleanup
78 chdir( $cwd ) or die "Can''t chdir to '$cwd': $!";
79 $dist->remove;
80
81 use File::Path;
82 rmtree( $tmp );