|
@@ -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
|
|
|
+ "<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 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)
|