fix: make pytest collection coexist with ComfyUI root __init__

pytest collects the repo root as a Package and imports its __init__.py
during test setup; guard the ComfyUI-only relative imports behind
__package__ so the suite can import gates.* standalone. Drop the
tests/ package marker and pin pythonpath/testpaths.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 12:56:32 +02:00
parent d75f73af2d
commit af3e78b29d
3 changed files with 21 additions and 2 deletions
+12 -2
View File
@@ -1,7 +1,17 @@
"""ComfyUI-Datasete-Gates — custom nodes.""" """ComfyUI-Datasete-Gates — custom nodes."""
from .gates.node import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
from .gates import routes # noqa: F401 (registers aiohttp routes on import)
WEB_DIRECTORY = "./web" WEB_DIRECTORY = "./web"
# ComfyUI loads this directory as a package, so __package__ is set and the
# relative imports below resolve. pytest, however, collects the repo root as a
# Package and imports this file standalone (no parent package) during test
# setup — in that case the relative imports would raise. Guard on __package__
# so the test suite can import `gates.*` without dragging in aiohttp/comfy.
if __package__:
from .gates.node import NODE_CLASS_MAPPINGS, NODE_DISPLAY_NAME_MAPPINGS
from .gates import routes # noqa: F401 (registers aiohttp routes on import)
else: # pragma: no cover - exercised only under pytest collection
NODE_CLASS_MAPPINGS = {}
NODE_DISPLAY_NAME_MAPPINGS = {}
__all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"] __all__ = ["NODE_CLASS_MAPPINGS", "NODE_DISPLAY_NAME_MAPPINGS", "WEB_DIRECTORY"]
+9
View File
@@ -7,3 +7,12 @@ requires-python = ">=3.10"
[tool.comfy] [tool.comfy]
PublisherId = "ethanfel" PublisherId = "ethanfel"
DisplayName = "ComfyUI Datasete Gates" DisplayName = "ComfyUI Datasete Gates"
[tool.pytest.ini_options]
# The repo-root __init__.py is required by ComfyUI but breaks pytest's default
# "prepend" collection if tests/ is a package (pytest walks up the __init__.py
# chain and tries to import the root package, whose relative imports fail
# outside ComfyUI). Keeping tests/ a non-package dir avoids that; pythonpath
# makes `gates` importable from the repo root.
pythonpath = ["."]
testpaths = ["tests"]
View File