diff options
author | Florian Bruhin <me@the-compiler.org> | 2019-02-22 10:22:09 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2019-02-22 10:22:09 +0100 |
commit | 99c8b80a460d633c26d68ef8da55512a7df225e9 (patch) | |
tree | 6b70ec83ea0e11e6794441f5d1c4a36b82d3b1b0 | |
parent | 81889dd7bd087839dce399279c106efbdbbee539 (diff) | |
download | qutebrowser-99c8b80a460d633c26d68ef8da55512a7df225e9.tar.gz qutebrowser-99c8b80a460d633c26d68ef8da55512a7df225e9.zip |
Use i- as prefix for the IPC path on macOS
With Qt 5.12, standarddir.runtime() gives us a path in /private/var/folders/...
instead of /var/folders/... like before. Due to that change, the path length is
105 chars, which is too long for a named socket (104 seems to be okay).
The complete name is just slightly too long, so using i- instead of ipc- fixes
things...
Fixes #4471
See #888
-rw-r--r-- | doc/changelog.asciidoc | 3 | ||||
-rw-r--r-- | qutebrowser/misc/ipc.py | 8 | ||||
-rw-r--r-- | tests/unit/misc/test_ipc.py | 17 |
3 files changed, 14 insertions, 14 deletions
diff --git a/doc/changelog.asciidoc b/doc/changelog.asciidoc index d1890bcb6..bf07b4416 100644 --- a/doc/changelog.asciidoc +++ b/doc/changelog.asciidoc @@ -62,6 +62,9 @@ Changed `org.qutebrowser.qutebrowser.appdata.xml`. - The `qute-pass` userscript now understands domains in gpg filenames in addition to directory names. +- macOS: The IPC socket path used to communicate with existing instances + changed due to changes in Qt 5.12. Please make sure to quit qutebrowser + before upgrading. Fixed ~~~~~ diff --git a/qutebrowser/misc/ipc.py b/qutebrowser/misc/ipc.py index 3c718de7b..ef913f94b 100644 --- a/qutebrowser/misc/ipc.py +++ b/qutebrowser/misc/ipc.py @@ -65,11 +65,9 @@ def _get_socketname(basedir): data_to_hash = '-'.join(parts_to_hash).encode('utf-8') md5 = hashlib.md5(data_to_hash).hexdigest() - target_dir = standarddir.runtime() - - parts = ['ipc'] - parts.append(md5) - return os.path.join(target_dir, '-'.join(parts)) + prefix = 'i-' if utils.is_mac else 'ipc-' + filename = '{}{}'.format(prefix, md5) + return os.path.join(standarddir.runtime(), filename) class Error(Exception): diff --git a/tests/unit/misc/test_ipc.py b/tests/unit/misc/test_ipc.py index dd2efcbb1..c363249f8 100644 --- a/tests/unit/misc/test_ipc.py +++ b/tests/unit/misc/test_ipc.py @@ -177,11 +177,6 @@ def md5(inp): class TestSocketName: - POSIX_TESTS = [ - (None, 'ipc-{}'.format(md5('testusername'))), - ('/x', 'ipc-{}'.format(md5('testusername-/x'))), - ] - WINDOWS_TESTS = [ (None, 'qutebrowser-testusername'), ('/x', 'qutebrowser-testusername-{}'.format(md5('/x'))), @@ -203,7 +198,10 @@ class TestSocketName: assert socketname == expected @pytest.mark.mac - @pytest.mark.parametrize('basedir, expected', POSIX_TESTS) + @pytest.mark.parametrize('basedir, expected', [ + (None, 'i-{}'.format(md5('testusername'))), + ('/x', 'i-{}'.format(md5('testusername-/x'))), + ]) def test_mac(self, basedir, expected): socketname = ipc._get_socketname(basedir) parts = socketname.split(os.sep) @@ -211,7 +209,10 @@ class TestSocketName: assert parts[-1] == expected @pytest.mark.linux - @pytest.mark.parametrize('basedir, expected', POSIX_TESTS) + @pytest.mark.parametrize('basedir, expected', [ + (None, 'ipc-{}'.format(md5('testusername'))), + ('/x', 'ipc-{}'.format(md5('testusername-/x'))), + ]) def test_linux(self, basedir, fake_runtime_dir, expected): socketname = ipc._get_socketname(basedir) expected_path = str(fake_runtime_dir / 'qutebrowser' / expected) @@ -630,8 +631,6 @@ class TestSendOrListen: assert ret_client is None @pytest.mark.posix(reason="Unneeded on Windows") - @pytest.mark.xfail(qtutils.version_check('5.12', compiled=False) and - utils.is_mac, reason="Broken, see #4471") def test_correct_socket_name(self, args): server = ipc.send_or_listen(args) expected_dir = ipc._get_socketname(args.basedir) |