#!/usr/bin/perl -T use lib '.'; use lib 't'; use SATest; sa_t_init("shortcircuit"); use Test::More tests => 18; # --------------------------------------------------------------------------- %anti_patterns = ( q{ autolearn=ham } => 'autolearned as ham' ); tstpre (' loadplugin Mail::SpamAssassin::Plugin::Shortcircuit '); tstlocalrules (' add_header all Status "_YESNO_, score=_SCORE_ required=_REQD_ tests=_TESTS_ shortcircuit=_SCTYPE_ autolearn=_AUTOLEARN_ version=_VERSION_" # hits spam/001 body X_FOO /Congratulations/ header X_BAR From =~ /sb55/ # this should still fire, fixing the meta dependency ordering automatically meta SC_PRI_SPAM_001 (X_FOO && X_BAR) shortcircuit SC_PRI_SPAM_001 spam priority SC_PRI_SPAM_001 -1000 # hits spam/002 header SC_002 Subject =~ /ADV/ shortcircuit SC_002 on priority SC_002 -100 score SC_002 50 # nice/001 header SC_HAM_001 X-Mailer =~ /Evolution/ shortcircuit SC_HAM_001 ham '); %patterns = ( q{ SC_PRI_SPAM_001 }, 'hit', q{ shortcircuit=spam }, 'sc', q{ X-Spam-Status: Yes, score=103.0 required=5.0 }, 'shortcircuit_spam_score', q{ 100 SHORTCIRCUIT Not all rules were run }, 'shortcircuit rule desc', ); ok (sarun ("-L -t < data/spam/001", \&patterns_run_cb)); ok_all_patterns(); %patterns = ( q{ SC_002 }, 'hit', q{ shortcircuit=spam }, 'sc', q{ X-Spam-Status: Yes, score=50.0 required=5.0 }, 'SC_002 score', q{ 0.0 SHORTCIRCUIT Not all rules were run }, 'shortcircuit rule desc', ); ok (sarun ("-L -t < data/spam/002", \&patterns_run_cb)); ok_all_patterns(); %patterns = ( q{ SC_HAM_001 }, 'SC_HAM_001', q{ shortcircuit=ham }, 'sc_ham', q{ X-Spam-Status: No, score=-101.0 required=5.0 }, 'SC_HAM_001 score', q{ -100 SHORTCIRCUIT Not all rules were run }, 'shortcircuit rule desc', ); ok (sarun ("-L -t < data/nice/001", \&patterns_run_cb)); ok_all_patterns();