lightning/tests/tests_app/utilities/test_imports.py

50 lines
1.2 KiB
Python

import os
from unittest import mock
import pytest
from lightning.app import __package_name__
from lightning.app.utilities.imports import _get_extras, requires
def test_get_extras():
extras = "app-cloud" if __package_name__ == "lightning" else "cloud"
extras = _get_extras(extras)
assert "docker" in extras
assert "redis" in extras
assert _get_extras("fake-extras") == ""
@mock.patch.dict(os.environ, {"LIGHTING_TESTING": "0"})
def test_requires():
@requires("lightning.app")
def fn():
pass
fn()
@requires("shouldnotexist")
def fn_raise():
pass
with pytest.raises(ModuleNotFoundError, match="Please run: pip install 'shouldnotexist'"):
fn_raise()
class ClassRaise:
@requires("shouldnotexist")
def __init__(self):
pass
with pytest.raises(ModuleNotFoundError, match="Please run: pip install 'shouldnotexist'"):
ClassRaise()
@mock.patch.dict(os.environ, {"LIGHTING_TESTING": "0"})
def test_requires_multiple():
@requires(["shouldnotexist1", "shouldnotexist2"])
def fn_raise():
pass
with pytest.raises(ModuleNotFoundError, match="Please run: pip install 'shouldnotexist1' 'shouldnotexist2'"):
fn_raise()