[Python-checkins] r74217 - in python/branches/py3k: Lib/telnetlib.py Lib/test/test_telnetlib.py Misc/ACKS Misc/NEWS

jack.diederich python-checkins at python.org
Mon Jul 27 00:23:04 CEST 2009


Author: jack.diederich
Date: Mon Jul 27 00:23:04 2009
New Revision: 74217
Log:
- fix issue #6106, Telnet.process_rawq default handling of WILL/WONT/DO/DONT
Modified:
 python/branches/py3k/Lib/telnetlib.py
 python/branches/py3k/Lib/test/test_telnetlib.py
 python/branches/py3k/Misc/ACKS
 python/branches/py3k/Misc/NEWS
Modified: python/branches/py3k/Lib/telnetlib.py
==============================================================================
--- python/branches/py3k/Lib/telnetlib.py	(original)
+++ python/branches/py3k/Lib/telnetlib.py	Mon Jul 27 00:23:04 2009
@@ -459,7 +459,7 @@
 # unless we did a WILL/DO before.
 self.msg('IAC %d not recognized' % ord(c))
 elif len(self.iacseq) == 2:
- cmd = self.iacseq[1]
+ cmd = self.iacseq[1:2]
 self.iacseq = b''
 opt = c
 if cmd in (DO, DONT):
Modified: python/branches/py3k/Lib/test/test_telnetlib.py
==============================================================================
--- python/branches/py3k/Lib/test/test_telnetlib.py	(original)
+++ python/branches/py3k/Lib/test/test_telnetlib.py	Mon Jul 27 00:23:04 2009
@@ -3,6 +3,8 @@
 import telnetlib
 import time
 import queue
+import sys
+import io
 
 from unittest import TestCase
 from test import support
@@ -304,6 +306,20 @@
 self.sb_seen += sb_data
 
 tl = telnetlib
+
+class TelnetDebuglevel(tl.Telnet):
+ ''' Telnet-alike that captures messages written to stdout when
+ debuglevel > 0
+ '''
+ _messages = ''
+ def msg(self, msg, *args):
+ orig_stdout = sys.stdout
+ sys.stdout = fake_stdout = io.StringIO()
+ tl.Telnet.msg(self, msg, *args)
+ self._messages += fake_stdout.getvalue()
+ sys.stdout = orig_stdout
+ return
+
 class OptionTests(TestCase):
 setUp = _read_setUp
 tearDown = _read_tearDown
@@ -363,6 +379,36 @@
 self.assertEqual(b'', telnet.read_sb_data())
 nego.sb_getter = None # break the nego => telnet cycle
 
+ def _test_debuglevel(self, data, expected_msg):
+ """ helper for testing debuglevel messages """
+ self.setUp()
+ self.dataq.put(data)
+ telnet = TelnetDebuglevel(HOST, self.port)
+ telnet.set_debuglevel(1)
+ self.dataq.join()
+ txt = telnet.read_all()
+ self.assertTrue(expected_msg in telnet._messages,
+ msg=(telnet._messages, expected_msg))
+ self.tearDown()
+
+ def test_debuglevel(self):
+ # test all the various places that self.msg(...) is called
+ given_a_expect_b = [
+ # Telnet.fill_rawq
+ (b'a', ": recv b''\n"),
+ # Telnet.process_rawq
+ (tl.IAC + bytes([88]), ": IAC 88 not recognized\n"),
+ (tl.IAC + tl.DO + bytes([1]), ": IAC DO 1\n"),
+ (tl.IAC + tl.DONT + bytes([1]), ": IAC DONT 1\n"),
+ (tl.IAC + tl.WILL + bytes([1]), ": IAC WILL 1\n"),
+ (tl.IAC + tl.WONT + bytes([1]), ": IAC WONT 1\n"),
+ # Telnet.write
+ # XXX, untested
+ ]
+ for a, b in given_a_expect_b:
+ self._test_debuglevel([a, EOF_sigil], b)
+ return
+
 def test_main(verbose=None):
 support.run_unittest(GeneralTests, ReadTests, OptionTests)
 
Modified: python/branches/py3k/Misc/ACKS
==============================================================================
--- python/branches/py3k/Misc/ACKS	(original)
+++ python/branches/py3k/Misc/ACKS	Mon Jul 27 00:23:04 2009
@@ -709,6 +709,7 @@
 Ken Stox
 Dan Stromberg
 Daniel Stutzbach
+Pal Subbiah
 Nathan Sullivan
 Mark Summerfield
 Hisao Suzuki
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Mon Jul 27 00:23:04 2009
@@ -60,6 +60,9 @@
 Library
 -------
 
+- Issue #6106: telnetlib.Telnet.process_rawq doesn't handle default WILL/WONT
+ DO/DONT correctly.
+
 - Issue #1424152: Fix for http.client, urllib.request to support SSL while
 working through proxy. Original patch by Christopher Li, changes made by
 Senthil Kumaran


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /