Merge #15509: If %action substitution produces a null string, drop it.

Patch by Anton Barkovsky, comment addition by me.

This shows up as a bug in 3.3 because the definition for Chrome
produces such an empty string.  Tests will follow.
This commit is contained in:
R David Murray 2012-09-03 12:37:59 -04:00
commit d674a770e9
2 changed files with 12 additions and 2 deletions

View file

@ -206,12 +206,18 @@ class UnixBrowser(BaseBrowser):
"""Parent class for all Unix browsers with remote functionality.""" """Parent class for all Unix browsers with remote functionality."""
raise_opts = None raise_opts = None
background = False
redirect_stdout = True
# In remote_args, %s will be replaced with the requested URL. %action will
# be replaced depending on the value of 'new' passed to open.
# remote_action is used for new=0 (open). If newwin is not None, it is
# used for new=1 (open_new). If newtab is not None, it is used for
# new=3 (open_new_tab). After both substitutions are made, any empty
# strings in the transformed remote_args list will be removed.
remote_args = ['%action', '%s'] remote_args = ['%action', '%s']
remote_action = None remote_action = None
remote_action_newwin = None remote_action_newwin = None
remote_action_newtab = None remote_action_newtab = None
background = False
redirect_stdout = True
def _invoke(self, args, remote, autoraise): def _invoke(self, args, remote, autoraise):
raise_opt = [] raise_opt = []
@ -264,6 +270,7 @@ class UnixBrowser(BaseBrowser):
args = [arg.replace("%s", url).replace("%action", action) args = [arg.replace("%s", url).replace("%action", action)
for arg in self.remote_args] for arg in self.remote_args]
args = [arg for arg in args if arg]
success = self._invoke(args, True, autoraise) success = self._invoke(args, True, autoraise)
if not success: if not success:
# remote invocation failed, try straight way # remote invocation failed, try straight way

View file

@ -21,6 +21,9 @@ Core and Builtins
Library Library
------- -------
- Issue #15509: webbrowser.UnixBrowser no longer passes empty arguments to
Popen when %action substitutions produce empty strings.
- Issue #12776,#11839: call argparse type function (specified by add_argument) - Issue #12776,#11839: call argparse type function (specified by add_argument)
only once. Before, the type function was called twice in the case where the only once. Before, the type function was called twice in the case where the
default was specified and the argument was given as well. This was default was specified and the argument was given as well. This was