rainbowadn/main.py

37 lines
790 B
Python

from rainbowadn.testing.instrument import *
class Print(Instrumentation):
def __init__(self, target, methodname: str, msg: str):
super().__init__(target, methodname)
self.msg = msg
def instrument(self, method, *args, **kwargs):
print(self.msg, end=' ')
return method(*args, **kwargs)
class C:
@classmethod
def m(cls):
print('m')
with Print(Instrumentation, '__exit__', 'exit'):
print1 = Print(C, 'm', '1')
print2 = Print(C, 'm', '2')
print3 = Print(C, 'm', '3')
C.m()
print1.__enter__()
C.m()
print2.__enter__()
C.m()
print3.__enter__()
C.m()
print1.__exit__(None, None, None)
C.m()
print2.__exit__(None, None, None)
C.m()
print3.__exit__(None, None, None)
C.m()