The Subplot project announces the 0.13.0 release of the tool for documenting acceptance criteria and verifying them automatically. See below for a summary of changes in this release, and NEWS.md in the git repository for release notes for all releases.
Version 0.13.0, released 2025-08-02
Deprecation changes:
We are now officially deprecating
subplot-build
in favour ofsubplotlib::codegen!()
- in later versions we will stop publishingsubplot-build
.To make this change, you should no longer use
subplot-build
at all, and instead in yourtests/foo.rs
files where you previously didinclude!(...)
you should callsubplotlib::codegen!("foo.subplot")
instead. See the macro's documentation for acceptable argument forms.
Breaking changes:
- We have deleted the
bash
template. If you have projects which used it then you can dig it out of our git repository and embed the template into your project. However we strongly recommend that you translate your scenario suite into Python or Rust.
Bug fixes:
The
Runcmd
scenario context object in the Rust step library has gained a.with_forklock()
method which can be used to reduce the likelihood of flakiness introduced by threaded test suites and forking subprocesses to run scripts newly written out by scenarios.The error message for a step not being found in any bindings file now reports the location of the step.
The
lib/files
step library now enforces that all filenames captured from the step text are relative to the data directory for the scenario execution.The Rust implementation of the
lib/runcmd
step library has been clarified that it runs commands in the scenario datadir, not the source tree.The Rust implementation of the
lib/runcmd
of the step "when I run, in {dir}, ..." no longer sets theHOME
environment variable todir
.
New features:
Scenarios can be labelled using a
label=foo
attribute in the first block of steps in a scenario.The
metadata
subcommand now provides information about scenario labels. This changes the JSON format slightly.The
lib/runcmd
library now supports steps to set and unset environment variables.Subplot now has groundwork to support filtering scenarios. Actual filters will come later.
The
lib/files
step library now had steps for removing files and empty directories.The
lib/files
step library now has steps to compare an on-disk file for equality with another on-disk file or an embedded file.The
lib/runcmd
step library now has a step "then I can run...", similar to "when I run...", but as a "then". This will make it more natural to use in some circumstances.The
lib/runcmd
step library now supports the standard input to be redirected.
Other changes:
Name slugs (eg. test function names) now pass digits through, will automatically prefix with
n_
if the slug would otherwise start with a digit; and will suffix with_NNN
where NNN is selected to make the name unique. Ordering of scenarios is not guaranteed to remain stable, so it's always better to come up with unique names for scenarios rather than relying on this last feature.Subplot's build system uses pandoc to construct step library manuals.
The
README.md
and other documentation is clearer and up to date on how to actually run Subplot and its test suite. The./check
script has been replaced withMakefile
for clarity.Various error messages have been clarified.