Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 6 additions & 33 deletions R/expect-constant.R
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,16 @@ NULL
#' @rdname logical-expectations
expect_true <- function(object, info = NULL, label = NULL) {
act <- quasi_label(enquo(object), label, arg = "object")
expect_waldo_constant_(act, TRUE, info = info, ignore_attr = TRUE)
exp <- labelled_value(TRUE, "TRUE")
expect_waldo_equal_("equal", act, exp, info = info, ignore_attr = TRUE)
}

#' @export
#' @rdname logical-expectations
expect_false <- function(object, info = NULL, label = NULL) {
act <- quasi_label(enquo(object), label, arg = "object")
expect_waldo_constant_(act, FALSE, info = info, ignore_attr = TRUE)
exp <- labelled_value(FALSE, "FALSE")
expect_waldo_equal_("equal", act, exp, info = info, ignore_attr = TRUE)
}

#' Does code return `NULL`?
Expand All @@ -56,35 +58,6 @@ expect_false <- function(object, info = NULL, label = NULL) {
#' show_failure(expect_null(y))
expect_null <- function(object, info = NULL, label = NULL) {
act <- quasi_label(enquo(object), label, arg = "object")
expect_waldo_constant_(act, NULL, info = info)
}

# helpers -----------------------------------------------------------------

expect_waldo_constant_ <- function(
act,
constant,
info,
...,
trace_env = caller_env()
) {
comp <- waldo_compare(
act$val,
constant,
x_arg = "actual",
y_arg = "expected",
...
)

if (length(comp) != 0) {
msg <- sprintf(
"%s is not %s\n\n%s",
act$lab,
deparse(constant),
paste0(comp, collapse = "\n\n")
)
return(fail(msg, info = info, trace_env = trace_env))
}

pass(act$val)
exp <- labelled_value(NULL, "FALSE")
expect_waldo_equal_("equal", act, exp, info = info)
}
2 changes: 1 addition & 1 deletion R/expect-equality.R
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ expect_waldo_equal_ <- function(
)
if (length(comp) != 0) {
msg <- sprintf(
"%s (%s) not %s to %s (%s).\n\n%s",
"%s (%s) is not %s to %s (%s).\n\n%s",
act$lab,
"`actual`",
type,
Expand Down
2 changes: 1 addition & 1 deletion R/expect-output.R
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ expect_output <- function(
}
pass(act$val)
} else {
act <- new_actual(act$cap, act$lab)
act <- labelled_value(act$cap, act$lab)
expect_match_(act, enc2native(regexp), ...)
}
}
2 changes: 1 addition & 1 deletion R/expect-self-test.R
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ expect_failure <- function(expr, message = NULL, ...) {
}

if (!is.null(message)) {
act <- new_actual(status$last_failure$message, "Failure message")
act <- labelled_value(status$last_failure$message, "Failure message")
return(expect_match_(act, message, ...))
}
pass(NULL)
Expand Down
5 changes: 3 additions & 2 deletions R/local.R
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,9 @@ waldo_compare <- function(x, y, ..., x_arg = "x", y_arg = "y") {
# Need to very carefully isolate this change to this function - can not set
# in expectation functions because part of expectation handling bubbles
# up through calling handlers, which are run before on.exit()
local_reporter_output()

if (!is_snapshot()) {
local_reporter_output()
}
waldo::compare(x, y, ..., x_arg = x_arg, y_arg = y_arg)
}

Expand Down
4 changes: 2 additions & 2 deletions R/quasi-label.R
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ quasi_label <- function(quo, label = NULL, arg = "quo") {

expr <- quo_get_expr(quo)

new_actual(
labelled_value(
eval_bare(expr, quo_get_env(quo)),
label %||% expr_label(expr)
)
}

new_actual <- function(value, label) {
labelled_value <- function(value, label) {
list(
val = value,
lab = label
Expand Down
30 changes: 15 additions & 15 deletions tests/testthat/_snaps/expect-constant.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
# logical tests act as expected

FALSE is not TRUE
FALSE (`actual`) is not equal to TRUE (`expected`).

`actual`: FALSE
`expected`: TRUE
`actual`: FALSE
`expected`: TRUE

---

TRUE is not FALSE
TRUE (`actual`) is not equal to FALSE (`expected`).

`actual`: TRUE
`expected`: FALSE
`actual`: TRUE
`expected`: FALSE

# can compare non-vectors

quote(x) is not TRUE
quote(x) (`actual`) is not equal to TRUE (`expected`).

`actual` is a symbol
`expected` is a logical vector (TRUE)
`actual` is a symbol
`expected` is a logical vector (TRUE)

# expect_null works

1L is not NULL
1L (`actual`) is not equal to FALSE (`expected`).

`actual` is an integer vector (1)
`expected` is NULL
`actual` is an integer vector (1)
`expected` is NULL

---

environment() is not NULL
environment() (`actual`) is not equal to FALSE (`expected`).

`actual` is an environment
`expected` is NULL
`actual` is an environment
`expected` is NULL

12 changes: 6 additions & 6 deletions tests/testthat/_snaps/expect-equality.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
# provide useful feedback on failure

1 (`actual`) not identical to "a" (`expected`).
1 (`actual`) is not identical to "a" (`expected`).

`actual` is a double vector (1)
`expected` is a character vector ('a')
`actual` is a double vector (1)
`expected` is a character vector ('a')

---

1 (`actual`) not equal to "a" (`expected`).
1 (`actual`) is not equal to "a" (`expected`).

`actual` is a double vector (1)
`expected` is a character vector ('a')
`actual` is a double vector (1)
`expected` is a character vector ('a')

---

Expand Down
11 changes: 11 additions & 0 deletions tests/testthat/_snaps/expect-self-test.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,17 @@
Error:
! error

# show_failure

Code
show_failure(expect_true(FALSE))
Output
Failed expectation:
FALSE (`actual`) is not equal to TRUE (`expected`).

`actual`: FALSE
`expected`: TRUE

# expect_no are deprecated

Code
Expand Down
8 changes: 4 additions & 4 deletions tests/testthat/_snaps/reporter-check.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@

== Failed tests ================================================================
-- Failure ('reporters/tests.R:12:3'): Failure:1 -------------------------------
FALSE is not TRUE
FALSE (`actual`) is not equal to TRUE (`expected`).

`actual`: FALSE
`expected`: TRUE
-- Failure ('reporters/tests.R:16:8'): Failure:2a ------------------------------
FALSE is not TRUE
FALSE (`actual`) is not equal to TRUE (`expected`).

`actual`: FALSE
`expected`: TRUE
Expand Down Expand Up @@ -71,12 +71,12 @@

== Failed tests ================================================================
-- Failure ('reporters/tests.R:12:3'): Failure:1 -------------------------------
FALSE is not TRUE
FALSE (`actual`) is not equal to TRUE (`expected`).

`actual`: FALSE
`expected`: TRUE
-- Failure ('reporters/tests.R:16:8'): Failure:2a ------------------------------
FALSE is not TRUE
FALSE (`actual`) is not equal to TRUE (`expected`).

`actual`: FALSE
`expected`: TRUE
Expand Down
4 changes: 2 additions & 2 deletions tests/testthat/_snaps/reporter-debug.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# produces consistent output

1: expect_true(FALSE)
2: expect_waldo_constant_(act, TRUE, info = info, ignore_attr = TRUE)
2: expect_waldo_equal_("equal", act, exp, info = info, ignore_attr = TRUE)
3: fail(msg, info = info, trace_env = trace_env)

1: f()
2: expect_true(FALSE)
3: expect_waldo_constant_(act, TRUE, info = info, ignore_attr = TRUE)
3: expect_waldo_equal_("equal", act, exp, info = info, ignore_attr = TRUE)
4: fail(msg, info = info, trace_env = trace_env)

1: stop("stop")
Expand Down
4 changes: 2 additions & 2 deletions tests/testthat/_snaps/reporter-junit.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@
</testsuite>
<testsuite name="Failures" timestamp="1999:12:31 23:59:59" hostname="nodename" tests="2" skipped="0" failures="2" errors="0" time="0">
<testcase time="0" classname="Failures" name="Failure_1">
<failure type="failure" message="FALSE is not TRUE ('reporters/tests.R:12:3')">FALSE is not TRUE
<failure type="failure" message="FALSE (`actual`) is not equal to TRUE (`expected`). ('reporters/tests.R:12:3')">FALSE (`actual`) is not equal to TRUE (`expected`).

`actual`: FALSE
`expected`: TRUE </failure>
</testcase>
<testcase time="0" classname="Failures" name="Failure_2a">
<failure type="failure" message="FALSE is not TRUE ('reporters/tests.R:16:8')">FALSE is not TRUE
<failure type="failure" message="FALSE (`actual`) is not equal to TRUE (`expected`). ('reporters/tests.R:16:8')">FALSE (`actual`) is not equal to TRUE (`expected`).

`actual`: FALSE
`expected`: TRUE
Expand Down
Loading
Loading