From 9f64d59ae6d87f38276fe05254094113a171fb0e Mon Sep 17 00:00:00 2001 From: Mark Oteiza Date: Tue, 5 Sep 2017 11:53:37 -0400 Subject: [PATCH] Add tests for mailcap.el * test/data/mailcap/mime.types: New file. * test/lisp/net/mailcap-tests.el: New file. --- test/data/mailcap/mime.types | 5 +++ test/lisp/net/mailcap-tests.el | 69 ++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 test/data/mailcap/mime.types create mode 100644 test/lisp/net/mailcap-tests.el diff --git a/test/data/mailcap/mime.types b/test/data/mailcap/mime.types new file mode 100644 index 00000000000..4bedfaf9702 --- /dev/null +++ b/test/data/mailcap/mime.types @@ -0,0 +1,5 @@ +# this is a comment + +audio/ogg opus +audio/flac flac +audio/x-wav wav diff --git a/test/lisp/net/mailcap-tests.el b/test/lisp/net/mailcap-tests.el new file mode 100644 index 00000000000..9e32931ff7e --- /dev/null +++ b/test/lisp/net/mailcap-tests.el @@ -0,0 +1,69 @@ +;;; mailcap-tests.el --- tests for mailcap.el -*- lexical-binding: t -*- + +;; Copyright (C) 2017 Free Software Foundation, Inc. + +;; Author: Mark Oteiza + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs 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 General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;;; Code: + +(require 'ert) +(require 'mailcap) + +(defconst mailcap-tests-data-dir + (expand-file-name "test/data/mailcap" source-directory)) + +(defconst mailcap-tests-path + (expand-file-name "mime.types" mailcap-tests-data-dir) + "String used as PATH argument of `mailcap-parse-mimetypes'.") + +(defconst mailcap-tests-mime-extensions (copy-alist mailcap-mime-extensions)) + +(defconst mailcap-tests-path-extensions + '((".wav" . "audio/x-wav") + (".flac" . "audio/flac") + (".opus" . "audio/ogg")) + "Alist of MIME associations in `mailcap-tests-path'.") + +(ert-deftest mailcap-mimetypes-parsed-p () + (should (null mailcap-mimetypes-parsed-p))) + +(ert-deftest mailcap-parse-empty-path () + "If PATH is empty, this should be a noop." + (mailcap-parse-mimetypes "file/that/should/not/exist" t) + (should mailcap-mimetypes-parsed-p) + (should (equal mailcap-mime-extensions mailcap-tests-mime-extensions))) + +(ert-deftest mailcap-parse-path () + (let ((mimetypes (getenv "MIMETYPES"))) + (unwind-protect + (progn + (setenv "MIMETYPES" mailcap-tests-path) + (mailcap-parse-mimetypes nil t)) + (setenv "MIMETYPES" mimetypes))) + (should (equal mailcap-mime-extensions + (append mailcap-tests-path-extensions + mailcap-tests-mime-extensions))) + ;; Already parsed this, should be a noop + (mailcap-parse-mimetypes mailcap-tests-path) + (should (equal mailcap-mime-extensions + (append mailcap-tests-path-extensions + mailcap-tests-mime-extensions)))) + +;;; mailcap-tests.el ends here -- 2.39.2