如何测试 R 中的无限循环错误

How can I test an infinite loop bug in R

我的 R 代码中有一个导致无限循环的错误。我想编写一个测试来检查我是否修复了这个错误。

foo <- function () {
  while (TRUE) sleep(1) # oops!
}

# I want something like:
expect_completes_within(foo(), seconds = 10)

有现成的解决方案吗?有没有办法在给定时间后中断执行并抛出错误?

R.utils::withTimeout(foo(), timeout = 10) # Stop foo() after 10 seconds.

已找到解决方案,其中还提供了基于 R 的代码。