| #!/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"; |
| } |
| |