3 # Here we make sure File::Spec can properly deal with executables.
4 # VMS has some trouble with these.
8 : (skip_all => "Can't find an executable file")
11 BEGIN { # Set up a tiny script file
12 open(F, ">rel2abs2rel$$.pl")
13 or die "Can't open rel2abs2rel$$.pl file for script -- $!\n";
14 print F qq(print "ok\\n"\n);
18 1 while unlink("rel2abs2rel$$.pl");
19 1 while unlink("rel2abs2rel$$.tmp");
26 # Change 'perl' to './perl' so the shell doesn't go looking through PATH.
29 $perl = File::Spec->catfile(File::Spec->curdir, $perl) unless
30 File::Spec->file_name_is_absolute($perl);
34 # Make a putative perl binary say "ok\n". We have to do it this way
35 # because the filespec of the binary may contain characters that a
36 # command interpreter considers special, so we can't use the obvious
37 # `$perl -le "print 'ok'"`. And, for portability, we can't use fork().
40 open(STDOUTDUP, '>&STDOUT');
41 open(STDOUT, ">rel2abs2rel$$.tmp")
42 or die "Can't open scratch file rel2abs2rel$$.tmp -- $!\n";
43 system($perl, "rel2abs2rel$$.pl");
44 open(STDOUT, '>&STDOUTDUP');
46 open(F, "rel2abs2rel$$.tmp");
53 print "Checking manipulations of \$^X=$^X\n";
55 my $perl = safe_rel($^X);
56 is( sayok($perl), "ok\n", "`$perl rel2abs2rel$$.pl` works" );
58 $perl = File::Spec->rel2abs($^X);
59 is( sayok($perl), "ok\n", "`$perl rel2abs2rel$$.pl` works" );
61 $perl = File::Spec->canonpath($perl);
62 is( sayok($perl), "ok\n", "canonpath(rel2abs($^X)) = $perl" );
64 $perl = safe_rel(File::Spec->abs2rel($perl));
65 is( sayok($perl), "ok\n", "safe_rel(abs2rel(canonpath(rel2abs($^X)))) = $perl" );
67 $perl = safe_rel(File::Spec->canonpath($^X));
68 is( sayok($perl), "ok\n", "safe_rel(canonpath($^X)) = $perl" );