emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/hyperbole aaa5edb95f: Sanity check kotl-mode user comma


From: ELPA Syncer
Subject: [elpa] externals/hyperbole aaa5edb95f: Sanity check kotl-mode user commands (#474)
Date: Thu, 29 Feb 2024 09:58:09 -0500 (EST)

branch: externals/hyperbole
commit aaa5edb95ff53b2bb93385502cecda9baed01ccd
Author: Mats Lidell <mats.lidell@lidells.se>
Commit: GitHub <noreply@github.com>

    Sanity check kotl-mode user commands (#474)
---
 ChangeLog               |   8 +++
 test/kotl-mode-tests.el | 161 +++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 167 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 0460ec71e7..2f5d666bff 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2024-02-27  Mats Lidell  <matsl@gnu.org>
+
+* test/kotl-mode-tests.el (kotl-mode-tests--gen-kotl-outline)
+    (kotl-mode-tests--func, kotl-mode-tests--sanity-check-function-list)
+    (kotl-mode--sanity-check-function)
+    (kotl-mode--sanity-check-key-bound-commands): Sanity check kotl-mode
+    user level commands.
+
 2024-02-25  Mats Lidell  <matsl@gnu.org>
 
 * test/hyrolo-tests.el (hyrolo-tests--mail-to)
diff --git a/test/kotl-mode-tests.el b/test/kotl-mode-tests.el
index 7583e15199..953fd6711a 100644
--- a/test/kotl-mode-tests.el
+++ b/test/kotl-mode-tests.el
@@ -3,7 +3,7 @@
 ;; Author:       Mats Lidell <matsl@gnu.org>
 ;;
 ;; Orig-Date:    18-May-21 at 22:14:10
-;; Last-Mod:     22-Feb-24 at 00:03:07 by Mats Lidell
+;; Last-Mod:     27-Feb-24 at 23:53:09 by Mats Lidell
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -354,7 +354,10 @@
     (insert "first line")
     (kotl-mode:backward-word)
     (should (looking-at-p "line"))
-    (kotl-mode:kill-contents nil)
+    (let ((transient-mark-mode nil))
+      ;; kotl-mode:kill-contents uses kotl-mode:kill-region which
+      ;; depends on transient-mark-mode
+      (kotl-mode:kill-contents nil))
     (kotl-mode:beginning-of-cell)
     (should (looking-at-p "first $"))))
 
@@ -944,5 +947,159 @@ actually depends on the point adjustment heuristics."
           (should-not (kotl-mode:eocp)))
       (hy-delete-file-and-buffer kotl-file))))
 
