3 # Test ~ expansion from command line arguments.
6 use lib $ENV{PERL_CORE} ? '../lib/Module/Build/t/lib' : 't/lib';
7 use MBTest tests => 15;
11 my $tmp = MBTest->tmpdir;
14 my $dist = DistGen->new( dir => $tmp );
17 chdir( $dist->dirname ) or die "Can't chdir to '@{[$dist->dirname]}': $!";
25 local $Test::Builder::Level = $Test::Builder::Level + 1;
31 $mb = Module::Build->new_from_context( @args );
38 my $p = 'install_base';
41 my $home = $ENV{HOME} ? $ENV{HOME} : undef;
42 unless (defined $home) {
43 my @info = eval { getpwuid $> };
44 skip "No home directory for tilde-expansion tests", 14 if $@;
48 is( run_sample( $p => '~' )->$p(), $home );
50 is( run_sample( $p => '~/foo' )->$p(), "$home/foo" );
52 is( run_sample( $p => '~~' )->$p(), '~~' );
54 is( run_sample( $p => '~ foo' )->$p(), '~ foo' );
56 is( run_sample( $p => '~/ foo')->$p(), "$home/ foo" );
58 is( run_sample( $p => '~/fo o')->$p(), "$home/fo o" );
60 is( run_sample( $p => 'foo~' )->$p(), 'foo~' );
62 is( run_sample( prefix => '~' )->prefix,
65 my $mb = run_sample( install_path => { html => '~/html',
68 is( $mb->install_destination('lib'), "$home/lib" );
69 # 'html' is translated to 'binhtml' & 'libhtml'
70 is( $mb->install_destination('binhtml'), "$home/html" );
71 is( $mb->install_destination('libhtml'), "$home/html" );
73 $mb = run_sample( install_path => { lib => '~/lib' } );
74 is( $mb->install_destination('lib'), "$home/lib" );
76 $mb = run_sample( destdir => '~' );
77 is( $mb->destdir, $home );
80 is( $mb->$p(), '~', 'API does not expand tildes' );
83 # Again, with named users
85 my @info = eval { getpwuid $> };
86 skip "No home directory for tilde-expansion tests", 1 if $@;
87 my ($me, $home) = @info[0,7];
89 is( run_sample( $p => "~$me/foo")->$p(), "$home/foo" );
94 chdir( $cwd ) or die "Can''t chdir to '$cwd': $!";