summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2018-09-11 22:39:40 +0530
committerArun Isaac2018-09-11 22:50:19 +0530
commit4bc18f4e24318c860481df4fb3c243cc205ef03f (patch)
tree2402c80659e465e78ab0eaf9e89648d150f9658a
parent7a6b266810bfd76e14d0d593d47a45c9caa44d7b (diff)
downloadguile-email-4bc18f4e24318c860481df4fb3c243cc205ef03f.tar.gz
guile-email-4bc18f4e24318c860481df4fb3c243cc205ef03f.tar.lz
guile-email-4bc18f4e24318c860481df4fb3c243cc205ef03f.zip
tests: Add tests for (email quoted-printable).
* build-aux/test-driver.scm: New file. * tests/quoted-printable.scm: New file. * Makefile.am (TEST_EXTENSIONS, SCM_TESTS, TESTS, SCM_LOG_DRIVER): New variables. (EXTRA_DIST): Register new files for distribution.
-rw-r--r--Makefile.am14
-rw-r--r--build-aux/test-driver.scm51
-rwxr-xr-xtests/quoted-printable.scm36
3 files changed, 101 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index f4d352e..9b999e1 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -47,5 +47,19 @@ SOURCES = \
email/quoted-printable.scm \
email/utils.scm
+TEST_EXTENSIONS = .scm
+
+SCM_TESTS = \
+ tests/quoted-printable.scm
+
+TESTS = $(SCM_TESTS)
+
+SCM_LOG_DRIVER = \
+ $(top_builddir)/pre-inst-env \
+ $(GUILE) --no-auto-compile -s \
+ $(top_builddir)/build-aux/test-driver.scm
+
EXTRA_DIST += \
+ $(TESTS) \
+ build-aux/test-driver.scm \
COPYING
diff --git a/build-aux/test-driver.scm b/build-aux/test-driver.scm
new file mode 100644
index 0000000..25aaf44
--- /dev/null
+++ b/build-aux/test-driver.scm
@@ -0,0 +1,51 @@
+;;; guile-email --- Guile email parser
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;;
+;;; This file 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/>.
+
+(use-modules (ice-9 getopt-long)
+ (srfi srfi-26)
+ (srfi srfi-64))
+
+;; Currently, only log-file and trs-file are understood. Everything
+;; else is ignored.
+(define %options
+ '((test-name (value #t))
+ (log-file (value #t))
+ (trs-file (value #t))
+ (color-tests (value #t))
+ (expect-failure (value #t))
+ (enable-hard-errors (value #t))))
+
+(define (my-gnu-runner trs-port)
+ (let ((runner (test-runner-simple)))
+ (test-runner-on-test-end! runner
+ (lambda (runner)
+ (format trs-port ":test-result: ~A ~A~%"
+ (string-upcase
+ (symbol->string
+ (test-result-kind runner)))
+ (test-runner-test-name runner))))
+ runner))
+
+
+(let ((opts (getopt-long (command-line) %options)))
+ (set! test-log-to-file (option-ref opts 'log-file #f))
+ (call-with-output-file (option-ref opts 'trs-file #f)
+ (lambda (trs-port)
+ (test-with-runner (my-gnu-runner trs-port)
+ (load-from-path (option-ref opts 'test-name #f))))))
diff --git a/tests/quoted-printable.scm b/tests/quoted-printable.scm
new file mode 100755
index 0000000..ad13426
--- /dev/null
+++ b/tests/quoted-printable.scm
@@ -0,0 +1,36 @@
+;;; guile-email --- Guile email parser
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;;
+;;; This file 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/>.
+
+(use-modules (email quoted-printable)
+ (ice-9 iconv)
+ (srfi srfi-64))
+
+(test-begin "quoted-printable")
+
+(test-equal "wikipedia example"
+ (bytevector->string
+ (quoted-printable-decode "J'interdis aux marchands de vanter trop leur marchandises. Car ils se font =
+vite p=C3=A9dagogues et t'enseignent comme but ce qui n'est par essence qu'=
+un moyen, et te trompant ainsi sur la route =C3=A0 suivre les voil=C3=A0 bi=
+ent=C3=B4t qui te d=C3=A9gradent, car si leur musique est vulgaire ils te f=
+abriquent pour te la vendre une =C3=A2me vulgaire.")
+ "UTF-8")
+ "J'interdis aux marchands de vanter trop leur marchandises. Car ils se font vite pédagogues et t'enseignent comme but ce qui n'est par essence qu'un moyen, et te trompant ainsi sur la route à suivre les voilà bientôt qui te dégradent, car si leur musique est vulgaire ils te fabriquent pour te la vendre une âme vulgaire.")
+
+(test-end "quoted-printable")