FunASR/tests/run_test.py

52 lines
1.6 KiB
Python
Raw Normal View History

2024-05-18 15:50:56 +08:00
#!/usr/bin/env python
import argparse
import os
import sys
import unittest
from fnmatch import fnmatch
def gather_test_cases(test_dir, pattern, list_tests):
case_list = []
for dirpath, dirnames, filenames in os.walk(test_dir):
for file in filenames:
if fnmatch(file, pattern):
case_list.append(file)
test_suite = unittest.TestSuite()
for case in case_list:
test_case = unittest.defaultTestLoader.discover(start_dir=test_dir, pattern=case)
test_suite.addTest(test_case)
if hasattr(test_case, "__iter__"):
for subcase in test_case:
if list_tests:
print(subcase)
else:
if list_tests:
print(test_case)
return test_suite
def main(args):
runner = unittest.TextTestRunner()
test_suite = gather_test_cases(os.path.abspath(args.test_dir), args.pattern, args.list_tests)
if not args.list_tests:
result = runner.run(test_suite)
if len(result.failures) > 0:
sys.exit(len(result.failures))
if len(result.errors) > 0:
sys.exit(len(result.errors))
if __name__ == "__main__":
parser = argparse.ArgumentParser("test runner")
parser.add_argument("--list_tests", action="store_true", help="list all tests")
parser.add_argument("--pattern", default="test_*.py", help="test file pattern")
parser.add_argument("--test_dir", default="tests", help="directory to be tested")
parser.add_argument("--disable_profile", action="store_true", help="disable profiling")
args = parser.parse_args()
print(f"working dir: {os.getcwd()}")
main(args)