mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-08-02 03:42:50 +08:00
test listing
Summary: Quick script to list tests to help completion of test command. Reviewed By: patricklabatut Differential Revision: D33279584 fbshipit-source-id: acb463106d311498449a14c1daf52434878722bf
This commit is contained in:
parent
6726500ad3
commit
9640560541
64
dev/test_list.py
Normal file
64
dev/test_list.py
Normal file
@ -0,0 +1,64 @@
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under the BSD-style license found in the
|
||||
# LICENSE file in the root directory of this source tree.
|
||||
|
||||
import ast
|
||||
from pathlib import Path
|
||||
from typing import List
|
||||
|
||||
|
||||
"""
|
||||
This module outputs a list of tests for completion.
|
||||
It has no dependencies.
|
||||
"""
|
||||
|
||||
|
||||
def get_test_files() -> List[Path]:
|
||||
root = Path(__file__).parent.parent
|
||||
return list((root / "tests").glob("**/test*.py"))
|
||||
|
||||
|
||||
def tests_from_file(path: Path, base: str) -> List[str]:
|
||||
"""
|
||||
Returns all the tests in the given file, in format
|
||||
expected as arguments when running the tests.
|
||||
e.g.
|
||||
file_stem
|
||||
file_stem.TestFunctionality
|
||||
file_stem.TestFunctionality.test_f
|
||||
file_stem.TestFunctionality.test_g
|
||||
"""
|
||||
with open(path) as f:
|
||||
node = ast.parse(f.read())
|
||||
out = [base]
|
||||
for cls in node.body:
|
||||
if not isinstance(cls, ast.ClassDef):
|
||||
continue
|
||||
if not cls.name.startswith("Test"):
|
||||
continue
|
||||
class_base = base + "." + cls.name
|
||||
out.append(class_base)
|
||||
for method in cls.body:
|
||||
if not isinstance(method, ast.FunctionDef):
|
||||
continue
|
||||
if not method.name.startswith("test"):
|
||||
continue
|
||||
out.append(class_base + "." + method.name)
|
||||
return out
|
||||
|
||||
|
||||
def main() -> None:
|
||||
files = get_test_files()
|
||||
test_root = Path(__file__).parent.parent / "tests"
|
||||
all_tests = []
|
||||
for f in files:
|
||||
file_base = str(f.relative_to(test_root))[:-3].replace("/", ".")
|
||||
all_tests.extend(tests_from_file(f, file_base))
|
||||
for test in sorted(all_tests):
|
||||
print(test)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
x
Reference in New Issue
Block a user