ert: Test Selectors
2.3 Test Selectors
==================
Functions like ‘ert’ accept a _test selector_, a Lisp expression
specifying a set of tests. Test selector syntax is similar to Common
Lisp’s type specifier syntax:
• ‘nil’ selects no tests.
• ‘t’ selects all tests.
• ‘:new’ selects all tests that have not been run yet.
• ‘:failed’ and ‘:passed’ select tests according to their most recent
result.
• ‘:expected’, ‘:unexpected’ select tests according to their most
recent result.
• A string is a regular expression that selects all tests with
matching names.
• A test (i.e., an object of ‘ert-test’ data type) selects that test.
• A symbol selects the test that the symbol names.
• ‘(member TESTS...)’ selects the elements of TESTS, a list of tests
or symbols naming tests.
• ‘(eql TEST)’ selects TEST, a test or a symbol naming a test.
• ‘(and SELECTORS...)’ selects the tests that match all SELECTORS.
• ‘(or SELECTORS...)’ selects the tests that match any SELECTOR.
• ‘(not SELECTOR)’ selects all tests that do not match SELECTOR.
• ‘(tag TAG)’ selects all tests that have TAG on their tags list.
(Tags are optional labels you can apply to tests when you define
them.)
• ‘(satisfies PREDICATE)’ selects all tests that satisfy PREDICATE, a
function that takes a test as argument and returns non-‘nil’ if it
is selected.
Selectors that are frequently useful when selecting tests to run
include ‘t’ to run all tests that are currently defined in Emacs,
‘"^foo-"’ to run all tests in package ‘foo’ (this assumes that package
‘foo’ uses the prefix ‘foo-’ for its test names), result-based selectors
such as ‘(or :new :unexpected)’ to run all tests that have either not
run yet or that had an unexpected result in the last run, and tag-based
selectors such as ‘(not (tag :causes-redisplay))’ to run all tests that
are not tagged ‘:causes-redisplay’.