mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-08-02 03:42:50 +08:00
check for cyclic deps
Summary: New test that each subpackage of pytorch3d imports cleanly. Reviewed By: patricklabatut Differential Revision: D30001632 fbshipit-source-id: ca8dcac94491fc22f33602b3bbef481cba927094
This commit is contained in:
parent
fadec970c9
commit
77fa5987b8
@ -35,4 +35,5 @@ from .utils import (
|
||||
)
|
||||
from .vert_align import vert_align
|
||||
|
||||
|
||||
__all__ = [k for k in globals().keys() if not k.startswith("_")]
|
||||
|
@ -4,9 +4,12 @@
|
||||
# This source code is licensed under the BSD-style license found in the
|
||||
# LICENSE file in the root directory of this source tree.
|
||||
|
||||
import importlib
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
import unittest.mock
|
||||
from collections import Counter
|
||||
|
||||
from common_testing import get_pytorch3d_dir
|
||||
@ -18,7 +21,6 @@ in_re_worker = os.environ.get("INSIDE_RE_WORKER") is not None
|
||||
|
||||
|
||||
class TestBuild(unittest.TestCase):
|
||||
@unittest.skipIf(in_re_worker, "In RE worker")
|
||||
def test_name_clash(self):
|
||||
# For setup.py, all translation units need distinct names, so we
|
||||
# cannot have foo.cu and foo.cpp, even in different directories.
|
||||
@ -111,3 +113,22 @@ class TestBuild(unittest.TestCase):
|
||||
listed_in_json.extend(section)
|
||||
|
||||
self.assertListEqual(sorted(listed_in_json), notes_on_disk)
|
||||
|
||||
def test_no_import_cycles(self):
|
||||
# Check each module of pytorch3d imports cleanly,
|
||||
# which may fail if there are import cycles.
|
||||
|
||||
# First check the setup of the test. If any of pytorch3d
|
||||
# was already imported the test would be pointless.
|
||||
for module in sys.modules:
|
||||
self.assertFalse(module.startswith("pytorch3d"), module)
|
||||
|
||||
root_dir = get_pytorch3d_dir() / "pytorch3d"
|
||||
for module_file in root_dir.glob("**/*.py"):
|
||||
if module_file.stem == "__init__":
|
||||
continue
|
||||
relative_module = str(module_file.relative_to(root_dir))[:-3]
|
||||
module = "pytorch3d." + relative_module.replace("/", ".")
|
||||
with self.subTest(name=module):
|
||||
with unittest.mock.patch.dict(sys.modules):
|
||||
importlib.import_module(module)
|
||||
|
Loading…
x
Reference in New Issue
Block a user