-
Notifications
You must be signed in to change notification settings - Fork 339
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 11
I 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.