%PDF- %PDF-
Direktori : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/Test-Harness-3.42/xt/perls/ |
Current File : /home/opti/optisoftcom/.cpanm/work/1544535406.20768/Test-Harness-3.42/xt/perls/harness_perl.t |
#!/usr/bin/perl use warnings; use strict; use Test::More; # TODO we need to have some way to find one or more alternate versions # of perl on the smoke machine so that we can verify that the installed # perl can be used to test against the alternate perls without # installing the harness in the alternate perls. Does that make sense? # # Example: # harness process (i.e. bin/prove) is perl 5.8.8. # subprocesses (i.e. t/test.t) are perl 5.6.2. my @perls; BEGIN { my $perls_live_at = '/usr/local/stow/'; @perls = grep( { -e $_ } map( {"$perls_live_at/perl-$_/bin/perl"} qw(5.5.4 5.6.2) ) ); if (@perls) { plan( tests => scalar(@perls) * 4 ); } else { plan( skip_all => "no perls found in '$perls_live_at'" ); } } use File::Temp (); use File::Path (); use IPC::Run (); mkdir('twib') or die "cannot create 'twib' $!"; { # create a lib open( my $fh, '>', 'twib/foo.pm' ); print $fh "package twib;\nsub foo {'bar';}\n1;\n"; } END { File::Path::rmtree('twib'); } my @tests = qw( xt/perls/sample-tests/perl_version ); # TODO and something with taint # make the tests check that the perl is indeed the $perl (thus they are # just printed tests.) for my $perl (@perls) { # TODO make the API be *not* an environment variable! local $ENV{HARNESS_PERL} = $perl; my ( $in, $out, $err ) = ( undef, '', '' ); my $ret = IPC::Run::run( [ $^X, '-Ilib', 'bin/prove', '-It/lib', '-Itwib', @tests ], \$in, \$out, \$err ); ok( $ret, 'no death' ); like( $out, qr/All tests successful/, 'success' ); like( $out, qr/Result: PASS/, 'passed' ); is($err, '', 'no error'); } # vim:ts=4:sw=4:et:sta