Browse Source

ob-export: Give more informative error on unknown call reference

* lisp/ob-exp.el (org-babel-exp-process-buffer): Signal user-error
with an informative message rather than letting
org-babel-exp-do-export call fail due to an invalid INFO argument.
* testing/lisp/test-ob-exp.el (ob-exp/unknown-call-reference): Add
test.

Reported-by: Greg Minshall <minshall@umich.edu>
Ref: https://orgmode.org/list/628738.1616259666@apollo2.minshall.org
Kyle Meyer 4 years ago
parent
commit
5450d64202
2 changed files with 13 additions and 2 deletions
  1. 5 2
      lisp/ob-exp.el
  2. 8 0
      testing/lisp/test-ob-exp.el

+ 5 - 2
lisp/ob-exp.el

@@ -216,8 +216,11 @@ this template."
 			     (delete-region begin end)
 			     (delete-region begin end)
 			     (insert replacement)))))
 			     (insert replacement)))))
 		      ((or `babel-call `inline-babel-call)
 		      ((or `babel-call `inline-babel-call)
-		       (org-babel-exp-do-export (org-babel-lob-get-info element)
-						'lob)
+                       (org-babel-exp-do-export
+                        (or (org-babel-lob-get-info element)
+                            (user-error "Unknown Babel reference: %s"
+                                        (org-element-property :call element)))
+                        'lob)
 		       (let ((rep
 		       (let ((rep
 			      (org-fill-template
 			      (org-fill-template
 			       org-babel-exp-call-line-template
 			       org-babel-exp-call-line-template

+ 8 - 0
testing/lisp/test-ob-exp.el

@@ -585,6 +585,14 @@ src_emacs-lisp{(+ 1 1)}"
 	      (org-babel-exp-process-buffer))
 	      (org-babel-exp-process-buffer))
 	    (buffer-string)))))
 	    (buffer-string)))))
 
 
+(ert-deftest ob-exp/unknown-call-reference ()
+  "Test exporting with a call that references an unknown name."
+  (should-error
+   (org-test-with-temp-text
+       "call_foo()"
+     (let ((org-export-use-babel t))
+       (org-babel-exp-process-buffer)))
+   :type 'user-error))
 
 
 (provide 'test-ob-exp)
 (provide 'test-ob-exp)