Skip to content

Commit

Permalink
Cleaner assert_eq! & assert_ne! panic messages
Browse files Browse the repository at this point in the history
Modify panic message for `assert_eq!`, `assert_ne!`, the currently unstable `assert_matches!`, as well as the corresponding `debug_assert_*` macros.

```rust
assert_eq!(1 + 1, 3);
assert_eq!(1 + 1, 3, "my custom message value={}!", 42);
```

```plain
thread 'main' panicked at $DIR/main.rs:6:5:
assertion failed: `(left == right)`
  left: `2`,
 right: `3`
```
```plain
thread 'main' panicked at $DIR/main.rs:6:5:
assertion failed: `(left == right)`
  left: `2`,
 right: `3`: my custom message value=42!
```

```plain
thread 'main' panicked at $DIR/main.rs:6:5:
assertion `left == right` failed
  left: 2
 right: 3
```

```plain
thread 'main' panicked at $DIR/main.rs:6:5:
assertion `left == right` failed: my custom message value=42!
  left: 2
 right: 3
```

This PR is a simpler subset of the #111030, but it does NOT stringify the original left and right source code assert expressions, thus should be faster to compile.
  • Loading branch information
nyurik committed Aug 15, 2023
1 parent c57393e commit 950e3d9
Show file tree
Hide file tree
Showing 8 changed files with 30 additions and 32 deletions.
14 changes: 6 additions & 8 deletions library/core/src/panicking.rs
Expand Up @@ -267,16 +267,14 @@ fn assert_failed_inner(

match args {
Some(args) => panic!(
r#"assertion failed: `(left {} right)`
left: `{:?}`,
right: `{:?}`: {}"#,
op, left, right, args
r#"assertion `left {op} right` failed: {args}
left: {left:?}
right: {right:?}"#
),
None => panic!(
r#"assertion failed: `(left {} right)`
left: `{:?}`,
right: `{:?}`"#,
op, left, right,
r#"assertion `left {op} right` failed
left: {left:?}
right: {right:?}"#
),
}
}
6 changes: 3 additions & 3 deletions tests/ui/macros/assert-eq-macro-msg.rs
@@ -1,7 +1,7 @@
// run-fail
// error-pattern:assertion failed: `(left == right)`
// error-pattern: left: `2`
// error-pattern:right: `3`: 1 + 1 definitely should be 3
// error-pattern:assertion `left == right` failed: 1 + 1 definitely should be 3
// error-pattern: left: 2
// error-pattern: right: 3
// ignore-emscripten no processes

fn main() {
Expand Down
6 changes: 3 additions & 3 deletions tests/ui/macros/assert-eq-macro-panic.rs
@@ -1,7 +1,7 @@
// run-fail
// error-pattern:assertion failed: `(left == right)`
// error-pattern: left: `14`
// error-pattern:right: `15`
// error-pattern:assertion `left == right` failed
// error-pattern: left: 14
// error-pattern: right: 15
// ignore-emscripten no processes

fn main() {
Expand Down
6 changes: 3 additions & 3 deletions tests/ui/macros/assert-matches-macro-msg.rs
@@ -1,7 +1,7 @@
// run-fail
// error-pattern:assertion failed: `(left matches right)`
// error-pattern: left: `2`
// error-pattern:right: `3`: 1 + 1 definitely should be 3
// error-pattern:assertion `left matches right` failed: 1 + 1 definitely should be 3
// error-pattern: left: 2
// error-pattern: right: 3
// ignore-emscripten no processes

#![feature(assert_matches)]
Expand Down
6 changes: 3 additions & 3 deletions tests/ui/macros/assert-ne-macro-msg.rs
@@ -1,7 +1,7 @@
// run-fail
// error-pattern:assertion failed: `(left != right)`
// error-pattern: left: `2`
// error-pattern:right: `2`: 1 + 1 definitely should not be 2
// error-pattern:assertion `left != right` failed: 1 + 1 definitely should not be 2
// error-pattern: left: 2
// error-pattern: right: 2
// ignore-emscripten no processes

fn main() {
Expand Down
6 changes: 3 additions & 3 deletions tests/ui/macros/assert-ne-macro-panic.rs
@@ -1,7 +1,7 @@
// run-fail
// error-pattern:assertion failed: `(left != right)`
// error-pattern: left: `14`
// error-pattern:right: `14`
// error-pattern:assertion `left != right` failed
// error-pattern: left: 14
// error-pattern: right: 14
// ignore-emscripten no processes

fn main() {
Expand Down
12 changes: 6 additions & 6 deletions tests/ui/test-attrs/test-panic-abort-nocapture.run.stderr
@@ -1,11 +1,11 @@
thread 'main' panicked at $DIR/test-panic-abort-nocapture.rs:33:5:
assertion failed: `(left == right)`
left: `2`,
right: `4`
assertion `left == right` failed
left: 2
right: 4
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at $DIR/test-panic-abort-nocapture.rs:27:5:
assertion failed: `(left == right)`
left: `2`,
right: `4`
assertion `left == right` failed
left: 2
right: 4
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
testing321
6 changes: 3 additions & 3 deletions tests/ui/test-attrs/test-panic-abort.run.stdout
Expand Up @@ -18,9 +18,9 @@ testing123
---- it_fails stderr ----
testing321
thread 'main' panicked at $DIR/test-panic-abort.rs:38:5:
assertion failed: `(left == right)`
left: `2`,
right: `5`
assertion `left == right` failed
left: 2
right: 5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace


Expand Down

0 comments on commit 950e3d9

Please sign in to comment.