| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | 
							- # -*- mode:org -*-
 
- #+TITLE: Org-mode Testing
 
- #+PROPERTY: results silent
 
- * Dependencies
 
- The only dependency is [[http://www.emacswiki.org/emacs/ErtTestLibrary][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 [[https://github.com/ohler/ert][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...
 
- #+BEGIN_SRC sh :dir (expand-file-name "..")
 
-   # 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
 
- #+END_SRC
 
- The options in the above command are explained below.
 
- | -Q      | ignores any personal configuration ensuring a vanilla Emacs instance is used |
 
- | --batch | runs Emacs in "batch" mode with no gui and termination after execution       |
 
- | -l      | loads Org-mode and the org mode test suite defined in testing/org-test.el    |
 
- | --eval  | reloads Org-mode and allows evaluation of code blocks by the tests           |
 
- | -f      | actually 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.
 
-    #+BEGIN_SRC emacs-lisp :var here=(buffer-file-name)
 
-      (add-to-list 'load-path (file-name-directory here))
 
-      (require 'org-test)
 
-    #+END_SRC
 
- 2) Disable babel evaluation confirmation
 
-    #+BEGIN_SRC emacs-lisp
 
-      (setq org-confirm-babel-evaluate)
 
-    #+END_SRC
 
- 3) Then run the test suite,
 
-    #+BEGIN_SRC emacs-lisp
 
-      (org-test-run-all-tests)
 
-    #+END_SRC
 
-    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
 
-    #+BEGIN_SRC emacs-lisp
 
-      (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 "]"))))
 
-    #+END_SRC
 
-    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.
 
- * Troubleshooting
 
- - 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.
 
 
  |