mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
Branch merge
This commit is contained in:
commit
cf534817ad
25 changed files with 451 additions and 379 deletions
|
@ -1234,7 +1234,7 @@ class CodecsModuleTest(unittest.TestCase):
|
|||
def test_lookup_issue1813(self):
|
||||
# Issue #1813: under Turkish locales, lookup of some codecs failed
|
||||
# because 'I' is lowercased as "ı" (dotless i)
|
||||
oldlocale = locale.getlocale(locale.LC_CTYPE)
|
||||
oldlocale = locale.setlocale(locale.LC_CTYPE)
|
||||
self.addCleanup(locale.setlocale, locale.LC_CTYPE, oldlocale)
|
||||
try:
|
||||
locale.setlocale(locale.LC_CTYPE, 'tr_TR')
|
||||
|
|
|
@ -393,16 +393,16 @@ class TestMiscellaneous(unittest.TestCase):
|
|||
|
||||
def test_getsetlocale_issue1813(self):
|
||||
# Issue #1813: setting and getting the locale under a Turkish locale
|
||||
oldlocale = locale.getlocale()
|
||||
oldlocale = locale.setlocale(locale.LC_CTYPE)
|
||||
self.addCleanup(locale.setlocale, locale.LC_CTYPE, oldlocale)
|
||||
try:
|
||||
locale.setlocale(locale.LC_CTYPE, 'tr_TR')
|
||||
except locale.Error:
|
||||
# Unsupported locale on this system
|
||||
self.skipTest('test needs Turkish locale')
|
||||
loc = locale.getlocale()
|
||||
loc = locale.getlocale(locale.LC_CTYPE)
|
||||
locale.setlocale(locale.LC_CTYPE, loc)
|
||||
self.assertEqual(loc, locale.getlocale())
|
||||
self.assertEqual(loc, locale.getlocale(locale.LC_CTYPE))
|
||||
|
||||
|
||||
def test_main():
|
||||
|
|
|
@ -12,10 +12,12 @@ import os
|
|||
import pwd
|
||||
import shutil
|
||||
import stat
|
||||
import tempfile
|
||||
import unittest
|
||||
import warnings
|
||||
|
||||
_DUMMY_SYMLINK = '%s/dummy-symlink' % os.getenv('TMPDIR', '/tmp')
|
||||
_DUMMY_SYMLINK = os.path.join(tempfile.gettempdir(),
|
||||
support.TESTFN + '-dummy-symlink')
|
||||
|
||||
class PosixTester(unittest.TestCase):
|
||||
|
||||
|
|
|
@ -1106,6 +1106,64 @@ class POSIXProcessTestCase(BaseTestCase):
|
|||
for fd in temp_fds:
|
||||
os.close(fd)
|
||||
|
||||
def check_swap_fds(self, stdin_no, stdout_no, stderr_no):
|
||||
# open up some temporary files
|
||||
temps = [mkstemp() for i in range(3)]
|
||||
temp_fds = [fd for fd, fname in temps]
|
||||
try:
|
||||
# unlink the files -- we won't need to reopen them
|
||||
for fd, fname in temps:
|
||||
os.unlink(fname)
|
||||
|
||||
# save a copy of the standard file descriptors
|
||||
saved_fds = [os.dup(fd) for fd in range(3)]
|
||||
try:
|
||||
# duplicate the temp files over the standard fd's 0, 1, 2
|
||||
for fd, temp_fd in enumerate(temp_fds):
|
||||
os.dup2(temp_fd, fd)
|
||||
|
||||
# write some data to what will become stdin, and rewind
|
||||
os.write(stdin_no, b"STDIN")
|
||||
os.lseek(stdin_no, 0, 0)
|
||||
|
||||
# now use those files in the given order, so that subprocess
|
||||
# has to rearrange them in the child
|
||||
p = subprocess.Popen([sys.executable, "-c",
|
||||
'import sys; got = sys.stdin.read();'
|
||||
'sys.stdout.write("got %s"%got); sys.stderr.write("err")'],
|
||||
stdin=stdin_no,
|
||||
stdout=stdout_no,
|
||||
stderr=stderr_no)
|
||||
p.wait()
|
||||
|
||||
for fd in temp_fds:
|
||||
os.lseek(fd, 0, 0)
|
||||
|
||||
out = os.read(stdout_no, 1024)
|
||||
err = support.strip_python_stderr(os.read(stderr_no, 1024))
|
||||
finally:
|
||||
for std, saved in enumerate(saved_fds):
|
||||
os.dup2(saved, std)
|
||||
os.close(saved)
|
||||
|
||||
self.assertEqual(out, b"got STDIN")
|
||||
self.assertEqual(err, b"err")
|
||||
|
||||
finally:
|
||||
for fd in temp_fds:
|
||||
os.close(fd)
|
||||
|
||||
# When duping fds, if there arises a situation where one of the fds is
|
||||
# either 0, 1 or 2, it is possible that it is overwritten (#12607).
|
||||
# This tests all combinations of this.
|
||||
def test_swap_fds(self):
|
||||
self.check_swap_fds(0, 1, 2)
|
||||
self.check_swap_fds(0, 2, 1)
|
||||
self.check_swap_fds(1, 0, 2)
|
||||
self.check_swap_fds(1, 2, 0)
|
||||
self.check_swap_fds(2, 0, 1)
|
||||
self.check_swap_fds(2, 1, 0)
|
||||
|
||||
def test_surrogates_error_message(self):
|
||||
def prepare():
|
||||
raise ValueError("surrogate:\uDCff")
|
||||
|
|
|
@ -174,6 +174,22 @@ class OtherNetworkTests(unittest.TestCase):
|
|||
opener.open(request)
|
||||
self.assertEqual(request.get_header('User-agent'),'Test-Agent')
|
||||
|
||||
def test_sites_no_connection_close(self):
|
||||
# Some sites do not send Connection: close header.
|
||||
# Verify that those work properly. (#issue12576)
|
||||
|
||||
try:
|
||||
with urllib.request.urlopen('http://www.imdb.com') as res:
|
||||
pass
|
||||
except ValueError as e:
|
||||
self.fail("urlopen failed for sites not sending Connection:close")
|
||||
else:
|
||||
self.assertTrue(res)
|
||||
|
||||
req = urllib.request.urlopen('http://www.imdb.com')
|
||||
res = req.read()
|
||||
self.assertTrue(res)
|
||||
|
||||
def _test_urls(self, urls, handlers, retry=True):
|
||||
import time
|
||||
import logging
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue