65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
import sys
|
|
from importlib import reload
|
|
from pathlib import Path
|
|
from unittest.mock import patch
|
|
|
|
from lang_main import config
|
|
|
|
|
|
def test_p4c_dependency():
|
|
assert config._has_py4cyto
|
|
with patch.dict(sys.modules, {'py4cytoscape': None}):
|
|
reload(sys.modules['lang_main.config'])
|
|
assert not config._has_py4cyto
|
|
|
|
|
|
def test_load_config():
|
|
toml_path = config.PKG_DIR / 'lang_main_config.toml'
|
|
loaded_cfg = config.load_toml_config(toml_path)
|
|
assert loaded_cfg['info']['pkg'] == 'lang_main_internal'
|
|
|
|
|
|
def test_get_config_path():
|
|
pkg_dir = config.PKG_DIR
|
|
filename = config.CONFIG_FILENAME
|
|
cyto_stylesheet_name = config.CYTO_STYLESHEET_FILENAME
|
|
|
|
cfg_pth_internal = (pkg_dir / filename).resolve()
|
|
cyto_cfg_pth = (pkg_dir / cyto_stylesheet_name).resolve()
|
|
|
|
cfg_internal, cyto_internal = config.get_config_paths(
|
|
root_folder=pkg_dir,
|
|
cfg_name=filename,
|
|
cyto_stylesheet_name=cyto_stylesheet_name,
|
|
)
|
|
assert cfg_internal == cfg_pth_internal
|
|
assert cyto_internal == cyto_cfg_pth
|
|
|
|
|
|
def test_load_cfg(monkeypatch, tmp_path):
|
|
monkeypatch.setattr(Path, 'cwd', lambda: tmp_path)
|
|
pkg_dir = config.PKG_DIR
|
|
filename = config.CONFIG_FILENAME
|
|
stop_folder = config.STOP_FOLDER
|
|
|
|
cfg_pth_internal = (pkg_dir / filename).resolve()
|
|
ref_config = config.load_toml_config(cfg_pth_internal)
|
|
|
|
assert ref_config['info']['pkg'] == 'lang_main_internal'
|
|
loaded_cfg = config.load_cfg(
|
|
starting_path=pkg_dir,
|
|
glob_pattern=filename,
|
|
stop_folder_name=stop_folder,
|
|
cfg_path_internal=cfg_pth_internal,
|
|
prefer_internal_config=True,
|
|
)
|
|
assert loaded_cfg['info']['pkg'] == 'lang_main_internal'
|
|
loaded_cfg = config.load_cfg(
|
|
starting_path=pkg_dir,
|
|
glob_pattern=filename,
|
|
stop_folder_name=stop_folder,
|
|
cfg_path_internal=cfg_pth_internal,
|
|
prefer_internal_config=False,
|
|
)
|
|
assert loaded_cfg['info']['pkg'] == 'lang_main'
|