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

Add reason for failed match to RaisesGroup #3145

Open
wants to merge 36 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
03a3959
RaisesGroup will now raise an assertionerror with an informative mess…
jakkdl Nov 27, 2024
c0dcb58
suggest allow_unwrapped if it would match with it
jakkdl Nov 29, 2024
2b98b2f
fix test fails
jakkdl Nov 29, 2024
f84d9d1
codecov and fix suggestion to re.escape string
jakkdl Nov 29, 2024
df27595
add _check_expected helper
jakkdl Nov 29, 2024
993a173
remove trailing period. Add trying_flattening and suggest_flattening.…
jakkdl Nov 29, 2024
656e040
simplify & remove false positive for suggestion to use flatten_subgroups
jakkdl Dec 3, 2024
debe557
overhaul message in the complicated case. Avoid printing check repr i…
jakkdl Dec 9, 2024
a8e263c
Merge remote-tracking branch 'origin/main' into raisesgroup_fail_reason
jakkdl Dec 9, 2024
8281d7c
Merge branch 'main' into raisesgroup_fail_reason
jakkdl Dec 18, 2024
3f757f1
Merge remote-tracking branch 'origin/main' into raisesgroup_fail_reason
jakkdl Dec 30, 2024
a62a252
add fails_raises_group test helper
jakkdl Dec 30, 2024
5efafd5
parenthesized-with
jakkdl Dec 30, 2024
6ab9ac9
add newsfragment
jakkdl Dec 30, 2024
f38d63b
print type(e).__name__ instead of repr on type fail. Don't print repr…
jakkdl Jan 2, 2025
b6ce586
don't print brief error if there's a possibility of misordering
jakkdl Jan 3, 2025
ebbf694
Merge remote-tracking branch 'origin/main' into raisesgroup_fail_reason
jakkdl Jan 8, 2025
9748cc8
change message when encountering group and expecting a bare exception…
jakkdl Jan 8, 2025
89bf77e
procrastinating on fixing expected-exception-matches-already-matched-…
jakkdl Jan 8, 2025
ba938bc
specify 'of [base]exceptiongroup when regex fails against the group; …
jakkdl Jan 8, 2025
9612d1e
fix sphinx
jakkdl Jan 8, 2025
580137d
overhaul saving of results. Print would-have-matched for expected wit…
jakkdl Jan 9, 2025
baa7a2f
Update src/trio/testing/_raises_group.py
jakkdl Jan 12, 2025
c6dffa8
t_final -> final, improve newsfragment, name the expected exception i…
jakkdl Jan 12, 2025
3360b30
remove redundant _REGEX_NO_FLAGS parameter
jakkdl Jan 12, 2025
6f7efe5
remove redundant __str__ implementation (thx to @a5rocks)
jakkdl Jan 12, 2025
d6a0145
add missing parens in message (thx @a5rocks)
jakkdl Jan 12, 2025
38d95c5
bad variable name, reqs->parameters (thx @a5rocks)
jakkdl Jan 12, 2025
8129c1d
get rid of _depth and using textwrap.indent instead, some minor stuff
jakkdl Jan 12, 2025
2a7c9ab
try running test_exports on RaisesGroup&Matcher in ci to verify they'…
jakkdl Jan 13, 2025
29ceb0d
add abstract base class, make most _check methods set self.fail_reason
jakkdl Jan 13, 2025
fc7a0ab
go back to ignoring RaisesGroup and Matcher in test_exports
jakkdl Jan 13, 2025
b606fb4
move more logic into the inheritance structure, make fail_reason work…
jakkdl Jan 13, 2025
1091b81
Merge remote-tracking branch 'origin/main' into raisesgroup_fail_reason
jakkdl Jan 13, 2025
0cc3968
fix tests
jakkdl Jan 13, 2025
561660b
add docstring to AbstractMatcher.matches to satisfy pyright --verifyt…
jakkdl Jan 13, 2025
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
1 change: 1 addition & 0 deletions newsfragments/3145.feature.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
`trio.testing.RaisesGroup` now raises an `AssertionError` with a helpful message if it fails to match the raised exception. Previously it would let the original exception fall through, but that is now instead the ``__context__``.
jakkdl marked this conversation as resolved.
Show resolved Hide resolved
12 changes: 5 additions & 7 deletions src/trio/_tests/test_exports.py
Original file line number Diff line number Diff line change
Expand Up @@ -318,8 +318,11 @@ def lookup_symbol(symbol: str) -> dict[str, str]:
if module_name == "trio.socket" and class_name in dir(stdlib_socket):
continue

# ignore class that does dirty tricks
if class_ is trio.testing.RaisesGroup:
# Ignore classes that don't use attrs, they only define their members once
# __init__ is called (and reason they don't use attrs is because they're going
jakkdl marked this conversation as resolved.
Show resolved Hide resolved
# to be reimplemented in pytest).
# I think that's why these are failing at least?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could try tossing attrs on them and seeing! But I think so too.

Maybe even just try putting __slots__ on them and using that to double check, then removing this (checked) comment.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ugh, they're passing locally (but a bunch of other classes aren't 🙃)
and this is running through a minimal tox with -r test-requirements.txt as the only dep so I have no clue what's going on. That's for another day

if class_ is trio.testing.RaisesGroup or class_ is trio.testing.Matcher:
continue

# dir() and inspect.getmembers doesn't display properties from the metaclass
Expand Down Expand Up @@ -460,11 +463,6 @@ def lookup_symbol(symbol: str) -> dict[str, str]:
"send_all_hook",
"wait_send_all_might_not_block_hook",
},
trio.testing.Matcher: {
"exception_type",
"match",
"check",
},
}
if tool == "mypy" and class_ in EXTRAS:
before = len(extra)
Expand Down
Loading
Loading