diff options
Diffstat (limited to 't/re/reg_email.t')
-rw-r--r-- | t/re/reg_email.t | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/t/re/reg_email.t b/t/re/reg_email.t new file mode 100644 index 0000000000..6255ee3d72 --- /dev/null +++ b/t/re/reg_email.t @@ -0,0 +1,103 @@ +#!./perl +# +# Tests to make sure the regexp engine doesn't run into limits too soon. +# + +BEGIN { + chdir 't' if -d 't'; + @INC = '../lib'; +} + +print "1..13\n"; + +my $email = qr { + (?(DEFINE) + (?<address> (?&mailbox) | (?&group)) + (?<mailbox> (?&name_addr) | (?&addr_spec)) + (?<name_addr> (?&display_name)? (?&angle_addr)) + (?<angle_addr> (?&CFWS)? < (?&addr_spec) > (?&CFWS)?) + (?<group> (?&display_name) : (?:(?&mailbox_list) | (?&CFWS))? ; + (?&CFWS)?) + (?<display_name> (?&phrase)) + (?<mailbox_list> (?&mailbox) (?: , (?&mailbox))*) + + (?<addr_spec> (?&local_part) \@ (?&domain)) + (?<local_part> (?&dot_atom) | (?"ed_string)) + (?<domain> (?&dot_atom) | (?&domain_literal)) + (?<domain_literal> (?&CFWS)? \[ (?: (?&FWS)? (?&dcontent))* (?&FWS)? + \] (?&CFWS)?) + (?<dcontent> (?&dtext) | (?"ed_pair)) + (?<dtext> (?&NO_WS_CTL) | [\x21-\x5a\x5e-\x7e]) + + (?<atext> (?&ALPHA) | (?&DIGIT) | [!#\$%&'*+-/=?^_`{|}~]) + (?<atom> (?&CFWS)? (?&atext)+ (?&CFWS)?) + (?<dot_atom> (?&CFWS)? (?&dot_atom_text) (?&CFWS)?) + (?<dot_atom_text> (?&atext)+ (?: \. (?&atext)+)*) + + (?<text> [\x01-\x09\x0b\x0c\x0e-\x7f]) + (?<quoted_pair> \\ (?&text)) + + (?<qtext> (?&NO_WS_CTL) | [\x21\x23-\x5b\x5d-\x7e]) + (?<qcontent> (?&qtext) | (?"ed_pair)) + (?<quoted_string> (?&CFWS)? (?&DQUOTE) (?:(?&FWS)? (?&qcontent))* + (?&FWS)? (?&DQUOTE) (?&CFWS)?) + + (?<word> (?&atom) | (?"ed_string)) + (?<phrase> (?&word)+) + + # Folding white space + (?<FWS> (?: (?&WSP)* (?&CRLF))? (?&WSP)+) + (?<ctext> (?&NO_WS_CTL) | [\x21-\x27\x2a-\x5b\x5d-\x7e]) + (?<ccontent> (?&ctext) | (?"ed_pair) | (?&comment)) + (?<comment> \( (?: (?&FWS)? (?&ccontent))* (?&FWS)? \) ) + (?<CFWS> (?: (?&FWS)? (?&comment))* + (?: (?:(?&FWS)? (?&comment)) | (?&FWS))) + + # No whitespace control + (?<NO_WS_CTL> [\x01-\x08\x0b\x0c\x0e-\x1f\x7f]) + + (?<ALPHA> [A-Za-z]) + (?<DIGIT> [0-9]) + (?<CRLF> \x0d \x0a) + (?<DQUOTE> ") + (?<WSP> [\x20\x09]) + ) + + (?&address) +}x; + + +run_tests() unless caller; + +sub run_tests { + my $count = 0; + + $| = 1; + # rewinding DATA is necessary with PERLIO=stdio when this + # test is run from another thread + seek *DATA, 0, 0; + while (<DATA>) { last if /^__DATA__/ } + while (<DATA>) { + chomp; + next if /^#/; + print /^$email$/ ? "ok " : "not ok ", ++ $count, "\n"; + } +} + +# +# Acme::MetaSyntactic ++ +# +__DATA__ +Jeff_Tracy@thunderbirds.org +"Lady Penelope"@thunderbirds.org +"The\ Hood"@thunderbirds.org +fred @ flintstones.net +barney (rubble) @ flintstones.org +bammbamm (bam! bam! (bam! bam! (bam!)) bam!) @ flintstones.org +Michelangelo@[127.0.0.1] +Donatello @ [127.0.0.1] +Raphael (He as well) @ [127.0.0.1] +"Leonardo" @ [127.0.0.1] +Barbapapa <barbapapa @ barbapapa.net> +"Barba Mama" <barbamama @ [127.0.0.1]> +Barbalala (lalalalalalalala) <barbalala (Yes, her!) @ (barba) barbapapa.net> |