discussion and development of piem
 help / color / mirror / code / Atom feed
From: Kyle Meyer <kyle@kyleam.com>
To: piem@inbox.kyleam.com
Subject: [PATCH] Add a few basic tests
Date: Fri, 22 Jan 2021 23:43:00 -0500
Message-ID: <20210123044300.31326-1-kyle@kyleam.com> (raw)

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


                 reply	other threads:[~2021-01-23  4:43 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://git.kyleam.com/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210123044300.31326-1-kyle@kyleam.com \
    --to=kyle@kyleam.com \
    --cc=piem@inbox.kyleam.com \
    --subject='Re: [PATCH] Add a few basic tests' \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

discussion and development of piem

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.kyleam.com/piem/0 piem/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 piem piem/ https://inbox.kyleam.com/piem \
		piem@inbox.kyleam.com
	public-inbox-index piem

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://news.yhetil.org/yhetil.emacs.piem


code repositories for project(s) associated with this inbox:

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

AGPL code for this site: git clone http://ou63pmih66umazou.onion/public-inbox.git