31 lines
923 B
Python
31 lines
923 B
Python
from geopandas._compat import import_optional_dependency
|
|
|
|
import pytest
|
|
|
|
|
|
def test_import_optional_dependency_present():
|
|
# pandas is not optional, but we know it is present
|
|
pandas = import_optional_dependency("pandas")
|
|
assert pandas is not None
|
|
|
|
# module imported normally must be same
|
|
import pandas as pd
|
|
|
|
assert pandas == pd
|
|
|
|
|
|
def test_import_optional_dependency_absent():
|
|
with pytest.raises(ImportError, match="Missing optional dependency 'foo'"):
|
|
import_optional_dependency("foo")
|
|
|
|
with pytest.raises(ImportError, match="foo is required"):
|
|
import_optional_dependency("foo", extra="foo is required")
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"bad_import", [["foo"], 0, False, True, {}, {"foo"}, {"foo": "bar"}]
|
|
)
|
|
def test_import_optional_dependency_invalid(bad_import):
|
|
with pytest.raises(ValueError, match="Invalid module name"):
|
|
import_optional_dependency(bad_import)
|