aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2018-10-01 23:35:42 +0530
committerArun Isaac2018-10-01 23:35:42 +0530
commit761c0aead46e2c89648de21c26eca846cfd39690 (patch)
treea6985c720ea9bf6da131d27e93a6cc96e409ab9e
parent3f61bc4bf0999e9b6ac6a48e4fa525716bfaaaf3 (diff)
downloadguile-email-761c0aead46e2c89648de21c26eca846cfd39690.tar.gz
guile-email-761c0aead46e2c89648de21c26eca846cfd39690.tar.lz
guile-email-761c0aead46e2c89648de21c26eca846cfd39690.zip
tests: Add tests for (email email).
* tests/email.scm: New file. * Makefile.am (SCM_TESTS): Register it.
-rw-r--r--Makefile.am1
-rw-r--r--tests/email.scm117
2 files changed, 118 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index 9b999e1..a52d378 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -50,6 +50,7 @@ SOURCES = \
TEST_EXTENSIONS = .scm
SCM_TESTS = \
+ tests/email.scm \
tests/quoted-printable.scm
TESTS = $(SCM_TESTS)
diff --git a/tests/email.scm b/tests/email.scm
new file mode 100644
index 0000000..f56baee
--- /dev/null
+++ b/tests/email.scm
@@ -0,0 +1,117 @@
+;;; guile-email --- Guile email parser
+;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;;
+;;; This file was adapted from guile-debbugs and is part of guile-email.
+;;;
+;;; guile-email is free software; you can redistribute it and/or modify
+;;; it under the terms of the GNU Affero General Public License as
+;;; published by the Free Software Foundation; either version 3 of the
+;;; License, or (at your option) any later version.
+;;;
+;;; guile-email is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;;; Affero General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU Affero General Public
+;;; License along with guile-email. If not, see
+;;; <http://www.gnu.org/licenses/>.
+;;;
+;;; This is an adaptation of "ext/rfc/test.scm" from Gauche Scheme.
+;;; The file is under the BSD-3 license, reproduced below:
+;;;
+;;; Copyright (c) 2000-2017 Shiro Kawai <shiro@acm.org>
+;;;
+;;; Redistribution and use in source and binary forms, with or without
+;;; modification, are permitted provided that the following conditions
+;;; are met:
+;;;
+;;; 1. Redistributions of source code must retain the above copyright
+;;; notice, this list of conditions and the following disclaimer.
+;;;
+;;; 2. Redistributions in binary form must reproduce the above copyright
+;;; notice, this list of conditions and the following disclaimer in the
+;;; documentation and/or other materials provided with the distribution.
+;;;
+;;; 3. Neither the name of the authors nor the names of its contributors
+;;; may be used to endorse or promote products derived from this
+;;; software without specific prior written permission.
+;;;
+;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+;;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+;;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+;;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+;;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+;;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+;;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+;;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(use-modules (email email)
+ (srfi srfi-19)
+ (srfi srfi-64))
+
+(test-begin "email")
+
+(test-equal "parse email headers"
+ (parse-email-headers
+ "Received: by foo.bar.com id ZZZ55555; Thu, 31 May 2001 16:38:04 -1000 (HST)
+Received: from ooo.ooo.com (ooo.ooo.com [1.2.3.4])
+\tby foo.bar.com (9.9.9+3.2W/3.7W-) with ESMTP id ZZZ55555
+\tfor <yoo@bar.com>; Thu, 31 May 2001 16:38:02 -1000 (HST)
+Received: from zzz ([1.2.3.5]) by ooo.ooo.com with Maccrosoft SMTPSVC(5.5.1877.197.19);
+\t Thu, 31 May 2001 22:33:16 -0400
+Message-ID: <beefbeefbeefbeef@ooo.ooo.com>
+Subject: Bogus Tester
+From: Bogus Sender <bogus@ooo.com>
+To: You <you@bar.com>, Another <another@ooo.com>
+Date: Fri, 01 Jun 2001 02:37:31 +0530
+Mime-Version: 1.0
+Content-Type: text/html
+Content-Transfer-Encoding: quoted-printable
+X-MSMail-Priority: Normal
+X-mailer: FooMail 4.0 4.03 (SMT460B92F)
+Content-Length: 4349
+")
+ `((trace (received " by foo.bar.com id ZZZ55555"
+ ,(make-date 0 4 38 16 31 5 2001 -36000))
+ (received " from ooo.ooo.com \tby foo.bar.com with ESMTP id ZZZ55555\tfor <yoo@bar.com>"
+ ,(make-date 0 2 38 16 31 5 2001 -36000))
+ (received " from zzz by ooo.ooo.com with Maccrosoft SMTPSVC"
+ ,(make-date 0 16 33 22 31 5 2001 -14400)))
+ (message-id . "beefbeefbeefbeef@ooo.ooo.com")
+ (subject . "Bogus Tester")
+ (from ((name . "Bogus Sender")
+ (address . "bogus@ooo.com")))
+ (to ((name . "You")
+ (address . "you@bar.com"))
+ ((name . "Another")
+ (address . "another@ooo.com")))
+ (date . ,(make-date 0 31 37 2 1 6 2001 19800))
+ (mime-version . "1.0")
+ (content-type (type . text)
+ (subtype . html)
+ (charset . "utf-8"))
+ (content-transfer-encoding . quoted-printable)
+ (x-msmail-priority . "Normal")
+ (x-mailer . "FooMail 4.0 4.03 (SMT460B92F)")
+ (content-length . "4349")))
+
+(test-equal "handle truncated multipart message gracefully"
+ ((module-ref (resolve-module '(email email))
+ 'body->mime-entities)
+ "--boundary
+Content-Type: text/plain
+
+foo
+"
+ "boundary")
+ (list "Content-Type: text/plain
+
+foo
+"))
+
+(test-end "email")