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~' );
 

Reply via email to