mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 11:41:49 +02:00
36 lines
1.0 KiB
Python
36 lines
1.0 KiB
Python
import pytest
|
|
import threading
|
|
|
|
from bec_lib.bec_service import BECService
|
|
from bec_widgets.utils import bec_dispatcher as bec_dispatcher_module
|
|
|
|
|
|
@pytest.fixture()
|
|
def threads_check():
|
|
current_threads = set(
|
|
th
|
|
for th in threading.enumerate()
|
|
if "loguru" not in th.name and th is not threading.main_thread()
|
|
)
|
|
yield
|
|
threads_after = set(
|
|
th
|
|
for th in threading.enumerate()
|
|
if "loguru" not in th.name and th is not threading.main_thread()
|
|
)
|
|
additional_threads = threads_after - current_threads
|
|
assert (
|
|
len(additional_threads) == 0
|
|
), f"Test creates {len(additional_threads)} threads that are not cleaned: {additional_threads}"
|
|
|
|
|
|
@pytest.fixture(autouse=True)
|
|
def bec_dispatcher(threads_check):
|
|
bec_dispatcher = bec_dispatcher_module.BECDispatcher()
|
|
yield bec_dispatcher
|
|
bec_dispatcher.disconnect_all()
|
|
# clean BEC client
|
|
BECService.shutdown(bec_dispatcher.client)
|
|
# reinitialize singleton for next test
|
|
bec_dispatcher_module._bec_dispatcher = None
|