我正在构建一个R包RE
,我想用它打包一个独立的脚本放在 RE / exec / wrapper.R 中。我已经为 testthat 编写了一个测试函数,它在使用devtools::test("RE")
从命令行运行时效果很好,但在使用devtools::check("RE")
运行时失败了。
失败的相关代码部分是:
cmd <- "Rscript \"C:\\RE\\exec\\wrapper.R\" base print \"{\\\"x\\\": 2}\""
rv <- system(cmd, intern = FALSE, ignore.stderr = FALSE, show.output.on.console = FALSE)
当作为&#34;测试&#34;的一部分运行时一切正常,system
应该返回0
。当作为&#34;&#34;的一部分运行时,system
会给出下面给出的错误消息并返回1
。
Error in file(filename, "r", encoding = encoding) : cannot open the connection
Calls: local ... eval.parent -> eval -> eval -> eval -> eval -> source -> file
In addition: Warning message:
In file(filename, "r", encoding = encoding) : cannot open file 'startup.Rs': No such file or directory
Execution halted
我有:
tryCatch
。没有发现错误,system
只返回1
这让我觉得这是system
和R CMD CHECK
的问题。
答案 0 :(得分:0)
答案在https://github.com/hadley/testthat/issues/144。必须通过顶级测试脚本( package_root / tests / testthat.R )中的R_TESTS
取消设置环境变量Sys.setenv("R_TESTS" = "")
,否则system
将无法正常运行从R CMD CHECK
打来的时候。我要离开这个问题了,因为在我找到答案之前,我花了几个小时进行实验和搜索。