Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve handling of assertion failures with very long conditions #116548

Merged
merged 2 commits into from
Oct 10, 2023

Commits on Oct 9, 2023

  1. Add a ui test with an assertion that has a really long condition.

    The `\n` in the output is a little surprising. The next commit will deal
    with it.
    nnethercote committed Oct 9, 2023
    Configuration menu
    Copy the full SHA
    15c1a6b View commit details
    Browse the repository at this point in the history
  2. Don't escape_debug the condition of assert!.

    The assertion in `assert-long-condition.rs` used to be fail like this, all on
    one line:
    ```
    thread 'main' panicked at 'assertion failed: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18\n                                + 19 + 20 + 21 + 22 + 23 + 24 + 25 == 0', tests/ui/macros/assert-long-condition.rs:7:5
    ```
    The `\n` and subsequent indent is because the condition is pretty-printed, and
    the pretty-printer inserts a newline. Printing the newline in this way is
    arguably reasonable given that the message appears within single quotes, which
    is very similar to a string literal.
    
    However, after the assertion printing improvements that were released in 1.73,
    the assertion now fails like this:
    ```
    thread 'main' panicked at tests/ui/macros/assert-long-condition.rs:7:5:
    assertion failed: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18\n                                + 19 + 20 + 21 + 22 + 23 + 24 + 25 == 0
    ```
    Now that there are no single quotes around the pretty-printed condition, the
    `\n` is quite strange.
    
    This commit gets rid of the `\n`, by removing the `escape_debug` done on the
    pretty-printed message. This results in the following:
    ```
    thread 'main' panicked at tests/ui/macros/assert-long-condition.rs:7:5:
    assertion failed: 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18
                                    + 19 + 20 + 21 + 22 + 23 + 24 + 25 == 0
    ```
    The overly-large indent is still strange, but that's a separate pretty-printing issue.
    
    This change helps with rust-lang#108341.
    nnethercote committed Oct 9, 2023
    Configuration menu
    Copy the full SHA
    7528fdc View commit details
    Browse the repository at this point in the history