>")
+ (org-test-at-id "8701beb4-13d9-468c-997a-8e63e8b66f8d"
+ (org-narrow-to-subtree)
+ (org-element-map
+ (org-test-with-expanded-babel-code (org-element-parse-buffer))
+ 'src-block
+ (lambda (src) (org-trim (org-element-property :value src))))))))
(ert-deftest ob-exp/exports-both ()
- "Test the :exports both header argument.
-The code block should create both and
-elements in the final html."
+ "Test the \":exports both\" header argument.
+The code block evaluation should create both a code block and
+a table."
(org-test-at-id "92518f2a-a46a-4205-a3ab-bcce1008a4bb"
(org-narrow-to-subtree)
- (let ((exported-html
- (org-export-as-html nil nil 'string 'body-only))
- (test-point 0))
- (org-test-with-temp-text-in-file
- exported-html
-
- ;; check following ouput exists and in order
- (mapcar (lambda (x)
- (should (< test-point
- (re-search-forward
- x
- nil t)))
- (setq test-point (point)))
- '( "Pascal's Triangle – exports both test"
- ""
- "
"
- """>1<""
"
- """>1<"">1<""
"
- """>1<"">2<"">1<""
"
- """>1<"">3<"">3<"">1<""
"
- """>1<"">4<"">6<"">4<"">1<""
"
- """>1<"">5<"">10<"">10<"">5<"">1<""
"
- """
"))))))
+ (let ((tree (org-test-with-expanded-babel-code (org-element-parse-buffer))))
+ (should (and (org-element-map tree 'src-block 'identity)
+ (org-element-map tree 'table 'identity))))))
(ert-deftest ob-exp/mixed-blocks-with-exports-both ()
- (org-test-at-id "5daa4d03-e3ea-46b7-b093-62c1b7632df3"
- (org-narrow-to-subtree)
- (let ((exported-html
- (org-export-as-html nil nil 'string 'body-only))
- (test-point 0))
- (org-test-with-temp-text-in-file
- exported-html
- ;; check following ouput exists and in order
- (mapcar (lambda (x)
- (should (< test-point (re-search-forward x nil t)))
- (setq test-point (point)))
- '("mixed blocks with exports both"
- ""
- "- ""a""
"
- "- ""b""
"
- "- ""c""
"
- "
"
- ""
- ""
- "code block results"
- "
"))))))
+ (should
+ (equal
+ '(property-drawer plain-list src-block fixed-width src-block plain-list)
+ (org-test-at-id "5daa4d03-e3ea-46b7-b093-62c1b7632df3"
+ (org-narrow-to-subtree)
+ (mapcar 'org-element-type
+ (org-element-map
+ (org-test-with-expanded-babel-code
+ (org-element-parse-buffer 'greater-element))
+ 'section 'org-element-contents nil t))))))
(ert-deftest ob-exp/export-with-name ()
- (let ((org-babel-exp-code-template
- "=%name=\n#+BEGIN_SRC %lang%flags\nbody\n#+END_SRC"))
- (org-test-at-id "b02ddd8a-eeb8-42ab-8664-8a759e6f43d9"
- (org-narrow-to-subtree)
- (let ((ascii (org-export-as-ascii nil nil 'string 'body-only)))
- (should (string-match "qux" ascii))))))
+ (should
+ (string-match
+ "=qux="
+ (let ((org-babel-exp-code-template
+ "=%name=\n#+BEGIN_SRC %lang%flags\nbody\n#+END_SRC"))
+ (org-test-at-id "b02ddd8a-eeb8-42ab-8664-8a759e6f43d9"
+ (org-narrow-to-subtree)
+ (org-test-with-expanded-babel-code
+ (buffer-string)))))))
(ert-deftest ob-exp/export-with-header-argument ()
(let ((org-babel-exp-code-template
@@ -211,50 +163,58 @@ elements in the final html."
#+BEGIN_SRC %lang%flags\nbody\n#+END_SRC"))
(org-test-at-id "b02ddd8a-eeb8-42ab-8664-8a759e6f43d9"
(org-narrow-to-subtree)
- (let ((ascii (org-export-as-ascii nil nil 'string 'body-only)))
- (should (string-match "baz" ascii))
- (should (string-match "replace" ascii))))))
+ (org-test-with-expanded-babel-code
+ (should (string-match "baz" (buffer-string)))
+ (should (string-match "replace" (buffer-string)))))))
(ert-deftest ob-exp/noweb-no-export-and-exports-both ()
- (org-test-at-id "8a820f6c-7980-43db-8a24-0710d33729c9"
- (org-narrow-to-subtree)
- (let ((html (org-export-as-html nil nil 'string 'body-only)))
- (should (string-match (regexp-quote "noweb-no-export-and-exports-both-1")
- html)))))
+ (should
+ (string-match
+ "<>"
+ (org-test-at-id "8a820f6c-7980-43db-8a24-0710d33729c9"
+ (org-narrow-to-subtree)
+ (org-test-with-expanded-babel-code
+ (org-element-map (org-element-parse-buffer) 'src-block
+ (lambda (src-block) (org-element-property :value src-block))
+ nil t))))))
(ert-deftest ob-exp/evaluate-all-executables-in-order ()
- (org-test-at-id "96cc7073-97ec-4556-87cf-1f9bffafd317"
- (org-narrow-to-subtree)
- (let (*evaluation-collector*)
- (org-export-as-ascii nil nil 'string)
- (should (equal '(5 4 3 2 1) *evaluation-collector*)))))
+ (should
+ (equal '(5 4 3 2 1)
+ (let (*evaluation-collector*)
+ (org-test-at-id "96cc7073-97ec-4556-87cf-1f9bffafd317"
+ (org-narrow-to-subtree)
+ (buffer-string)
+ (fboundp 'org-export-execute-babel-code)
+ (org-test-with-expanded-babel-code *evaluation-collector*))))))
(ert-deftest ob-exp/exports-inline ()
- (org-test-at-id "54cb8dc3-298c-4883-a933-029b3c9d4b18"
- (org-narrow-to-subtree)
- (let ((html (org-export-as-html nil nil 'string 'body-only)))
- (dolist (rx '("middle <\\(code\\|tt\\)>1\\(code\\|tt\\)> of"
- "end of a line. <\\(code\\|tt\\)>2\\(code\\|tt\\)>"
- "<\\(code\\|tt\\)>3\\(code\\|tt\\)> Here is one"))
- (should (string-match rx html))))))
+ (should
+ (string-match
+ (regexp-quote "Here is one in the middle =1= of a line.
+Here is one at the end of a line. =2=
+=3= Here is one at the beginning of a line.")
+ (org-test-at-id "54cb8dc3-298c-4883-a933-029b3c9d4b18"
+ (org-narrow-to-subtree)
+ (org-test-with-expanded-babel-code (buffer-string))))))
(ert-deftest ob-exp/export-call-line-information ()
(org-test-at-id "bec63a04-491e-4caa-97f5-108f3020365c"
(org-narrow-to-subtree)
- (let* ((org-babel-exp-call-line-template "\n: call: %line special-token")
- (html (org-export-as-html nil nil 'string t)))
- (should (string-match "double" html))
- (should (string-match "16" html))
- (should (string-match "special-token" html)))))
+ (let ((org-babel-exp-call-line-template "\n: call: %line special-token"))
+ (org-test-with-expanded-babel-code
+ (should (string-match "double" (buffer-string)))
+ (should (string-match "16" (buffer-string)))
+ (should (string-match "special-token" (buffer-string)))))))
(ert-deftest ob-exp/noweb-strip-export-ensure-strips ()
(org-test-at-id "8e7bd234-99b2-4b14-8cd6-53945e409775"
(org-narrow-to-subtree)
(org-babel-next-src-block 2)
(should (= 110 (org-babel-execute-src-block)))
- (let ((ascii (org-export-as-ascii nil nil 'string t)))
- (should-not (string-match (regexp-quote "<>") ascii))
- (should-not (string-match (regexp-quote "i=\"10\"") ascii)))))
+ (let ((result (org-test-with-expanded-babel-code (buffer-string))))
+ (should-not (string-match (regexp-quote "<>") result))
+ (should-not (string-match (regexp-quote "i=\"10\"") result)))))
(ert-deftest ob-exp/export-from-a-temp-buffer ()
:expected-result :failed
@@ -276,8 +236,7 @@ elements in the final html."
(list foo <>)
#+END_SRC
"
- (let* ((org-current-export-file (current-buffer))
- (ascii (org-export-as-ascii nil nil 'string)))
+ (let* ((ascii (org-export-as 'ascii)))
(should (string-match (regexp-quote (format nil "%S" '(:foo :bar)))
ascii)))))
diff --git a/testing/lisp/test-ob-lob.el b/testing/lisp/test-ob-lob.el
index 6483e226c..10a839947 100644
--- a/testing/lisp/test-ob-lob.el
+++ b/testing/lisp/test-ob-lob.el
@@ -80,37 +80,31 @@
"Test the export of a variety of library babel call lines."
(org-test-at-id "72ddeed3-2d17-4c7f-8192-a575d535d3fc"
(org-narrow-to-subtree)
- (let ((html (org-export-as-html nil nil 'string 'body-only)))
- ;; check the location of each exported number
+ (let ((buf (current-buffer))
+ (string (buffer-string)))
(with-temp-buffer
- (insert html) (goto-char (point-min))
- ;; 0 should be on a line by itself
- (should (re-search-forward "0" nil t))
- (should (string= "0" (buffer-substring (point-at-bol) (point-at-eol))))
- ;; 2 should be in tags
- (should (re-search-forward "2" nil t))
- (should (re-search-forward (regexp-quote "
") (point-at-eol) t))
- (should (re-search-backward (regexp-quote "") (point-at-bol) t))
- ;; 4 should not be exported
- (should (not (re-search-forward "4" nil t)))
- ;; 6 should also be inline
- (should (re-search-forward "6" nil t))
- (should (re-search-forward (regexp-quote "
") (point-at-eol) t))
- (should (re-search-backward (regexp-quote "") (point-at-bol) t))
- ;; 8 should not be quoted
- (should (re-search-forward "8" nil t))
- (should (not (= ?= (char-after (point)))))
- (should (not (= ?= (char-before (- (point) 1)))))
- ;; 10 should export
- (should (re-search-forward "10" nil t))))))
+ (org-mode)
+ (insert string)
+ (let ((org-current-export-file buf))
+ (org-babel-exp-process-buffer))
+ (message (buffer-string))
+ (should (re-search-forward "^: 0" nil t))
+ (should (re-search-forward "call =2= stuck" nil t))
+ (should (re-search-forward
+ "exported =call_double(it=2)= because" nil t))
+ (should (re-search-forward "^=6= because" nil t))
+ (should (re-search-forward "results 8 should" nil t))
+ (should (re-search-forward "following 2\\*5==10= should" nil t))))))
(ert-deftest test-ob-lob/do-not-eval-lob-lines-in-example-blocks-on-export ()
+ (require 'ox)
(org-test-with-temp-text-in-file "
for export
#+begin_example
#+call: rubbish()
#+end_example"
- (org-export-as-html nil)))
+ (should (progn (org-export-execute-babel-code) t))))
+
(provide 'test-ob-lob)
diff --git a/testing/org-test.el b/testing/org-test.el
index 15344a795..dbf0d2809 100644
--- a/testing/org-test.el
+++ b/testing/org-test.el
@@ -136,18 +136,19 @@ currently executed.")
(id-file (car id-location))
(visited-p (get-file-buffer id-file))
to-be-removed)
- (save-window-excursion
- (save-match-data
- (org-id-goto ,id)
- (setq to-be-removed (current-buffer))
- (condition-case nil
- (progn
- (org-show-subtree)
- (org-show-block-all))
- (error nil))
- (save-restriction ,@body)))
- (unless visited-p
- (kill-buffer to-be-removed))))
+ (unwind-protect
+ (save-window-excursion
+ (save-match-data
+ (org-id-goto ,id)
+ (setq to-be-removed (current-buffer))
+ (condition-case nil
+ (progn
+ (org-show-subtree)
+ (org-show-block-all))
+ (error nil))
+ (save-restriction ,@body)))
+ (unless (or visited-p (not to-be-removed))
+ (kill-buffer to-be-removed)))))
(def-edebug-spec org-test-at-id (form body))
(defmacro org-test-in-example-file (file &rest body)