summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPierre Sassoulas <pierre.sassoulas@gmail.com>2023-02-12 17:38:05 +0100
committerGitHub <noreply@github.com>2023-02-12 17:38:05 +0100
commitccbdd3c128af9a6e8f9018fb8db5991a28c72db0 (patch)
treede910a4d8d10b476bca50f780e16b88398d616db /tests
parent56a65daf1ba391cc85d1a32a8802cfd0c7b7b2ab (diff)
downloadastroid-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')
-rw-r--r--tests/brain/test_builtin.py21
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]