mirror of
https://github.com/python/cpython.git
synced 2025-08-03 00:23:06 +00:00
Merged revisions 74217,74224 via svnmerge from
svn+ssh://svn.python.org/python/branches/py3k ........ r74217 | jack.diederich | 2009-07-27 00:23:04 +0200 (Mo, 27 Jul 2009) | 1 line - fix issue #6106, Telnet.process_rawq default handling of WILL/WONT/DO/DONT ........ r74224 | jack.diederich | 2009-07-27 11:03:14 +0200 (Mo, 27 Jul 2009) | 1 line - belated ACK for issue #6106 ........
This commit is contained in:
parent
01a30523f9
commit
e6700e9a04
4 changed files with 88 additions and 37 deletions
|
@ -459,7 +459,7 @@ class Telnet:
|
||||||
# unless we did a WILL/DO before.
|
# unless we did a WILL/DO before.
|
||||||
self.msg('IAC %d not recognized' % ord(c))
|
self.msg('IAC %d not recognized' % ord(c))
|
||||||
elif len(self.iacseq) == 2:
|
elif len(self.iacseq) == 2:
|
||||||
cmd = self.iacseq[1]
|
cmd = self.iacseq[1:2]
|
||||||
self.iacseq = b''
|
self.iacseq = b''
|
||||||
opt = c
|
opt = c
|
||||||
if cmd in (DO, DONT):
|
if cmd in (DO, DONT):
|
||||||
|
|
|
@ -3,6 +3,8 @@ import threading
|
||||||
import telnetlib
|
import telnetlib
|
||||||
import time
|
import time
|
||||||
import queue
|
import queue
|
||||||
|
import sys
|
||||||
|
import io
|
||||||
|
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
from test import support
|
from test import support
|
||||||
|
@ -304,6 +306,20 @@ class nego_collector(object):
|
||||||
self.sb_seen += sb_data
|
self.sb_seen += sb_data
|
||||||
|
|
||||||
tl = telnetlib
|
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):
|
class OptionTests(TestCase):
|
||||||
setUp = _read_setUp
|
setUp = _read_setUp
|
||||||
tearDown = _read_tearDown
|
tearDown = _read_tearDown
|
||||||
|
@ -363,6 +379,36 @@ class OptionTests(TestCase):
|
||||||
self.assertEqual(b'', telnet.read_sb_data())
|
self.assertEqual(b'', telnet.read_sb_data())
|
||||||
nego.sb_getter = None # break the nego => telnet cycle
|
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):
|
def test_main(verbose=None):
|
||||||
support.run_unittest(GeneralTests, ReadTests, OptionTests)
|
support.run_unittest(GeneralTests, ReadTests, OptionTests)
|
||||||
|
|
||||||
|
|
|
@ -708,6 +708,7 @@ Michael Stone
|
||||||
Ken Stox
|
Ken Stox
|
||||||
Dan Stromberg
|
Dan Stromberg
|
||||||
Daniel Stutzbach
|
Daniel Stutzbach
|
||||||
|
Pal Subbiah
|
||||||
Nathan Sullivan
|
Nathan Sullivan
|
||||||
Mark Summerfield
|
Mark Summerfield
|
||||||
Hisao Suzuki
|
Hisao Suzuki
|
||||||
|
@ -800,6 +801,7 @@ Jean-Claude Wippler
|
||||||
Lars Wirzenius
|
Lars Wirzenius
|
||||||
Chris Withers
|
Chris Withers
|
||||||
Stefan Witzel
|
Stefan Witzel
|
||||||
|
Irek Wlizlo
|
||||||
David Wolever
|
David Wolever
|
||||||
Klaus-Juergen Wolf
|
Klaus-Juergen Wolf
|
||||||
Dan Wolfe
|
Dan Wolfe
|
||||||
|
|
75
Misc/NEWS
75
Misc/NEWS
|
@ -45,6 +45,9 @@ C-API
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #6106: telnetlib.Telnet.process_rawq doesn't handle default WILL/WONT
|
||||||
|
DO/DONT correctly.
|
||||||
|
|
||||||
- Issue #6126: Fixed pdb command-line usage.
|
- Issue #6126: Fixed pdb command-line usage.
|
||||||
|
|
||||||
- Issue #6629: Fix a data corruption issue in the new I/O library, which could
|
- Issue #6629: Fix a data corruption issue in the new I/O library, which could
|
||||||
|
@ -62,32 +65,32 @@ Library
|
||||||
- Issue #2715: Remove remnants of Carbon.File from binhex module.
|
- Issue #2715: Remove remnants of Carbon.File from binhex module.
|
||||||
|
|
||||||
- Issue #6595: The Decimal constructor now allows arbitrary Unicode
|
- Issue #6595: The Decimal constructor now allows arbitrary Unicode
|
||||||
decimal digits in input, as recommended by the standard. Previously
|
decimal digits in input, as recommended by the standard. Previously
|
||||||
it was restricted to accepting [0-9].
|
it was restricted to accepting [0-9].
|
||||||
|
|
||||||
- Issues #5155, #5313, #5331: multiprocessing.Process._bootstrap was
|
- Issues #5155, #5313, #5331: multiprocessing.Process._bootstrap was
|
||||||
unconditionally calling "os.close(sys.stdin.fileno())" resulting in file
|
unconditionally calling "os.close(sys.stdin.fileno())" resulting in file
|
||||||
descriptor errors
|
descriptor errors
|
||||||
|
|
||||||
- Issue #1424152: Fix for http.client, urllib.request to support SSL while
|
- Issue #1424152: Fix for http.client, urllib.request to support SSL while
|
||||||
working through proxy. Original patch by Christopher Li, changes made by
|
working through proxy. Original patch by Christopher Li, changes made by
|
||||||
Senthil Kumaran
|
Senthil Kumaran
|
||||||
|
|
||||||
- importlib.abc.PyLoader did not inherit from importlib.abc.ResourceLoader like
|
- importlib.abc.PyLoader did not inherit from importlib.abc.ResourceLoader like
|
||||||
the documentation said it did even though the code in PyLoader relied on the
|
the documentation said it did even though the code in PyLoader relied on the
|
||||||
abstract method required by ResourceLoader.
|
abstract method required by ResourceLoader.
|
||||||
|
|
||||||
- Issue #6431: Make Fraction type return NotImplemented when it doesn't
|
- Issue #6431: Make Fraction type return NotImplemented when it doesn't
|
||||||
know how to handle a comparison without loss of precision. Also add
|
know how to handle a comparison without loss of precision. Also add
|
||||||
correct handling of infinities and nans for comparisons with float.
|
correct handling of infinities and nans for comparisons with float.
|
||||||
|
|
||||||
- Issue #6415: Fixed warnings.warn segfault on bad formatted string.
|
- Issue #6415: Fixed warnings.warn segfault on bad formatted string.
|
||||||
|
|
||||||
- Issue #6358: The exit status of a command started with os.popen() was
|
- Issue #6358: The exit status of a command started with os.popen() was
|
||||||
reported differently than it did with python 2.x.
|
reported differently than it did with python 2.x.
|
||||||
|
|
||||||
- Issue #6323: The pdb debugger did not exit when running a script with a
|
- Issue #6323: The pdb debugger did not exit when running a script with a
|
||||||
syntax error.
|
syntax error.
|
||||||
|
|
||||||
- Issue #6369: Fix an RLE decompression bug in the binhex module.
|
- Issue #6369: Fix an RLE decompression bug in the binhex module.
|
||||||
|
|
||||||
|
@ -97,16 +100,16 @@ Build
|
||||||
-----
|
-----
|
||||||
|
|
||||||
- Issue 4601: 'make install' did not set the appropriate permissions on
|
- Issue 4601: 'make install' did not set the appropriate permissions on
|
||||||
directories.
|
directories.
|
||||||
|
|
||||||
- Issue 5390: Add uninstall icon independent of whether file
|
- Issue 5390: Add uninstall icon independent of whether file
|
||||||
extensions are installed.
|
extensions are installed.
|
||||||
|
|
||||||
Test
|
Test
|
||||||
----
|
----
|
||||||
|
|
||||||
- Fix a test in importlib.test.source.test_abc_loader that was incorrectly
|
- Fix a test in importlib.test.source.test_abc_loader that was incorrectly
|
||||||
testing when a .pyc file lacked an code object bytecode.
|
testing when a .pyc file lacked an code object bytecode.
|
||||||
|
|
||||||
|
|
||||||
What's New in Python 3.1?
|
What's New in Python 3.1?
|
||||||
|
@ -118,27 +121,27 @@ Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
- Issue #6334: Fix bug in range length calculation for ranges with
|
- Issue #6334: Fix bug in range length calculation for ranges with
|
||||||
large arguments.
|
large arguments.
|
||||||
|
|
||||||
- Issue #6329: Fixed iteration for memoryview objects (it was being blocked
|
- Issue #6329: Fixed iteration for memoryview objects (it was being blocked
|
||||||
because it wasn't recognized as a sequence).
|
because it wasn't recognized as a sequence).
|
||||||
|
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
- Issue #6314: logging.basicConfig() performs extra checks on the "level"
|
- Issue #6314: logging.basicConfig() performs extra checks on the "level"
|
||||||
argument.
|
argument.
|
||||||
|
|
||||||
- Issue #6274: Fixed possible file descriptors leak in subprocess.py
|
- Issue #6274: Fixed possible file descriptors leak in subprocess.py
|
||||||
|
|
||||||
- Accessing io.StringIO.buffer now raises an AttributeError instead of
|
- Accessing io.StringIO.buffer now raises an AttributeError instead of
|
||||||
io.UnsupportedOperation.
|
io.UnsupportedOperation.
|
||||||
|
|
||||||
- Issue #6271: mmap tried to close invalid file handle (-1) when anonymous.
|
- Issue #6271: mmap tried to close invalid file handle (-1) when anonymous.
|
||||||
(On Unix)
|
(On Unix)
|
||||||
|
|
||||||
- Issue #1202: zipfile module would cause a struct.error when attempting to
|
- Issue #1202: zipfile module would cause a struct.error when attempting to
|
||||||
store files with a CRC32 > 2**31-1.
|
store files with a CRC32 > 2**31-1.
|
||||||
|
|
||||||
Extension Modules
|
Extension Modules
|
||||||
-----------------
|
-----------------
|
||||||
|
@ -157,50 +160,50 @@ Core and Builtins
|
||||||
- Fixed SystemError triggered by "range([], 1, -1)".
|
- Fixed SystemError triggered by "range([], 1, -1)".
|
||||||
|
|
||||||
- Issue #5924: On Windows, a large PYTHONPATH environment variable
|
- Issue #5924: On Windows, a large PYTHONPATH environment variable
|
||||||
(more than 255 characters) would be completely ignored.
|
(more than 255 characters) would be completely ignored.
|
||||||
|
|
||||||
- Issue #4547: When debugging a very large function, it was not always
|
- Issue #4547: When debugging a very large function, it was not always
|
||||||
possible to update the lineno attribute of the current frame.
|
possible to update the lineno attribute of the current frame.
|
||||||
|
|
||||||
- Issue #5330: C functions called with keyword arguments were not reported by
|
- Issue #5330: C functions called with keyword arguments were not reported by
|
||||||
the various profiling modules (profile, cProfile). Patch by Hagen Fürstenau.
|
the various profiling modules (profile, cProfile). Patch by Hagen Fürstenau.
|
||||||
|
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
- Issue #6438: Fixed distutils.cygwinccompiler.get_versions : the regular
|
- Issue #6438: Fixed distutils.cygwinccompiler.get_versions : the regular
|
||||||
expression string pattern was trying to match against a bytes returned by
|
expression string pattern was trying to match against a bytes returned by
|
||||||
Popen. Tested under win32 to build the py-postgresql project.
|
Popen. Tested under win32 to build the py-postgresql project.
|
||||||
|
|
||||||
- Issue #6258: Support AMD64 in bdist_msi.
|
- Issue #6258: Support AMD64 in bdist_msi.
|
||||||
|
|
||||||
- Issue #6195: fixed doctest to no longer try to read 'source' data from
|
- Issue #6195: fixed doctest to no longer try to read 'source' data from
|
||||||
binary files.
|
binary files.
|
||||||
|
|
||||||
- Issue #5262: Fixed bug in next rollover time computation in
|
- Issue #5262: Fixed bug in next rollover time computation in
|
||||||
TimedRotatingFileHandler.
|
TimedRotatingFileHandler.
|
||||||
|
|
||||||
- Issue #6217: The C implementation of io.TextIOWrapper didn't include the
|
- Issue #6217: The C implementation of io.TextIOWrapper didn't include the
|
||||||
errors property. Additionally, the errors and encoding properties of StringIO
|
errors property. Additionally, the errors and encoding properties of StringIO
|
||||||
are always None now.
|
are always None now.
|
||||||
|
|
||||||
- Issue #6137: The pickle module now translates module names when loading
|
- Issue #6137: The pickle module now translates module names when loading
|
||||||
or dumping pickles with a 2.x-compatible protocol, in order to make data
|
or dumping pickles with a 2.x-compatible protocol, in order to make data
|
||||||
sharing and migration easier. This behaviour can be disabled using the
|
sharing and migration easier. This behaviour can be disabled using the
|
||||||
new `fix_imports` optional argument.
|
new `fix_imports` optional argument.
|
||||||
|
|
||||||
- Removed the ipaddr module.
|
- Removed the ipaddr module.
|
||||||
|
|
||||||
- Issue #3613: base64.{encode,decode}string are now called
|
- Issue #3613: base64.{encode,decode}string are now called
|
||||||
base64.{encode,decode}bytes which reflects what type they accept and return.
|
base64.{encode,decode}bytes which reflects what type they accept and return.
|
||||||
The old names are still there as deprecated aliases.
|
The old names are still there as deprecated aliases.
|
||||||
|
|
||||||
- Issue #5767: Remove sgmlop support from xmlrpc.client.
|
- Issue #5767: Remove sgmlop support from xmlrpc.client.
|
||||||
|
|
||||||
- Issue #6150: Fix test_unicode on wide-unicode builds.
|
- Issue #6150: Fix test_unicode on wide-unicode builds.
|
||||||
|
|
||||||
- Issue #6149: Fix initialization of WeakValueDictionary objects from non-empty
|
- Issue #6149: Fix initialization of WeakValueDictionary objects from non-empty
|
||||||
parameters.
|
parameters.
|
||||||
|
|
||||||
Windows
|
Windows
|
||||||
-------
|
-------
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue