From dfef2b909290466dceefe03f7c660aae33f8f7e2 Mon Sep 17 00:00:00 2001 From: nain-F49FF806 <126972030+nain-F49FF806@users.noreply.github.com> Date: Wed, 29 Mar 2023 18:24:42 -0400 Subject: [PATCH] fix config/cache dir compatibility issues, fixes #7445 (#7448) fix config dir compatibility issue, fixes #7445 - add tests - make sure the result of get_cache_dir matches pre and post #7300 where desired - harmonize implementation of config_dir_compat and cache_dir_compat tests Co-authored-by: nain <126972030+F49FF806@users.noreply.github.com> --- src/borg/helpers/fs.py | 4 ++-- src/borg/testsuite/helpers.py | 32 ++++++++++++++++++++++++++------ 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/borg/helpers/fs.py b/src/borg/helpers/fs.py index 805746557..af7297095 100644 --- a/src/borg/helpers/fs.py +++ b/src/borg/helpers/fs.py @@ -106,7 +106,7 @@ def get_cache_dir(*, legacy=False): cache_dir = os.environ.get("BORG_CACHE_DIR", os.path.join(cache_home, "borg")) else: cache_dir = os.environ.get( - "BORG_CACHE_DIR", join_base_dir(".cache", legacy=legacy) or platformdirs.user_cache_dir("borg") + "BORG_CACHE_DIR", join_base_dir(".cache", "borg", legacy=legacy) or platformdirs.user_cache_dir("borg") ) # Create path if it doesn't exist yet @@ -143,7 +143,7 @@ def get_config_dir(*, legacy=False): config_dir = os.environ.get("BORG_CONFIG_DIR", os.path.join(config_home, "borg")) else: config_dir = os.environ.get( - "BORG_CONFIG_DIR", join_base_dir(".config", legacy=legacy) or platformdirs.user_config_dir("borg") + "BORG_CONFIG_DIR", join_base_dir(".config", "borg", legacy=legacy) or platformdirs.user_config_dir("borg") ) # Create path if it doesn't exist yet diff --git a/src/borg/testsuite/helpers.py b/src/borg/testsuite/helpers.py index 70cc6139e..179e778b4 100644 --- a/src/borg/testsuite/helpers.py +++ b/src/borg/testsuite/helpers.py @@ -635,19 +635,20 @@ def test_get_config_dir(monkeypatch): def test_get_config_dir_compat(monkeypatch): """test that it works the same for legacy and for non-legacy implementation""" + monkeypatch.delenv("BORG_CONFIG_DIR", raising=False) monkeypatch.delenv("BORG_BASE_DIR", raising=False) + monkeypatch.delenv("XDG_CONFIG_HOME", raising=False) if not is_darwin and not is_win32: - monkeypatch.delenv("BORG_CONFIG_DIR", raising=False) - monkeypatch.delenv("XDG_CONFIG_HOME", raising=False) # fails on macOS: assert '/Users/tw/Library/Application Support/borg' == '/Users/tw/.config/borg' # fails on win32 MSYS2 (but we do not need legacy compat there). assert get_config_dir(legacy=False) == get_config_dir(legacy=True) - if not is_darwin and not is_win32: - monkeypatch.setenv("XDG_CONFIG_HOME", "/var/tmp/.config1") - # fails on macOS: assert '/Users/tw/Library/Application Support/borg' == '/var/tmp/.config1/borg' + monkeypatch.setenv("XDG_CONFIG_HOME", "/var/tmp/xdg.config.d") + # fails on macOS: assert '/Users/tw/Library/Application Support/borg' == '/var/tmp/xdg.config.d' # fails on win32 MSYS2 (but we do not need legacy compat there). assert get_config_dir(legacy=False) == get_config_dir(legacy=True) - monkeypatch.setenv("BORG_CONFIG_DIR", "/var/tmp/.config2") + monkeypatch.setenv("BORG_BASE_DIR", "/var/tmp/base") + assert get_config_dir(legacy=False) == get_config_dir(legacy=True) + monkeypatch.setenv("BORG_CONFIG_DIR", "/var/tmp/borg.config.d") assert get_config_dir(legacy=False) == get_config_dir(legacy=True) @@ -675,6 +676,25 @@ def test_get_cache_dir(monkeypatch): assert get_cache_dir() == "/var/tmp" +def test_get_cache_dir_compat(monkeypatch): + """test that it works the same for legacy and for non-legacy implementation""" + monkeypatch.delenv("BORG_CACHE_DIR", raising=False) + monkeypatch.delenv("BORG_BASE_DIR", raising=False) + monkeypatch.delenv("XDG_CACHE_HOME", raising=False) + if not is_darwin and not is_win32: + # fails on macOS: assert '/Users/tw/Library/Caches/borg' == '/Users/tw/.cache/borg' + # fails on win32 MSYS2 (but we do not need legacy compat there). + assert get_cache_dir(legacy=False) == get_cache_dir(legacy=True) + # fails on macOS: assert '/Users/tw/Library/Caches/borg' == '/var/tmp/xdg.cache.d' + # fails on win32 MSYS2 (but we do not need legacy compat there). + monkeypatch.setenv("XDG_CACHE_HOME", "/var/tmp/xdg.cache.d") + assert get_cache_dir(legacy=False) == get_cache_dir(legacy=True) + monkeypatch.setenv("BORG_BASE_DIR", "/var/tmp/base") + assert get_cache_dir(legacy=False) == get_cache_dir(legacy=True) + monkeypatch.setenv("BORG_CACHE_DIR", "/var/tmp/borg.cache.d") + assert get_cache_dir(legacy=False) == get_cache_dir(legacy=True) + + def test_get_keys_dir(monkeypatch): """test that get_keys_dir respects environment""" monkeypatch.delenv("BORG_BASE_DIR", raising=False)