branch: externals/hyperbole
commit c73e94851629e412df4496690afe250a94f1787e
Merge: ca3cf8e427 98edfae8d1
Author: Robert Weiner <[email protected]>
Commit: GitHub <[email protected]>
Merge pull request #422 from rswgnu/matsl-rsw-hui-link-possible-types
Matsl rsw hui link possible types
---
ChangeLog | 8 +++
hui.el | 2 +-
test/hui-tests.el | 142 +++++++++++++++++++++++++++++++++++++++++++++++-
test/hy-test-helpers.el | 9 ++-
4 files changed, 158 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 06bd7e6f06..e4ced2a29c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2023-12-26 Mats Lidell <[email protected]>
+
+* test/hy-test-helpers.el (hy-delete-dir-and-buffer): Add test helper for
+ removing buffers for temp folders.
+
+* test/hui-tests.el (hui--link-possible-types): Add test for
+ hui:link-possible-types.
+
2023-12-26 Bob Weiner <[email protected]>
* test/hyrolo-tests.el: Fix with-simulated-input where prompting for 'y'.
diff --git a/hui.el b/hui.el
index b3d4634cf0..81055fa062 100644
--- a/hui.el
+++ b/hui.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 19-Sep-91 at 21:42:03
-;; Last-Mod: 10-Dec-23 at 16:18:24 by Bob Weiner
+;; Last-Mod: 25-Dec-23 at 22:28:16 by Mats Lidell
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
diff --git a/test/hui-tests.el b/test/hui-tests.el
index e53f5417f3..19ce491b5a 100644
--- a/test/hui-tests.el
+++ b/test/hui-tests.el
@@ -3,7 +3,7 @@
;; Author: Mats Lidell <[email protected]>
;;
;; Orig-Date: 30-Jan-21 at 12:00:00
-;; Last-Mod: 30-Nov-23 at 19:53:31 by Mats Lidell
+;; Last-Mod: 10-Dec-23 at 21:11:07 by Mats Lidell
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -932,6 +932,146 @@ With point on label suggest that ibut for rename."
(hy-delete-file-and-buffer global-but-file)
(hy-delete-file-and-buffer file))))
+(ert-deftest hui--link-possible-types ()
+ "Verify right type is selected from referent buffer."
+
+ ;; Org Roam or Org Id link-to-org-id
+ (let ((file (make-temp-file "hypb" nil ".org")))
+ (unwind-protect
+ (progn
+ (find-file file)
+ (org-id-get-create nil)
+ (re-search-forward ":ID:")
+ (should (equal (caar (hui:link-possible-types)) 'link-to-org-id)))
+ (hy-delete-file-and-buffer file)))
+
+ ;; Global Button link-to-gbut
+ (defvar global-but-file)
+ (let ((global-but-file (make-temp-file "gbut" nil ".txt")))
+ (unwind-protect
+ (mocklet ((gbut:file => global-but-file))
+ (hui:gibut-create "global" "/tmp")
+ (find-file global-but-file)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-gbut)))
+ (hy-delete-file-and-buffer global-but-file)))
+
+ ;; Explicit Button link-to-ebut
+ (with-temp-buffer
+ (ebut:program "label" 'link-to-directory "/tmp")
+ (should (equal (caar (hui:link-possible-types)) 'link-to-ebut)))
+
+ ;; Implicit Button link-to-ibut
+ (with-temp-buffer
+ (insert "<[ibut]> - \"/tmp\"")
+ (goto-char 5)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-ibut)))
+
+ ;; Bookmarks List link-to-bookmark
+ (with-temp-buffer
+ (insert " bookmark ~/bookmarked\n")
+ (bookmark-bmenu-mode)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-bookmark)))
+
+ ;; Info Node link-to-Info-node
+ (with-temp-buffer
+ (insert "(info)node\n")
+ (goto-char 5)
+ (Info-mode)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-Info-node)))
+
+ ;; Texinfo Node link-to-texinfo-node
+ (with-temp-buffer
+ (insert "@node node\n")
+ (goto-char 5)
+ (texinfo-mode)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-texinfo-node)))
+
+ ;; Mail Reader Message link-to-mail
+ (let ((hmail:reader 'gnus-article-mode))
+ (with-temp-buffer
+ (gnus-article-mode)
+ (mocklet ((rmail:msg-id-get => "msg-id"))
+ (should (equal (caar (hui:link-possible-types)) 'link-to-mail)))))
+
+ ;; Directory Name link-to-directory
+ (let ((dir (make-temp-file "hypb" t)))
+ (unwind-protect
+ (let ((hargs:reading-type 'directory))
+ ;; The dired case looks identical to the general dired case
+ ;; below i.e. (let ((hargs:reading-type 'directory))
+ ;; (hui:link-possible-types)) with cursor on a line with a
+ ;; file in dired returns 'link-to-file. What is the expected
+ ;; behavior?
+ (with-current-buffer (dired dir)
+ (goto-char 1)
+ (should (equal (caar (hui:link-possible-types))
'link-to-directory)))
+ (with-temp-buffer
+ (insert dir)
+ (goto-char 4)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-ibut)))
;; Expected: link-to-directory
+ (with-temp-buffer
+ (insert "/ssh:[email protected]:/home/user/file\n")
+ (goto-char 4)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-ibut))))
;; Expected: link-to-directory
+ (hy-delete-dir-and-buffer dir)))
+
+ ;; File Name link-to-file
+ (let* ((temporary-file-directory (make-temp-file "hypb" t))
+ (file (make-temp-file "hypb")))
+ (unwind-protect
+ (let ((hargs:reading-type 'file))
+ (with-current-buffer (dired temporary-file-directory)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-file)))
+ (with-temp-buffer
+ (insert temporary-file-directory)
+ (goto-char 4)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-ibut)))
;; Expected: link-to-file
+ (with-temp-buffer
+ (insert "/ssh:[email protected]:/home/user/\n")
+ (goto-char 4)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-ibut))))
;; Expected: link-to-file
+ (hy-delete-file-and-buffer file)
+ (hy-delete-dir-and-buffer temporary-file-directory)))
+
+ ;; Koutline Cell link-to-kcell
+ (let ((file (make-temp-file "hypb" nil ".kotl")))
+ (unwind-protect
+ (progn
+ (find-file file)
+ (insert "first")
+ (should (equal (caar (hui:link-possible-types)) 'link-to-kcell)))
+ (hy-delete-file-and-buffer file)))
+
+ ;; Outline Heading link-to-string-match
+ (let ((file (make-temp-file "hypb" nil ".outl" "* heading\nbody\n")))
+ (unwind-protect
+ (progn
+ (find-file file)
+ (outline-mode)
+ (goto-char 1)
+ (should (equal (caar (hui:link-possible-types))
'link-to-string-match)))
+ (hy-delete-file-and-buffer file)))
+
+ ;; Buffer attached to File link-to-file
+ (let ((file (make-temp-file "hypb" nil ".txt")))
+ (unwind-protect
+ (progn
+ (find-file file)
+ (should (equal (caar (hui:link-possible-types)) 'link-to-file)))
+ (hy-delete-file-and-buffer file)))
+
+ ;; EOL in Dired Buffer link-to-directory (dired dir)
+ (let ((dir (make-temp-file "hypb" t)))
+ (unwind-protect
+ (with-current-buffer (dired dir)
+ (goto-char 1) ;; EOL does not seem to matter!?
+ (should (equal (caar (hui:link-possible-types)) 'link-to-directory)))
+ (hy-delete-dir-and-buffer dir)))
+
+ ;; Buffer without File link-to-buffer-tmp"
+ (with-temp-buffer
+ (should (equal (caar (hui:link-possible-types)) 'link-to-buffer-tmp))))
+
;; This file can't be byte-compiled without `with-simulated-input' which
;; is not part of the actual dependencies, so:
;; Local Variables:
diff --git a/test/hy-test-helpers.el b/test/hy-test-helpers.el
index c20d35a73b..f11dd33862 100644
--- a/test/hy-test-helpers.el
+++ b/test/hy-test-helpers.el
@@ -3,7 +3,7 @@
;; Author: Mats Lidell <[email protected]>
;;
;; Orig-Date: 30-Jan-21 at 12:00:00
-;; Last-Mod: 31-Oct-23 at 22:48:26 by Mats Lidell
+;; Last-Mod: 22-Dec-23 at 16:03:21 by Mats Lidell
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -81,5 +81,12 @@ Checks ACTYPE, ARGS, LOC and LBL-KEY."
(kill-buffer))))
(delete-file file))
+(defun hy-delete-dir-and-buffer (dir)
+ "Delete DIR and buffer visiting directory."
+ (let ((buf (find-buffer-visiting dir)))
+ (when buf
+ (kill-buffer buf))
+ (delete-directory dir)))
+
(provide 'hy-test-helpers)
;;; hy-test-helpers.el ends here