emacs/test/file-organization.org

2.7 KiB

The Location of Emacs Lisp Tests

The Main Emacs Repository

The Emacs repository contains a very large number of Emacs Lisp files, many of which pre-date both formal package support for Emacs and automated unit testing.

All paths are relative to the Emacs root directory.

Source

Lisp files are stored in the lisp directory or its sub-directories. Sub-directories are in many cases themed after packages (gnus, org, calc), related functionality (net, emacs-lisp, progmodes) or status (obsolete).

C source is stored in the src directory, which is flat. Source for utility programs is stored in the lib-src directory.

Test Files

Automated tests should be stored in the test/lisp directory for tests of functionality implemented in Lisp, in the test/src directory for functionality implemented in C, and in the test/lib-src directory for utility programs. Tests should reflect the directory structure of the source tree; so tests for files in the lisp/emacs-lisp source directory should reside in the test/lisp/emacs-lisp directory.

Tests should normally reside in a file with -tests.el added to the base-name of the tested source file; hence ert.el is tested in ert-tests.el, and pcase.el is tested in pcase-tests.el. As an exception, tests for a single feature may be placed into multiple files of any name which are themselves placed in a directory named after the feature with -tests appended, such as /test/lisp/emacs-lisp/eieio-tests

Similarly, tests of features implemented in C should reside in /test/src or in test/lib-src and be named after the C file with -tests.el added to the base-name of the tested source file. Thus, tests for src/fileio.c should be in test/src/fileio-tests.el.

Some tests do not belong to any one particular file. Such tests should be put in the misc directory and be given a descriptive name that does not end with -tests.el.

There are also some test materials that cannot be run automatically (i.e. via ert). These should be placed in /test/manual; they are not run by the "make check" command and its derivatives.

Resource Files

Resource files for tests (containing test data) should reside in a directory named after the feature with a -resources suffix, and located in the same directory as the feature. Hence, the lisp file lisp/progmodes/flymake.el, with tests in test/lisp/progmodes/flymake-tests.el, should have resources in a directory called test/lisp/progmodes/flymake-resources.

No guidance is given for the organization of resource files inside the -resources directory; files can be organized at the author's discretion.

Testing Infrastructure Files

Files used to support testing infrastructure such as EMBA should be placed in infra.