Source code for testsuite.databases.rabbitmq.pytest_plugin

import pytest

from . import classes
from . import service


def pytest_addoption(parser):
    group = parser.getgroup('rabbitmq')
    group.addoption('--rabbitmq')
    group.addoption(
        '--no-rabbitmq',
        help='Disable use of RabbitMQ',
        action='store_true',
    )


def pytest_configure(config):
    config.addinivalue_line(
        'markers',
        'rabbitmq: per-test RabbitMQ initialization',
    )


def pytest_service_register(register_service):
    register_service('rabbitmq', service.create_rabbitmq_service)


[docs]@pytest.fixture def rabbitmq(_rabbitmq_connection) -> classes.Control: return _rabbitmq_connection
@pytest.fixture(scope='session') def _rabbitmq_connection( _rabbitmq_service, _rabbitmq_service_settings, event_loop, ) -> classes.Control: control = classes.Control( enabled=_rabbitmq_service, conn_info=_rabbitmq_service_settings.get_connection_info(), ) yield control event_loop.run_until_complete(control.teardown()) @pytest.fixture(scope='session') def rabbitmq_disabled(pytestconfig) -> bool: return pytestconfig.option.no_rabbitmq @pytest.fixture(scope='session') def _rabbitmq_service_settings() -> service.ServiceSettings: return service.get_service_settings() @pytest.fixture(scope='session') def _rabbitmq_service( ensure_service_started, rabbitmq_disabled, pytestconfig, _rabbitmq_service_settings, ): if rabbitmq_disabled: return False if not pytestconfig.option.rabbitmq: ensure_service_started('rabbitmq', settings=_rabbitmq_service_settings) return True