mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-07-31 10:52:50 +08:00
Summary: allow TESTIT to complete properly Reviewed By: kjchalup Differential Revision: D39280546 fbshipit-source-id: 38fe69988a736e32dbe78d1d05e6d8421353854a
66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
# 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
|
|
dirs = ["tests", "projects/implicitron_trainer"]
|
|
return [i for dir in dirs for i in (root / dir).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
|
|
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()
|