Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_check_call_args(self, checker: TypeChecker):
def foo(a: int):
pass
with checker, pytest.warns(TypeWarning) as record:
assert checker.active
foo(1)
foo('x')
assert not checker.active
foo('x')
assert len(record) == 1
warning = record[0].message
assert warning.error == 'type of argument "a" must be int; got str instead'
assert warning.func is foo
assert isinstance(warning.stack, list)
buffer = StringIO()
warning.print_stack(buffer)
assert len(buffer.getvalue()) > 100
def foo(a: int):
pass
def profiler(frame, event, arg):
nonlocal profiler_run_count
if event in ('call', 'return'):
profiler_run_count += 1
if old_profiler:
old_profiler(frame, event, arg)
profiler_run_count = 0
old_profiler = sys.getprofile()
sys.setprofile(profiler)
try:
with checker, pytest.warns(TypeWarning) as record:
foo(1)
foo('x')
assert sys.getprofile() is profiler
finally:
sys.setprofile(old_profiler)
assert profiler_run_count
assert len(record) == 1