Skip to content
Emacs Lisp Koans -- learn elisp through test-driven development.
Emacs Lisp
Branch: master
Clone or download
Latest commit b3c7134 Aug 9, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
test Change koans to use ERT Jul 23, 2019
LICENSE Add basic README and apache license Jul 14, 2019 Add elisp-koans/run-test[s] for running koans Jul 31, 2019
elisp-koans.el add `contemplate` function and make it run tests in the right order Aug 8, 2019


What is elisp-koans?

elisp-koans helps you learn Emacs Lisp (elisp) via test-driven development. You’re provided with suites of tests describing components of the elisp syntax and environment. Fixing the tests leads you on a tutorial of elisp.

These koans are for those learning to code in Emacs Lisp and customize Emacs. You should already be able to make your way around Emacs plus be able to call interactive functions, evaluate code in the buffer, and look up documentation.


Create a clone of this repository:

git clone

First load elisp-koans.el by opening it in Emacs then running eval-buffer.

Next open up koans/asserts.el and navigate to the first test:

 elisp-koans/asserts-true ()
 "`t' is true. Replace the blank with `t' to assert it is true"
 (should ___))

Fix the test by replacing the blank (___) with the appropriate value, in this case t as described in the docstring:

(should t)

Once the test is fixed evaluate the test and then run it by calling elisp-koans/run-test and selecting the test: elisp-koans/asserts-true. ERT will run the test and report the result.

You’re ready to move on to the remaining koans in koans/asserts.el and beyond. The variable elisp-koans-groups lists the remaining suites of koans which are ordered to provide a tour of Emacs Lisp. As you progress run all of the loaded koans by calling elisp-koans/run-tests, or a single koan group by calling it interactively.

To quickly load all of the tests call the interactive function elisp-koans/load-groups.


elisp-koans is adapted from Google’s Common Lisp Koans, which was in turn inspired by the family of TDD Koans, e.g. Ruby Koans and Python Koans.


The Common Lisp Koan’s were modified under the terms of the Apache License.

elisp-koans uses the Apache License.

You can’t perform that action at this time.