From afc166a13e254da93a6578a5d50df7df6576008f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Sch=C3=BCrmann?= Date: Tue, 6 Oct 2015 22:59:49 +0200 Subject: [PATCH] Coding style fixes #1002 --- qutebrowser/app.py | 10 +++++++++- qutebrowser/mainwindow/mainwindow.py | 7 +++++-- qutebrowser/misc/ipc.py | 23 ++++++++--------------- qutebrowser/qutebrowser.py | 6 +++--- tests/unit/misc/test_ipc.py | 8 ++++---- 5 files changed, 29 insertions(+), 25 deletions(-) diff --git a/qutebrowser/app.py b/qutebrowser/app.py index a50e8ec8a..44d3caaf7 100644 --- a/qutebrowser/app.py +++ b/qutebrowser/app.py @@ -239,6 +239,14 @@ def process_pos_args(args, via_ipc=False, cwd=None, target_arg=None): args: A list of arguments to process. via_ipc: Whether the arguments were transmitted over IPC. cwd: The cwd to use for fuzzy_url. + target_arg: Command line argument received by a running instance via + ipc. If the --target argument was not specified, target_arg + will be an empty string instead of None. This behavior is + caused by the PyQt signal + ``got_args = pyqtSignal(list, str, str)`` + used in the misc.ipc.IPCServer class. PyQt converts the None + value into a null QString and then back to an empty python + string """ if via_ipc and not args: win_id = mainwindow.get_window(via_ipc, force_window=True) @@ -260,7 +268,7 @@ def process_pos_args(args, via_ipc=False, cwd=None, target_arg=None): open_target = target_arg else: open_target = config.get('general', 'new-instance-open-target') - win_id = mainwindow.get_window(via_ipc, open_target=open_target) + win_id = mainwindow.get_window(via_ipc, force_target=open_target) tabbed_browser = objreg.get('tabbed-browser', scope='window', window=win_id) log.init.debug("Startup URL {}".format(cmd)) diff --git a/qutebrowser/mainwindow/mainwindow.py b/qutebrowser/mainwindow/mainwindow.py index 35b3aad2d..257d6e211 100644 --- a/qutebrowser/mainwindow/mainwindow.py +++ b/qutebrowser/mainwindow/mainwindow.py @@ -41,13 +41,14 @@ from qutebrowser.misc import crashsignal win_id_gen = itertools.count(0) -def get_window(via_ipc, force_window=False, force_tab=False, open_target=None): +def get_window(via_ipc, force_window=False, force_tab=False, force_target=None): """Helper function for app.py to get a window id. Args: via_ipc: Whether the request was made via IPC. force_window: Whether to force opening in a window. force_tab: Whether to force opening in a tab. + force_target: Override the new-instance-open-target config """ if force_window and force_tab: raise ValueError("force_window and force_tab are mutually exclusive!") @@ -55,7 +56,9 @@ def get_window(via_ipc, force_window=False, force_tab=False, open_target=None): # Initial main window return 0 window_to_raise = None - if not open_target: + if force_target is not None: + open_target = force_target + else: open_target = config.get('general', 'new-instance-open-target') if (open_target == 'window' or force_window) and not force_tab: window = MainWindow() diff --git a/qutebrowser/misc/ipc.py b/qutebrowser/misc/ipc.py index 4c4bda1fc..a0a68c3ef 100644 --- a/qutebrowser/misc/ipc.py +++ b/qutebrowser/misc/ipc.py @@ -287,7 +287,6 @@ class IPCServer(QObject): @pyqtSlot() def on_ready_read(self): """Read json data from the client.""" - # pylint: disable=too-many-return-statements if self._socket is None: # This happens when doing a connection while another one is already # active for some reason. @@ -315,19 +314,12 @@ class IPCServer(QObject): self._handle_invalid_data() return - try: - args = json_data['args'] - except KeyError: - log.ipc.error("no args: {}".format(decoded.strip())) - self._handle_invalid_data() - return - - try: - target_arg = json_data['target_arg'] - except KeyError: - log.ipc.error("target arg missing: {}".format(decoded.strip())) - self._handle_invalid_data() - return + for name in ('args', 'target_arg'): + if name not in json_data: + log.ipc.error("Missing {}: {}".format(name, + decoded.strip())) + self._handle_invalid_data() + return try: protocol_version = int(json_data['protocol_version']) @@ -344,7 +336,7 @@ class IPCServer(QObject): return cwd = json_data.get('cwd', None) - self.got_args.emit(args, target_arg, cwd) + self.got_args.emit(json_data['args'], json_data['target_arg'], cwd) @pyqtSlot() def on_timeout(self): @@ -435,6 +427,7 @@ def send_to_running_instance(socketname, command, target_arg, *, Args: socketname: The name which should be used for the socket. command: The command to send to the running instance. + target_arg: --target command line argument socket: The socket to read data from, or None. legacy_name: The legacy name to first try to connect to. diff --git a/qutebrowser/qutebrowser.py b/qutebrowser/qutebrowser.py index ab4581575..04872ab5d 100644 --- a/qutebrowser/qutebrowser.py +++ b/qutebrowser/qutebrowser.py @@ -65,11 +65,11 @@ def get_argparser(): parser.add_argument('-R', '--override-restore', help="Don't restore a " "session even if one would be restored.", action='store_true') - parser.add_argument('--json-args', help=argparse.SUPPRESS) parser.add_argument('--target', choices=['auto', 'tab', 'tab-bg', 'tab-silent', 'tab-bg-silent', 'window'], - help="How the urls should be opened if there is " - "already a qutebrowser instance running.") + help="How URLs should be opened if there is already a " + "qutebrowser instance running.") + parser.add_argument('--json-args', help=argparse.SUPPRESS) debug = parser.add_argument_group('debug arguments') debug.add_argument('-l', '--loglevel', dest='loglevel', diff --git a/tests/unit/misc/test_ipc.py b/tests/unit/misc/test_ipc.py index 474acbca9..8d5d9231b 100644 --- a/tests/unit/misc/test_ipc.py +++ b/tests/unit/misc/test_ipc.py @@ -442,8 +442,8 @@ class TestHandleConnection: assert msg in all_msgs def test_read_line_immediately(self, qtbot, ipc_server, caplog): - data = '{{"args": ["foo"], "target_arg": "tab", ' \ - '"protocol_version": {}}}\n'.format(ipc.PROTOCOL_VERSION) + data = ('{{"args": ["foo"], "target_arg": "tab", ' + '"protocol_version": {}}}\n'.format(ipc.PROTOCOL_VERSION)) socket = FakeSocket(data=data.encode('utf-8')) ipc_server._server = FakeServer(socket) @@ -490,8 +490,8 @@ NEW_VERSION = str(ipc.PROTOCOL_VERSION + 1).encode('utf-8') (b'\x80\n', 'invalid utf-8'), (b'\n', 'invalid json'), (b'{"is this invalid json?": true\n', 'invalid json'), - (b'{"valid json without args": true}\n', 'no args'), - (b'{"args": []}\n', 'target arg missing'), + (b'{"valid json without args": true}\n', 'Missing args'), + (b'{"args": []}\n', 'Missing target_arg'), (b'{"args": [], "target_arg": null, "protocol_version": ' + OLD_VERSION + b'}\n', 'incompatible version'), (b'{"args": [], "target_arg": null, "protocol_version": ' + NEW_VERSION +