From 41a17acca35cfbadef20c6feb65cfd0aa26cbb05 Mon Sep 17 00:00:00 2001 From: rgoya Date: Wed, 11 Jun 2025 23:22:26 -0700 Subject: [PATCH 1/3] DVC_SITE_CACHE_DIR must be sent first, deal with platformdirs afterwards --- dvc/dirs.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dvc/dirs.py b/dvc/dirs.py index c6737678d6..881a30840a 100644 --- a/dvc/dirs.py +++ b/dvc/dirs.py @@ -24,6 +24,9 @@ def site_cache_dir(): from platformdirs import PlatformDirs from platformdirs.unix import Unix + if dvc_site_cache_dir := os.getenv(env.DVC_SITE_CACHE_DIR): + return dvc_site_cache_dir + if issubclass(Unix, PlatformDirs): # Return the cache directory shared by users, e.g. `/var/tmp/$appname` # NOTE: platformdirs>=5 changed `site_cache_dir` to return /var/cache/$appname. @@ -34,6 +37,4 @@ def site_cache_dir(): # In the future, consider migrating to a more secure directory. return f"/var/tmp/{APPNAME}" # noqa: S108 - return os.getenv(env.DVC_SITE_CACHE_DIR) or platformdirs.site_cache_dir( - APPNAME, APPAUTHOR, opinion=True - ) + return platformdirs.site_cache_dir(APPNAME, APPAUTHOR, opinion=True) From 07e88f86e6227502c6f95dc81d12cf86d5e52fdd Mon Sep 17 00:00:00 2001 From: rgoya Date: Wed, 11 Jun 2025 23:55:08 -0700 Subject: [PATCH 2/3] Test should check default behaviour when no env var is set --- tests/unit/test_dirs.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/unit/test_dirs.py b/tests/unit/test_dirs.py index 0098c0cbf9..d5f7f720eb 100644 --- a/tests/unit/test_dirs.py +++ b/tests/unit/test_dirs.py @@ -3,7 +3,7 @@ import pytest from dvc.dirs import global_config_dir, site_cache_dir -from dvc.env import DVC_GLOBAL_CONFIG_DIR +from dvc.env import DVC_GLOBAL_CONFIG_DIR, DVC_SITE_CACHE_DIR def test_global_config_dir_respects_env_var(monkeypatch): @@ -13,5 +13,6 @@ def test_global_config_dir_respects_env_var(monkeypatch): @pytest.mark.skipif(sys.platform != "linux", reason="Only for Unix platforms") -def test_site_cache_dir_on_unix(): +def test_site_cache_dir_on_unix(monkeypatch): + monkeypatch.delenv(DVC_SITE_CACHE_DIR, raising=False) assert site_cache_dir() == "/var/tmp/dvc" From 86ea91c342b92874556a67a2b0e658349a8c5ac6 Mon Sep 17 00:00:00 2001 From: rgoya Date: Thu, 12 Jun 2025 00:01:08 -0700 Subject: [PATCH 3/3] Add test: site_cache_dir() must return the env var if set --- tests/unit/test_dirs.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/unit/test_dirs.py b/tests/unit/test_dirs.py index d5f7f720eb..259a330af6 100644 --- a/tests/unit/test_dirs.py +++ b/tests/unit/test_dirs.py @@ -16,3 +16,8 @@ def test_global_config_dir_respects_env_var(monkeypatch): def test_site_cache_dir_on_unix(monkeypatch): monkeypatch.delenv(DVC_SITE_CACHE_DIR, raising=False) assert site_cache_dir() == "/var/tmp/dvc" + + +def test_site_cache_dir_env_var(monkeypatch): + monkeypatch.setenv(DVC_SITE_CACHE_DIR, "foo_bar") + assert site_cache_dir() == "foo_bar"