76 lines
2.2 KiB
Python
76 lines
2.2 KiB
Python
|
import _testinternalcapi
|
||
|
import unittest
|
||
|
import types
|
||
|
|
||
|
|
||
|
class TestRareEventCounters(unittest.TestCase):
|
||
|
def test_set_class(self):
|
||
|
class A:
|
||
|
pass
|
||
|
class B:
|
||
|
pass
|
||
|
a = A()
|
||
|
|
||
|
orig_counter = _testinternalcapi.get_rare_event_counters()["set_class"]
|
||
|
a.__class__ = B
|
||
|
self.assertEqual(
|
||
|
orig_counter + 1,
|
||
|
_testinternalcapi.get_rare_event_counters()["set_class"]
|
||
|
)
|
||
|
|
||
|
def test_set_bases(self):
|
||
|
class A:
|
||
|
pass
|
||
|
class B:
|
||
|
pass
|
||
|
class C(B):
|
||
|
pass
|
||
|
|
||
|
orig_counter = _testinternalcapi.get_rare_event_counters()["set_bases"]
|
||
|
C.__bases__ = (A,)
|
||
|
self.assertEqual(
|
||
|
orig_counter + 1,
|
||
|
_testinternalcapi.get_rare_event_counters()["set_bases"]
|
||
|
)
|
||
|
|
||
|
def test_set_eval_frame_func(self):
|
||
|
orig_counter = _testinternalcapi.get_rare_event_counters()["set_eval_frame_func"]
|
||
|
_testinternalcapi.set_eval_frame_record([])
|
||
|
self.assertEqual(
|
||
|
orig_counter + 1,
|
||
|
_testinternalcapi.get_rare_event_counters()["set_eval_frame_func"]
|
||
|
)
|
||
|
_testinternalcapi.set_eval_frame_default()
|
||
|
|
||
|
def test_builtin_dict(self):
|
||
|
orig_counter = _testinternalcapi.get_rare_event_counters()["builtin_dict"]
|
||
|
if isinstance(__builtins__, types.ModuleType):
|
||
|
builtins = __builtins__.__dict__
|
||
|
else:
|
||
|
builtins = __builtins__
|
||
|
builtins["FOO"] = 42
|
||
|
self.assertEqual(
|
||
|
orig_counter + 1,
|
||
|
_testinternalcapi.get_rare_event_counters()["builtin_dict"]
|
||
|
)
|
||
|
del builtins["FOO"]
|
||
|
|
||
|
def test_func_modification(self):
|
||
|
def func(x=0):
|
||
|
pass
|
||
|
|
||
|
for attribute in (
|
||
|
"__code__",
|
||
|
"__defaults__",
|
||
|
"__kwdefaults__"
|
||
|
):
|
||
|
orig_counter = _testinternalcapi.get_rare_event_counters()["func_modification"]
|
||
|
setattr(func, attribute, getattr(func, attribute))
|
||
|
self.assertEqual(
|
||
|
orig_counter + 1,
|
||
|
_testinternalcapi.get_rare_event_counters()["func_modification"]
|
||
|
)
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
unittest.main()
|