#!/usr/bin/perl -T use lib '.'; use lib 't'; use SATest; sa_t_init("header"); use Test::More tests => 26; # --------------------------------------------------------------------------- tstprefs(' # exists header TEST_EXISTS1 exists:To header TEST_EXISTS2 exists:Not-Exist # if-unset header TEST_UNSET1 Not-Exist =~ /./ header TEST_UNSET2 Not-Exist =~ /^UNSET$/ [if-unset: UNSET] header TEST_UNSET3 Not-Exist =~ /^NOT$/ [if-unset: UNSET] # exists should not leak to a redefined test header TEST_LEAK1 exists:Not-Exist header TEST_LEAK1 To =~ /notexist/ # if-unset should not leak to a redefined test header TEST_LEAK2 Not-Exist =~ /^UNSET$/ [if-unset: UNSET] header TEST_LEAK2 Not-Exist =~ /^UNSET$/ # op should not leak to a redefined test header TEST_LEAK3 To !~ /./ header TEST_LEAK3 To =~ /notfound/ # Test 4.0 :first :last parser header HEADER_FIRST1 X-Hashcash:first =~ /^0:040315:test@example.com:69781c87bae95c03$/ header HEADER_LAST1 X-Hashcash:last =~ /^1:20:040806:test1@example.com:test=foo:482b788d12eb9b56:2a3349$/ header HEADER_ALL1 X-Hashcash =~ /^0:040315:.*1:20:040806:/s # Meta should evaluate all meta TEST_META (TEST_EXISTS1 && TEST_UNSET2 && HEADER_FIRST1 && HEADER_LAST1 && HEADER_ALL1) # ALL newlines (Bug 8121) header TEST_ALL1 ALL =~ /\nTo: announce@ximian\.com\nContent-Type:/ # ALL selector header TEST_ALL2 ALL-TRUSTED =~ /\nDelivered-To: jm@netnoteinc.com\nReceived:/ header TEST_ALL3 ALL-UNTRUSTED =~ /\nDelivered-To:/ '); %patterns = ( q{ 1.0 TEST_EXISTS1 }, '', q{ 1.0 TEST_UNSET2 }, '', q{ 1.0 HEADER_FIRST1 }, '', q{ 1.0 HEADER_LAST1 }, '', q{ 1.0 HEADER_ALL1 }, '', q{ 1.0 TEST_META }, '', q{ 1.0 TEST_ALL1 }, '', q{ 1.0 TEST_ALL2 }, '', ); %anti_patterns = ( q{ TEST_EXISTS2 }, '', q{ TEST_UNSET1 }, '', q{ TEST_UNSET3 }, '', q{ TEST_LEAK1 }, '', q{ TEST_LEAK2 }, '', q{ TEST_LEAK3 }, '', q{ TEST_ALL3 }, '', ); ok (sarun ("-L -t < data/nice/001", \&patterns_run_cb)); ok_all_patterns(); ########################################## tstprefs(' # Test 4.0 multiple :addr parser header TO1 To:addr =~ /(?:@.*?){1}/s header TONEG1 To:addr =~ /(?:@.*?){2}/s header CC1 Cc:addr =~ /(?:@.*?){5}/s header CCNEG1 Cc:addr =~ /(?:@.*?){6}/s header TOCC1 ToCc:addr =~ /(?:@.*?){6}/s header TOCCNEG1 ToCc:addr =~ /(?:@.*?){7}/s header __TO_COUNT To:addr =~ /^.+$/m tflags __TO_COUNT multiple meta TO2 __TO_COUNT == 1 header __CC_COUNT Cc:addr =~ /^.+$/m tflags __CC_COUNT multiple meta CC2 __CC_COUNT == 5 header __TOCC_COUNT ToCc:addr =~ /^.+$/m tflags __TOCC_COUNT multiple meta TOCC2 __TOCC_COUNT == 6 '); %patterns = ( q{ 1.0 TO1 }, '', q{ 1.0 CC1 }, '', q{ 1.0 TOCC1 }, '', q{ 1.0 TO2 }, '', q{ 1.0 CC2 }, '', q{ 1.0 TOCC2 }, '', ); %anti_patterns = ( q{ TONEG }, '', q{ CCNEG }, '', q{ TOCCNEG }, '', ); ok (sarun ("-L -t < data/nice/006", \&patterns_run_cb)); ok_all_patterns();