From 2f8fbff53a34adfbf4fe3e295de795fd4135ddcb Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 23 Mar 2021 22:42:57 +0100 Subject: standarddir: Fix custom basedirs with flatpak See https://github.com/flathub/org.qutebrowser.qutebrowser/issues/18#issuecomment-802827816 (cherry picked from commit 74c9f66752f077c4b94927c15aec801a1ab88a22) --- qutebrowser/utils/standarddir.py | 13 ++++++------- tests/unit/utils/test_standarddir.py | 13 ++++++++++--- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/qutebrowser/utils/standarddir.py b/qutebrowser/utils/standarddir.py index 2e8f23ba5..447515ecd 100644 --- a/qutebrowser/utils/standarddir.py +++ b/qutebrowser/utils/standarddir.py @@ -232,14 +232,13 @@ def _init_runtime(args: Optional[argparse.Namespace]) -> None: # Unfortunately this path could get too long for sockets (which have a # maximum length of 104 chars), so we don't add the username here... - from qutebrowser.utils import version - if version.is_sandboxed(): - *parts, app_name = os.path.split(path) - assert app_name == APPNAME, app_name - path = os.path.join(*parts, 'app', os.environ['FLATPAK_ID']) - else: - _create(path) + from qutebrowser.utils import version + if version.is_sandboxed(): + *parts, app_name = os.path.split(path) + assert app_name == APPNAME, app_name + path = os.path.join(*parts, 'app', os.environ['FLATPAK_ID']) + _create(path) _locations[_Location.runtime] = path diff --git a/tests/unit/utils/test_standarddir.py b/tests/unit/utils/test_standarddir.py index 9196e584d..b663846e0 100644 --- a/tests/unit/utils/test_standarddir.py +++ b/tests/unit/utils/test_standarddir.py @@ -203,19 +203,26 @@ class TestStandardDir: assert standarddir.runtime() == str(tmpdir_env / APPNAME) @pytest.mark.linux - def test_flatpak_runtimedir(self, monkeypatch, tmp_path): + @pytest.mark.parametrize('args_basedir', [True, False]) + def test_flatpak_runtimedir(self, monkeypatch, tmp_path, args_basedir): runtime_path = tmp_path / 'runtime' runtime_path.mkdir() runtime_path.chmod(0o0700) app_id = 'org.qutebrowser.qutebrowser' - expected = runtime_path / 'app' / app_id monkeypatch.setattr(version, 'is_sandboxed', lambda: True) monkeypatch.setenv('XDG_RUNTIME_DIR', str(runtime_path)) monkeypatch.setenv('FLATPAK_ID', app_id) - standarddir._init_runtime(args=None) + if args_basedir: + init_args = types.SimpleNamespace(basedir=str(tmp_path)) + expected = tmp_path / 'runtime' + else: + init_args = None + expected = runtime_path / 'app' / app_id + + standarddir._init_runtime(args=init_args) assert standarddir.runtime() == str(expected) @pytest.mark.fake_os('windows') -- cgit v1.2.3-54-g00ecf