问题描述
tl;dr 我想在一个包上运行 devtools::test()
并让它跳过测试等。好像它在 CRAN 上运行,但我可以不知道怎么做。
据我所知,testthat::skip_on_cran()
检查环境变量 NOT_CRAN
,如果测试不正在运行,则应将其设置为“true”值CRAN(为了支持这一点,底层测试函数 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()
没有明确的参数(它有 ...
是“传递给包装函数的附加参数”,但我看不到任何相关的向下挖掘),并使用 {{1 }} 似乎没有帮助。 withr::with_envvar()
确实有一个明确的 devtools::check()
参数,但我希望能够在不经过整个包检查过程的情况下运行测试......
很抱歉这不能完全重现;如果需要,我可以尝试构建一个最小的包来显示行为......
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)