MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_issubclass_bad_arguments

Method test_issubclass_bad_arguments

Lib/test/test_abc.py:415–462  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

413 self.assertIsInstance(42, (A,))
414
415 def test_issubclass_bad_arguments(self):
416 class A(metaclass=abc_ABCMeta):
417 pass
418
419 with self.assertRaises(TypeError):
420 issubclass({}, A) # unhashable
421
422 with self.assertRaises(TypeError):
423 issubclass(42, A) # No __mro__
424
425 # Python version supports any iterable as __mro__.
426 # But it's implementation detail and don't emulate it in C version.
427 class C:
428 __mro__ = 42 # __mro__ is not tuple
429
430 with self.assertRaises(TypeError):
431 issubclass(C(), A)
432
433 # bpo-34441: Check that issubclass() doesn't crash on bogus
434 # classes.
435 bogus_subclasses = [
436 None,
437 lambda x: [],
438 lambda: 42,
439 lambda: [42],
440 ]
441
442 for i, func in enumerate(bogus_subclasses):
443 class S(metaclass=abc_ABCMeta):
444 __subclasses__ = func
445
446 with self.subTest(i=i):
447 with self.assertRaises(TypeError):
448 issubclass(int, S)
449
450 # Also check that issubclass() propagates exceptions raised by
451 # __subclasses__.
452 class CustomError(Exception): ...
453 exc_msg = "exception from __subclasses__"
454
455 def raise_exc():
456 raise CustomError(exc_msg)
457
458 class S(metaclass=abc_ABCMeta):
459 __subclasses__ = raise_exc
460
461 with self.assertRaisesRegex(CustomError, exc_msg):
462 issubclass(int, S)
463
464 def test_subclasshook(self):
465 class A(metaclass=abc.ABCMeta):

Callers

nothing calls this directly

Calls 6

issubclassFunction · 0.85
enumerateFunction · 0.85
subTestMethod · 0.80
assertRaisesRegexMethod · 0.80
CClass · 0.70
assertRaisesMethod · 0.45

Tested by

no test coverage detected