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 中工作。
Sys.setenv(NOT_CRAN='skip')
对我来说,这有效:
安装你想要测试的包
Sys.setenv("NOT_CRAN"="false");testthat::test_package("rxode2")
rxode2
是您正在测试的包。我知道这已经很旧了,但其他人也可能想知道