from collections.abc import Iterator from typing import ( Optional, ) from unittest import SkipTest import pytest from galaxy_test.base.api import ( UsesApiTestCaseMixin, UsesCeleryTasks, ) from galaxy_test.base.testcase import FunctionalTestCase try: from galaxy_test.driver.driver_util import GalaxyTestDriver except ImportError: # Galaxy libraries and galaxy test driver not available, just assume we're # targetting a remote Galaxy. GalaxyTestDriver = None # type: ignore[assignment, misc, unused-ignore] class ApiTestCase(FunctionalTestCase, UsesApiTestCaseMixin, UsesCeleryTasks): galaxy_driver_class = GalaxyTestDriver _test_driver: Optional[GalaxyTestDriver] def setUp(self): super().setUp() self._setup_interactor() def driver_or_skip_test_if_remote(self) -> GalaxyTestDriver: if self._test_driver is None: raise SkipTest("This test does not work with remote Galaxy instances.") return self._test_driver @pytest.fixture def history_id(self) -> Iterator[str]: with self.galaxy_interactor.test_history() as history_id: yield history_id __all__ = ("ApiTestCase",)