discussion and development of piem
 help / color / mirror / code / Atom feed
* [PATCH] Add a few basic tests
@ 2021-01-23  4:43 Kyle Meyer
  0 siblings, 0 replies; only message in thread
From: Kyle Meyer @ 2021-01-23  4:43 UTC (permalink / raw)
  To: piem

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.
---
 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 <kyle@kyleam.com>
+
+;; 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 <https://www.gnu.org/licenses/>.
+
+;;; 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 <f@example.com>"
+                        :subject "[PATCH] Do a thing"))
+                 "fb/do-thing"))
+  (should (equal (piem-name-branch-who-what-v
+                  (list :from "Foo <f@example.com>"
+                        :subject "[PATCH] Do a thing"))
+                 "f/do-thing"))
+  (should (equal (piem-name-branch-who-what-v
+                  (list :from "Foo Bar <f@example.com>"
+                        :subject "[PATCH v3] Do a thing"))
+                 "fb/do-thing__v3"))
+  (should-not (piem-name-branch-who-what-v
+               (list :from "Foo Bar <xyz.com>"))))
+
+(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: <msg@id>\n"
+         (one-or-more anychar)
+         "Subject: [PATCH 2/2] b\nMessage-Id: <msg@id>\n"))
+    (with-temp-buffer
+      (insert "\
+From 0d732713af1f3fb48b37430e2cd0a3033cea14f3 Mon Sep 17 00:00:00 2001
+From: Foo Bar <f@example.com>
+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 <f@example.com>
+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

base-commit: c9228b90ceed55502cfcbf70d5c9332028860100
-- 
2.29.2


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-01-23  4:43 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-01-23  4:43 [PATCH] Add a few basic tests Kyle Meyer

Code repositories for project(s) associated with this public inbox

	https://git.kyleam.com/piem/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).