okay, another hurdle, another reanalysis
[p5sagit/IPC-PerlSSH-MultiHop.git] / t / scratch.t
index 74f5c05..484f6ec 100644 (file)
@@ -32,7 +32,7 @@ use Test::More;
     my $readfunc = sub { sysread( $read, $_[0], $_[1] ) };
     my $writefunc = sub { syswrite( $write, $_[0] ) };
     
-    IPC::PerlSSH->new( Readfunc => $readfunc, Writefunc => $writefunc );
+    ($command, IPC::PerlSSH->new( Readfunc => $readfunc, Writefunc => $writefunc ));
   }
 
 
@@ -43,13 +43,36 @@ $ssh->login('test', 'test');
 
 my $pipc = Net::SSH::Perl::ProxiedIPC->new(ssh => $ssh);
 
-my $perlssh = $pipc->_open_perlssh;
+my ($cmd, $perlssh) = $pipc->_open_perlssh;
 
-is( ref $perlssh, "IPC::PerlSSH", '$perlssh isa IPC::PerlSSH' );
+is( ref $perlssh, "IPC::PerlSSH", "\$perlssh isa IPC::PerlSSH (via $cmd)" );
 
 $perlssh->eval( "use POSIX qw(uname)" );
 my @remote_uname = $perlssh->eval( "uname()" );
 
 ## This is a really shitty idea for a test but fuck you.
 is( $remote_uname[1], "minerva", 'localhost uname() returns minerva' );
+
+my $homedir = $perlssh->eval( '$ENV{HOME}' );
+fail( "we require a little sensibility in our \$ENV thank you." )
+  unless defined $homedir;
+
+$perlssh->eval( "use File::HomeDir" );
+my $homedir2 = $perlssh->eval( 'File::HomeDir->my_home' );
+is( $homedir2, "/home/test", 'got $ENV{HOME} the smart way' );
+
+$perlssh->eval( 'chomp(my @env = `ssh-agent`); foreach (@env) { /^(.*?)=(.*)/; $ENV{$1} = $2; }' );
+$perlssh->eval( 'system("ssh-add")' );
+
+my $test_ssh_env = $perlssh->eval( '$ENV{SSH_AUTH_SOCK}' );
+ok( defined $test_ssh_env, "SSH_AUTH_SOCK = $test_ssh_env" );
+
+my @test_hosts = ( 'stagetwo@localhost', 'stagethree@localhost' );
+my ($cmd2, $pssh2) = $pipc->_open_perlssh(@test_hosts);
+is( ref $pssh2, "IPC::PerlSSH", "\$pssh2 isa IPC::PerlSSH (via $cmd2)" );
+
+$pssh2->eval( "use POSIX qw(uname)" );
+@remote_uname = $pssh2->eval( "uname()" );
+is( $remote_uname[1], "minerva", 'uname() returns minerva three jumps into localhost!' );
+
 done_testing;