CRAN 要求用 \donttest{} 替换 \dontrun{} 后 R 包中的问题

Ped*_*eca 5 r devtools cran

我向 CRAN 提交了一个包,他们要求我替换Rd 文件中的\dontrun{}by\donttest{}并重新提交。我\dontrun{}用来包装一些应该抛出错误消息的例子。

更换后\dontrun{}\donttest{}我进行了一些测试,并R CMD check仍然成功,但现在发生了这两个devtools::check()R CMD check --as-cran由于包裹在失败的例子\donttest{}

checking examples with --run-donttest ... ERROR
Run Code Online (Sandbox Code Playgroud)

经过一些浏览,我了解到 R 4.0.0 已更改R CMD check --as-cran为运行\donttest示例。根据R-devel的新闻

“R CMD check --as-cran 现在运行 \donttest 示例(由 example() 运行),而不是指示测试人员这样做。这可以在开发过程中通过将环境变量R_CHECK_DONTTEST_EXAMPLES设置为假值来暂时规避。”

由于我打算将包重新提交给 CRAN,因此设置_R_CHECK_DONTTEST_EXAMPLES_为local对false我没有帮助。

我还在一个问题中发现最近的讨论,devtools其中 Hadley Wickham 指出:

“一般来说,现在如果你不想在 CRAN 上运行测试 \dontrun{} 更有可能工作,但使用 \dontrun{} 可能会导致初始提交失败。”

所以现在我不知道如何继续,因为如果我重新提交包含所需更改的包,我已经知道它会在R CMD check --as-cran.

编辑:

正如这里所建议的我尝试if(interactive()){}代替\dontrun{}. 这个解决方案成功了R CMD check --as-crandevtools::check()但我认为它不是解决这个问题的最合适的方法,因为它不能很好地工作example()(抛出一个错误并且不显示其余的例子)。\dontrun{}效果更好,example()因为它打印了所有示例,但注释掉了用\dontrun{}.

Hon*_*Ooi 5

如果您知道某些内容会引发错误,则可以将其包装在try().

## example of failing code
try(stop("Here is an error"))
Run Code Online (Sandbox Code Playgroud)