blob: aa4a71763609cfd75e74b34f6d767170895c3fb5 [file] [log] [blame] [view] [edit]
# lang_tester 0.8.0 (2024-01-31)
## Breaking change
* Remove `ignored` and add `ignore-if`. The latter runs an arbitrary shell
command which, if it returns zero, causes the test to be ignored. This allows
much more flexibility than the overly simplistic "always ignore this test" of
`ignored`. Tests with `ignored: <reason>` can be changed to `ignore-if: true`
followed (or preceded) by a comment `# <reason>` (assuming `comment_prefix`
is set: see below).
## Non-breaking change
* Allow comments in tests with a user-configurable prefix. By default no
comment prefix is set. You can set one with `comment_prefix("...")`. For
example `LangTester::new().comment_prefix("#")` causes lines in tests
starting with `#` to be entirely ignored by lang_tester.
# lang_tester 0.7.6 (2024-01-22)
* `test_file_filter` is deprecated in favour of `test_path_filter`. The latter
doesn't pre-filter non-files, making it more flexible. A simple way of moving
from `test_file_filter` to `test_path_filter` is to change
`test_file_filter(|p| ...)` to `test_path_fiter(|p| p.is_file() & ...)`.
# lang_tester 0.7.5 (2023-11-03)
* Make the library documentation (rather than the README) the source of
documentation truth.
# lang_tester 0.7.4 (2023-09-21)
* Allow test filtering on the full test name (e.g. `lang_tests::a::b::c`)
rather than just the leaf (e.g `c`).
# lang_tester 0.7.3 (2023-04-06)
* Add support for rerun-if-{status, stderr, stdout}.
# lang_tester 0.7.2 (2021-12-07)
* Fix poll() loop, so the full output of a subcommand is now read properly.
# lang_tester 0.7.1 (2021-12-07)
* Show a test as failing if `FMBuilder` throws an error.
# lang_tester 0.7.0 (2021-06-18)
## Breaking changes
* The `extra-args` key has been renamed to `exec-arg` to reflect the fact that
each key is a single argument.
## Other changes
* The `env-var` key has been added. This allows environment variables to be set
on a per-test basis e.g.:
```
Compiler:
env-var: DEBUG=1
stdout: xyz
```
# lang_tester 0.6.2 (2021-05-24)
* Fix file descriptor race for tests that contain stdin data: files were closed
twice, which could lead to an active (reused) file descriptor being closed
incorrectly.
* Documentation fixes.
# lang_tester 0.6.1 (2021-04-30)
* Fix test file filtering.
# lang_tester 0.6.0 (2021-04-30)
* If a function passed by the user to the user (e.g. to `test_extract`)
`panic`s, `lang_tester` now considers that a test failure and reports it to
the user. Because this uses `catch_unwind` underneath, the functions passed
to `lang_tester` must now be `RefUnwindSafe`.
# lang_tester 0.5.0 (2021-01-27)
* The `test_extract` function signature has changed from:
```
Fn(&str) -> Option<String> + Send + Sync,
```
to:
```
Fn(&Path) -> String + Send + Sync,
```
In other words, users now have to both:
1. read the contents of a path themselves (but it doesn't necessarily have
to be the path passed to the function!),
2. and return a `String` rather than an `Option<String>`.
In practise, most `test_extract` functions can be changed from (roughly):
```
test_extract(|s| { s.lines() ... })
```
to:
```
test_extract(|p| { std::fs::read_to_string(p).lines() })
```
# lang_tester 0.4.0 (2020-11-26)
* Update to fm 0.2.0. This changes the interface exposed by the `fm_options`
function. See the [`fm`
changes](https://github.com/softdevteam/fm/blob/master/CHANGES.md) for more
information.
# lang_tester 0.3.13 (2020-11-09)
* Silence some Clippy warnings and fix documentation inconsistencies.
# lang_tester 0.3.12 (2020-07-13)
* Failed stderr/stdout tests now use fm to show the offending line and up to 3
lines of surrounding context. This makes it much easier to understand why a
stderr/test failed.
# lang_tester 0.3.11 (2020-07-09)
* Remove the built-in fuzzy matcher and use the [`fm`
library](https://crates.io/crates/fm) instead. This should be entirely
backwards compatible in its default state. Users who want non-default `fm`
options can use the new `fm_options` function in `LangTester`.
* Add a `stdin` key to allow users to specify stdin input which should be
passed to a sub-command.
* Lines are no longer stripped of their leading or trailing whitespace allowing
tests to be whitespace sensitive if required. Since matching in `fm` defaults
to ignoring leading and trailing whitespace, the previous behaviour is
preserved unless users explicitly tell `fm` to match whitespace.
# lang_tester 0.3.10 (2020-06-04)
* Print out the name of tests inside nested directories rather than flattening
them all such that they appear to be the top-level directory. If you have
tests `a/x` and `b/x` these are pretty printed as `a::x` and `b::x`
respectively (whereas before they were pretty printed as simply `x`, meaning
that you could not tell which had succeeded / failed).
# lang_tester 0.3.9 (2020-05-18)
* Add `test_threads` function which allows you to specify the number of test
threads programatically.
* Move from the deprecated `tempdir` to the maintained `tempfile` crate.
# lang_tester 0.3.8 (2019-12-24)
* Fix bug on OS X where input from sub-processes blocked forever.
# lang_tester 0.3.7 (2019-11-26)
* Add support for ignorable tests. A test command `ignore:` is interpreted as
causing that entire test file to be ignored. As with `cargo test`, such tests
can be run with the `--ignored` switch.
* Fix a bug whereby the number of ignored tests was incorrectly reported.
# lang_tester 0.3.6 (2019-11-21)
* License as dual Apache-2.0/MIT (instead of a more complex, and little
understood, triple license of Apache-2.0/MIT/UPL-1.0).
# lang_tester 0.3.5 (2019-11-15)
* Add support for programs which terminated due to a signal. Users can now
specify `status: signal` to indicate that a test should exit due to a signal:
on platforms which do not support this (e.g. Windows), such tests are
ignored. Similarly, if a program was terminated due to a signal then, on
Unix, the user is informed of that after test failure.
# lang_tester 0.3.4 (2019-10-30)
* Add support for `--nocapture` to better emulate `cargo test`. As with `cargo
test`, if you're running more than one test then `--nocapture` is generally
best paired with `--test-threads=1` to avoid confusing, multiplexed output to
the terminal.
* Be clearer that tests can have defaults: notably commands default to `status:
success` unless overridden.
# lang_tester 0.3.3 (2019-10-24)
* Individual tests can now add extra arguments to an invoked command with the
`extra-args` field.
* Ensure that, if a command in a chain fails, the whole chain of commands
fails. This means that if, for example, compilation of command C fails, we do
not try and run C anyway (which can end up doing confusing things like
running an old version of C).
# lang_tester 0.3.2 (2019-07-31)
* Fixed bug where potentially multi-line keys with empty values were not always
parsed correctly.
# lang_tester 0.3.1 (2019-06-04)
* Add support for running a defined number of parallel processes, using the
`cargo test`-ish option `--test-threads=n`. For example, to run tests
sequentially, specify `--test-threads=1`.
* Warn users if a given test has run unexpectedly long (currently every
multiple of 60 seconds). This is often a sign that a test has entered an
infinite loop.
* Use better terminology in the documentation. Previously "test" was used to
mean a number of subtly different things which was rather confusing. Now
test files contain test data. Test data contains test commands. Test commands
contain sub-tests.
* Stop testing a given test file on the first failed sub-test. Previously only
a test command which exited unsuccessfully caused a test file to be
considered as failed, causing the source of errors to sometimes be missed.
# lang_tester 0.3.0 (2019-05-29)
## Breaking changes
* The `test_extract` and `test_cmds` functions must now satisfy the `Sync`
trait. This is a breaking change, albeit one that nearly all such functions
already satisfied.
## Major changes
* When a test fails, report to the user both the parts of the test that failed
and the parts that weren't specified. For example, if a test merely checks
that a command runs successfully, we now report stdout and stderr output to
the user, so that they can better understand what happened.
## Minor changes
* Fatal errors (e.g. an inability to run a command, or an error in the way a
user has specified a test, such as a syntax error) now cause the process to
exit (whereas before they merely caused the thread erroring to panic, leading
to errors being lost in the noise).
# lang_tester 0.2.0 (2019-05-21)
* Accept cargo-ish command-line parameters. In particular, this lets users run
a subset of tests e.g. "<run tests> ab cd" only runs tests with "ab" or "cd"
in their name. If you don't want `lang_tester` to look at your command-line
arguments, set `use_cmdline_args(false)` (the default is `true`).
* Run tests in parallel (one per CPU core). Depending on the size of your
machine and the size of your test suite, this can be a significant
performance improvement.
* The `status` field can now take integer exit codes. i.e. if you specify
`status: 7` then the exit code of the binary being run will be checked to see
if it is 7.
# lang_tester 0.1.0 (2019-05-16)
First stable release.