status: final (2026-09-30)
keywords: Testing
See also SRFI 64: A Scheme API for test suites.This SRFI defines a portable API for test definitions that is
decoupled from test execution and reporting. It provides four
definition forms: the universal is macro for assertions,
testing for giving groups of assertions human-readable
context, test for grouping assertions into independently
executable units, and suite for organizing tests into
hierarchies. The exported metadata auxiliary syntax
attaches user-provided information to tests and suites to adjust the
behavior of a test runner, for example to select tests by tags or to
enforce timeout values. The API is tiny,
yet capable and flexible. By focusing on the definition, and leaving
execution semantics to test runners, this SRFI offers a common ground
that can reduce fragmentation among testing libraries.
Unlike side-effect-driven testing frameworks (e.g. SRFI 64), this API produces first-class runtime entities, making it easy to filter, schedule, wrap them in exception guards and continuation barriers, run in arbitrary order, and re-run dynamically generated test subsets. In addition to the usual CLI test runners, it enables runtime-friendly test runners that integrate well with highly interactive development workflows inside REPLs and IDEs, significantly increasing control over test execution, and shortening the feedback loop.
To bridge the test definitions and test runners, the SRFI specifies a message-passing programming interface and test loading and execution semantics recommendations for test runner implementers.