@@ -1575,33 +1575,37 @@ class EvilZoneInfo(self.klass):
15751575class CZoneInfoCacheTest (ZoneInfoCacheTest ):
15761576 module = c_zoneinfo
15771577
1578- def test_weak_cache_get_type_confusion (self ):
1579- class EvilCache :
1578+ def test_inconsistent_weak_cache_get (self ):
1579+ class Cache :
15801580 def get (self , key , default = None ):
15811581 return 1337
15821582
1583- class EvilZoneInfo (self .klass ):
1583+ class ZI (self .klass ):
15841584 pass
1585+ # Must set AFTER class creation to override __init_subclass__
1586+ ZI ._weak_cache = Cache ()
15851587
1586- EvilZoneInfo . _weak_cache = EvilCache ()
1587-
1588- with self . assertRaises ( TypeError ):
1589- EvilZoneInfo ( "America/Los_Angeles " )
1588+ with self . assertRaises ( TypeError ) as te :
1589+ ZI ( "America/Los_Angeles" )
1590+ # Heap type objects' tp_name should just be the type name, i.e. ZI
1591+ self . assertEqual ( str ( te . exception ), "expected ZI, got int " )
15901592
1591- def test_weak_cache_setdefault_type_confusion (self ):
1592- class EvilCache :
1593+ def test_inconsistent_weak_cache_setdefault (self ):
1594+ class Cache :
15931595 def get (self , key , default = None ):
15941596 return default
15951597 def setdefault (self , key , value ):
15961598 return 1337
15971599
1598- class EvilZoneInfo (self .klass ):
1600+ class ZI (self .klass ):
15991601 pass
1602+ # Must set AFTER class creation to override __init_subclass__
1603+ ZI ._weak_cache = Cache ()
16001604
1601- EvilZoneInfo . _weak_cache = EvilCache ()
1602-
1603- with self . assertRaises ( TypeError ):
1604- EvilZoneInfo ( "America/Los_Angeles " )
1605+ with self . assertRaises ( TypeError ) as te :
1606+ ZI ( "America/Los_Angeles" )
1607+ # Heap type objects' tp_name should just be the type name, i.e. ZI
1608+ self . assertEqual ( str ( te . exception ), "expected ZI, got int " )
16051609
16061610class ZoneInfoPickleTest (TzPathUserMixin , ZoneInfoTestBase ):
16071611 module = py_zoneinfo
0 commit comments