From c4d9bdebc98f8ab38790bceba0f33f34a42d4ce0 Mon Sep 17 00:00:00 2001 From: Kyle Meyer Date: Fri, 22 Jan 2021 23:43:00 -0500 Subject: Add a few basic tests The more interesting things will involve more work and setup to test, but at least start testing some simple things. This project's Makefile was originally based off of Elfeed's, and the changes from this commit are adapted from there as well. Message-Id: <20210123044300.31326-1-kyle@kyleam.com> --- Makefile | 10 ++++- tests/piem-tests.el | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 2 deletions(-) create mode 100644 tests/piem-tests.el diff --git a/Makefile b/Makefile index 6ea8472..a139d1a 100644 --- a/Makefile +++ b/Makefile @@ -2,16 +2,21 @@ EMACS = emacs # Rely on EMACSLOADPATH for everything but the current directory. -BATCH = $(EMACS) --batch -Q -L . +BATCH = $(EMACS) --batch -Q -L . -L tests EL = piem.el piem-b4.el piem-elfeed.el piem-eww.el piem-gnus.el \ - piem-maildir.el piem-notmuch.el + piem-maildir.el piem-notmuch.el \ + tests/piem-tests.el ELC = $(EL:.el=.elc) all: compile piem.info piem-autoloads.el compile: $(ELC) +check: test +test: $(ELC) + $(BATCH) -l tests/piem-tests.elc -f ert-run-tests-batch + piem-autoloads.el: $(EL) $(BATCH) -l package --eval \ '(package-generate-autoloads "piem" default-directory)' @@ -31,6 +36,7 @@ piem-gnus.elc: piem-gnus.el piem.elc piem-maildir.elc: piem-maildir.el piem-notmuch.elc: piem-notmuch.el piem.elc piem.elc: piem.el piem-maildir.elc +tests/piem-tests.elc: tests/piem-tests.el piem.elc .SUFFIXES: .el .elc .texi .info .html diff --git a/tests/piem-tests.el b/tests/piem-tests.el new file mode 100644 index 0000000..346f9e1 --- /dev/null +++ b/tests/piem-tests.el @@ -0,0 +1,104 @@ +;;; piem-tests.el --- tests for piem -*- lexical-binding: t; -*- + +;; Copyright (C) 2021 Kyle Meyer + +;; Author: Kyle Meyer + +;; This program 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. + +;; This program 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 this program. If not, see . + +;;; Code: + +(require 'ert) +(require 'piem) + +(ert-deftest piem-message-link-re () + (should-not (string-match-p + (piem-message-link-re "https://example.com/inbox") + "https://example.com/inbox")) + (should (string-match-p + (piem-message-link-re "https://example.com/inbox") + "https://example.com/inbox/msg@id/")) + (should-not (string-match-p + (piem-message-link-re "https://example.com/inbox" "msg@id1") + "https://example.com/inbox/msg@id/")) + (should (string-match-p + (piem-message-link-re "https://example.com/inbox/") + "https://example.com/inbox/msg@id/T/#t")) + (should (string-match-p + (piem-message-link-re "https://example.com/inbox/") + "https://example.com/inbox/msg@id/T/#r53974723fd9")) + (should (string-match-p + (piem-message-link-re "https://example.com/inbox/") + "https://example.com/inbox/msg@id/T/#r53974723fd9")) + (should (string-match-p + (piem-message-link-re "https://example.com/inbox/") + "https://example.com/inbox/msg@id/t/#ma0d6f35c094"))) + +(ert-deftest piem-escape-mid () + (should (equal (piem-escape-mid "msg@id") "msg@id")) + (should (equal (piem-escape-mid "m/g@id") "m%2Fg@id"))) + +(ert-deftest piem-name-branch-who-what-v () + (should (equal (piem-name-branch-who-what-v + (list :from "Foo Bar " + :subject "[PATCH] Do a thing")) + "fb/do-thing")) + (should (equal (piem-name-branch-who-what-v + (list :from "Foo " + :subject "[PATCH] Do a thing")) + "f/do-thing")) + (should (equal (piem-name-branch-who-what-v + (list :from "Foo Bar " + :subject "[PATCH v3] Do a thing")) + "fb/do-thing__v3")) + (should-not (piem-name-branch-who-what-v + (list :from "Foo Bar ")))) + +(ert-deftest piem--insert-message-id-header () + (should-not + (with-temp-buffer + (piem--insert-message-id-header "msg@id"))) + (should + (string-match-p + (concat + (rx "Subject: [PATCH 1/2] a\nMessage-Id: \n" + (one-or-more anychar) + "Subject: [PATCH 2/2] b\nMessage-Id: \n")) + (with-temp-buffer + (insert "\ +From 0d732713af1f3fb48b37430e2cd0a3033cea14f3 Mon Sep 17 00:00:00 2001 +From: Foo Bar +Date: Fri, 22 Jan 2021 22:35:58 -0500 +Subject: [PATCH 1/2] a + +--- + a | 1 + + 1 file changed, 1 insertion(+) + create mode 100644 a + +From 7b2433ead6d8d10bff3325cb3719a316ddb52392 Mon Sep 17 00:00:00 2001 +From: Foo Bar +Date: Fri, 22 Jan 2021 22:36:09 -0500 +Subject: [PATCH 2/2] b + +--- + b | 1 + + 1 file changed, 1 insertion(+) + create mode 100644 b") + (goto-char (point-min)) + (piem--insert-message-id-header "msg@id") + (buffer-string))))) + +(provide 'piem-tests) +;;; piem-tests.el ends here -- cgit v1.2.3