Author: ericwilhelm
Date: Sat Apr 14 11:30:42 2007
New Revision: 9408
Modified:
Module-Build/trunk/lib/Module/Build/Base.pm
Module-Build/trunk/t/tilde.t
Log:
t/tilde.t - reinstated the ~~ test and some similarly
pathological ones
lib/Module/Build/Base.pm - _detildefy uses regexp, not glob()
Modified: Module-Build/trunk/lib/Module/Build/Base.pm
==============================================================================
--- Module-Build/trunk/lib/Module/Build/Base.pm (original)
+++ Module-Build/trunk/lib/Module/Build/Base.pm Sat Apr 14 11:30:42 2007
@@ -1677,10 +1677,13 @@
}
+# replace ~ with $ENV{HOME}
+# (bash shell won't expand tildes mid-word: "--foo=~/thing")
sub _detildefy {
my $arg = shift;
- return $arg =~ /^~/ ? (glob $arg)[0] : $arg;
+ $arg =~ s#^~(/|$)#$ENV{HOME}$1#;
+ return $arg;
}
Modified: Module-Build/trunk/t/tilde.t
==============================================================================
--- Module-Build/trunk/t/tilde.t (original)
+++ Module-Build/trunk/t/tilde.t Sat Apr 14 11:30:42 2007
@@ -4,7 +4,7 @@
use strict;
use lib $ENV{PERL_CORE} ? '../lib/Module/Build/t/lib' : 't/lib';
-use MBTest tests => 10;
+use MBTest tests => 14;
use Cwd ();
my $cwd = Cwd::cwd;
@@ -46,6 +46,19 @@
$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' );
+
+ # glob() doesn't work on non-existent paths with spaces
+ $mb = run_sample( install_base => '~/ foo' );
+ is( $mb->install_base, "$ENV{HOME}/ foo" );
+
+ $mb = run_sample( install_base => '~/fo o' );
+ is( $mb->install_base, "$ENV{HOME}/fo o" );
+
$mb = run_sample( install_base => 'foo~' );
is( $mb->install_base, 'foo~' );