Find file History
Latest commit 1113e3e Sep 20, 2014 Achim Gratz test-ob-exp: fix failing test
* testing/lisp/test-ob-exp.el (ob-exp/export-from-a-temp-buffer):
  Check for the correct expected output so the test stops failing.
Failed to load latest commit information.
examples Babel: use NAME for src block calls in ERT Jul 1, 2013
jump @ 820bb7d now using newer version of jump.el -- run $ git submodule update Oct 21, 2010
.gitignore ignore org-id file generated during testing Nov 15, 2011
README testing/README: Fix instructions Jan 30, 2013
org-test.el org-test: Small code clean-up Apr 10, 2014


Org-mode Testing


The only dependency is ERT the Emacs testing library which ships with Emacs24. If you are running an older version of Emacs and don’t already have ERT installed it can be installed from its old git repository.

Non-interactive batch testing from the command line

The simplest way to run the Org-mode test suite is from the command line with the following invocation. Note that the paths below are relative to the base of the Org-mode directory.

Also note that many of the current tests uses babel evaluation…

# For Emacs earlier than 24, add -L /path/to/ert
emacs -Q --batch \
      -L lisp/ -L testing/ -L testing/lisp -l lisp/org.el \
      -l lisp/org-id.el -l testing/org-test.el \
      --eval "(progn (org-reload) (setq org-confirm-babel-evaluate nil) \
      (org-babel-do-load-languages 'org-babel-load-languages \
      '((emacs-lisp . t) (sh . t) (org . t))))" \
      -f org-test-run-batch-tests

The options in the above command are explained below.

-Qignores any personal configuration ensuring a vanilla Emacs instance is used
–batchruns Emacs in “batch” mode with no gui and termination after execution
-lloads Org-mode and the org mode test suite defined in testing/org-test.el
–evalreloads Org-mode and allows evaluation of code blocks by the tests
-factually runs the tests using the `org-test-run-batch-tests’ function

Interactive testing from within Emacs

To run the Org-mode test suite from a current Emacs instance simply load and run the test suite with the following commands.

  1. First load the test suite.
    (add-to-list 'load-path (file-name-directory here))
    (require 'org-test)
  2. Disable babel evaluation confirmation
    (setq org-confirm-babel-evaluate)
  3. Then run the test suite,

    or when a test fails run it interactively and investigate the problem in the ERT results buffer.

    How to run one test: Use this as a demo example of a failing test

    (ert-deftest test-org/org-link-escape-ascii-character-demo-of-fail ()
      (should (string= "%5B"  ;; expected is right
                       (org-link-escape "[")))
      (should (string= "%5C"  ;; expected is wrong, "%5D" would be right
                       (org-link-escape "]"))))

    or evaluate the ert-deftest form of the test you want to run. Then “M-x ert RET test-org/org-link-escape-ascii-character-demo-of-fail RET” When not visible yet switch to the ERT results buffer named “\*ert\*”. When a test failed the ERT results buffer shows the details of the first “should” that failed. See (info “(ert)Running Tests Interactively”) on how to re-run, start the debugger etc.

    How to run all tests of a single test file: “M-x ert-delete-all-tests RET”, confirm. Open the file ./lisp/test-*.el, “M-x eval-buffer RET”, “M-x ert RET t RET”

    Consider to set pp-escape-newlines nil before running the test when looking at “should” in the ERT results buffer. Especially when using “l” to look at passed test results and possibly missing an appropriate setting of pp-escape-newlines made only temporarily for the running time of the test as e. g. tests using org-test-table-target-expect-tblfm do.


  • If the value of the org-babel-no-eval-on-ctrl-c-ctrl-c is non-nil then it will result in some test failure, as there are tests which rely on this behavior.