[R-pkg-devel] Package used unconditionally only in testing
murdoch@dunc@n @end|ng |rom gm@||@com
Fri Jan 8 17:15:20 CET 2021
On 08/01/2021 9:17 a.m., Greg Freedman Ellis wrote:
> Hi all,
> I'm trying to update a package to conform to pass tests given
> In this package, we only use the package `httptest` during testing, but the
> tests are (almost) meaningless if it is not installed, so I would like to
> indicate that it is a required package rather than skipping tests if it is
> not installed.
This sounds wrong. I don't know the httptest package, but I assume that
since you were only using it for testing, I might be interested in using
your package even if I wasn't interested in installing httptest. Making
it a hard requirement would force me to install httptest.
> If I move `httptest` to Depends, then I get the error CRAN check note:
>> Namespace in Imports field not imported from: ‘httptest’
>> All declared Imports should be used.
You *definitely* shouldn't include it in Depends: that would force it
onto the search list, and potentially break other things that I'm
running, e.g. if they have name conflicts with it.
You *probably* shouldn't include it in Imports. Why force me to load
another package if I'll never use it? There's a tiny chance that would
push my memory use over the edge, and my own code would fail.
It should almost certainly be included in Suggests, and nowhere else.
If that means your tests are skipped, you should feel free to warn the
user in your test messages: but it shouldn't cause your tests to fail.
> I think this would best be solved by a DESCRIPTION field that indicates a
> package is required, but only for tests, but I do not see such a field. The
> only solution I can think of is to have a trivial import of `httptest` in
> the main package to silence the NOTE. Is there a better solution?
Most users aren't going to run your tests, so they shouldn't be forced
to install software that would let them do so.
More information about the R-package-devel