blob: ff771c30777fcdb2581f77039a4f15eafd3b9ac8 [file] [log] [blame]
#! /usr/bin/env python3
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# Copyright 2020 Canonical Ltd
#
# Authors:
# Marco Trevisan <marco.trevisan@canonical.com>
import argparse
import importlib.util
import inspect
import os
import unittest
def list_tests(module):
tests = []
for name, obj in inspect.getmembers(module):
if inspect.isclass(obj) and issubclass(obj, unittest.TestCase):
cases = unittest.defaultTestLoader.getTestCaseNames(obj)
tests += [(obj, f"{name}.{t}") for t in cases]
return tests
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("unittest_source", type=argparse.FileType("r"))
args = parser.parse_args()
source_path = args.unittest_source.name
spec = importlib.util.spec_from_file_location(
os.path.basename(source_path), source_path
)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
for machine, human in list_tests(module):
print(human)