From 4bc18f4e24318c860481df4fb3c243cc205ef03f Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Tue, 11 Sep 2018 22:39:40 +0530 Subject: 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. --- Makefile.am | 14 +++++++++++++ build-aux/test-driver.scm | 51 ++++++++++++++++++++++++++++++++++++++++++++++ tests/quoted-printable.scm | 36 ++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 build-aux/test-driver.scm create mode 100755 tests/quoted-printable.scm 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 +;;; +;;; 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 +;;; . + +(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 +;;; +;;; 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 +;;; . + +(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") -- cgit v1.2.3