import sys
import unittest


class TestSoftImports(unittest.TestCase):
    """Tests whether it's possible to use Ray Tune without soft dependencies"""

    def testSoftImports(self):
        import ray.tune.schedulers  # noqa: F401
        from ray.tune.search import SEARCH_ALG_IMPORT

        for name, import_func in SEARCH_ALG_IMPORT.items():
            print(f"testing searcher {name}")
            searcher = import_func()

            # ensure that the dependencies aren't actually installed
            if searcher and name not in ("variant_generator", "random"):
                with self.assertRaises((AssertionError, ImportError)):
                    searcher()


if __name__ == "__main__":
    import pytest

    sys.exit(pytest.main(["-v", __file__]))
