@@ -200,179 +200,6 @@ def test_nomember_on_c_extension_info_msg(self) -> None:
200200 with self .assertAddsMessages (message ):
201201 self .checker .visit_attribute (node )
202202
203- @set_config (
204- contextmanager_decorators = (
205- "contextlib.contextmanager" ,
206- ".custom_contextmanager" ,
207- )
208- )
209- def test_custom_context_manager (self ):
210- """Test that @custom_contextmanager is recognized as configured."""
211- node = astroid .extract_node (
212- """
213- from contextlib import contextmanager
214- def custom_contextmanager(f):
215- return contextmanager(f)
216- @custom_contextmanager
217- def dec():
218- yield
219- with dec():
220- pass
221- """
222- )
223- with self .assertNoMessages ():
224- self .checker .visit_with (node )
225-
226- def test_invalid_metaclass (self ) -> None :
227- module = astroid .parse (
228- """
229- class InvalidAsMetaclass(object):
230- pass
231-
232- class FirstInvalid(object, metaclass=int):
233- pass
234-
235- class SecondInvalid(object, metaclass=InvalidAsMetaclass):
236- pass
237-
238- class ThirdInvalid(object, metaclass=2):
239- pass
240-
241- class FourthInvalid(object, metaclass=InvalidAsMetaclass()):
242- pass
243- """
244- )
245- for class_obj , metaclass_name in (
246- ("FourthInvalid" , "Instance of .InvalidAsMetaclass" ),
247- ("ThirdInvalid" , "2" ),
248- ("SecondInvalid" , "InvalidAsMetaclass" ),
249- ("FirstInvalid" , "int" ),
250- ):
251- classdef = module [class_obj ]
252- message = MessageTest (
253- "invalid-metaclass" , node = classdef , args = (metaclass_name ,)
254- )
255- with self .assertAddsMessages (message ):
256- self .checker .visit_classdef (classdef )
257-
258- def test_invalid_metaclass_function_metaclasses (self ) -> None :
259- module = astroid .parse (
260- """
261- def invalid_metaclass_1(name, bases, attrs):
262- return int
263- def invalid_metaclass_2(name, bases, attrs):
264- return 1
265- class Invalid(metaclass=invalid_metaclass_1):
266- pass
267- class InvalidSecond(metaclass=invalid_metaclass_2):
268- pass
269- """
270- )
271- for class_obj , metaclass_name in (("Invalid" , "int" ), ("InvalidSecond" , "1" )):
272- classdef = module [class_obj ]
273- message = MessageTest (
274- "invalid-metaclass" , node = classdef , args = (metaclass_name ,)
275- )
276- with self .assertAddsMessages (message ):
277- self .checker .visit_classdef (classdef )
278-
279- def test_typing_namedtuple_not_callable_issue1295 (self ) -> None :
280- module = astroid .parse (
281- """
282- import typing
283- Named = typing.NamedTuple('Named', [('foo', int), ('bar', int)])
284- named = Named(1, 2)
285- """
286- )
287- call = module .body [- 1 ].value
288- callables = call .func .inferred ()
289- assert len (callables ) == 1
290- assert callables [0 ].callable ()
291- with self .assertNoMessages ():
292- self .checker .visit_call (call )
293-
294- def test_typing_namedtuple_unsubscriptable_object_issue1295 (self ) -> None :
295- module = astroid .parse (
296- """
297- import typing
298- MyType = typing.Tuple[str, str]
299- """
300- )
301- subscript = module .body [- 1 ].value
302- with self .assertNoMessages ():
303- self .checker .visit_subscript (subscript )
304-
305- def test_staticmethod_multiprocessing_call (self ) -> None :
306- """Make sure not-callable isn't raised for descriptors
307-
308- astroid can't process descriptors correctly so
309- pylint needs to ignore not-callable for them
310- right now
311-
312- Test for https://github.com/PyCQA/pylint/issues/1699
313- """
314- call = astroid .extract_node (
315- """
316- import multiprocessing
317- multiprocessing.current_process() #@
318- """
319- )
320- with self .assertNoMessages ():
321- self .checker .visit_call (call )
322-
323- def test_not_callable_uninferable_property (self ) -> None :
324- """Make sure not-callable isn't raised for uninferable
325- properties
326- """
327- call = astroid .extract_node (
328- """
329- class A:
330- @property
331- def call(self):
332- return undefined
333-
334- a = A()
335- a.call() #@
336- """
337- )
338- with self .assertNoMessages ():
339- self .checker .visit_call (call )
340-
341- def test_descriptor_call (self ) -> None :
342- call = astroid .extract_node (
343- """
344- def func():
345- pass
346-
347- class ADescriptor:
348- def __get__(self, instance, owner):
349- return func
350-
351- class AggregateCls:
352- a = ADescriptor()
353-
354- AggregateCls().a() #@
355- """
356- )
357- with self .assertNoMessages ():
358- self .checker .visit_call (call )
359-
360- def test_unknown_parent (self ) -> None :
361- """Make sure the callable check does not crash when a node's parent
362- cannot be determined.
363- """
364- call = astroid .extract_node (
365- """
366- def get_num(n):
367- return 2 * n
368- get_num(10)()
369- """
370- )
371- with self .assertAddsMessages (
372- MessageTest ("not-callable" , node = call , args = "get_num(10)" )
373- ):
374- self .checker .visit_call (call )
375-
376203
377204class TestTypeCheckerOnDecorators (CheckerTestCase ):
378205 "Tests for pylint.checkers.typecheck on decorated functions."
0 commit comments