Files
pipecat/tests/test_bus_network.py
Aleix Conchillo Flaqué 9ecb00d097 Skip pgmq/redis lazy-import tests when their extras are not installed
``test_pgmq_bus_lazy_import`` and ``test_redis_bus_lazy_import``
import ``pipecat.bus.network.pgmq`` / ``redis`` directly, which raises
when the optional ``pgmq`` / ``redis`` packages are missing. Gate each
test with ``@unittest.skipUnless`` on a top-level probe of the
underlying package so they're skipped (not errored) in environments
without the extras. ``test_unknown_attribute_raises`` is unaffected.
2026-05-21 10:13:21 -07:00

52 lines
1.3 KiB
Python

#
# Copyright (c) 2026, Daily
#
# SPDX-License-Identifier: BSD 2-Clause License
#
"""Tests for ``pipecat.bus.network`` lazy imports."""
import unittest
import pipecat.bus.network as network
try:
import pgmq # noqa: F401
PGMQ_AVAILABLE = True
except ImportError:
PGMQ_AVAILABLE = False
try:
import redis # noqa: F401
REDIS_AVAILABLE = True
except ImportError:
REDIS_AVAILABLE = False
class TestNetworkPackageLazyImports(unittest.TestCase):
@unittest.skipUnless(PGMQ_AVAILABLE, "pgmq extra not installed")
def test_pgmq_bus_lazy_import(self):
"""``PgmqBus`` is resolved on first attribute access."""
from pipecat.bus.network.pgmq import PgmqBus as Direct
self.assertIs(network.PgmqBus, Direct)
@unittest.skipUnless(REDIS_AVAILABLE, "redis extra not installed")
def test_redis_bus_lazy_import(self):
"""``RedisBus`` is resolved on first attribute access."""
from pipecat.bus.network.redis import RedisBus as Direct
self.assertIs(network.RedisBus, Direct)
def test_unknown_attribute_raises(self):
"""Unknown attributes raise a clear ``AttributeError``."""
with self.assertRaises(AttributeError) as ctx:
network.NotARealBus # noqa: B018
self.assertIn("NotARealBus", str(ctx.exception))
if __name__ == "__main__":
unittest.main()