diff options
author | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2023-02-12 17:38:05 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-12 17:38:05 +0100 |
commit | ccbdd3c128af9a6e8f9018fb8db5991a28c72db0 (patch) | |
tree | de910a4d8d10b476bca50f780e16b88398d616db /tests/brain | |
parent | 56a65daf1ba391cc85d1a32a8802cfd0c7b7b2ab (diff) | |
download | astroid-git-ccbdd3c128af9a6e8f9018fb8db5991a28c72db0.tar.gz |
Fix '_infer_str_format_call' crash when the string it analyses are uninferable (#2024)
Closes PyCQA/pylint#8109
Diffstat (limited to 'tests/brain')
-rw-r--r-- | tests/brain/test_builtin.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tests/brain/test_builtin.py b/tests/brain/test_builtin.py index d14c72f8..a1439b06 100644 --- a/tests/brain/test_builtin.py +++ b/tests/brain/test_builtin.py @@ -9,7 +9,7 @@ import unittest import pytest from astroid import nodes, objects, util -from astroid.builder import _extract_single_node +from astroid.builder import _extract_single_node, extract_node class BuiltinsTest(unittest.TestCase): @@ -127,3 +127,22 @@ class TestStringNodes: inferred = next(node.infer()) assert isinstance(inferred, nodes.Const) assert inferred.value == "My name is Daniel, I'm 12.00" + + def test_string_format_in_dataclass_pylint8109(self) -> None: + """https://github.com/PyCQA/pylint/issues/8109""" + function_def = extract_node( + """ +from dataclasses import dataclass + +@dataclass +class Number: + amount: int | float + round: int = 2 + + def __str__(self): #@ + number_format = "{:,.%sf}" % self.round + return number_format.format(self.amount).rstrip("0").rstrip(".") +""" + ) + inferit = function_def.infer_call_result(function_def, context=None) + assert [a.name for a in inferit] == [util.Uninferable] |