Releases: SamirTalwar/smoke
v2.4.0
v2.3.2
v2.3.2 adds the --version
and --version-numeric
flags to show the version.
It also prepares the ground for future regular expression support.
v2.3.1
v2.3.1 is mostly an opportunity for me to test that the release process still works, but it does contain a couple of improvements to error messages:
In error messages:
- when there's an error parsing YAML, the path to the offending area is now correct more often (though not always), and
- directories no longer have a trailing slash.
Most of the changes recently have been build improvements.
- CI actions have been updated to working versions.
- We have upgraded to GHC 9.0.2.
- Dependencies have been updated too. This may or may not improve security.
- A Nix flake is now provided, if that's your jam.
v2.3.0
v2.3 contains a couple of bug fixes for file handling.
- If the actual output file is missing, Smoke no longer crashes, but records a test failure.
- If an expected output fixture (STDOUT, STDERR, or arbitrary files) is missing, the test will still run but print a failure with the actual output. It will also allow you to
--bless
the fixture, which will create the file (and any ancestor directories) and write the actual output into it.
This has been cheesing me off for a while. I'm glad I got to take a bite out of it. 🧀
v2.2.0
Smoke v2.2.0 adds support for the contains:
operator. This allows you to perform a substring match when you don't want to check the entire contents of STDOUT, STDERR or files.
From the additions to the README:
We don't always want to check the full output; sometimes checking that it contains a given substring is more useful. We can use the
contains:
operator to specify this:tests: # ... - name: big multiplication stdin: | 961748927 * 982451653 stdout: contains: "1021"Note that we don't use
|
here, as we don't want to capture the trailing newline, which would make this test fail. Instead we use quotes around the value to ensure that the YAML parser treats it as a string, not a number.You can also use
equals:
to explicitly specify that we're checking equality, though this is the default.
Enjoy!
v2.1.1
It's been a long time since I released a new version of Smoke. A lot has changed under the hood but it works exactly the same. A lot of the dependencies have been upgraded, and code has been tossed around here and there, but no functional logic has changed.
The purpose of this release is to try the new release process, using GitHub Actions instead of Travis CI.
Please try it out and let me know if you have any trouble by opening an issue.
v2.1.0
Smoke v2.1.0 is out! It's actually been in the works for months now—I kind of forgot about it.
Notable features:
- you can now compare files to their expected contents with
files:
- works just like
stdout
andstderr
- you can compare against inline text or another file
- use filters too
- revert directories afterwards to clean up with
revert:
- the files fixture has more examples
- works just like
- set the working directory with
working-directory:
- check out the different usages in the working-directory fixture
- use a shell command rather than a list of arguments
- much easier
- uses
sh
on Linux/macOS, andcmd
on Windows (by default) - you can override the shell with
shell:
- check out the shell fixture for more possibilities
UX improvements:
- output comes per test now, not all at once (sorry about breaking that in v2.0)
- nomenclature is consistent between the test files and the output
Bug fixes:
- absolute paths are now properly supported
v2.0.0
Smoke v2.0.0 is out!
This is a complete rewrite and bears almost no relation to v1, except that v1 was used in testing v2.
Notable features:
- the application is now a binary and can be run basically anywhere
- tests are specified in a YAML file, not a collection of files, though you can still use files for test I/O
- rather than showing the complete output, just the diff is shown, and diffs are run through
git diff
when possible to make them a lot nicer - you can specify post-filters to transform the output
- about a thousand bugs relating to edge cases were fixed
- probably a lot more; this has been a long time coming