8f6955176f
The following changes are required to make mime4cl build: * file-position doesn't like to be called with NIL as the position argument, so we have to make sure to not do that in stream-file-position. My workaround is a bit clunky, but works. * Tests discover the sample file via relative path resolution. This doesn't work when they are imported into the nix store as individual files. Instead we make use of the fact that DEFVAR is a no-op if the variable is already defined and inject a file via the nix build that sets the relevant ones. For the path to sample1.msg, we need to create a new variable. Change-Id: I74eeda7bf2c2a4f64cc2b90e72081513ec3285d5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/3270 Tested-by: BuildkiteCI Reviewed-by: grfn <grfn@gws.fyi>
56 lines
2 KiB
Common Lisp
56 lines
2 KiB
Common Lisp
;;; mime.lisp --- MIME regression tests
|
|
|
|
;;; Copyright (C) 2012 by Walter C. Pelissero
|
|
;;; Copyright (C) 2021 by the TVL Authors
|
|
|
|
;;; Author: Walter C. Pelissero <walter@pelissero.de>
|
|
;;; Project: mime4cl
|
|
|
|
#+cmu (ext:file-comment "$Module: mime.lisp")
|
|
|
|
;;; This library is free software; you can redistribute it and/or
|
|
;;; modify it under the terms of the GNU Lesser General Public License
|
|
;;; as published by the Free Software Foundation; either version 2.1
|
|
;;; of the License, or (at your option) any later version.
|
|
;;; This library 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
|
|
;;; Lesser General Public License for more details.
|
|
;;; You should have received a copy of the GNU Lesser General Public
|
|
;;; License along with this library; if not, write to the Free
|
|
;;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
|
;;; 02111-1307 USA
|
|
|
|
(in-package :mime4cl-tests)
|
|
|
|
(defvar *samples-directory*
|
|
(merge-pathnames (make-pathname :directory '(:relative "samples"))
|
|
#.(or *compile-file-pathname*
|
|
*load-pathname*
|
|
#P"")))
|
|
|
|
(defvar *sample1-file* (make-pathname :defaults #.(or *compile-file-pathname*
|
|
*load-pathname*)
|
|
:name "sample1"
|
|
:type "msg"))
|
|
|
|
(deftest mime.1
|
|
(let* ((orig (mime-message *sample1-file*))
|
|
(dup (mime-message (with-output-to-string (out) (encode-mime-part orig out)))))
|
|
(mime= orig dup))
|
|
t)
|
|
|
|
(deftest mime.2
|
|
(loop
|
|
for f in (directory (make-pathname :defaults *samples-directory*
|
|
:name :wild
|
|
:type "txt"))
|
|
do
|
|
(format t "~A:~%" f)
|
|
(finish-output)
|
|
(let* ((orig (mime-message f))
|
|
(dup (mime-message (with-output-to-string (out) (encode-mime-part orig out)))))
|
|
(unless (mime= orig dup)
|
|
(return nil)))
|
|
finally (return t))
|
|
t)
|