1#!/usr/bin/perl 2 3use strict; 4 5use Test::More; 6use lib 't'; 7use Test::Utils; 8use File::Spec::Functions qw( :ALL ); 9 10my %tests = ( 11'grepmail -b mime t/mailboxes/mailarc-1.txt' 12 => ['body_mime','none'], 13'grepmail -b Handy t/mailboxes/mailarc-1.txt' 14 => ['body_handy','none'], 15"grepmail -Y $single_quote.*$single_quote -b Handy t/mailboxes/mailarc-1.txt" 16 => ['body_handy','none'], 17'grepmail -b mime t/mailboxes/mailarc-1-dos.txt' 18 => ['body_mime_dos','none'], 19'grepmail -b \'my$\' t/mailboxes/mailarc-1.txt' 20 => ['body_my','none'], 21'grepmail -b \'my$\' t/mailboxes/mailarc-1-dos.txt' 22 => ['body_my_dos','none'], 23); 24 25my %expected_errors = ( 26); 27 28mkdir 't/temp', 0700; 29 30plan tests => scalar (keys %tests) * 2; 31 32my %skip = SetSkip(\%tests); 33 34foreach my $test (sort keys %tests) 35{ 36 print "Running test:\n $test\n"; 37 38 SKIP: 39 { 40 skip("$skip{$test}",2) if exists $skip{$test}; 41 42 TestIt($test, $tests{$test}, $expected_errors{$test}); 43 } 44} 45 46# --------------------------------------------------------------------------- 47 48sub TestIt 49{ 50 my $test = shift; 51 my ($stdout_file,$stderr_file) = @{ shift @_ }; 52 my $error_expected = shift; 53 54 my $testname = [splitdir($0)]->[-1]; 55 $testname =~ s#\.t##; 56 57 { 58 my @standard_inc = split /###/, `perl -e '\$" = "###";print "\@INC"'`; 59 my @extra_inc; 60 foreach my $inc (@INC) 61 { 62 push @extra_inc, "$single_quote$inc$single_quote" 63 unless grep { /^$inc$/ } @standard_inc; 64 } 65 66 local $" = ' -I'; 67 if (@extra_inc) 68 { 69 $test =~ s#\bgrepmail\s#$^X -I@extra_inc blib/script/grepmail -C t/temp/cache #g; 70 } 71 else 72 { 73 $test =~ s#\bgrepmail\s#$^X blib/script/grepmail -C t/temp/cache #g; 74 } 75 } 76 77 my $test_stdout = catfile('t','temp',"${testname}_$stdout_file.stdout"); 78 my $test_stderr = catfile('t','temp',"${testname}_$stderr_file.stderr"); 79 80 system "$test 1>$test_stdout 2>$test_stderr"; 81 82 if (!$? && defined $error_expected) 83 { 84 ok(0,"Did not encounter an error executing the test when one was expected.\n\n"); 85 return; 86 } 87 88 if ($? && !defined $error_expected) 89 { 90 ok(0, "Encountered an error executing the test when one was not expected.\n" . 91 "See $test_stdout and $test_stderr.\n\n"); 92 return; 93 } 94 95 96 my $real_stdout = catfile('t','results',$stdout_file); 97 my $real_stderr = catfile('t','results',$stderr_file); 98 99 Do_Diff($test_stdout,$real_stdout); 100 Do_Diff($test_stderr,$real_stderr); 101} 102 103# --------------------------------------------------------------------------- 104 105sub SetSkip 106{ 107 my %tests = %{ shift @_ }; 108 109 my %skip; 110 111 $skip{"grepmail -Y $single_quote.*$single_quote -b Handy t/mailboxes/mailarc-1.txt"} 112 = 'unimplemented'; 113 114 return %skip; 115} 116 117# --------------------------------------------------------------------------- 118 119