对testthat和skip_on_cran()感到困惑

问题描述 投票:0回答:2

tl;dr 我想在包上运行

devtools::test()
并让它跳过测试等。就好像它在 CRAN 上运行,但我不知道如何运行。

据我了解,

testthat::skip_on_cran()
检查环境变量
NOT_CRAN
,如果测试不在CRAN上运行,则应将其设置为“true”值(为了支持这一点,底层测试函数testthat:::on_cran()
等于

!identical(Sys.getenv("NOT_CRAN"), "true")
我正在尝试使用 

skip_on_cran()

 跳过一些测试。我想确认这些测试
实际上会在 CRAN 上被跳过。我有一条线 cat("ON CRAN:", testthat:::on_cran(), "\n")

在我的测试文件中,以便我可以看到 R/
testthat

认为发生了什么。

如果我使用

,环境变量会按照我想要的方式设置(即输出包括

ON CRAN: FALSE

)/测试被正确跳过)
source([testfile], echo = TRUE)

(即,无需预先执行任何特殊操作来设置或取消设置 
NOT_CRAN

环境变量)或

withr::with_envvar(c(NOT_CRAN = "false"), 
    devtools::test_active_file("tests/testthat/test-bootMer.R"))

(如果我运行 
test_active_file()

而不包装它,我会得到

ON CRAN: FALSE
)。
但是,我没有找到以类似方式运行所有测试的方法(通过

devtools::test()

)。换句话说,

我不知道如何在“ON CRAN”模式下运行
devtools::test()
test()
没有明确的参数(它有
...
 这是“传递给包装函数的附加参数”,但我看不到任何相关的向下挖掘),并且使用 
withr::with_envvar()
 似乎没有来帮忙。 
devtools::check()
 
does
 有一个明确的 
env_vars 参数,但我希望能够运行测试而无需执行整个包检查过程...
很抱歉这不能完全重现;如果需要,我可以尝试构建一个最小的包来显示行为......

不确定您是否仍然有这个问题,但我将此行放在我的第一个测试文件的顶部,它在 R 4.2.1 中工作。
r devtools cran testthat
2个回答
1
投票
Sys.setenv(NOT_CRAN='skip')

对我来说,这有效:

0
投票

安装你想要测试的包

    运行
  1. Sys.setenv("NOT_CRAN"="false");testthat::test_package("rxode2")
  2. ,其中
  3. rxode2
     是您正在测试的包。
    我知道这已经很旧了,但其他人也可能想知道

© www.soinside.com 2019 - 2024. All rights reserved.