Skip to content

Commit 4b57565

Browse files
authored
Correct expect_setequal() failure message (#1837)
Fixes #1835
1 parent 65a3800 commit 4b57565

File tree

4 files changed

+31
-17
lines changed

4 files changed

+31
-17
lines changed

NEWS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# testthat (development version)
22

3+
* `expect_setequal()` correctly displays results when only one of actual and
4+
expected is missing values (#1835).
5+
36
# testthat 3.1.10
47

58
* Fix for upcoming R-devel release.

R/expect-setequal.R

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ expect_setequal <- function(object, expected) {
4141
if (any(exp_miss) || any(act_miss)) {
4242
fail(paste0(
4343
act$lab, " (`actual`) and ", exp$lab, " (`expected`) don't have the same values.\n",
44-
if (any(exp_miss))
45-
paste0("* Only in `actual`: ", values(act$val[act_miss]), "\n"),
4644
if (any(act_miss))
47-
paste0("* Only in `expected`: ", values(exp$val[exp_miss]), "\n")
45+
paste0("* Only in `expected`: ", values(act$val[act_miss]), "\n"),
46+
if (any(exp_miss))
47+
paste0("* Only in `actual`: ", values(exp$val[exp_miss]), "\n")
4848
))
4949
} else {
5050
succeed()

tests/testthat/_snaps/expect-setequal.md

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,26 @@
1-
# useful message on faillure
1+
# useful message on failure
22

3-
`x1` (`actual`) and `x2` (`expected`) don't have the same values.
4-
* Only in `actual`: "a"
5-
* Only in `expected`: "c"
3+
1:2 (`actual`) and 2 (`expected`) don't have the same values.
4+
* Only in `expected`: 1
65

76

87
---
98

10-
`y1` (`actual`) and `y2` (`expected`) don't have the same values.
11-
* Only in `actual`: 1
12-
* Only in `expected`: 4, 5, 6, 7, 8, 9, 10, 11, 12, ...
9+
2 (`actual`) and 2:3 (`expected`) don't have the same values.
10+
* Only in `actual`: 3
11+
12+
13+
---
14+
15+
1:2 (`actual`) and 2:3 (`expected`) don't have the same values.
16+
* Only in `expected`: 1
17+
* Only in `actual`: 3
18+
19+
20+
# truncates long vectors
21+
22+
1:2 (`actual`) and 1:50 (`expected`) don't have the same values.
23+
* Only in `actual`: 3, 4, 5, 6, 7, 8, 9, 10, 11, ...
1324

1425

1526
# expect_contains() gives useful message on failure

tests/testthat/test-expect-setequal.R

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@ test_that("error for non-vectors", {
2323
expect_error(expect_setequal(sum, sum), "be vectors")
2424
})
2525

26-
test_that("useful message on faillure", {
27-
x1 <- c("a", "b")
28-
x2 <- c("b", "c")
29-
y1 <- 1:3
30-
y2 <- 2:50
26+
test_that("useful message on failure", {
27+
expect_snapshot_failure(expect_setequal(1:2, 2))
28+
expect_snapshot_failure(expect_setequal(2, 2:3))
29+
expect_snapshot_failure(expect_setequal(1:2, 2:3))
30+
})
3131

32-
expect_snapshot_failure(expect_setequal(x1, x2))
33-
expect_snapshot_failure(expect_setequal(y1, y2))
32+
test_that("truncates long vectors", {
33+
expect_snapshot_failure(expect_setequal(1:2, 1:50))
3434
})
3535

3636
# mapequal ----------------------------------------------------------------

0 commit comments

Comments
 (0)