testargs.t revision 1.1.1.1
1#!/usr/bin/perl -w 2 3use strict; 4use lib 't/lib'; 5 6use Test::More tests => 19; 7use File::Spec; 8use TAP::Parser; 9use TAP::Harness; 10use App::Prove; 11 12my $test = File::Spec->catfile( 13 't', 14 'sample-tests', 15 'echo' 16); 17 18diag( "\n\n", bigness( join ' ', @ARGV ), "\n\n" ) if @ARGV; 19 20sub echo_ok { 21 my $options = shift; 22 my @args = @_; 23 my $parser = TAP::Parser->new( { %$options, test_args => \@args } ); 24 my @got = (); 25 while ( my $result = $parser->next ) { 26 push @got, $result; 27 } 28 my $plan = shift @got; 29 ok $plan->is_plan; 30 for (@got) { 31 is $_->description, shift(@args), 32 join( ', ', keys %$options ) . ": option passed OK"; 33 } 34} 35 36for my $args ( [qw( yes no maybe )], [qw( 1 2 3 )] ) { 37 echo_ok( { source => $test }, @$args ); 38 echo_ok( { exec => [ $^X, $test ] }, @$args ); 39} 40 41{ 42 my $harness = TAP::Harness->new( 43 { verbosity => -9, test_args => [qw( magic hat brigade )] } ); 44 my $aggregate = $harness->runtests($test); 45 46 is $aggregate->total, 3, "ran the right number of tests"; 47 is $aggregate->passed, 3, "and they passed"; 48} 49 50package Test::Prove; 51 52use vars qw(@ISA); 53@ISA = 'App::Prove'; 54 55sub _runtests { 56 my $self = shift; 57 push @{ $self->{_log} }, [@_]; 58 return; 59} 60 61sub get_run_log { 62 my $self = shift; 63 return $self->{_log}; 64} 65 66package main; 67 68{ 69 my $app = Test::Prove->new; 70 71 $app->process_args( '--norc', $test, '::', 'one', 'two', 'huh' ); 72 $app->run(); 73 my $log = $app->get_run_log; 74 is_deeply $log->[0]->[0]->{test_args}, [ 'one', 'two', 'huh' ], 75 "prove args match"; 76} 77 78sub bigness { 79 my $str = join '', @_; 80 my @cdef = ( 81 '0000000000000000', '1818181818001800', '6c6c6c0000000000', 82 '36367f367f363600', '0c3f683e0b7e1800', '60660c1830660600', 83 '386c6c386d663b00', '0c18300000000000', '0c18303030180c00', 84 '30180c0c0c183000', '00187e3c7e180000', '0018187e18180000', 85 '0000000000181830', '0000007e00000000', '0000000000181800', 86 '00060c1830600000', '3c666e7e76663c00', '1838181818187e00', 87 '3c66060c18307e00', '3c66061c06663c00', '0c1c3c6c7e0c0c00', 88 '7e607c0606663c00', '1c30607c66663c00', '7e060c1830303000', 89 '3c66663c66663c00', '3c66663e060c3800', '0000181800181800', 90 '0000181800181830', '0c18306030180c00', '00007e007e000000', 91 '30180c060c183000', '3c660c1818001800', '3c666e6a6e603c00', 92 '3c66667e66666600', '7c66667c66667c00', '3c66606060663c00', 93 '786c6666666c7800', '7e60607c60607e00', '7e60607c60606000', 94 '3c66606e66663c00', '6666667e66666600', '7e18181818187e00', 95 '3e0c0c0c0c6c3800', '666c7870786c6600', '6060606060607e00', 96 '63777f6b6b636300', '6666767e6e666600', '3c66666666663c00', 97 '7c66667c60606000', '3c6666666a6c3600', '7c66667c6c666600', 98 '3c66603c06663c00', '7e18181818181800', '6666666666663c00', 99 '66666666663c1800', '63636b6b7f776300', '66663c183c666600', 100 '6666663c18181800', '7e060c1830607e00', '7c60606060607c00', 101 '006030180c060000', '3e06060606063e00', '183c664200000000', 102 '00000000000000ff', '1c36307c30307e00', '00003c063e663e00', 103 '60607c6666667c00', '00003c6660663c00', '06063e6666663e00', 104 '00003c667e603c00', '1c30307c30303000', '00003e66663e063c', 105 '60607c6666666600', '1800381818183c00', '1800381818181870', 106 '6060666c786c6600', '3818181818183c00', '0000367f6b6b6300', 107 '00007c6666666600', '00003c6666663c00', '00007c66667c6060', 108 '00003e66663e0607', '00006c7660606000', '00003e603c067c00', 109 '30307c3030301c00', '0000666666663e00', '00006666663c1800', 110 '0000636b6b7f3600', '0000663c183c6600', '00006666663e063c', 111 '00007e0c18307e00', '0c18187018180c00', '1818180018181800', 112 '3018180e18183000', '316b460000000000' 113 ); 114 my @chars = unpack( 'C*', $str ); 115 my @out = (); 116 for my $row ( 0 .. 7 ) { 117 for my $char (@chars) { 118 next if $char < 32 || $char > 126; 119 my $size = scalar(@cdef); 120 my $byte = hex( substr( $cdef[ $char - 32 ], $row * 2, 2 ) ); 121 my $bits = sprintf( '%08b', $byte ); 122 $bits =~ tr/01/ #/; 123 push @out, $bits; 124 } 125 push @out, "\n"; 126 } 127 return join '', @out; 128} 129