Hi Ken,

I noticed some traffic in the commits and realized I had this stale 
patch laying around.

I see there are still quite a few chdir()s in the test suite and thought 
this might be a good way to keep things a little more organized.

I think I just hadn't checked it in because the method names are so 
corny (but maybe I just hadn't had a chance to really test it yet.)

--Eric
-- 
"Beware of bugs in the above code; I have only proved it correct, not
tried it."
--Donald Knuth
---------------------------------------------------
    http://scratchcomputing.com
---------------------------------------------------
Index: t/lib/DistGen.pm
===================================================================
--- t/lib/DistGen.pm	(revision 10263)
+++ t/lib/DistGen.pm	(working copy)
@@ -416,6 +416,26 @@
   $self->{pending}{change}{$file} = 1;
 }
 
+sub engage {
+  my $self = shift;
+
+  $self->{original_dir} ||= Cwd::cwd; # only once
+  my $dir = $self->dirname;
+  chdir($dir) or die "Can't chdir to '$dir': $!";
+  $self->{engaged} = 1;
+} # end subroutine engage definition
+########################################################################
+
+sub exodus {
+  my $self = shift;
+
+  croak("not engaged") unless($self->{engaged});
+  my $dir = $self->{original_dir};
+  chdir($dir) or die "Can't chdir to '$dir': $!";
+  $self->{engaged} = 0;
+} # end subroutine exodus definition
+########################################################################
+
 1;
 
 __END__
@@ -493,6 +513,20 @@
 If the optional C<clean> argument is given, it also removes any
 extraneous files that do not belong to the distribution.
 
+=head2 engage
+
+Change directory into the dist root.  This also activates automatic
+chdir for regen().
+
+  $dist->engage;
+
+=head2 exodus
+
+Flee the dist root (returns to your original chdir regardless of the
+cwd.)
+
+  $dist->exodus;
+
 =head3 clean()
 
 Removes any files that are not part of the distribution.

Reply via email to