Files
codeql/python/ql/test/experimental/dataflow/coverage/validTest.py
Rasmus Wriedt Larsen 45ab723423 Python: Add dataflow test for a,b = b,a
Also enables a single test to output more than one OK
2020-08-28 11:12:25 +02:00

50 lines
1.3 KiB
Python

def check_output(outtext, f):
if all(s == "OK" for s in outtext.splitlines()):
pass
else:
raise RuntimeError("Function failed", outtext, f)
def check_test_function(f):
from io import StringIO
import sys
capturer = StringIO()
old_stdout = sys.stdout
sys.stdout = capturer
f()
sys.stdout = old_stdout
check_output(capturer.getvalue(), f)
def check_async_test_function(f):
from io import StringIO
import sys
import asyncio
capturer = StringIO()
old_stdout = sys.stdout
sys.stdout = capturer
asyncio.run(f())
sys.stdout = old_stdout
check_output(capturer.getvalue(), f)
def check_tests_valid(testFile):
import importlib
tests = importlib.import_module(testFile)
for i in dir(tests):
# print("Considering", i)
if i.startswith("test_"):
item = getattr(tests,i)
if callable(item):
print("Checking", testFile, item)
check_test_function(item)
elif i.startswith("atest_"):
item = getattr(tests,i)
if callable(item):
print("Checking", testFile, item)
check_async_test_function(item)
if __name__ == '__main__':
check_tests_valid("classes")
check_tests_valid("test")