On 12/12/2020 4:41 p.m., Ben Bolker wrote:
On 12/12/20 4:08 PM, Spencer Graves wrote:
Hi, Ben et al.:
On 2020-12-12 13:43, Ben Bolker wrote:
Apologies if I'm telling you something you already know:
By default, fda::CRAN() uses the presence of environment variables
matched by the regexp "^_R_" as a heuristic to decide whether it's
being running on CRAN.
testthat::skip_on_cran() calls testthat::on_cran() to look for an
environment variable called NOT_CRAN equal to "true". The
devtools::check() machinery automatically sets this variable.
> testthat::on_cran
Error: 'on_cran' is not an exported object from 'namespace:testthat'
on_cran() is intended to be used via testthat::skip_on_cran()
(which is exported, unlike on_cran()).
Besides, on my Mac, I get:
> testthat:::on_cran()
[1] TRUE
My Mac is NOT CRAN, and I don't want that function to return TRUE
on my computer unless I explicitly run "R CMD check --on-cran".
The assumption of testthat is that it's going to be deployed via
devtools::check(), which automatically sets the environment variable
NOT_CRAN equal to 'true'. For testing on your machine, you could use
Sys.setenv(NOT_CRAN="true"); testthat:::on_cran()
or you could put
export NOT_CRAN=true
in the shell/in your testing pipeline.
So: fda::CRAN() depends on breakable assumptions, defaults to FALSE
in an empty environment. skip_on_cran() defaults to TRUE in an empty
environment (but defaults to FALSE in a devtools::check() environment).
If future changes break fda::CRAN, I will have to deal with it then.
I'd be happier if the CRAN maintainers would develop a procedure
to make it easier for package maintainers do two things:
* Include tests in their package that run longer than the
time limit permitted on CRAN.
* Give error messages that the package maintainer wants to
see but that should be suppressed on CRAN or when the user decides to
run "R CMD check --as-cran".
I agree that this would be nice.
A simple mechanism would be to set an official/sanctioned/stable
environment variable such as _R_ON_CRAN in all CRAN testing pipelines.
What's wrong with users setting NOT_CRAN on all non-CRAN testing pipelines?
Most people want the same tests in both places. Those who like writing
lots of time consuming tests are the ones who shouldn't mind a small
step to control them.
Duncan Murdoch
______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel