-
Notifications
You must be signed in to change notification settings - Fork 340
Description
expect_true(all(.)) is a very common construction. Here's >10,000 hits on GitHub:
https://github.com/search?q=%22expect_true%28all%28%22&type=code
I propose adding all= as an argument to expect_true(). The advantage is that testthat can offer a better test failure interface than is currently available.
Compare:
test <- c(rep(TRUE, 10), FALSE)
expect_true(all(test))
# Error: all(test) is not TRUE
# `actual`: FALSE
# `expected`: TRUE Not very helpful (NB: this is the same in 2e and 3e as of now). Proposed interface:
expect_true(test, all = TRUE)
# Error: test are not all TRUE
# `actual` is FALSE at index 11I don't see this as often for expect_false(all(.)), but for consistency we could add the argument there. We could also add an any= argument to handle expect_true(any(.)), which is not uncommon, though maybe it's better served with something similar to expect_match: all = TRUE --> require all(), all = FALSE --> require any(), all = NULL --> current behavior, i.e. require identical(., TRUE).
For reference, this was triggered in particular by glancing through logs to try and debug this:
Our logs showing the current failure makes it a lot harder to think about what might be going wrong without actively debugging.