The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w

use Test::More tests => 4;
# plan tests => 3;

BEGIN {
   use_ok('Net::SSLeay');   # Added for the Smoke Tester's benifit.
   use_ok('Net::FTPSSL');
}

ok(1, 'Net::FTPSSL loaded.');

my $res = test_caller ();
ok ($res, "Verifying caller func available for use in FTPSSL");

# if ($res) {
#    diag( "\nNet::FTPSSL loaded properly." );
# } else {
#    diag("\nNet::FTPSSL loaded properly, but will have issues with caller().");
# }


# Tells us early on if the current version of perl doesn't support this.
# Means that the caller logic in FTPSSL won't work if this test fails!
# Done since I'm developing & testing with perl v5.8.8 only.
sub test_caller {
   my $func = __PACKAGE__ . "::test_caller";

   my $c = (caller(1))[3];   # Should always be undef here!
   $c = ""  unless (defined $c);

   return ( (caller(0))[3] eq $func && $c eq "" &&
            test2 ( (caller(0))[3] ) &&
            Zapper123::ztest1 ( (caller(0))[3] ) );
}

sub test2 {
   my $func = __PACKAGE__ . "::test2";

   return ( (caller(1))[3] eq $_[0] && (caller(0))[3] eq $func );
}


package Zapper123;

sub ztest1 {
   my $func = __PACKAGE__ . "::ztest1";

   return ( (caller(1))[3] eq $_[0] &&
            (caller(0))[3] eq $func &&
            main::test2 ( (caller(0))[3] ) );
}

# vim:ft=perl: