#!/usr/bin/perl -T

use lib '.'; use lib 't';
use SATest; sa_t_init("duplicates");
use Test::More tests => 21;

$ENV{'LANGUAGE'} = $ENV{'LC_ALL'} = 'C';             # a cheat, but we need the patterns to work

# ---------------------------------------------------------------------------

%patterns = (

  q{ FOO1 }     => '',  # use default names
  q{ FOO2 }     => '',
  q{ HDR1 }     => '',
  q{ HDR2 }     => '',
  q{ META1 }     => '',
  q{ META2 }     => '',
  q{ META3 }     => '',
  q{ HDREVAL1 }     => '',
  q{ HDREVAL2 }     => '',
  q{ ran body rule FOO1 ======> got hit } => '',
  q{ ran header rule HDR1 ======> got hit } => '',
  q{ rules: FOO1 merged duplicates: FOO2 } => '',
  q{ rules: HDR1 merged duplicates: HDR2 } => '',
  q{ rules: META3 merged duplicates: META1 } => '',
  q{ ran eval rule HDREVAL1 ======> got hit } => '',
  q{ ran eval rule HDREVAL2 ======> got hit } => '',
);

%anti_patterns = (

  q{ FOO3 }     => '',
  q{ RAWFOO }   => '',
  q{ ran body rule FOO2 ======> got hit } => '',
  q{ ran header rule HDR2 ======> got hit } => '',

);

tstprefs (qq{

   $default_cf_lines

   loadplugin Mail::SpamAssassin::Plugin::Test

   body FOO1 /click here and e= nter your/i
   describe FOO1 Test rule
   body FOO2 /click here and e= nter your/i
   describe FOO2 Test rule

   # should not be found, not a dup (/i)
   body FOO3 /click here and e= nter your/
   describe FOO3 Test rule

   # should not be found, not dup since different type
   rawbody RAWFOO /click here and e= nter your/i
   describe RAWFOO Test rule

   header HDR1 Subject =~ /stained/
   describe HDR1 Test rule
   header HDR2 Subject =~ /stained/
   describe HDR2 Test rule

   # should not be merged -- eval rules (bug 5959)
   header HDREVAL1 eval:check_test_plugin() 
   describe HDREVAL1 Test rule
   header HDREVAL2 eval:check_test_plugin()
   describe HDREVAL2 Test rule

   meta META1 (1)
   describe META1 Test rule
   meta META2 (META1 && META3)
   describe META2 Test rule
   meta META3 (1)
   priority META3 -500
   describe META3 Test rule

});

sarun ("-L -t -D < data/spam/006 2>&1", \&patterns_run_cb);
ok ok_all_patterns();
