diff options
author | Florian Bruhin <me@the-compiler.org> | 2021-03-23 22:42:57 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2021-03-23 22:44:10 +0100 |
commit | 2f8fbff53a34adfbf4fe3e295de795fd4135ddcb (patch) | |
tree | 620cfb961deeac079f4167ebe9825764f6c32565 | |
parent | fa483821624d93111854b0d7825d7fcd885ba5ad (diff) | |
download | qutebrowser-2f8fbff53a34adfbf4fe3e295de795fd4135ddcb.tar.gz qutebrowser-2f8fbff53a34adfbf4fe3e295de795fd4135ddcb.zip |
standarddir: Fix custom basedirs with flatpak
See https://github.com/flathub/org.qutebrowser.qutebrowser/issues/18#issuecomment-802827816
(cherry picked from commit 74c9f66752f077c4b94927c15aec801a1ab88a22)
-rw-r--r-- | qutebrowser/utils/standarddir.py | 13 | ||||
-rw-r--r-- | 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') |