From patchwork Fri Mar 2 14:50:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D2542: tests: help dummysmtpd work on python 3 From: phabricator X-Patchwork-Id: 28668 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Fri, 2 Mar 2018 14:50:26 +0000 durin42 created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D2542 AFFECTED FILES tests/dummysmtpd.py CHANGE DETAILS To: durin42, #hg-reviewers Cc: mercurial-devel diff --git a/tests/dummysmtpd.py b/tests/dummysmtpd.py --- a/tests/dummysmtpd.py +++ b/tests/dummysmtpd.py @@ -12,6 +12,7 @@ import traceback from mercurial import ( + pycompat, server, sslutil, ui as uimod, @@ -63,6 +64,19 @@ except KeyboardInterrupt: pass +def _encodestrsonly(v): + if isinstance(v, type(u'')): + return v.encode('ascii') + return v + +def bytesvars(obj): + unidict = vars(obj) + bd = {k.encode('ascii'): _encodestrsonly(v) for k, v in unidict.items()} + if bd[b'daemon_postexec'] is not None: + bd[b'daemon_postexec'] = [ + _encodestrsonly(v) for v in bd[b'daemon_postexec']] + return bd + def main(): op = optparse.OptionParser() op.add_option('-d', '--daemon', action='store_true') @@ -85,8 +99,10 @@ dummysmtpsecureserver(addr, opts.certificate) log('listening at %s:%d\n' % addr) - server.runservice(vars(opts), initfn=init, runfn=run, - runargs=[sys.executable, __file__] + sys.argv[1:]) + server.runservice( + bytesvars(opts), initfn=init, runfn=run, + runargs=[pycompat.sysexecutable, + pycompat.fsencode(__file__)] + pycompat.sysargv[1:]) if __name__ == '__main__': main()