nealrichardson commented on a change in pull request #9521:
URL: https://github.com/apache/arrow/pull/9521#discussion_r581427567
##########
File path: r/tests/testthat/helper-expectation.R
##########
@@ -59,3 +59,66 @@ verify_output <- function(...) {
}
testthat::verify_output(...)
}
+
+expect_dplyr_equal <- function(expr, # A dplyr pipeline with `input` as its
start
+ tbl, # A tbl/df as reference, will make
RB/Table with
+ skip_record_batch = NULL, # Msg, if should skip
RB test
+ skip_table = NULL, # Msg, if should skip
Table test
+ ...) {
+ expr <- rlang::enquo(expr)
+ expected <- rlang::eval_tidy(expr, rlang::new_data_mask(rlang::env(input =
tbl)))
+
+ skip_msg <- NULL
+
+ if (is.null(skip_record_batch)) {
+ via_batch <- rlang::eval_tidy(
+ expr,
+ rlang::new_data_mask(rlang::env(input = record_batch(tbl)))
+ )
+ expect_equivalent(via_batch, expected, ...)
+ } else {
+ skip_msg <- c(skip_msg, skip_record_batch)
+ }
+
+ if (is.null(skip_table)) {
+ via_table <- rlang::eval_tidy(
+ expr,
+ rlang::new_data_mask(rlang::env(input = Table$create(tbl)))
+ )
+ expect_equivalent(via_table, expected, ...)
+ } else {
+ skip_msg <- c(skip_msg, skip_table)
+ }
+
+ if (!is.null(skip_msg)) {
+ skip(paste(skip_msg, collpase = "\n"))
+ }
+}
+
+expect_dplyr_error <- function(expr, # A dplyr pipeline with `input` as its
start
+ tbl, # A tbl/df as reference, will make
RB/Table with
+ ...) {
+ expr <- rlang::enquo(expr)
+ msg <- tryCatch(
+ rlang::eval_tidy(expr, rlang::new_data_mask(rlang::env(input = tbl))),
+ error = function (e) conditionMessage(e)
+ )
+ expect_is(msg, "character", label = "dplyr on data.frame did not error")
Review comment:
Good call. I made ARROW-11752 for that. I found 177 instances of
`expect_is()` so this is a bigger task I'd rather not take up here.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]