Tests: Ignore config in current test execution directory. Closes #342 (#345)

This commit is contained in:
Dominique Lasserre 2025-01-06 23:50:20 +01:00 committed by GitHub
parent 0ac31348f0
commit ef60f5b9f5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 36 additions and 1 deletions

View File

@ -74,6 +74,16 @@ def cfg_non_existent(request):
user_dir = user_config_dir(ConfigEOS.APP_NAME) user_dir = user_config_dir(ConfigEOS.APP_NAME)
assert not Path(user_dir).joinpath(ConfigEOS.CONFIG_FILE_NAME).exists() assert not Path(user_dir).joinpath(ConfigEOS.CONFIG_FILE_NAME).exists()
assert not Path.cwd().joinpath(ConfigEOS.CONFIG_FILE_NAME).exists()
@pytest.fixture(autouse=True)
def user_cwd(config_default_dirs):
with patch(
"pathlib.Path.cwd",
return_value=config_default_dirs[1],
) as user_cwd_patch:
yield user_cwd_patch
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
@ -99,6 +109,7 @@ def config_eos(
disable_debug_logging, disable_debug_logging,
user_config_dir, user_config_dir,
user_data_dir, user_data_dir,
user_cwd,
config_default_dirs, config_default_dirs,
monkeypatch, monkeypatch,
) -> ConfigEOS: ) -> ConfigEOS:
@ -106,11 +117,14 @@ def config_eos(
monkeypatch.setenv("data_cache_subpath", str(config_default_dirs[-1] / "data/cache")) monkeypatch.setenv("data_cache_subpath", str(config_default_dirs[-1] / "data/cache"))
monkeypatch.setenv("data_output_subpath", str(config_default_dirs[-1] / "data/output")) monkeypatch.setenv("data_output_subpath", str(config_default_dirs[-1] / "data/output"))
config_file = config_default_dirs[0] / ConfigEOS.CONFIG_FILE_NAME config_file = config_default_dirs[0] / ConfigEOS.CONFIG_FILE_NAME
config_file_cwd = config_default_dirs[1] / ConfigEOS.CONFIG_FILE_NAME
assert not config_file.exists() assert not config_file.exists()
assert not config_file_cwd.exists()
config_eos = get_config() config_eos = get_config()
config_eos.reset_settings() config_eos.reset_settings()
assert config_file == config_eos.config_file_path assert config_file == config_eos.config_file_path
assert config_file.exists() assert config_file.exists()
assert not config_file_cwd.exists()
assert config_default_dirs[-1] / "data" == config_eos.data_folder_path assert config_default_dirs[-1] / "data" == config_eos.data_folder_path
assert config_default_dirs[-1] / "data/cache" == config_eos.data_cache_path assert config_default_dirs[-1] / "data/cache" == config_eos.data_cache_path
assert config_default_dirs[-1] / "data/output" == config_eos.data_output_path assert config_default_dirs[-1] / "data/output" == config_eos.data_output_path
@ -123,8 +137,11 @@ def config_default_dirs():
with tempfile.TemporaryDirectory() as tmp_user_home_dir: with tempfile.TemporaryDirectory() as tmp_user_home_dir:
# Default config directory from platform user config directory # Default config directory from platform user config directory
config_default_dir_user = Path(tmp_user_home_dir) / "config" config_default_dir_user = Path(tmp_user_home_dir) / "config"
# Default config directory from current working directory # Default config directory from current working directory
config_default_dir_cwd = Path.cwd() config_default_dir_cwd = Path(tmp_user_home_dir) / "cwd"
config_default_dir_cwd.mkdir()
# Default config directory from default config file # Default config directory from default config file
config_default_dir_default = Path(__file__).parent.parent.joinpath("src/akkudoktoreos/data") config_default_dir_default = Path(__file__).parent.parent.joinpath("src/akkudoktoreos/data")

View File

@ -73,6 +73,24 @@ def test_default_config_path(config_eos, config_default_dirs):
assert config_eos.config_default_file_path.is_file() assert config_eos.config_default_file_path.is_file()
def test_config_file_priority(config_default_dirs):
"""Test config file priority."""
from akkudoktoreos.config.config import get_config
config_default_dir_user, config_default_dir_cwd, _, _ = config_default_dirs
config_file = Path(config_default_dir_cwd) / ConfigEOS.CONFIG_FILE_NAME
config_file.write_text("{}")
config_eos = get_config()
assert config_eos.config_file_path == config_file
config_file = Path(config_default_dir_user) / ConfigEOS.CONFIG_FILE_NAME
config_file.parent.mkdir()
config_file.write_text("{}")
config_eos = get_config()
assert config_eos.config_file_path == config_file
@patch("akkudoktoreos.config.config.user_config_dir") @patch("akkudoktoreos.config.config.user_config_dir")
def test_get_config_file_path(user_config_dir_patch, config_eos, config_default_dirs, monkeypatch): def test_get_config_file_path(user_config_dir_patch, config_eos, config_default_dirs, monkeypatch):
"""Test that _get_config_file_path identifies the correct config file.""" """Test that _get_config_file_path identifies the correct config file."""