From ca4f040604868fda6981cf2859b8147c3eab6e20 Mon Sep 17 00:00:00 2001 From: dakkar Date: Fri, 16 Nov 2018 12:55:30 +0000 Subject: test the parser --- lib/MaildirIndexer/Parser.pm6 | 2 +- t/parser.t | 61 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 t/parser.t diff --git a/lib/MaildirIndexer/Parser.pm6 b/lib/MaildirIndexer/Parser.pm6 index 7b80ecf..edcbe6d 100644 --- a/lib/MaildirIndexer/Parser.pm6 +++ b/lib/MaildirIndexer/Parser.pm6 @@ -45,7 +45,7 @@ class Message-actions { ); } method headers($/) { - make %( |$/
».made ); + make %( flat |$/
».made ); } method header($/) { make $/ ?? () !! ( $/.Str.lc => $/.made ); diff --git a/t/parser.t b/t/parser.t new file mode 100644 index 0000000..aafbb27 --- /dev/null +++ b/t/parser.t @@ -0,0 +1,61 @@ +#!perl6 +use v6.d.PREVIEW; +use Test; +use MaildirIndexer::Parser; +use MaildirIndexer::Email; + +subtest 'from string' => { + is-deeply parse-email(''), Nil, "empty string won't parse"; + + my $message = q:to; + bad stuff + EOM + is-deeply parse-email($message), Nil, "bad message won't parse"; + + $message = q:to; + Head: value + + EOM + is-deeply( parse-email($message), + MaildirIndexer::Email.new(:headers(Head=>'value'),:body('')), + "minimal message should parse" ); + + $message = q:to; + Head: value + continued + And: more + + some body + on two lines + EOM + is-deeply( parse-email($message), + MaildirIndexer::Email.new( + :headers(%( + Head => 'value continued', + And => 'more', + )), + :body("some body\non two lines"), + ), + "full message should parse" ); + + $message = q:to; + Head: value + continued + crap crap crap + And: more + + some body + on two lines + EOM + is-deeply( parse-email($message), + MaildirIndexer::Email.new( + :headers(%( + Head => 'value continued', + And => 'more', + )), + :body("some body\non two lines"), + ), + "message wtih junk between headers should parse" ); +} + +done-testing; -- cgit v1.2.3