summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2019-03-01 19:46:43 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2019-03-10 18:00:36 +0100
commit8ffe3419895274b4fba1360fa4a9e1ea033ac2d5 (patch)
treec9f606d358dc97aaef7099f73958ca1e66c62672
parent944c62a79440376f35c370a0861b96ffce04cecb (diff)
downloadorg-mode-8ffe3419895274b4fba1360fa4a9e1ea033ac2d5.tar.gz
Move link tests to a dedicated file
* testing/lisp/test-org.el: Move test to the... * testing/lisp/test-ol.el: ... new file.
-rw-r--r--testing/lisp/test-ol.el253
-rw-r--r--testing/lisp/test-org.el227
2 files changed, 253 insertions, 227 deletions
diff --git a/testing/lisp/test-ol.el b/testing/lisp/test-ol.el
new file mode 100644
index 0000000..49a5bab
--- /dev/null
+++ b/testing/lisp/test-ol.el
@@ -0,0 +1,253 @@
+;;; test-ol.el --- Tests for Org Links library -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2019 Nicolas Goaziou
+
+;; Author: Nicolas Goaziou <mail@nicolasgoaziou.fr>
+
+;; 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:
+
+
+;;; (Un)Escape links
+
+(ert-deftest test-ol/escape-ascii-character ()
+ "Escape an ascii character."
+ (should
+ (string=
+ "%5B"
+ (org-link-escape "["))))
+
+(ert-deftest test-ol/escape-ascii-ctrl-character ()
+ "Escape an ascii control character."
+ (should
+ (string=
+ "%09"
+ (org-link-escape "\t"))))
+
+(ert-deftest test-ol/escape-multibyte-character ()
+ "Escape an unicode multibyte character."
+ (should
+ (string=
+ "%E2%82%AC"
+ (org-link-escape "€"))))
+
+(ert-deftest test-ol/escape-custom-table ()
+ "Escape string with custom character table."
+ (should
+ (string=
+ "Foo%3A%42ar%0A"
+ (org-link-escape "Foo:Bar\n" '(?\: ?\B)))))
+
+(ert-deftest test-ol/escape-custom-table-merge ()
+ "Escape string with custom table merged with default table."
+ (should
+ (string=
+ "%5BF%6F%6F%3A%42ar%0A%5D"
+ (org-link-escape "[Foo:Bar\n]" '(?\: ?\B ?\o) t))))
+
+(ert-deftest test-ol/unescape-ascii-character ()
+ "Unescape an ascii character."
+ (should
+ (string=
+ "["
+ (org-link-unescape "%5B"))))
+
+(ert-deftest test-ol/unescape-ascii-ctrl-character ()
+ "Unescpae an ascii control character."
+ (should
+ (string=
+ "\n"
+ (org-link-unescape "%0A"))))
+
+(ert-deftest test-ol/unescape-multibyte-character ()
+ "Unescape unicode multibyte character."
+ (should
+ (string=
+ "€"
+ (org-link-unescape "%E2%82%AC"))))
+
+(ert-deftest test-ol/unescape-ascii-extended-char ()
+ "Unescape old style percent escaped character."
+ (should
+ (string=
+ "àâçèéêîôùû"
+ (decode-coding-string
+ (org-link-unescape "%E0%E2%E7%E8%E9%EA%EE%F4%F9%FB") 'latin-1))))
+
+(ert-deftest test-ol/escape-url-with-escaped-char ()
+ "Escape and unescape a URL that includes an escaped char.
+http://article.gmane.org/gmane.emacs.orgmode/21459/"
+ (should
+ (string=
+ "http://some.host.com/form?&id=blah%2Bblah25"
+ (org-link-unescape
+ (org-link-escape "http://some.host.com/form?&id=blah%2Bblah25")))))
+
+
+;;; Store links
+
+(ert-deftest test-ol/store-link ()
+ "Test `org-store-link' specifications."
+ ;; On a headline, link to that headline. Use heading as the
+ ;; description of the link.
+ (should
+ (let (org-store-link-props org-stored-links)
+ (org-test-with-temp-text-in-file "* H1"
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s::*H1][H1]]" file)
+ (org-store-link nil))))))
+ ;; On a headline, remove any link from description.
+ (should
+ (let (org-store-link-props org-stored-links)
+ (org-test-with-temp-text-in-file "* [[#l][d]]"
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s::*%s][d]]"
+ file
+ (org-link-escape "[[#l][d]]"))
+ (org-store-link nil))))))
+ (should
+ (let (org-store-link-props org-stored-links)
+ (org-test-with-temp-text-in-file "* [[l]]"
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s::*%s][l]]" file (org-link-escape "[[l]]"))
+ (org-store-link nil))))))
+ (should
+ (let (org-store-link-props org-stored-links)
+ (org-test-with-temp-text-in-file "* [[l1][d1]] [[l2][d2]]"
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s::*%s][d1 d2]]"
+ file
+ (org-link-escape "[[l1][d1]] [[l2][d2]]"))
+ (org-store-link nil))))))
+ ;; On a named element, link to that element.
+ (should
+ (let (org-store-link-props org-stored-links)
+ (org-test-with-temp-text-in-file "#+NAME: foo\nParagraph"
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s::foo][foo]]" file)
+ (org-store-link nil))))))
+ ;; Store link to Org buffer, with context.
+ (should
+ (let ((org-stored-links nil)
+ (org-id-link-to-org-use-id nil)
+ (org-context-in-file-links t))
+ (org-test-with-temp-text-in-file "* h1"
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s::*h1][h1]]" file)
+ (org-store-link nil))))))
+ ;; Store link to Org buffer, without context.
+ (should
+ (let ((org-stored-links nil)
+ (org-id-link-to-org-use-id nil)
+ (org-context-in-file-links nil))
+ (org-test-with-temp-text-in-file "* h1"
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s][file:%s]]" file file)
+ (org-store-link nil))))))
+ ;; C-u prefix reverses `org-context-in-file-links' in Org buffer.
+ (should
+ (let ((org-stored-links nil)
+ (org-id-link-to-org-use-id nil)
+ (org-context-in-file-links nil))
+ (org-test-with-temp-text-in-file "* h1"
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s::*h1][h1]]" file)
+ (org-store-link '(4)))))))
+ ;; A C-u C-u does *not* reverse `org-context-in-file-links' in Org
+ ;; buffer.
+ (should
+ (let ((org-stored-links nil)
+ (org-id-link-to-org-use-id nil)
+ (org-context-in-file-links nil))
+ (org-test-with-temp-text-in-file "* h1"
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s][file:%s]]" file file)
+ (org-store-link '(16)))))))
+ ;; Store file link to non-Org buffer, with context.
+ (should
+ (let ((org-stored-links nil)
+ (org-context-in-file-links t))
+ (org-test-with-temp-text-in-file "one\n<point>two"
+ (fundamental-mode)
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s::one]]" file)
+ (org-store-link nil))))))
+ ;; Store file link to non-Org buffer, without context.
+ (should
+ (let ((org-stored-links nil)
+ (org-context-in-file-links nil))
+ (org-test-with-temp-text-in-file "one\n<point>two"
+ (fundamental-mode)
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s][file:%s]]" file file)
+ (org-store-link nil))))))
+ ;; C-u prefix reverses `org-context-in-file-links' in non-Org
+ ;; buffer.
+ (should
+ (let ((org-stored-links nil)
+ (org-context-in-file-links nil))
+ (org-test-with-temp-text-in-file "one\n<point>two"
+ (fundamental-mode)
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s::one]]" file)
+ (org-store-link '(4)))))))
+ ;; A C-u C-u does *not* reverse `org-context-in-file-links' in
+ ;; non-Org buffer.
+ (should
+ (let ((org-stored-links nil)
+ (org-context-in-file-links nil))
+ (org-test-with-temp-text-in-file "one\n<point>two"
+ (fundamental-mode)
+ (let ((file (buffer-file-name)))
+ (equal (format "[[file:%s][file:%s]]" file file)
+ (org-store-link '(16))))))))
+
+
+;;; Radio Targets
+
+(ert-deftest test-ol/update-radio-target-regexp ()
+ "Test `org-update-radio-target-regexp' specifications."
+ ;; Properly update cache with no previous radio target regexp.
+ (should
+ (eq 'link
+ (org-test-with-temp-text "radio\n\nParagraph\n\nradio"
+ (save-excursion (goto-char (point-max)) (org-element-context))
+ (insert "<<<")
+ (search-forward "o")
+ (insert ">>>")
+ (org-update-radio-target-regexp)
+ (goto-char (point-max))
+ (org-element-type (org-element-context)))))
+ ;; Properly update cache with previous radio target regexp.
+ (should
+ (eq 'link
+ (org-test-with-temp-text "radio\n\nParagraph\n\nradio"
+ (save-excursion (goto-char (point-max)) (org-element-context))
+ (insert "<<<")
+ (search-forward "o")
+ (insert ">>>")
+ (org-update-radio-target-regexp)
+ (search-backward "r")
+ (delete-char 5)
+ (insert "new")
+ (org-update-radio-target-regexp)
+ (goto-char (point-max))
+ (delete-region (line-beginning-position) (point))
+ (insert "new")
+ (org-element-type (org-element-context))))))
+
+
+(provide 'test-ol)
+;;; test-ol.el ends here
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index 6315a88..a70c18f 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -2455,81 +2455,6 @@ Foo Bar
(org-open-at-point 0))
(looking-at-p "line1")))))
-;;;; Link Escaping
-
-(ert-deftest test-org/org-link-escape-ascii-character ()
- "Escape an ascii character."
- (should
- (string=
- "%5B"
- (org-link-escape "["))))
-
-(ert-deftest test-org/org-link-escape-ascii-ctrl-character ()
- "Escape an ascii control character."
- (should
- (string=
- "%09"
- (org-link-escape "\t"))))
-
-(ert-deftest test-org/org-link-escape-multibyte-character ()
- "Escape an unicode multibyte character."
- (should
- (string=
- "%E2%82%AC"
- (org-link-escape "€"))))
-
-(ert-deftest test-org/org-link-escape-custom-table ()
- "Escape string with custom character table."
- (should
- (string=
- "Foo%3A%42ar%0A"
- (org-link-escape "Foo:Bar\n" '(?\: ?\B)))))
-
-(ert-deftest test-org/org-link-escape-custom-table-merge ()
- "Escape string with custom table merged with default table."
- (should
- (string=
- "%5BF%6F%6F%3A%42ar%0A%5D"
- (org-link-escape "[Foo:Bar\n]" '(?\: ?\B ?\o) t))))
-
-(ert-deftest test-org/org-link-unescape-ascii-character ()
- "Unescape an ascii character."
- (should
- (string=
- "["
- (org-link-unescape "%5B"))))
-
-(ert-deftest test-org/org-link-unescape-ascii-ctrl-character ()
- "Unescpae an ascii control character."
- (should
- (string=
- "\n"
- (org-link-unescape "%0A"))))
-
-(ert-deftest test-org/org-link-unescape-multibyte-character ()
- "Unescape unicode multibyte character."
- (should
- (string=
- "€"
- (org-link-unescape "%E2%82%AC"))))
-
-(ert-deftest test-org/org-link-unescape-ascii-extended-char ()
- "Unescape old style percent escaped character."
- (should
- (string=
- "àâçèéêîôùû"
- (decode-coding-string
- (org-link-unescape "%E0%E2%E7%E8%E9%EA%EE%F4%F9%FB") 'latin-1))))
-
-(ert-deftest test-org/org-link-escape-url-with-escaped-char ()
- "Escape and unescape a URL that includes an escaped char.
-http://article.gmane.org/gmane.emacs.orgmode/21459/"
- (should
- (string=
- "http://some.host.com/form?&id=blah%2Bblah25"
- (org-link-unescape
- (org-link-escape "http://some.host.com/form?&id=blah%2Bblah25")))))
-
;;;; Open at point
(ert-deftest test-org/open-at-point/keyword ()
@@ -2596,124 +2521,6 @@ http://article.gmane.org/gmane.emacs.orgmode/21459/"
(org-open-at-point)
nil)))))
-;;;; Stored links
-
-(ert-deftest test-org/store-link ()
- "Test `org-store-link' specifications."
- ;; On a headline, link to that headline. Use heading as the
- ;; description of the link.
- (should
- (let (org-store-link-props org-stored-links)
- (org-test-with-temp-text-in-file "* H1"
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s::*H1][H1]]" file)
- (org-store-link nil))))))
- ;; On a headline, remove any link from description.
- (should
- (let (org-store-link-props org-stored-links)
- (org-test-with-temp-text-in-file "* [[#l][d]]"
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s::*%s][d]]"
- file
- (org-link-escape "[[#l][d]]"))
- (org-store-link nil))))))
- (should
- (let (org-store-link-props org-stored-links)
- (org-test-with-temp-text-in-file "* [[l]]"
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s::*%s][l]]" file (org-link-escape "[[l]]"))
- (org-store-link nil))))))
- (should
- (let (org-store-link-props org-stored-links)
- (org-test-with-temp-text-in-file "* [[l1][d1]] [[l2][d2]]"
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s::*%s][d1 d2]]"
- file
- (org-link-escape "[[l1][d1]] [[l2][d2]]"))
- (org-store-link nil))))))
- ;; On a named element, link to that element.
- (should
- (let (org-store-link-props org-stored-links)
- (org-test-with-temp-text-in-file "#+NAME: foo\nParagraph"
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s::foo][foo]]" file)
- (org-store-link nil))))))
- ;; Store link to Org buffer, with context.
- (should
- (let ((org-stored-links nil)
- (org-id-link-to-org-use-id nil)
- (org-context-in-file-links t))
- (org-test-with-temp-text-in-file "* h1"
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s::*h1][h1]]" file)
- (org-store-link nil))))))
- ;; Store link to Org buffer, without context.
- (should
- (let ((org-stored-links nil)
- (org-id-link-to-org-use-id nil)
- (org-context-in-file-links nil))
- (org-test-with-temp-text-in-file "* h1"
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s][file:%s]]" file file)
- (org-store-link nil))))))
- ;; C-u prefix reverses `org-context-in-file-links' in Org buffer.
- (should
- (let ((org-stored-links nil)
- (org-id-link-to-org-use-id nil)
- (org-context-in-file-links nil))
- (org-test-with-temp-text-in-file "* h1"
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s::*h1][h1]]" file)
- (org-store-link '(4)))))))
- ;; A C-u C-u does *not* reverse `org-context-in-file-links' in Org
- ;; buffer.
- (should
- (let ((org-stored-links nil)
- (org-id-link-to-org-use-id nil)
- (org-context-in-file-links nil))
- (org-test-with-temp-text-in-file "* h1"
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s][file:%s]]" file file)
- (org-store-link '(16)))))))
- ;; Store file link to non-Org buffer, with context.
- (should
- (let ((org-stored-links nil)
- (org-context-in-file-links t))
- (org-test-with-temp-text-in-file "one\n<point>two"
- (fundamental-mode)
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s::one]]" file)
- (org-store-link nil))))))
- ;; Store file link to non-Org buffer, without context.
- (should
- (let ((org-stored-links nil)
- (org-context-in-file-links nil))
- (org-test-with-temp-text-in-file "one\n<point>two"
- (fundamental-mode)
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s][file:%s]]" file file)
- (org-store-link nil))))))
- ;; C-u prefix reverses `org-context-in-file-links' in non-Org
- ;; buffer.
- (should
- (let ((org-stored-links nil)
- (org-context-in-file-links nil))
- (org-test-with-temp-text-in-file "one\n<point>two"
- (fundamental-mode)
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s::one]]" file)
- (org-store-link '(4)))))))
- ;; A C-u C-u does *not* reverse `org-context-in-file-links' in
- ;; non-Org buffer.
- (should
- (let ((org-stored-links nil)
- (org-context-in-file-links nil))
- (org-test-with-temp-text-in-file "one\n<point>two"
- (fundamental-mode)
- (let ((file (buffer-file-name)))
- (equal (format "[[file:%s][file:%s]]" file file)
- (org-store-link '(16))))))))
-
;;; Node Properties
@@ -5635,40 +5442,6 @@ Paragraph<point>"
(get-text-property (point) 'org-test)))))
-;;; Radio Targets
-
-(ert-deftest test-org/update-radio-target-regexp ()
- "Test `org-update-radio-target-regexp' specifications."
- ;; Properly update cache with no previous radio target regexp.
- (should
- (eq 'link
- (org-test-with-temp-text "radio\n\nParagraph\n\nradio"
- (save-excursion (goto-char (point-max)) (org-element-context))
- (insert "<<<")
- (search-forward "o")
- (insert ">>>")
- (org-update-radio-target-regexp)
- (goto-char (point-max))
- (org-element-type (org-element-context)))))
- ;; Properly update cache with previous radio target regexp.
- (should
- (eq 'link
- (org-test-with-temp-text "radio\n\nParagraph\n\nradio"
- (save-excursion (goto-char (point-max)) (org-element-context))
- (insert "<<<")
- (search-forward "o")
- (insert ">>>")
- (org-update-radio-target-regexp)
- (search-backward "r")
- (delete-char 5)
- (insert "new")
- (org-update-radio-target-regexp)
- (goto-char (point-max))
- (delete-region (line-beginning-position) (point))
- (insert "new")
- (org-element-type (org-element-context))))))
-
-
;;; Refile
(ert-deftest test-org/refile-get-targets ()