Author: schwern
Date: Sun Sep 28 15:03:26 2008
New Revision: 11900

Modified:
   Module-Build/trunk/   (props changed)
   Module-Build/trunk/Changes
   Module-Build/trunk/lib/Module/Build/Platform/Unix.pm
   Module-Build/trunk/t/tilde.t

Log:
 [EMAIL PROTECTED]:  schwern | 2008-09-28 18:02:37 -0400
   - Fix ~ expansion when $HOME is different from /etc/passwd as
     when running sudo.  [rt.cpan.org 39662]


Modified: Module-Build/trunk/Changes
==============================================================================
--- Module-Build/trunk/Changes  (original)
+++ Module-Build/trunk/Changes  Sun Sep 28 15:03:26 2008
@@ -7,6 +7,8 @@
 
  Bug Fixes
  - Workaround HARNESS_TIMER env issue in t/compat.t (RT#39635)
+ - Fix ~ expansion when $HOME is different from /etc/passwd as
+   when running sudo.  [rt.cpan.org 39662]
 
  Other
  - Updated our embedded version.pm to 0.76, enhanced documentation on

Modified: Module-Build/trunk/lib/Module/Build/Platform/Unix.pm
==============================================================================
--- Module-Build/trunk/lib/Module/Build/Platform/Unix.pm        (original)
+++ Module-Build/trunk/lib/Module/Build/Platform/Unix.pm        Sun Sep 28 
15:03:26 2008
@@ -47,7 +47,7 @@
   $value =~ s[^~(\w[-\w]*)?(?=/|$)]   # tilde with optional username
     [$1 ?
      ((getpwnam $1)[7] || "~$1") :
-     (getpwuid $>)[7]
+     ($ENV{HOME} || (getpwuid $>)[7])
     ]ex;
   return $value;
 }

Modified: Module-Build/trunk/t/tilde.t
==============================================================================
--- Module-Build/trunk/t/tilde.t        (original)
+++ Module-Build/trunk/t/tilde.t        Sun Sep 28 15:03:26 2008
@@ -4,7 +4,7 @@
 
 use strict;
 use lib $ENV{PERL_CORE} ? '../lib/Module/Build/t/lib' : 't/lib';
-use MBTest tests => 17;
+use MBTest tests => 18;
 
 use_ok 'Module::Build';
 ensure_blib('Module::Build');
@@ -68,6 +68,13 @@
     is( run_sample( prefix => '~' )->prefix,
        $home );
 
+    # Test when HOME is different from getpwuid(), as in sudo.
+    {
+        local $ENV{HOME} = '/wibble/whomp';
+
+        is( run_sample( $p => '~' )->$p(),    "/wibble/whomp" );
+    }
+
     my $mb = run_sample( install_path => { html => '~/html',
                                           lib  => '~/lib'   }
                       );

Reply via email to