from os import environ from pathlib import Path from types import ModuleType import pytest from sanic.exceptions import LoadFileException from sanic.utils import load_module_from_file_location @pytest.mark.parametrize( "location", ( Path(__file__).parent / "static" / "app_test_config.py", str(Path(__file__).parent / "static" / "app_test_config.py"), str(Path(__file__).parent / "static" / "app_test_config.py").encode(), ), ) def test_load_module_from_file_location(location): module = load_module_from_file_location(location) assert isinstance(module, ModuleType) def test_loaded_module_from_file_location_name(): module = load_module_from_file_location( str(Path(__file__).parent / "static" / "app_test_config.py") ) name = module.__name__ if "C:\\" in name: name = name.split("\\")[-1] assert name == "app_test_config" def test_load_module_from_file_location_with_non_existing_env_variable(): with pytest.raises( LoadFileException, match="The following environment variables are not set: MuuMilk", ): load_module_from_file_location("${MuuMilk}") def test_load_module_from_file_location_using_env(): environ["APP_TEST_CONFIG"] = "static/app_test_config.py" location = str(Path(__file__).parent / "${APP_TEST_CONFIG}") module = load_module_from_file_location(location) assert isinstance(module, ModuleType)