diff --git a/ChangeLog b/ChangeLog index e738fae3..295bba14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2023-11-30 Mats Lidell + +* test/hui-tests.el (hui--ebut-link-directly-to-file) + (hui--ebut-link-directly-to-dired, hui--buf-writable-err) + (hui--gbut-link-directly-ibut, hui--gbut-link-directly-ebut): Add + tests for ebut-link-directly. + 2023-11-29 Mats Lidell * test/hyrolo-tests.el (hyrolo-fgrep-and-goto-next-visible-org-heading) @@ -7,7 +14,7 @@ (hyrolo-fgrep-and-goto-next-visible-kotl-heading-level-2) (hyrolo-fgrep-and-goto-next-visible-kotl-heading-cell-2): Add test for moving to next header and that action-key then brings you to the - matching record. + matchi 2023-11-25 Mats Lidell diff --git a/test/hui-tests.el b/test/hui-tests.el index 9a203d8f..e53f5417 100644 --- a/test/hui-tests.el +++ b/test/hui-tests.el @@ -3,7 +3,7 @@ ;; Author: Mats Lidell ;; ;; Orig-Date: 30-Jan-21 at 12:00:00 -;; Last-Mod: 15-Nov-23 at 01:57:15 by Bob Weiner +;; Last-Mod: 30-Nov-23 at 19:53:31 by Mats Lidell ;; ;; SPDX-License-Identifier: GPL-3.0-or-later ;; @@ -831,6 +831,107 @@ With point on label suggest that ibut for rename." (hy-delete-file-and-buffer filea) (hy-delete-file-and-buffer fileb)))) +(ert-deftest hui--ebut-link-directly-to-file () + "Create a direct link to a file." + (let ((filea (make-temp-file "hypb" nil ".txt")) + (fileb (make-temp-file "hypb" nil ".txt" "1234567890"))) + (unwind-protect + (progn + (delete-other-windows) + (find-file fileb) + (goto-char (point-max)) + (split-window) + (find-file filea) + (with-simulated-input "button RET" + (hui:ebut-link-directly (get-buffer-window) + (get-buffer-window (get-file-buffer fileb))) + (should (string= (buffer-string) "<(button)>")) + (hy-test-helpers-verify-hattr-at-p :actype 'actypes::link-to-file + :args (list fileb 11) + :loc filea + :lbl-key "button"))) + (hy-delete-file-and-buffer filea) + (hy-delete-file-and-buffer fileb)))) + +(ert-deftest hui--ebut-link-directly-to-dired () + "Create a direct link to a directory in Dired." + (let* ((file (make-temp-file "hypb" nil ".txt")) + (dir hyperb:dir) + dir-buf) + (unwind-protect + (progn + (delete-other-windows) + (setq dir-buf (dired dir)) + (goto-char (point-min)) + ;; Move point just prior to last colon on the first dired directory line; + ;; With some dired formats, there may be text after the last colon. + (goto-char (line-end-position)) + (skip-chars-backward "^:") + (when (/= (point) (point-min)) + (goto-char (1- (point)))) + (split-window) + (find-file file) + (with-simulated-input "button RET" + (hui:ebut-link-directly (get-buffer-window) (get-buffer-window dir-buf)) + ;; Implicit link should be the `dir' dired directory, + ;; possibly minus the final directory '/'. + (should (string= (buffer-string) "<(button)>")) + (hy-test-helpers-verify-hattr-at-p :actype 'actypes::link-to-directory + :args (list (directory-file-name hyperb:dir)) ; Remove trailing slash!? + :loc file + :lbl-key "button"))) + (hy-delete-file-and-buffer file)))) + +(ert-deftest hui--buf-writable-err () + "Verify error is signaled if buffer is not writable." + (with-temp-buffer + (read-only-mode) + (condition-case err + (hui:buf-writable-err (current-buffer) "func") + (error + (progn + (should (equal (car err) 'error)) + (should (string-match + "(func) Read-only error in Hyperbole button buffer" + (cadr err)))))))) + +(ert-deftest hui--gbut-link-directly-ibut () + "Verify an ibut is created last in the global but file." + (defvar global-but-file) + (let ((global-but-file (make-temp-file "gbut" nil ".txt" "First\n")) + (file (make-temp-file "hypb" nil ".txt"))) + (unwind-protect + (mocklet ((gbut:file => global-but-file)) + (delete-other-windows) + (find-file file) + (with-simulated-input "button RET" + (hui:gbut-link-directly t) + (with-current-buffer (find-buffer-visiting global-but-file) + (should (string= (buffer-string) + (concat "First\n<[button]> - \"" file ":1\"")))))) + (hy-delete-file-and-buffer global-but-file) + (hy-delete-file-and-buffer file)))) + +(ert-deftest hui--gbut-link-directly-ebut () + "Verify an ebut is created last in the global but file." + (defvar global-but-file) + (let ((global-but-file (make-temp-file "gbut" nil ".txt" "First\n")) + (file (make-temp-file "hypb" nil ".txt"))) + (unwind-protect + (mocklet ((gbut:file => global-but-file)) + (delete-other-windows) + (find-file file) + (with-simulated-input "button RET" + (hui:gbut-link-directly) + (with-current-buffer (find-buffer-visiting global-but-file) + (should (string= (buffer-string) "First\n<(button)>\n")) + (hy-test-helpers-verify-hattr-at-p :actype 'actypes::link-to-file + :args (list file 1) + :loc global-but-file + :lbl-key "button")))) + (hy-delete-file-and-buffer global-but-file) + (hy-delete-file-and-buffer file)))) + ;; This file can't be byte-compiled without `with-simulated-input' which ;; is not part of the actual dependencies, so: ;; Local Variables: