diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el index 79cf3c9e4..0247db75c 100644 --- a/testing/lisp/test-ox.el +++ b/testing/lisp/test-ox.el @@ -1363,6 +1363,119 @@ Footnotes[fn:2], foot[fn:test] and [fn:inline:inline footnote] (org-export-expand-include-keyword) (eq 3 (org-current-level))))) +(ert-deftest test-org/expand-include/links () + "Test links modifications when including files." + ;; Preserve relative plain links. + (should + (string-prefix-p + "file:org-includee-" + (let* ((subdir (make-temp-file "org-includee-" t)) + (includee (expand-file-name "includee.org" subdir)) + (includer (make-temp-file "org-includer-"))) + (write-region "file:foo.org" nil includee) + (write-region (format "#+INCLUDE: %S" + (file-relative-name includee + temporary-file-directory)) + nil includer) + (let ((buffer (find-file-noselect includer t))) + (unwind-protect + (with-current-buffer buffer + (org-export-expand-include-keyword) + (org-trim (buffer-string))) + (when (buffer-live-p buffer) + (with-current-buffer buffer (set-buffer-modified-p nil)) + (kill-buffer buffer)) + (when (file-exists-p subdir) (delete-directory subdir t)) + (when (file-exists-p includer) (delete-file includer))))))) + ;; Preserve relative angular links. + (should + (string-prefix-p + "" nil includee) + (write-region (format "#+INCLUDE: %S" + (file-relative-name includee + temporary-file-directory)) + nil includer) + (let ((buffer (find-file-noselect includer t))) + (unwind-protect + (with-current-buffer buffer + (org-export-expand-include-keyword) + (org-trim (buffer-string))) + (when (buffer-live-p buffer) + (with-current-buffer buffer (set-buffer-modified-p nil)) + (kill-buffer buffer)) + (when (file-exists-p subdir) (delete-directory subdir t)) + (when (file-exists-p includer) (delete-file includer))))))) + ;; Preserve relative bracket links without description. + (should + (string-prefix-p + "[[file:org-includee-" + (let* ((subdir (make-temp-file "org-includee-" t)) + (includee (expand-file-name "includee.org" subdir)) + (includer (make-temp-file "org-includer-"))) + (write-region "[[file:foo.org]]" nil includee) + (write-region (format "#+INCLUDE: %S" + (file-relative-name includee + temporary-file-directory)) + nil includer) + (let ((buffer (find-file-noselect includer t))) + (unwind-protect + (with-current-buffer buffer + (org-export-expand-include-keyword) + (org-trim (buffer-string))) + (when (buffer-live-p buffer) + (with-current-buffer buffer (set-buffer-modified-p nil)) + (kill-buffer buffer)) + (when (file-exists-p subdir) (delete-directory subdir t)) + (when (file-exists-p includer) (delete-file includer))))))) + ;; Preserve relative bracket links with description. + (should + (string-prefix-p + "[[file:org-includee-" + (let* ((subdir (make-temp-file "org-includee-" t)) + (includee (expand-file-name "includee.org" subdir)) + (includer (make-temp-file "org-includer-"))) + (write-region "[[file:foo.org][description]]" nil includee) + (write-region (format "#+INCLUDE: %S" + (file-relative-name includee + temporary-file-directory)) + nil includer) + (let ((buffer (find-file-noselect includer t))) + (unwind-protect + (with-current-buffer buffer + (org-export-expand-include-keyword) + (org-trim (buffer-string))) + (when (buffer-live-p buffer) + (with-current-buffer buffer (set-buffer-modified-p nil)) + (kill-buffer buffer)) + (when (file-exists-p subdir) (delete-directory subdir t)) + (when (file-exists-p includer) (delete-file includer))))))) + ;; Preserve absolute links. + (should + (string= + "[[file:/foo/bar.org]]" + (let* ((subdir (make-temp-file "org-includee-" t)) + (includee (expand-file-name "includee.org" subdir)) + (includer (make-temp-file "org-includer-"))) + (write-region "[[file:/foo/bar.org]]" nil includee) + (write-region (format "#+INCLUDE: %S" + (file-relative-name includee + temporary-file-directory)) + nil includer) + (let ((buffer (find-file-noselect includer t))) + (unwind-protect + (with-current-buffer buffer + (org-export-expand-include-keyword) + (org-trim (buffer-string))) + (when (buffer-live-p buffer) + (with-current-buffer buffer (set-buffer-modified-p nil)) + (kill-buffer buffer)) + (when (file-exists-p subdir) (delete-directory subdir t)) + (when (file-exists-p includer) (delete-file includer)))))))) + (ert-deftest test-org-export/expand-macro () "Test macro expansion in an Org buffer." (require 'ox-org)