+(defun kotl-mode-tests--gen-kotl-outline (heading body &optional depth)
+  "Generate a temp file with kotl outline structure for hyrolo outline test.
+Make cell start with HEADING and follow by next line BODY.  With
+optional DEPTH the number of sub cells are created to that depth."
+  (let ((kotl-file (make-temp-file "hypb" nil ".kotl")))
+    (find-file kotl-file)
+    (insert heading)
+    (kotl-mode:newline 1)
+    (insert body)
+    (when (and depth (< 0 depth))
+      (dotimes (d depth)
+        (kotl-mode:add-child)
+        (insert (format "%s %d" heading (1+ d)))
+        (kotl-mode:newline 1)
+        (insert (format "%s %d" body (1+ d)))))
+    (save-buffer)
+    kotl-file))
+
+(cl-defstruct kotl-mode-tests--func
+  "Test definition struct."
+  func args ignore)
+
+(defconst kotl-mode-tests--sanity-check-function-list
+  (list
+    (make-kotl-mode-tests--func :func #'kfile:write :ignore t)
+    (make-kotl-mode-tests--func :func #'kimport:insert-file :ignore t)
+    (make-kotl-mode-tests--func :func #'kimport:insert-register :args '(?a))
+    (make-kotl-mode-tests--func :func #'klink:create :args '("1a"))
+    (make-kotl-mode-tests--func :func #'kotl-mode:add-cell)
+    (make-kotl-mode-tests--func :func #'kotl-mode:add-child)
+    (make-kotl-mode-tests--func :func #'kotl-mode:add-parent)
+    (make-kotl-mode-tests--func :func #'kotl-mode:append-cell :args '("1a" 
"1a1"))
+    (make-kotl-mode-tests--func :func #'kotl-mode:back-to-indentation)
+    (make-kotl-mode-tests--func :func #'kotl-mode:backward-cell :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:backward-char)
+    (make-kotl-mode-tests--func :func #'kotl-mode:backward-kill-word :args 
'(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:backward-paragraph)
+    (make-kotl-mode-tests--func :func #'kotl-mode:backward-sentence)
+    (make-kotl-mode-tests--func :func #'kotl-mode:backward-word)
+    (make-kotl-mode-tests--func :func #'kotl-mode:beginning-of-buffer)
+    (make-kotl-mode-tests--func :func #'kotl-mode:beginning-of-cell)
+    (make-kotl-mode-tests--func :func #'kotl-mode:beginning-of-tree)
+    (make-kotl-mode-tests--func :func #'kotl-mode:cell-help)
+    (make-kotl-mode-tests--func :func #'kotl-mode:center-line)
+    (make-kotl-mode-tests--func :func #'kotl-mode:center-paragraph)
+    (make-kotl-mode-tests--func :func #'kotl-mode:copy-after :args '("1a" 
"1a1" nil))
+    (make-kotl-mode-tests--func :func #'kotl-mode:copy-before :args '("1a" 
"1a1" nil))
+    (make-kotl-mode-tests--func :func #'kotl-mode:copy-to-register :args (list 
?a 130 131))
+    (make-kotl-mode-tests--func :func 
#'kotl-mode:copy-tree-or-region-to-buffer :ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:delete-backward-char :args 
'(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:delete-blank-lines)
+    (make-kotl-mode-tests--func :func #'kotl-mode:delete-char :args '(-1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:delete-forward-char :args 
'(-1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:delete-horizontal-space)
+    (make-kotl-mode-tests--func :func #'kotl-mode:delete-indentation)
+    (make-kotl-mode-tests--func :func #'kotl-mode:demote-tree :ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:down-level :ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:end-of-buffer)
+    (make-kotl-mode-tests--func :func #'kotl-mode:end-of-cell)
+    (make-kotl-mode-tests--func :func #'kotl-mode:end-of-tree)
+    (make-kotl-mode-tests--func :func #'kotl-mode:exchange-cells :args '("1a" 
"1a1"))
+    (make-kotl-mode-tests--func :func #'kotl-mode:fill-cell)
+    (make-kotl-mode-tests--func :func #'kotl-mode:fill-paragraph)
+    (make-kotl-mode-tests--func :func #'kotl-mode:fill-tree)
+    (make-kotl-mode-tests--func :func #'kotl-mode:first-sibling)
+    (make-kotl-mode-tests--func :func #'kotl-mode:forward-cell :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:forward-char :args '(-1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:forward-paragraph)
+    (make-kotl-mode-tests--func :func #'kotl-mode:forward-sentence)
+    (make-kotl-mode-tests--func :func #'kotl-mode:forward-word)
+    (make-kotl-mode-tests--func :func #'kotl-mode:goto-cell :args '("1a"))
+    (make-kotl-mode-tests--func :func #'kotl-mode:hide-sublevels :args '(0))
+    (make-kotl-mode-tests--func :func #'kotl-mode:hide-subtree)
+    (make-kotl-mode-tests--func :func #'kotl-mode:hide-tree)
+    (make-kotl-mode-tests--func :func #'kotl-mode:kill-contents :args '(t))
+    (make-kotl-mode-tests--func :func #'kotl-mode:kill-line)
+    (make-kotl-mode-tests--func :func #'kotl-mode:kill-region :args '(130 131))
+    (make-kotl-mode-tests--func :func #'kotl-mode:kill-ring-save :ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:kill-sentence :ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:kill-tree)
+    (make-kotl-mode-tests--func :func #'kotl-mode:kill-whole-line)
+    (make-kotl-mode-tests--func :func #'kotl-mode:kill-word :args '(-1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:last-sibling)
+    (make-kotl-mode-tests--func :func #'kotl-mode:left-char)
+    (make-kotl-mode-tests--func :func #'kotl-mode:mail-tree :ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:mark-paragraph)
+    (make-kotl-mode-tests--func :func #'kotl-mode:mark-whole-buffer)
+    (make-kotl-mode-tests--func :func #'kotl-mode:move-after :args '("1a1" 
"1a" nil))
+    (make-kotl-mode-tests--func :func #'kotl-mode:move-before :args '("1a1" 
"1a" nil))
+    (make-kotl-mode-tests--func :func #'kotl-mode:move-beginning-of-line)
+    (make-kotl-mode-tests--func :func #'kotl-mode:move-end-of-line)
+    (make-kotl-mode-tests--func :func #'kotl-mode:move-tree-backward :ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:move-tree-forward :ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:newline :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:next-cell :args '(-1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:next-line :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:open-line :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:overview)
+    (make-kotl-mode-tests--func :func #'kotl-mode:previous-cell :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:previous-line :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:promote-tree :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:right-char :args '(-1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:scroll-down-command :ignore 
t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:scroll-up-command :ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:set-fill-prefix :args '(t))
+    (make-kotl-mode-tests--func :func #'kotl-mode:set-or-remove-cell-attribute 
:ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:show-all)
+    (make-kotl-mode-tests--func :func #'kotl-mode:show-tree)
+    (make-kotl-mode-tests--func :func #'kotl-mode:split-cell)
+    (make-kotl-mode-tests--func :func #'kotl-mode:tab-command :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:top-cells)
+    (make-kotl-mode-tests--func :func #'kotl-mode:transpose-cells :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:transpose-chars :args '(-1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:transpose-lines :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:transpose-words :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:untab-command :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:up-level :args '(1))
+    (make-kotl-mode-tests--func :func #'kotl-mode:yank)
+    (make-kotl-mode-tests--func :func #'kotl-mode:yank-pop :ignore t)
+    (make-kotl-mode-tests--func :func #'kotl-mode:zap-to-char :args '(1 ?y))
+    (make-kotl-mode-tests--func :func #'kotl-popup-menu :ignore t)
+    (make-kotl-mode-tests--func :func #'kview:set-label-separator :args '(" - 
"))
+    (make-kotl-mode-tests--func :func #'kview:set-label-type :ignore t)
+    (make-kotl-mode-tests--func :func #'kvspec:activate)
+    (make-kotl-mode-tests--func :func #'kvspec:toggle-blank-lines))
+  "List of functions to sanity check and their arguments if needed.
+Functions that does not allow themselves to be checked in this way are
+marked with :ignore t")
+
+(defun kotl-mode--sanity-check-function (function args)
+  "Check that FUNCTION called with ARGS does not throw an error."
+  (let ((kotl-file (kotl-mode-tests--gen-kotl-outline "h" "body" 2)))
+    (unwind-protect
+        (condition-case err
+            (progn
+              (find-file kotl-file)
+              ;; Move to middle of last line in cell to be a good
+              ;; point for many commands to be able to succeed.
+              (kotl-mode:beginning-of-line)
+              (kotl-mode:forward-char 1)
+              (let ((transient-mark-mode nil))
+                (apply function args)))
+          (error
+           (ert-fail (format "Function %s called with args %s fails due to %s" 
function args err))))
+      (hy-delete-file-and-buffer kotl-file))))
+
+(ert-deftest kotl-mode--sanity-check-key-bound-commands ()
+  "Verify that commands bound to keys in `kotl-mode' does not throw an error."
+  (set-register ?a "text")
+  (dolist (f kotl-mode-tests--sanity-check-function-list)
+    (unless (kotl-mode-tests--func-ignore f)
+      (kotl-mode--sanity-check-function (kotl-mode-tests--func-func f)
+                                        (kotl-mode-tests--func-args f)))))
+
 (provide 'kotl-mode-tests)
 ;;; kotl-mode-tests.el ends here



reply via email to

[Prev in Thread] Current Thread [Next in Thread]