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’.