|
Packit |
b7b64d |
#!/usr/bin/perl -w
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
# Test ~ expansion from command line arguments.
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
use strict;
|
|
Packit |
b7b64d |
use lib 't/lib';
|
|
Packit |
b7b64d |
use Test::More tests => 9;
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
use ExtUtils::Helpers 'detildefy';
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
SKIP: {
|
|
Packit |
b7b64d |
my $env_name = $^O eq 'MSWin32' ? 'USERPROFILE' : 'HOME';
|
|
Packit |
b7b64d |
my $home = $ENV{$env_name};
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
if ($^O eq 'VMS') {
|
|
Packit |
b7b64d |
# Convert the path to UNIX format, trim off the trailing slash
|
|
Packit |
b7b64d |
$home = VMS::Filespec::unixify($home);
|
|
Packit |
b7b64d |
$home =~ s#/$##;
|
|
Packit |
b7b64d |
}
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
unless (defined $home) {
|
|
Packit |
b7b64d |
my @info = eval { getpwuid $> };
|
|
Packit |
b7b64d |
skip "No home directory for tilde-expansion tests", 8 if $@ or !defined $info[7];
|
|
Packit |
b7b64d |
$home = $info[7];
|
|
Packit |
b7b64d |
}
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
is( detildefy('~'), $home);
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
is( detildefy('~/fooxzy'), "$home/fooxzy");
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
is( detildefy('~/ fooxzy'), "$home/ fooxzy");
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
is( detildefy('~/fo o'), "$home/fo o");
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
is( detildefy('fooxzy~'), 'fooxzy~');
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
# Test when HOME is different from getpwuid(), as in sudo.
|
|
Packit |
b7b64d |
{
|
|
Packit |
b7b64d |
local $ENV{HOME} = '/wibble/whomp';
|
|
Packit |
b7b64d |
local $ENV{USERPROFILE} = $ENV{HOME};
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
is( detildefy('~'), "/wibble/whomp");
|
|
Packit |
b7b64d |
}
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
skip "On OS/2 EMX all users are equal", 2 if $^O eq 'os2';
|
|
Packit |
b7b64d |
is( detildefy('~~'), '~~' );
|
|
Packit |
b7b64d |
is( detildefy('~ fooxzy'), '~ fooxzy' );
|
|
Packit |
b7b64d |
}
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
# Again, with named users
|
|
Packit |
b7b64d |
SKIP: {
|
|
Packit |
b7b64d |
my @info = eval { getpwuid $> };
|
|
Packit |
b7b64d |
skip "No home directory for tilde-expansion tests", 1 if $@ or !defined $info[7] or !defined $info[0];
|
|
Packit |
b7b64d |
my ($me, $home) = @info[0,7];
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
my $expected = "$home/fooxzy";
|
|
Packit |
b7b64d |
|
|
Packit |
b7b64d |
if ($^O eq 'VMS') {
|
|
Packit |
b7b64d |
# Convert the path to UNIX format and trim off the trailing slash
|
|
Packit |
b7b64d |
$home = VMS::Filespec::unixify($home);
|
|
Packit |
b7b64d |
$home =~ s#/$##;
|
|
Packit |
b7b64d |
$expected = $home . '/../[^/]+' . '/fooxzy';
|
|
Packit |
b7b64d |
}
|
|
Packit |
b7b64d |
like( detildefy("~$me/fooxzy"), qr(\Q$expected\E)i );
|
|
Packit |
b7b64d |
}
|
|
Packit |
b7b64d |
|