#!/usr/bin/perl use strict; #use warnings 'all'; use Test::More; use lib 't'; use Test::Utils; use Mail::Mbox::MessageParser; use Mail::Mbox::MessageParser::Config; use File::Spec::Functions qw(:ALL); my $GZIP = $Mail::Mbox::MessageParser::Config{'programs'}{'gzip'} || 'gzip'; my %tests = ( "cat " . catfile('t','mailboxes','mailarc-2.txt.gz') . " | $GZIP -cd" => ['mailarc-2.txt','none'], ); my %expected_errors = ( ); mkdir catfile('t','temp'), 0700; plan (tests => scalar (keys %tests)); my %skip = SetSkip(\%tests); foreach my $test (sort keys %tests) { print "Running test:\n $test\n"; SKIP: { skip("$skip{$test}",1) if exists $skip{$test}; TestIt($test, $tests{$test}, $expected_errors{$test}); } } # --------------------------------------------------------------------------- sub TestIt { my $test = shift; my ($stdout_file,$stderr_file) = @{ shift @_ }; my $error_expected = shift; my $testname = [splitdir($0)]->[-1]; $testname =~ s#\.t##; my $test_stdout = catfile('t','temp',"${testname}_$stdout_file.stdout"); my $test_stderr = catfile('t','temp',"${testname}_$stderr_file.stderr"); system "$test 1>$test_stdout 2>$test_stderr"; if (!$? && defined $error_expected) { is(0,"Did not encounter an error executing the test when one was expected.\n\n"); return; } if ($? && !defined $error_expected) { is(0, "Encountered an error executing the test when one was not expected.\n" . "See $test_stdout and $test_stderr.\n\n"); return; } my $real_stdout = catfile('t','results',$stdout_file); my $real_stderr = catfile('t','results',$stderr_file); CheckDiffs([$real_stdout,$test_stdout],[$real_stderr,$test_stderr]); } # --------------------------------------------------------------------------- sub SetSkip { my %tests = %{ shift @_ }; my %skip; unless (defined $Mail::Mbox::MessageParser::Config{'programs'}{'gzip'}) { $skip{"cat " . catfile('t','mailboxes','mailarc-2.txt.gz') . " | $GZIP -cd"} = 'gzip not available'; } return %skip; } # ---------------------------------------------------------------------------