summaryrefslogtreecommitdiff
path: root/lib/Module/Build/t/tilde.t
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Module/Build/t/tilde.t')
-rw-r--r--lib/Module/Build/t/tilde.t82
1 files changed, 82 insertions, 0 deletions
diff --git a/lib/Module/Build/t/tilde.t b/lib/Module/Build/t/tilde.t
new file mode 100644
index 0000000000..3d42933f6d
--- /dev/null
+++ b/lib/Module/Build/t/tilde.t
@@ -0,0 +1,82 @@
+#!/usr/bin/perl -w
+
+# Test ~ expansion from command line arguments.
+
+use strict;
+use lib $ENV{PERL_CORE} ? '../lib/Module/Build/t/lib' : 't/lib';
+use MBTest tests => 11;
+
+use Cwd ();
+my $cwd = Cwd::cwd;
+my $tmp = File::Spec->catdir( $cwd, 't', '_tmp' );
+
+use DistGen;
+my $dist = DistGen->new( dir => $tmp );
+$dist->regen;
+
+chdir( $dist->dirname ) or die "Can't chdir to '@{[$dist->dirname]}': $!";
+
+
+use Module::Build;
+
+sub run_sample {
+ my @args = @_;
+
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
+
+ $dist->clean;
+
+ my $mb;
+ stdout_of( sub {
+ $mb = Module::Build->new_from_context( @args );
+ } );
+
+ return $mb;
+}
+
+
+{
+ local $ENV{HOME} = 'home';
+
+ my $mb;
+
+ $mb = run_sample( install_base => '~' );
+ is( $mb->install_base, $ENV{HOME} );
+
+ $mb = run_sample( install_base => '~/foo' );
+ is( $mb->install_base, "$ENV{HOME}/foo" );
+
+ $mb = run_sample( install_base => '~~' );
+ is( $mb->install_base, '~~' );
+
+ $mb = run_sample( install_base => 'foo~' );
+ is( $mb->install_base, 'foo~' );
+
+ $mb = run_sample( prefix => '~' );
+ is( $mb->prefix, $ENV{HOME} );
+
+ $mb = run_sample( install_path => { html => '~/html',
+ lib => '~/lib' }
+ );
+ is( $mb->install_destination('lib'), "$ENV{HOME}/lib" );
+ # 'html' is translated to 'binhtml' & 'libhtml'
+ is( $mb->install_destination('binhtml'), "$ENV{HOME}/html" );
+ is( $mb->install_destination('libhtml'), "$ENV{HOME}/html" );
+
+ $mb = run_sample( install_path => { lib => '~/lib' } );
+ is( $mb->install_destination('lib'), "$ENV{HOME}/lib" );
+
+ $mb = run_sample( destdir => '~' );
+ is( $mb->destdir, $ENV{HOME} );
+
+ $mb->install_base('~');
+ is( $mb->install_base, '~', 'API does not expand tildes' );
+}
+
+
+# cleanup
+chdir( $cwd ) or die "Can''t chdir to '$cwd': $!";
+$dist->remove;
+
+use File::Path;
+rmtree( $tmp );