From b51b29bc139876a5d55746efe850b3ba1aeb4cdb Mon Sep 17 00:00:00 2001 From: Pierre Sassoulas Date: Sat, 4 Mar 2023 11:58:10 +0100 Subject: [PATCH] Test children --- tests/test_group_exceptions.py | 48 ++++++++++++++++++++-------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/tests/test_group_exceptions.py b/tests/test_group_exceptions.py index 994658f5a6..a0db469337 100644 --- a/tests/test_group_exceptions.py +++ b/tests/test_group_exceptions.py @@ -1,9 +1,11 @@ # Licensed under the LGPL: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html # For details: https://github.com/PyCQA/astroid/blob/main/LICENSE # Copyright (c) https://github.com/PyCQA/astroid/blob/main/CONTRIBUTORS.txt +import textwrap + import pytest -from astroid import ExceptHandler, TryExcept, extract_node +from astroid import AssignName, ExceptHandler, For, Name, TryExcept, extract_node from astroid.const import PY311_PLUS from astroid.nodes import TryStar @@ -11,34 +13,42 @@ @pytest.mark.skipif(not PY311_PLUS, reason="Requires Python 3.11 or higher") def test_group_exceptions() -> None: node = extract_node( - """ -try: - raise ExceptionGroup("group", [ValueError(654)]) -except ExceptionGroup as eg: - for err in eg.exceptions: - if isinstance(err, ValueError): - print("Handling ValueError") - elif isinstance(err, TypeError): - print("Handling TypeError") -""" + textwrap.dedent( + """ + try: + raise ExceptionGroup("group", [ValueError(654)]) + except ExceptionGroup as eg: + for err in eg.exceptions: + if isinstance(err, ValueError): + print("Handling ValueError") + elif isinstance(err, TypeError): + print("Handling TypeError")""" + ) ) assert isinstance(node, TryExcept) handler = node.handlers[0] assert isinstance(handler, ExceptHandler) assert handler.type.name == "ExceptionGroup" + children = list(handler.get_children()) + assert len(children) == 3 + exception_group, short_name, for_loop = children + assert isinstance(exception_group, Name) + assert isinstance(short_name, AssignName) + assert isinstance(for_loop, For) @pytest.mark.skipif(not PY311_PLUS, reason="Requires Python 3.11 or higher") def test_star_exceptions() -> None: node = extract_node( - """ -try: - raise ExceptionGroup("group", [ValueError(654)]) -except* ValueError: - print("Handling ValueError") -except* TypeError: - print("Handling TypeError") -""" + textwrap.dedent( + """ + try: + raise ExceptionGroup("group", [ValueError(654)]) + except* ValueError: + print("Handling ValueError") + except* TypeError: + print("Handling TypeError")""" + ) ) assert isinstance(node, TryStar) assert node.handlers