【问题标题】:When and when not to use \donttest and \dontrun in R package development?在 R 包开发中何时以及何时不使用 \donttest 和 \dontrun?
【发布时间】:2021-08-26 08:31:16
【问题描述】:

所以我将我的包提交给 CRAN,我很困惑何时将示例包装在 \donttest\dontrun 中。我有几个不同的案例:

  1. 返回数据帧等的示例
  2. 返回通过 ggplot2 生成的静态图的示例
  3. 返回通过 plotly 生成的 JavaScript 图形的示例
  4. 读取或写入文件系统的示例(例如导入数据和编写电子表格)
  5. 运行 Shiny 应用的示例

我已经计算出,对于 (1) 我永远不应该使用 \donttest\dontrun。对于 (5) 我应该将整个函数包装在 if(interactive()){} 中。

这仍然留下了案例 2-5,我不确定是否应该将示例打包或不打包。我猜情节还可以,但不确定读/写文件。非常感谢任何提示或将我引导到明确解释的地方。谢谢。

【问题讨论】:

    标签: r cran


    【解决方案1】:

    一般来说,除非您需要它们,否则您应该避免使用这些标记。如果示例执行了可能失败的操作,您将需要其中之一,因为 CRAN 会将失败视为您的包中的错误。如果他们做一些危险的事情(例如,在用户的主目录中创建文件、删除您创建的临时文件以外的文件、发送电子邮件等),您也会使用它们。

    \dontrun 标记更强。在过去的例子中,甚至不需要在语法上是正确的,尽管我认为这可能已经改变了。如果用户运行example() 函数,他们将不会运行该代码。

    在运行时间过长且违反 CRAN 5 秒限制的示例上使用 \donttest。运行example() 的用户将运行这些,但您的包的基本测试不会。有时 CRAN 会测试 \donttest 代码,所以它必须工作。 (一般情况下,如果可以,最好给出运行速度快且不要达到 5 秒限制的示例。)

    对于您的具体示例,只要速度足够快,就不需要任何包装,并且您可以安排所有文件系统更改都发生在 R 会话临时目录中。

    【讨论】:

    • 谢谢,这很有帮助。我曾假设 CRAN 不想要生成数字和读/写文件的示例,但正如你所说,它似乎没问题。
    猜你喜欢
    • 2020-12-20
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2017-03-11
    相关资源
    最近更新 更多