From 05a71740c662fcde3fcfad7c07975052781ec589 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Le=20Gouguec?= Date: Mon, 1 Jun 2020 16:07:44 +0200 Subject: [PATCH] Make tests robust with respect to mailcap entries When /etc/mailcap specifies a program for text/plain files (e.g. less(1)), org-open-file will run this program instead of visiting the file. This throws off some tests which expect extension-less temporary files to be visited. * testing/lisp/test-ob-tangle.el (ob-tangle/jump-to-org): * testing/lisp/test-org-attach.el (test-org-attach/dir): Rig org-file-apps so that temporary files are visited inside Emacs. --- testing/lisp/test-ob-tangle.el | 121 +++++++++++++------------- testing/lisp/test-org-attach.el | 147 ++++++++++++++++---------------- 2 files changed, 135 insertions(+), 133 deletions(-) diff --git a/testing/lisp/test-ob-tangle.el b/testing/lisp/test-ob-tangle.el index 2283037fc..35490f538 100644 --- a/testing/lisp/test-ob-tangle.el +++ b/testing/lisp/test-ob-tangle.el @@ -125,23 +125,24 @@ echo 1 (ert-deftest ob-tangle/jump-to-org () "Test `org-babel-tangle-jump-to-org' specifications." ;; Standard test. - (should - (equal - "* H\n#+begin_src emacs-lisp\n1\n#+end_src" - (org-test-with-temp-text-in-file - "* H\n#+begin_src emacs-lisp\n1\n#+end_src" - (let ((file (buffer-file-name))) - (org-test-with-temp-text - (format ";; [[file:%s][H:1]]\n1\n;; H:1 ends here\n" - (file-name-nondirectory file)) - (org-babel-tangle-jump-to-org) - (buffer-string)))))) - ;; Multiple blocks in the same section. - (should - (equal - "2" - (org-test-with-temp-text-in-file - "* H + (let ((org-file-apps '((t . emacs)))) + (should + (equal + "* H\n#+begin_src emacs-lisp\n1\n#+end_src" + (org-test-with-temp-text-in-file + "* H\n#+begin_src emacs-lisp\n1\n#+end_src" + (let ((file (buffer-file-name))) + (org-test-with-temp-text + (format ";; [[file:%s][H:1]]\n1\n;; H:1 ends here\n" + (file-name-nondirectory file)) + (org-babel-tangle-jump-to-org) + (buffer-string)))))) + ;; Multiple blocks in the same section. + (should + (equal + "2" + (org-test-with-temp-text-in-file + "* H first block @@ -155,49 +156,49 @@ another block 2 #+end_src " - (let ((file (buffer-file-name))) - (org-test-with-temp-text - (format ";; [[file:%s][H:2]]\n2\n;; H:2 ends here\n" - (file-name-nondirectory file)) - (org-babel-tangle-jump-to-org) - (buffer-substring (line-beginning-position) - (line-end-position))))))) - ;; Preserve position within the source code. - (should - (equal - "1)" - (org-test-with-temp-text-in-file - "* H\n#+begin_src emacs-lisp\n(+ 1 1)\n#+end_src" - (let ((file (buffer-file-name))) - (org-test-with-temp-text - (format ";; [[file:%s][H:1]]\n(+ 1 1)\n;; H:1 ends here\n" - (file-name-nondirectory file)) - (org-babel-tangle-jump-to-org) - (buffer-substring-no-properties (point) (line-end-position))))))) - ;; Blocks before first heading. - (should - (equal - "Buffer start\n#+begin_src emacs-lisp\n1\n#+end_src\n* H" - (org-test-with-temp-text-in-file - "Buffer start\n#+begin_src emacs-lisp\n1\n#+end_src\n* H" - (let ((file (buffer-file-name))) - (org-test-with-temp-text - (format ";; [[file:%s][H:1]]\n1\n;; H:1 ends here\n" - (file-name-nondirectory file)) - (org-babel-tangle-jump-to-org) - (buffer-string)))))) - ;; Special case: buffer starts with a source block. - (should - (equal - "#+begin_src emacs-lisp\n1\n#+end_src\n* H" - (org-test-with-temp-text-in-file - "#+begin_src emacs-lisp\n1\n#+end_src\n* H" - (let ((file (buffer-file-name))) - (org-test-with-temp-text - (format ";; [[file:%s][H:1]]\n1\n;; H:1 ends here\n" - (file-name-nondirectory file)) - (org-babel-tangle-jump-to-org) - (buffer-string))))))) + (let ((file (buffer-file-name))) + (org-test-with-temp-text + (format ";; [[file:%s][H:2]]\n2\n;; H:2 ends here\n" + (file-name-nondirectory file)) + (org-babel-tangle-jump-to-org) + (buffer-substring (line-beginning-position) + (line-end-position))))))) + ;; Preserve position within the source code. + (should + (equal + "1)" + (org-test-with-temp-text-in-file + "* H\n#+begin_src emacs-lisp\n(+ 1 1)\n#+end_src" + (let ((file (buffer-file-name))) + (org-test-with-temp-text + (format ";; [[file:%s][H:1]]\n(+ 1 1)\n;; H:1 ends here\n" + (file-name-nondirectory file)) + (org-babel-tangle-jump-to-org) + (buffer-substring-no-properties (point) (line-end-position))))))) + ;; Blocks before first heading. + (should + (equal + "Buffer start\n#+begin_src emacs-lisp\n1\n#+end_src\n* H" + (org-test-with-temp-text-in-file + "Buffer start\n#+begin_src emacs-lisp\n1\n#+end_src\n* H" + (let ((file (buffer-file-name))) + (org-test-with-temp-text + (format ";; [[file:%s][H:1]]\n1\n;; H:1 ends here\n" + (file-name-nondirectory file)) + (org-babel-tangle-jump-to-org) + (buffer-string)))))) + ;; Special case: buffer starts with a source block. + (should + (equal + "#+begin_src emacs-lisp\n1\n#+end_src\n* H" + (org-test-with-temp-text-in-file + "#+begin_src emacs-lisp\n1\n#+end_src\n* H" + (let ((file (buffer-file-name))) + (org-test-with-temp-text + (format ";; [[file:%s][H:1]]\n1\n;; H:1 ends here\n" + (file-name-nondirectory file)) + (org-babel-tangle-jump-to-org) + (buffer-string)))))))) (ert-deftest ob-tangle/nested-block () "Test tangling of org file with nested block." diff --git a/testing/lisp/test-org-attach.el b/testing/lisp/test-org-attach.el index f910526c2..168e5d56f 100644 --- a/testing/lisp/test-org-attach.el +++ b/testing/lisp/test-org-attach.el @@ -30,80 +30,81 @@ (ert-deftest test-org-attach/dir () "Test `org-attach-get' specifications." - (should (equal "Text in fileA\n" - (org-test-in-example-file org-test-attachments-file - (goto-char 157) ;; First attachment link - (org-open-at-point) - (buffer-string)))) - (should-not (equal "Text in fileB\n" - (org-test-in-example-file org-test-attachments-file - (goto-char 219) ;; Second attachment link - (let ((org-attach-use-inheritance nil)) - (org-open-at-point) - (buffer-string))))) - (should (equal "Text in fileB\n" - (org-test-in-example-file org-test-attachments-file - (goto-char 219) ;; Second attachment link - (let ((org-attach-use-inheritance t)) + (let ((org-file-apps '((t . emacs)))) + (should (equal "Text in fileA\n" + (org-test-in-example-file org-test-attachments-file + (goto-char 157) ;; First attachment link (org-open-at-point) - (buffer-string))))) - (should-not (equal "att1" - (org-test-in-example-file org-test-attachments-file - (goto-char 179) ;; H1.1 - (let ((org-attach-use-inheritance nil)) - (org-attach-dir))))) - (should (equal "att1" - (org-test-in-example-file org-test-attachments-file - (goto-char 179) ;; H1.1 - (let ((org-attach-use-inheritance t)) - (org-attach-dir))))) - (should (equal '("fileC" "fileD") - (org-test-in-example-file org-test-attachments-file - (goto-char 239) ;; H1.2 - (org-attach-file-list (org-attach-dir))))) - (should (equal '("fileC" "fileD") - (org-test-in-example-file org-test-attachments-file - (goto-char 239) ;; H1.2 - (org-attach-file-list (org-attach-dir))))) - (should (equal '("fileE") - (org-test-in-example-file org-test-attachments-file - (goto-char 289) ;; H2 - (let ((org-attach-id-dir "data/")) - (org-attach-file-list (org-attach-dir)))))) - (should (equal "peek-a-boo\n" - (org-test-in-example-file org-test-attachments-file - (goto-char 289) ;; H2 - (let ((org-attach-id-dir "data/")) - (org-attach-open-in-emacs) - (buffer-string))))) - (should (equal '("fileA" "fileB") - (org-test-in-example-file org-test-attachments-file - (goto-char 336) ;; H3 - (org-attach-file-list (org-attach-dir))))) - ;; Test for folder not initialized in the filesystem - (should-not (org-test-in-example-file org-test-attachments-file - (goto-char 401) ;; H3.1 - (let ((org-attach-use-inheritance nil) - (org-attach-id-dir "data/")) - (org-attach-dir)))) - ;; Not yet initialized folder should be found if no-fs-check is - ;; non-nil - (should (equal "data/ab/cd12345" - (org-test-in-example-file org-test-attachments-file - (goto-char 401) ;; H3.1 - (let ((org-attach-use-inheritance nil) - (org-attach-id-dir "data/")) - (file-relative-name (org-attach-dir nil t)))))) - (should (equal '("fileA" "fileB") - (org-test-in-example-file org-test-attachments-file - (goto-char 401) ;; H3.1 - (let ((org-attach-use-inheritance t)) - ;; This is where it gets a bit sketchy...! DIR always has - ;; priority over ID, even if ID is declared "higher up" in the - ;; tree. This can potentially be revised. But it is also - ;; pretty clean. DIR is always higher in priority than ID right - ;; now, no matter the depth in the tree. - (org-attach-file-list (org-attach-dir))))))) + (buffer-string)))) + (should-not (equal "Text in fileB\n" + (org-test-in-example-file org-test-attachments-file + (goto-char 219) ;; Second attachment link + (let ((org-attach-use-inheritance nil)) + (org-open-at-point) + (buffer-string))))) + (should (equal "Text in fileB\n" + (org-test-in-example-file org-test-attachments-file + (goto-char 219) ;; Second attachment link + (let ((org-attach-use-inheritance t)) + (org-open-at-point) + (buffer-string))))) + (should-not (equal "att1" + (org-test-in-example-file org-test-attachments-file + (goto-char 179) ;; H1.1 + (let ((org-attach-use-inheritance nil)) + (org-attach-dir))))) + (should (equal "att1" + (org-test-in-example-file org-test-attachments-file + (goto-char 179) ;; H1.1 + (let ((org-attach-use-inheritance t)) + (org-attach-dir))))) + (should (equal '("fileC" "fileD") + (org-test-in-example-file org-test-attachments-file + (goto-char 239) ;; H1.2 + (org-attach-file-list (org-attach-dir))))) + (should (equal '("fileC" "fileD") + (org-test-in-example-file org-test-attachments-file + (goto-char 239) ;; H1.2 + (org-attach-file-list (org-attach-dir))))) + (should (equal '("fileE") + (org-test-in-example-file org-test-attachments-file + (goto-char 289) ;; H2 + (let ((org-attach-id-dir "data/")) + (org-attach-file-list (org-attach-dir)))))) + (should (equal "peek-a-boo\n" + (org-test-in-example-file org-test-attachments-file + (goto-char 289) ;; H2 + (let ((org-attach-id-dir "data/")) + (org-attach-open-in-emacs) + (buffer-string))))) + (should (equal '("fileA" "fileB") + (org-test-in-example-file org-test-attachments-file + (goto-char 336) ;; H3 + (org-attach-file-list (org-attach-dir))))) + ;; Test for folder not initialized in the filesystem + (should-not (org-test-in-example-file org-test-attachments-file + (goto-char 401) ;; H3.1 + (let ((org-attach-use-inheritance nil) + (org-attach-id-dir "data/")) + (org-attach-dir)))) + ;; Not yet initialized folder should be found if no-fs-check is + ;; non-nil + (should (equal "data/ab/cd12345" + (org-test-in-example-file org-test-attachments-file + (goto-char 401) ;; H3.1 + (let ((org-attach-use-inheritance nil) + (org-attach-id-dir "data/")) + (file-relative-name (org-attach-dir nil t)))))) + (should (equal '("fileA" "fileB") + (org-test-in-example-file org-test-attachments-file + (goto-char 401) ;; H3.1 + (let ((org-attach-use-inheritance t)) + ;; This is where it gets a bit sketchy...! DIR always has + ;; priority over ID, even if ID is declared "higher up" in the + ;; tree. This can potentially be revised. But it is also + ;; pretty clean. DIR is always higher in priority than ID right + ;; now, no matter the depth in the tree. + (org-attach-file-list (org-attach-dir)))))))) (ert-deftest test-org-attach/dired-attach-to-next-best-subtree/1 () "Attach file at point in dired to subtree." -- 2.17.1