#10695: use %s not %d so that a string 'port' does not cause a debug traceback

Passing the port as a string value works fine in regular mode, but
if you turned debug on it would throw an error trying to print the
port number, which is surprising and confusing.
This commit is contained in:
R. David Murray 2010-12-14 14:16:20 +00:00
parent 8edd99d085
commit 32ef70c827
3 changed files with 14 additions and 1 deletions

View File

@ -236,7 +236,7 @@ class Telnet:
"""
if self.debuglevel > 0:
print('Telnet(%s,%d):' % (self.host, self.port), end=' ')
print('Telnet(%s,%s):' % (self.host, self.port), end=' ')
if args:
print(msg % args)
else:

View File

@ -342,6 +342,16 @@ class OptionTests(TestCase):
expected = "send b'xxx'\n"
self.assertIn(expected, telnet._messages)
def test_debug_accepts_str_port(self):
# Issue 10695
with test_socket([]):
telnet = TelnetAlike('dummy', '0')
telnet._messages = ''
telnet.set_debuglevel(1)
telnet.msg('test')
self.assertRegex(telnet._messages, r'0.*test')
def test_main(verbose=None):
support.run_unittest(GeneralTests, ReadTests, WriteTests, OptionTests)

View File

@ -11,6 +11,9 @@ What's New in Python 3.2 Beta 2?
Library
-------
- Issue #10695: passing the port as a string value to telnetlib no longer
causes debug mode to fail.
- Issue #1078919: add_header now automatically RFC2231 encodes parameters
that contain non-ascii values.