import unittest import types from test.support import import_helper _testinternalcapi = import_helper.import_module("_testinternalcapi") class TestRareEventCounters(unittest.TestCase): def setUp(self): _testinternalcapi.reset_rare_event_counters() 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"] ) class TestOptimizerSymbols(unittest.TestCase): @unittest.skipUnless(hasattr(_testinternalcapi, "uop_symbols_test"), "requires _testinternalcapi.uop_symbols_test") def test_optimizer_symbols(self): _testinternalcapi.uop_symbols_test() if __name__ == "__main__": unittest.main()