Ben*_*ker 12 r devtools cran testthat
tl;dr我想devtools::test()在一个包上运行并让它跳过测试等,就像它在 CRAN 上运行一样,但我不知道如何操作。
据我了解,testthat::skip_on_cran()检查环境变量NOT_CRAN,如果测试未在CRAN 上运行,则应将其设置为“true”值(为了支持这一点,底层测试函数testthat:::on_cran()等于
!identical(Sys.getenv("NOT_CRAN"), "true")
Run Code Online (Sandbox Code Playgroud)
我试图用来skip_on_cran()跳过一些测试。我想确认CRAN 上实际上会跳过这些测试。我有一条线
cat("ON CRAN:", testthat:::on_cran(), "\n")
Run Code Online (Sandbox Code Playgroud)
在我的测试文件中,以便我可以看到 R/testthat认为发生了什么。
如果我使用,环境变量会按照我想要的方式设置(即输出包括ON CRAN: FALSE)/测试被正确跳过)
source([testfile], echo = TRUE)
Run Code Online (Sandbox Code Playgroud)
NOT_CRAN(即,无需预先执行任何特殊操作来设置或取消设置环境变量)或
withr::with_envvar(c(NOT_CRAN = "false"),
devtools::test_active_file("tests/testthat/test-bootMer.R"))
Run Code Online (Sandbox Code Playgroud)
(如果我运行时test_active_file()没有包装它,我会得到ON CRAN: FALSE)。
但是,我没有看到devtools::test()以类似的方式运行所有测试(通过)的方法。换句话说,我不知道如何devtools::test()在“ON CRAN”模式下运行。 test()对此没有明确的参数(它有...“传递给包装函数的附加参数”,但我看不到任何相关的向下挖掘),并且使用withr::with_envvar()似乎没有帮助。devtools::check() 确实有一个明确的env_vars参数,但我希望能够运行测试而无需经历整个包检查过程......
抱歉,这不能完全重现;如果需要,我可以尝试构建一个最小的包来显示行为......
不确定您是否仍然有这个问题,但我将此行放在我的第一个测试文件的顶部,它在 R 4.2.1 中有效。
Sys.setenv(NOT_CRAN='skip')
Run Code Online (Sandbox Code Playgroud)