Blame t/tilde.t

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