[svn:parrot] r37885 - in branches/install_tools: lib/Parrot t/tools/install

jkeenan at svn.parrot.org jkeenan at svn.parrot.org
Fri Apr 3 10:36:01 UTC 2009


Author: jkeenan
Date: Fri Apr  3 10:36:00 2009
New Revision: 37885
URL: https://trac.parrot.org/parrot/changeset/37885

Log:
Tighten scoping of lexical variables inside create_directories().  Add test
for case where a directory already exists.

Modified:
   branches/install_tools/lib/Parrot/Install.pm
   branches/install_tools/t/tools/install/01-install_files.t

Modified: branches/install_tools/lib/Parrot/Install.pm
==============================================================================
--- branches/install_tools/lib/Parrot/Install.pm	Fri Apr  3 02:41:07 2009	(r37884)
+++ branches/install_tools/lib/Parrot/Install.pm	Fri Apr  3 10:36:00 2009	(r37885)
@@ -173,10 +173,11 @@
 
 sub create_directories {
     my($destdir, $directories) = @_;
-    my($dir, @dirs);
+#    my($dir, @dirs);
 
-    for $dir ( map { $destdir . $_ } keys %$directories ) {
+    for my $dir ( map { $destdir . $_ } keys %$directories ) {
         unless ( -d $dir ) {
+            my @dirs;
 
             # Make full path to the directory $dir
             while ( ! -d $dir ) {    # Scan up to nearest existing ancestor

Modified: branches/install_tools/t/tools/install/01-install_files.t
==============================================================================
--- branches/install_tools/t/tools/install/01-install_files.t	Fri Apr  3 02:41:07 2009	(r37884)
+++ branches/install_tools/t/tools/install/01-install_files.t	Fri Apr  3 10:36:00 2009	(r37885)
@@ -6,9 +6,9 @@
 use strict;
 use warnings;
 
-use Test::More tests =>  8;
+use Test::More qw(no_plan); # tests =>  8;
 use Carp;
-use Cwd;
+use File::Path qw( mkpath );
 use File::Temp qw( tempdir );
 use lib qw( lib );
 use Parrot::Install qw(
@@ -44,8 +44,6 @@
 
 =cut
 
-my $cwd = cwd();
-
 {
     my $dir = tempdir( CLEANUP => 1 );
     $dir .= '/';
@@ -64,6 +62,24 @@
     $dir .= '/';
 
     my @dirs = qw(foo/bar foo/bar/baz);
+    my @created = mkpath( "$dir$dirs[0]" );
+    ok( ( -d $created[0] ),
+        "one directory created before create_directories() is called" );
+
+    create_directories($dir, { map { $_ => 1 } @dirs });
+    my $dirs_seen = 0;
+    foreach my $d (@dirs) {
+        $dirs_seen++ if -d "$dir$d";
+    }
+    is($dirs_seen, 2,
+        "create_directories() handled case where one directory already existed" );
+}
+
+{
+    my $dir = tempdir( CLEANUP => 1 );
+    $dir .= '/';
+
+    my @dirs = qw(foo/bar foo/bar/baz);
     create_directories($dir, { map { $_ => 1 } @dirs });
     my($fullname);
 


More information about the parrot-commits mailing list