# HG changeset patch # User Augie Fackler # Date 2018-03-03 19:28:51 # Node ID 8381126bf43c92b11339a48aa27fcc1b9c0c9080 # Parent 6b1eb4c610b4c75facd7d0edf8a9cf34691545b3 url: more bytes/unicodes fussing in url.py around auth handling Once again, these methods are a little annoying to handle because they can get unicodes or bytes depending on who's calling. I think we can probably clean this up a TON once we can run something like pytype and do typechecking of our Python, but until then this is going to be the easy way out. This fixes test-http-bundle1.t. Differential Revision: https://phab.mercurial-scm.org/D2599 diff --git a/contrib/python3-whitelist b/contrib/python3-whitelist --- a/contrib/python3-whitelist +++ b/contrib/python3-whitelist @@ -143,6 +143,7 @@ test-histedit-obsolete.t test-histedit-outgoing.t test-histedit-templates.t test-http-branchmap.t +test-http-bundle1.t test-http-clone-r.t test-identify.t test-imports-checker.t diff --git a/mercurial/url.py b/mercurial/url.py --- a/mercurial/url.py +++ b/mercurial/url.py @@ -67,7 +67,7 @@ class passwordmgr(object): user, passwd = auth.get('username'), auth.get('password') self.ui.debug("using auth.%s.* for authentication\n" % group) if not user or not passwd: - u = util.url(authuri) + u = util.url(pycompat.bytesurl(authuri)) u.query = None if not self.ui.interactive(): raise error.Abort(_('http authorization required for %s') % @@ -75,7 +75,7 @@ class passwordmgr(object): self.ui.write(_("http authorization required for %s\n") % util.hidepassword(bytes(u))) - self.ui.write(_("realm: %s\n") % realm) + self.ui.write(_("realm: %s\n") % pycompat.bytesurl(realm)) if user: self.ui.write(_("user: %s\n") % user) else: @@ -424,8 +424,8 @@ class httpbasicauthhandler(urlreq.httpba user, pw = self.passwd.find_user_password( realm, urllibcompat.getfullurl(req)) if pw is not None: - raw = "%s:%s" % (user, pw) - auth = 'Basic %s' % base64.b64encode(raw).strip() + raw = "%s:%s" % (pycompat.bytesurl(user), pycompat.bytesurl(pw)) + auth = r'Basic %s' % pycompat.strurl(base64.b64encode(raw).strip()) if req.get_header(self.auth_header, None) == auth: return None self.auth = auth