Log message:
(devel/R-testthat) Updated 2.3.2 to 3.0.0
# testthat 3.0.0
## 3rd edition
testhat 3.0.0 brings with it a 3rd edition that makes a number of breaking
changes in order to clean up the interface and help you use our latest
recommendations. To opt-in to the 3rd edition for your package, set
`Config/testthat/edition: 3` in your `DESCRIPTION` or use `local_edition(3)` in
individual tests. You can retrieve the active edition with `edition_get()`.
Learn more in `vignette("third-edition")`.
* `context()` is deprecated.
* `expect_identical()` and `expect_equal()` use `waldo::compare()` to
compare actual and expected results. This mostly yields much more
informative output when the actual and expected values are different,
but while writing it uncovered some bugs in the existing comparison
code.
* `expect_error()`, `expect_warning()`, `expect_message()`, and
`expect_condition()` now all use the same underlying logic: they
capture the first condition that matches `class`/`regexp` and
allow anything else to bubble up (#998/#1052). They also warn if
there are unexpected arguments that are never used.
* The `all` argument to `expect_message()` and `expect_warning()` is now
deprecated. It was never a particularly good idea or well documented,
and is now superseded by the new condition capturing behaviour.
* `expect_equivalent()`, `expect_reference()`, `expect_is()` and
`expect_that()` are deprecated.
* Messages are no longer automatically silenced. Either use
`suppressMessages()` to hide unimportant messages, or
`expect_messsage()` to catch important messages (#1095).
* `setup()` and `teardown()` are deprecated in favour of test fixtures.
See `vignette("test-fixtures")` for more details.
* `expect_known_output()`, `expect_known_value()`, `expect_known_hash()`,
and `expect_equal_to_reference()` are all deprecated in favour of
`expect_snapshot_output()` and `expect_snapshot_value()`.
* `test_that()` now sets a number of options and env vars to make output as
reproducible as possible (#1044). Many of these options were previously
set in various places (in `devtools::test()`, `test_dir()`, `test_file()`,
or `verify_output()`) but they have now been centralised. You can use in
your own code, or when debugging tests interactively with
`local_test_context()`.
* `with_mock()` and `local_mock()` are deprecated; please use the mockr
or mockery packages instead (#1099).
## Snapshot testing
New family of snapshot expectations (`expect_snapshot()`, \
`expect_snapshot_output()`, `expect_snapshot_error()`, and \
`expect_snapshot_value()`) provide "snapshot" tests, where the \
expected results are stored in separate files in `test/testthat/_snaps`. They're \
useful whenever it's painful to store expected results directly in the test \
files.
`expect_snapshot_file()` along with `snapshot_review()` help snapshot
more complex data, with initial support for text files, images, and data frames \
(#1050).
See `vignette("snapshotting")` for more details.
## Reporters
* `CheckReporter` (used inside R CMD check) now prints out all problems
(i.e. errors, failures, warnings and skips; and not just the first 10),
lists skips types, and records problems in machine readable format in
`tests/testthat-problems.rds` (#1075).
* New `CompactProgressReporter` tweaks the output of `ProgressReporter` for
use with a single file, as in `devtools::test_file()`. You can pick a
different default by setting `testthat.default_compact_reporter` to
the name of a reporter.
* `ProgressReporter` (the default reporter) now keeps the stack traces of
an errors that happen before the before test, making problems substantially
easier to track down (#1004). It checks if you've exceeded the maximum number
of failures (from option `testthat.progress.max_fails`) after each
expectation, rather than at the end of each file (#967). It also gains
new random praise options that use emoji, and lists skipped tests by type
(#1028).
* `StopReporter` adds random praise emoji when a single test passes (#1094).
It has more refined display of failures, now using the same style
as `CompactProgressReporter` and `ProgressReporter`.
* `SummaryReporter` now records file start, not just context start. This
makes it more compatible with modern style which does not use `context()`
(#1089).
* All reporters now use exactly the same format when reporting the location
of an expectation.
* Warnings now include a backtrace, making it easier to figure
out where they came from.
* Catch C++ tests now provide detailed results for each test.
To upgrade existing code, re-run `testthat::use_catch()` (#1008).
## Fixures
* New `vignette("test-fixtures")` describes test fixtures; i.e. how to
temporarily and cleanly change global state in order to test parts of
your code that otherwise would be hard to run (#1042). `setup()` and
`teardown()` are superseded in favour of test fixtures.
* New `teardown_env()` for use with `withr::defer()`. This allows you to
run code after all other tests have been run.
## Skips
* New `vignette("skipping")` gives more general information on skipping
tests, include some basics on testing skipping helpers (#1060).
* `ProgressReporter()` and `CheckReporter()` list the number of skipped tests
by reason at the end of the reporter. This makes it easier to check that
you're not skipping the wrong tests, particularly on CI services (#1028).
## Test running
* `test_that()` no longer triggers an error when run outside of tests;
instead it produces a more informative summary of all failures, errors,
warnings, and skips that occurred inside the test.
* `test_that()` now errors if `desc` is not a string (#1161).
* `test_file()` now runs helper, setup, and teardown code, and has the
same arguments as `test_dir()` (#968). Long deprecated `encoding` argument
has been removed.
* `test_dir()` now defaults `stop_on_failure` to `TRUE` for consistency with
other `test_` functions. The `wrap` argument has been deprecated; it's not
clear that it should ever have been exposed.
* New `test_local()` tests a local source package directory. It's equivalent
to `devtools::test()` but doesn't require devtools and all its dependencies
to be installed (#1030).
## Minor improvements and bug fixes
* testthat no longer supports tests stored in `inst/tests`. This has been
deprecated since testthat 0.11.0 (released in 2015). `test_package()`
(previously used for running tests in R CMD check) will fail silently
if no tests are found to avoid breaking old packages on CRAN (#1149).
* `capture_output()` and `verify_output()` use a new `testthat_print()`
generic. This allows you to control the printed representation of your
object specifically for tests (i.e. if your usual print method shows
data that varies in a way that you don't care about for tests) (#1056).
* `context_start_file()` is now exported for external reporters (#983, #1082).
It now only strips first instance of prefix/suffix (#1041, @stufield).
* `expect_error()` no longer encourages you to use `class`. This advice
one type of fragility at the expense of creating a different type (#1013).
* `expect_known_failure()` has been removed. As far as I can tell it was
only ever used by testthat, and is rather fragile.
* `expect_true()`, `expect_false()`, and `expect_null()` now use waldo to
produce more informative failures.
* `verify_output()` no longer always fails if output contains a carriage
return character ("\r") (#1048). It uses the `pdf()` device instead of
`png()` soit work on systems without X11 (#1011). And it uses
`waldo::compare()` to give more informative failures.
|
Log message:
(devel/R-testthat) Updated 2.2.1 to 2.3.1
# testthat 2.3.1
* The last version of testthat introduced a performance regression in
error assertions (#963). To fix it, you need to install rlang 0.4.2.
* Fixed error assertions with rJava errors (#964).
* Fixed issue where error and warning messages were not retrieved with
`conditionMessage()` under certain circumstances.
# testthat 2.3.0
## Conditions
This release mostly focusses on an overhaul of how testthat works with \
conditions (i.e. errors, warnings and messages). There are relatively few \
user-facing changes, although you should now see more informative backtraces \
from errors and failures.
* Unexpected errors are now printed with a simplified backtrace.
* `expect_error()` and `expect_condition()` now display a backtrace
when the error doesn't conform to expectations (#729).
* `expect_error()`, `expect_warning()` and `expect_message()` now call
`conditionMessage()` to get the condition message. This generic
makes it possible to generate messages at print-time rather than
signal-time.
* `expect_error()` gets a better warning message when you test for a custom
error class with `regexp`.
* New `exp_signal()` function is a condition signaller that
implements the testthat protocol (signal with `stop()` if the
expectation is broken, with a `continue_test` restart).
* Existence of restarts is first checked before invokation. This makes
it possible to signal warnings or messages with a different
condition signaller (#874).
* `ListReporter` now tracks expectations and errors, even when they occur
outside of tests. This ensures that `stop_on_failure` matches the results
displayed by the reporter (#936).
* You can silence warnings about untested error classes by
implementing a method for `is_uninformative_warning()`. This method
should be lazily registered, e.g. with `vctrs::s3_register()`. This
is useful for introducing an experimental error class without
encouraging users to depend on the class in their tests.
* Respect options(warn = -1) to ignore all warnings (@jeroen #958).
## Expectations
* Expectations can now be explicitly subclassed with
`new_expectation()`. This constructor follows our new conventions
for S3 classes and takes an optional subclass and optional
attributes.
* Unquoted inputs no longer potentially generate multiple test messages (#929).
* `verify_output()` no longer uses quasiquotation, which fixes issues
when verifying the output of tidy eval functions (#945).
* `verify_output()` gains a `unicode` parameter to turn on or off the
use of Unicode characters by the cli package. It is disabled by
default to prevent the tests from failing on platforms like Windows
that don't support UTF-8 (which could be your contributors' or your
CI machines).
* `verify_output()` now correctly handles multi-line condition
messages.
* `verify_output()` now adds spacing after condition messages,
consistent with the spacing added after normal output.
* `verify_output()` has a new syntax for inserting headers in output
files: insert a `"# Header"` string (starting with `#` as in
Markdown) to add a header to a set of outputs.
## Other minor improvements and bug fixes
* `compare.numeric()` uses a more sophisticated default tolerance that will
automatically skip tests that rely on numeric tolerance if long doubles are
not available (#940).
* `JunitReporter` now reports tests in ISO 8601 in the UTC timezone and
uses the maximum precision of 3 decimal places (#923).
|