[Bioperl-l] hardcoded paths in test scripts (II)
Todd Richmond
todd@andrew2.stanford.edu
Wed, 28 Feb 2001 14:49:18 -0800
On 2/27/01 7:04 PM, "Hilmar Lapp" <lapp@gnf.org> wrote:
> Todd Richmond wrote:
>>
>> Meanwhile the fix for cross-compatibility completely broke things on a Mac
>> :)
>>
>> Here's a fix for Bio::Root::IO->catfile
>>
>> sub catfile {
>> my ($self, @args) = @_;
>>
>> if ($^O =~ /macos/i) {
>> my $file = ':'. File::Spec->catfile(@args);
>
> So this means that even File::Spec is doing it wrong. What's the
> meaning of the initial ':'? The root dir? (I somewhere read that there
> is no such thing as a root dir on Macs ... :o )
After a bit of testing, this is a bad idea. Just use:
if ($^O =~ /macos/i) {
my $file = File::Spec->catfile(@args);
}
Mac users will have to do a global search and replace on the test files to
change "t" to ":t". The earlier fix works fine for some cases but then
requires clean-up when someone does something like:
$currentfile =
Bio::Root::IO->catfile($self->{'_tempdir'},"iteration$round.tmp");
open (FILEHANDLE, ">$currentfile")
When that happens, $currentfile has an extra ':' which prevents the opening
of the file.
One other thing with the tempfile/tempdir issue. When you're creating a
temporary directory, you should check to see whether or not the directory
exists first, or return an error if the creation fails. Right now, the
directory is created with a bare "mkdir($tdir, 0755)".
--
Dr Todd Richmond http://cellwall.stanford.edu/todd
Carnegie Institution email: todd@andrew2.stanford.edu
Department of Plant Biology fax: 1-650-325-6857
260 Panama Street phone: 1-650-325-1521 x431
Stanford, CA 94305