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-buildin favour ofsubplotlib::codegen!()- in later versions we will stop publishingsubplot-build.To make this change, you should no longer use
subplot-buildat all, and instead in yourtests/foo.rsfiles 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
bashtemplate. 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
Runcmdscenario 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/filesstep 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/runcmdstep library has been clarified that it runs commands in the scenario datadir, not the source tree.The Rust implementation of the
lib/runcmdof the step "when I run, in {dir}, ..." no longer sets theHOMEenvironment variable todir.
New features:
Scenarios can be labelled using a
label=fooattribute in the first block of steps in a scenario.The
metadatasubcommand now provides information about scenario labels. This changes the JSON format slightly.The
lib/runcmdlibrary now supports steps to set and unset environment variables.Subplot now has groundwork to support filtering scenarios. Actual filters will come later.
The
lib/filesstep library now had steps for removing files and empty directories.The
lib/filesstep library now has steps to compare an on-disk file for equality with another on-disk file or an embedded file.The
lib/runcmdstep 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/runcmdstep 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_NNNwhere 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.mdand other documentation is clearer and up to date on how to actually run Subplot and its test suite. The./checkscript has been replaced withMakefilefor clarity.Various error messages have been clarified.