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)