t/strip2.t (97 lines of code) (raw):

#!/usr/bin/perl -T use lib '.'; use lib 't'; use SATest; sa_t_init("strip2"); use Test::More; use constant HAS_TEXTDIFF => eval { require Text::Diff; }; plan skip_all => 'Long running tests disabled' unless conf_bool('run_long_tests'); plan skip_all => 'Need Text::Diff' unless HAS_TEXTDIFF; plan tests => 98; # --------------------------------------------------------------------------- use File::Copy; use File::Compare qw(compare_text); my @files = qw( data/nice/crlf-endings data/nice/no_body data/spam/002 data/spam/004 data/spam/011 data/spam/badmime2.txt data/spam/015 data/spam/016 data/spam/017 ); my $input; # Make sure all the files can do "report_safe 0" and "report_safe 1" foreach $input (@files) { tstprefs (" report_safe 0 body TEST_ALWAYS /./ score TEST_ALWAYS 100 "); # create report_safe 0 output my $test_number = test_number(); my $d_input = "$workdir/d.$testname/$test_number"; unlink $d_input; ok sarun ("-L < $input"); # test for existence; compare_text() will _create_ files! wtf ok (-f $d_input); { print "output: $d_input\n"; $test_number = test_number(); my $d_output = "$workdir/d.$testname/$test_number"; unlink $d_output; ok sarun ("-L -d < $d_input"); ok (-f $d_output); ok(!compare_text($input,$d_output)) or diffwarn( $input, $d_output ); } tstprefs (" report_safe 1 body TEST_ALWAYS /./ score TEST_ALWAYS 100 "); # create report_safe 1 and -t output $test_number = test_number(); $d_input = "$workdir/d.$testname/$test_number"; unlink $d_input; ok sarun ("-L -t < $input"); ok (-f $d_input); { print "output: $d_input\n"; $test_number = test_number(); my $d_output = "$workdir/d.$testname/$test_number"; unlink $d_output; ok sarun ("-L -d < $d_input"); ok (-f $d_output); ok(!compare_text($input,$d_output)) or diffwarn( $input, $d_output ); } } # "report_safe 2" will work if "report_safe 1" works. # normal mode should always work, do not test multiple files. $input = $files[0]; tstprefs (" report_safe 2 body TEST_ALWAYS /./ score TEST_ALWAYS 100 "); # create report_safe 2 output my $test_number = test_number(); $d_input = "$workdir/d.$testname/$test_number"; unlink $d_input; ok sarun ("-L < $input"); ok (-f $d_input); { print "output: $d_input\n"; $test_number = test_number(); my $d_output = "$workdir/d.$testname/$test_number"; unlink $d_output; ok sarun ("-L -d < $d_input"); ok (-f $d_output); ok(!compare_text($input,$d_output)) or diffwarn( $input, $d_output ); } # Work directly on regular message, as though it was not spam $test_number = test_number(); my $d_output = "$workdir/d.$testname/$test_number"; unlink $d_output; ok sarun ("-L -d < $input"); ok (-f $d_output); ok(!compare_text($input,$d_output)) or diffwarn( $input, $d_output ); sub diffwarn { my ($f1, $f2) = @_; print STDERR "# Diff is as follows:\n"; diff ($f1, $f2, { STYLE => 'unified', OUTPUT => \*STDERR }); print "\n\n"; }