NEWS.md
Tests asserting correctness of nbrOfWorkers()
could produce an “invalid format ‘%d’; use format %f, %e, %g or %a for numeric objects” error when trying to produce an assertion error on nbrOfWorkers()
having an incorrect value. This could happen if nbrOfWorkers()
returned a non-integer value, e.g. +Inf
.
Test asserting that the workers
argument can be a function would not always work if testing with a hardcoded number of workers according to plan()
.
Test asserting that the workers
argument can be a function would not work if the backend’s default value was non-numeric, e.g. the cluster
backend defaults to the character vector parallelly::availableWorkers()
.
Test asserting that lazy futures would be automatically launched and resolved relied on a legacy version of the Future API, where calling resolved()
on a lazy future could leave it in a lazy state, which is no longer correct. A lazy future will always be launched if one calls resolved()
on it.
Test asserting that the ff package worked across multiple futures assumed that the package is loaded automatically by the future, which it is not. The could cause the test to fail for some future backends.
Now tests can be formally skipped by calling future.tests::skip_test()
from within the test. Skipped tests are counted and reported in the summary.
Now check_plan()
outputs the reason for a test is being skipped.
Now check_plan()
outputs also the error message, error class, the call, and any standard output, whenever there’s is a test error.
Now check_plan()
outputs also the test iteration index.
Add Rscript -e future.tests::check --version
.
workers
argument, which is not true for all future backends. For example, ‘sequential’ does not take argument workers
. Previously, we avoided this problem by only testing if the evaluator inherited multiprocess
, but that is not sufficient, e.g. upcoming future.redis::redis
inherits multiprocess
, but still does not have a workers
argument. Now we check for the workers
argument instead.Assert that rm(a)
in a future expression only removes a local variable a
, but never a global variable a
.
Assert that packages data.table and ff are not affected when a future resets the R options on the worker when resolved.
Assert that a global that is a copy of a non-exported package object (e.g. utils:::str2logical()
) is not dropped because it belongs to a package namespace.
Assert that ...
can be exported as a global to a future, and used as-is inside a function that does not have ...
arguments.
check()
and check_plan()
gained argument local
, which is passed down to run_test()
.
check()
gained argument envir
, which is passed down to run_test()
.
The TestResult class did not record whether the test was evaluated in a local environment or not.
A too strict internal assertion would give Error in evaluate_expr(test$expr, envir = envir, local = FALSE, output = output, : identical(Sys.getenv(), old$envvars) is not TRUE
for R 4.2.x and R-devel on MS Windows. This was because it is not possible to remove environment variables on MS Windows; they can only be set to an empty value.
Assert that future()
doesn’t change the RNG kind.
Assert that future(..., conditions = character(0L))
muffles all conditions.
For robustness, using explicit stringsAsFactors = FALSE
internally.
evaluate_expr()
, which is used for running all tests, now reset options, environment variables, the RNG kind, and the random seed afterward to what it was before being called.
Added a package vignettes.
Update the package description to use single quotes.
Add example to check()
.