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