Skip to content

Commit 346b1c0

Browse files
authored
(fix) site_cache_dir() must return DVC_SITE_CACHE_DIR if it exists (#10776)
* DVC_SITE_CACHE_DIR must be sent first, deal with platformdirs afterwards * Test should check default behaviour when no env var is set * Add test: site_cache_dir() must return the env var if set
1 parent b89cb89 commit 346b1c0

File tree

2 files changed

+12
-5
lines changed

2 files changed

+12
-5
lines changed

dvc/dirs.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ def site_cache_dir():
2424
from platformdirs import PlatformDirs
2525
from platformdirs.unix import Unix
2626

27+
if dvc_site_cache_dir := os.getenv(env.DVC_SITE_CACHE_DIR):
28+
return dvc_site_cache_dir
29+
2730
if issubclass(Unix, PlatformDirs):
2831
# Return the cache directory shared by users, e.g. `/var/tmp/$appname`
2932
# NOTE: platformdirs>=5 changed `site_cache_dir` to return /var/cache/$appname.
@@ -34,6 +37,4 @@ def site_cache_dir():
3437
# In the future, consider migrating to a more secure directory.
3538
return f"/var/tmp/{APPNAME}" # noqa: S108
3639

37-
return os.getenv(env.DVC_SITE_CACHE_DIR) or platformdirs.site_cache_dir(
38-
APPNAME, APPAUTHOR, opinion=True
39-
)
40+
return platformdirs.site_cache_dir(APPNAME, APPAUTHOR, opinion=True)

tests/unit/test_dirs.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import pytest
44

55
from dvc.dirs import global_config_dir, site_cache_dir
6-
from dvc.env import DVC_GLOBAL_CONFIG_DIR
6+
from dvc.env import DVC_GLOBAL_CONFIG_DIR, DVC_SITE_CACHE_DIR
77

88

99
def test_global_config_dir_respects_env_var(monkeypatch):
@@ -13,5 +13,11 @@ def test_global_config_dir_respects_env_var(monkeypatch):
1313

1414

1515
@pytest.mark.skipif(sys.platform != "linux", reason="Only for Unix platforms")
16-
def test_site_cache_dir_on_unix():
16+
def test_site_cache_dir_on_unix(monkeypatch):
17+
monkeypatch.delenv(DVC_SITE_CACHE_DIR, raising=False)
1718
assert site_cache_dir() == "/var/tmp/dvc"
19+
20+
21+
def test_site_cache_dir_env_var(monkeypatch):
22+
monkeypatch.setenv(DVC_SITE_CACHE_DIR, "foo_bar")
23+
assert site_cache_dir() == "foo_bar"

0 commit comments

Comments
 (0)