tinytest is a relatively new, light-weight (no-dependency) but full-featured unit testing framework for R. It is currently used by 60+ packages, including the famous Rcpp package.
The latest version of tinytest was accepted by CRAN on 5 May 2020. This is a minor release with some fixes and a few new features.
tinytest now gives you some extra control over the environment the tests are un in. The workhorse function
run_test_file now has an argument
set_env, so you can do
run_test_file("test_mypkg.R", set_env=list(LC_TIME = "nl_NL.utf8", FOO="bar"))
and your time locale settings will be Dutch during the time of your test run (and who wouldn’t want that?). Also your
FOO will be
bar, but only during the test run. All functions that rely on
run_test_file get the same argument via the
You can now compare output to stored output using
expect_equivalent_to_reference(). This compares a value to a value stored in and
There’s a new function
expect_stdout() that catches everything that is printed or cat’ed to the terminal. The
expect_message() function used to do this, but this task is now split over two functions, making the interface somewhat more consistent.
The new function
get_call_wd() can be used from within a test file. It returns the working directory that was active when the test sequence was invoked (e.g. by
test_all()). Useful because
tinytest temporarily and safely switches working directory to the location of the test file (and returns afterwards).
The condition-catching functions
expect_message gain a
class argument, that can be used to check whether a signaling condition inherits from a certain class.
- Argument ‘tol’ now renamed ‘tolerance’. Also removed internal reliance on
partial argument matching (Thanks to Michel Lang).
- Updated documentation on how to extend
tinytestwith new recommendation.
- Using tinytest vignette gains section on testing internal functions.
- Breaking: function ‘expect_message’ no longer intercepts messages sent
to stdout (e.g. via ‘print’ or ‘cat’), but only messages send as a ‘message’
condition (Thanks to Michel Lang for pointing this out).
- Fix: ‘test_package’ would return NULL when called interactively and the package
contained a failing test.
I’m truly grateful for the contributions by people who have helped me improve tinytest by providing suggestions, bug reports, and comments. For this release, I am especially grateful to Michel Lang, Maja Zaloznik and Jon Clayden.