Re: chdir(..) dance for 5.10 on osx?
[email protected] ("David E. Wheeler")
| Newsgroups | perl.module.build |
|---|---|
| Message-ID | <[email protected]> |
On Jul 9, 2008, at 00:29, Eric Wilhelm wrote:
> # from David E. Wheeler
> # on Thursday 19 June 2008 12:25:
>
>> For my install of File::Path on Perl 5.10, it
>> won't actually delete a directory if your current cwd is unknown.
>> So I
>> added appropriate calls to `chdir` when `Cwd::getcwd` returns
>> false. And now all tests pass for me.
>
> I'm not seeing how this is required (since -d $tmp should be false if
> you're in the directory) and what's with the '..'? Is that supposed
> to
> be $cwd?
It's not because cwd returns `undef`.
> END {
> if(-d $tmp) {
> - File::Path::rmtree($tmp) or warn "cannot clean dir '$tmp'";
> + # Go back to where you came from!
> + chdir '..' or die "Couldn't chdir to $cwd";
> + File::Path::rmtree($tmp) or diag "cannot clean dir '$tmp': $@";
> }
>
> Again. In what way is '..' correct? DistGen requires you to chdir
> back
> yourself before calling remove(). Were there tests failing on the
> original tree?
Yes, there were. Otherwise I wouldn't have done this. I changed the
code to go back to the original directory where such was tracked, but
in some places it was not.
> sub remove {
> my $self = shift;
> croak("invalid usage -- remove()") if(@_);
> + unless (Cwd::getcwd) {
> + # How'd we get here?
> + chdir '..' or die "Couldn't chdir to ..";
> + }
>
> I would rather resolve whatever is happening without chdir('..') -- if
> only to avoid writing an enormous comment to explain why something
> which looks so wrong exists.
I can give you access to my box to play with it yourself, if you don't
have one handy.
Best,
David