* test/Makefile.in (SUBDIRS): Run tests in new directory "misc", intended for tests not belonging to any one file. * test/misc/test-custom-deps.el: * test/misc/test-custom-libs.el: * test/misc/test-custom-noloads.el: * test/misc/test-custom-opts.el: New files. * test/lisp/custom-tests.el (custom--test-local-option): Move test to above new file test-custom-opts.el. * admin/cus-test.el: Document running tests from regular test suite. * test/file-organization.org (Test Files): Document new test directory "misc" for tests not belonging to any one file.
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
.