我有不同的行爲在不同平臺上一些特別挑剔的代碼,但也表現不同,如果valgrind
下運行...現在我知道這expect_error_or_warning in testthat?
- 發出警告,如果在32位Linux 無法運行下的valgrind
- 給人如果在32位Linux與
R -d valgrind
別處運行或以下作品的代碼(對不起,缺乏再版的錯誤oducible的例子,你可能會看到,這將是很難寫一個)如果我不是在valgrind
下運行,但在valgrind
下失敗,因爲我們得到一個錯誤,而不是一個警告。
if (sessionInfo()$platform=="i686-pc-linux-gnu (32-bit)") {
expect_warning(update(g0, .~. +year), "failed to converge")
} else {
expect_error(update(g0, .~. +year), "pwrssUpdate did not converge in")
}
我想要一個expect_warning_or_error()
函數;我想我可以做一個通過砍掉expect_error
和expect_warning
的內膽,這看起來不太太複雜,但我歡迎其他建議。
或者,我可以弄清楚如何檢測我是否在valgrind
下運行(看起來更難)。
重複的例子,一個排序的:
library(testthat)
for (i in c("warning","stop")) {
expect_warning(get(i)("foo"))
expect_error(get(i)("foo"))
}
這很不錯,我可以接受它。我希望有更多的「測試地道」;我正在竊聽一些不太好但我可能會發布的內容。你的確滿足基本要求。 –