import ciso8601
from operator import itemgetter
+from pathlib import Path
from stat import *
import arvados
import arvados.commands.put as arv_put
from arvados._version import __version__
+from typing import (
+ Callable,
+)
+
logger = logging.getLogger('arvados.keepdocker')
logger.setLevel(logging.DEBUG if arvados.config.get('ARVADOS_DEBUG')
else logging.INFO)
except STAT_CACHE_ERRORS:
pass # We won't resume from this cache. No big deal.
-def get_cache_dir():
- return arv_cmd.make_home_conf_dir(
- os.path.join('.cache', 'arvados', 'docker'), 0o700)
+def get_cache_dir(
+ mkparent: Callable[[], Path]=arvados.util._BaseDirectories('CACHE').storage_path,
+) -> str:
+ path = mkparent() / 'docker'
+ path.mkdir(mode=0o700, exist_ok=True)
+ return str(path)
def prep_image_file(filename):
# Return a file object ready to save a Docker image,
from unittest import mock
import parameterized
+import pytest
import arvados.commands.keepdocker as arv_keepdocker
from . import arvados_testutil as tutil
def test_image_config(self):
self.assertIsInstance(self.config, collections.abc.Mapping)
self.assertEqual(self.config.get('created'), '2023-05-02T16:49:27Z')
+
+
+def test_get_cache_dir(tmp_path):
+ actual = arv_keepdocker.get_cache_dir(lambda: tmp_path)
+ assert isinstance(actual, str)
+ actual = Path(actual)
+ assert actual.is_dir()
+ assert actual.name == 'docker'
+ assert actual.parent == tmp_path