[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