Skip to content

Commit

Permalink
Merge pull request #475 from eighthave/patch-1
Browse files Browse the repository at this point in the history
/run/user/$UID as fallback if XDG_RUNTIME_DIR is not set
  • Loading branch information
openshift-merge-bot[bot] authored Nov 29, 2024
2 parents d4668d5 + 3968fc2 commit 367bce6
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
10 changes: 9 additions & 1 deletion podman/api/path_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,19 @@


def get_runtime_dir() -> str:
"""Returns the runtime directory for the current user"""
"""Returns the runtime directory for the current user
The value in XDG_RUNTIME_DIR is preferred, but that is not always set, for
example, on headless servers. /run/user/$UID is defined in the XDG documentation.
"""
try:
return os.environ['XDG_RUNTIME_DIR']
except KeyError:
user = getpass.getuser()
run_user = f'/run/user/{user}'
if os.path.isdir(run_user):
return run_user
fallback = f'/tmp/podmanpy-runtime-dir-fallback-{user}'

try:
Expand Down
28 changes: 28 additions & 0 deletions podman/tests/unit/test_path_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import datetime
import os
import unittest
import tempfile
from unittest import mock

from podman import api


class PathUtilsTestCase(unittest.TestCase):
def setUp(self):
self.xdg_runtime_dir = os.getenv('XDG_RUNTIME_DIR')
print('XDG_RUNTIME_DIR', self.xdg_runtime_dir)

@mock.patch.dict(os.environ, clear=True)
def test_get_runtime_dir_env_var_set(self):
with tempfile.TemporaryDirectory() as tmpdir:
os.environ['XDG_RUNTIME_DIR'] = str(tmpdir)
self.assertEqual(str(tmpdir), api.path_utils.get_runtime_dir())

@unittest.skipUnless(os.getenv('XDG_RUNTIME_DIR'), 'XDG_RUNTIME_DIR must be set')
@mock.patch.dict(os.environ, clear=True)
def test_get_runtime_dir_env_var_not_set(self):
self.assertNotEqual(self.xdg_runtime_dir, api.path_utils.get_runtime_dir())


if __name__ == '__main__':
unittest.main()

0 comments on commit 367bce6

Please sign in to comment.