Commit 040e16e3 authored by Victor Stinner's avatar Victor Stinner

"unicode_internal" codec has been deprecated: fix related tests

parent 8ab440e4
import test.support, unittest import codecs
import sys, codecs, html.entities, unicodedata import html.entities
import sys
import test.support
import unicodedata
import unittest
import warnings
try: try:
import ctypes import ctypes
...@@ -621,12 +626,15 @@ class CodecCallbackTest(unittest.TestCase): ...@@ -621,12 +626,15 @@ class CodecCallbackTest(unittest.TestCase):
("utf-7", b"+x-"), ("utf-7", b"+x-"),
("unicode-internal", b"\x00"), ("unicode-internal", b"\x00"),
): ):
self.assertRaises( with warnings.catch_warnings():
TypeError, # unicode-internal has been deprecated
bytes.decode, warnings.simplefilter("ignore", DeprecationWarning)
enc, self.assertRaises(
"test.badhandler" TypeError,
) bytes.decode,
enc,
"test.badhandler"
)
def test_lookup(self): def test_lookup(self):
self.assertEqual(codecs.strict_errors, codecs.lookup_error("strict")) self.assertEqual(codecs.strict_errors, codecs.lookup_error("strict"))
...@@ -842,8 +850,11 @@ class CodecCallbackTest(unittest.TestCase): ...@@ -842,8 +850,11 @@ class CodecCallbackTest(unittest.TestCase):
else: else:
raise TypeError("don't know how to handle %r" % exc) raise TypeError("don't know how to handle %r" % exc)
codecs.register_error("test.replacing", replacing) codecs.register_error("test.replacing", replacing)
for (encoding, data) in baddata: with warnings.catch_warnings():
self.assertRaises(TypeError, data.decode, encoding, "test.replacing") # unicode-internal has been deprecated
warnings.simplefilter("ignore", DeprecationWarning)
for (encoding, data) in baddata:
self.assertRaises(TypeError, data.decode, encoding, "test.replacing")
def mutating(exc): def mutating(exc):
if isinstance(exc, UnicodeDecodeError): if isinstance(exc, UnicodeDecodeError):
......
from test import support import _testcapi
import unittest
import codecs import codecs
import io
import locale import locale
import sys, _testcapi, io import sys
import unittest
import warnings
from test import support
if sys.platform == 'win32': if sys.platform == 'win32':
VISTA_OR_LATER = (sys.getwindowsversion().major >= 6) VISTA_OR_LATER = (sys.getwindowsversion().major >= 6)
...@@ -1051,12 +1055,16 @@ class UnicodeInternalTest(unittest.TestCase): ...@@ -1051,12 +1055,16 @@ class UnicodeInternalTest(unittest.TestCase):
self.assertEqual(("ab", 12), ignored) self.assertEqual(("ab", 12), ignored)
def test_encode_length(self): def test_encode_length(self):
# Issue 3739 with warnings.catch_warnings():
encoder = codecs.getencoder("unicode_internal") # unicode-internal has been deprecated
self.assertEqual(encoder("a")[1], 1) warnings.simplefilter("ignore", DeprecationWarning)
self.assertEqual(encoder("\xe9\u0142")[1], 2)
# Issue 3739
encoder = codecs.getencoder("unicode_internal")
self.assertEqual(encoder("a")[1], 1)
self.assertEqual(encoder("\xe9\u0142")[1], 2)
self.assertEqual(codecs.escape_encode(br'\x00')[1], 4) self.assertEqual(codecs.escape_encode(br'\x00')[1], 4)
# From http://www.gnu.org/software/libidn/draft-josefsson-idn-test-vectors.html # From http://www.gnu.org/software/libidn/draft-josefsson-idn-test-vectors.html
nameprep_tests = [ nameprep_tests = [
...@@ -1512,10 +1520,15 @@ class BasicUnicodeTest(unittest.TestCase, MixInCheckStateHandling): ...@@ -1512,10 +1520,15 @@ class BasicUnicodeTest(unittest.TestCase, MixInCheckStateHandling):
elif encoding == "latin_1": elif encoding == "latin_1":
name = "latin_1" name = "latin_1"
self.assertEqual(encoding.replace("_", "-"), name.replace("_", "-")) self.assertEqual(encoding.replace("_", "-"), name.replace("_", "-"))
(b, size) = codecs.getencoder(encoding)(s)
self.assertEqual(size, len(s), "%r != %r (encoding=%r)" % (size, len(s), encoding)) with warnings.catch_warnings():
(chars, size) = codecs.getdecoder(encoding)(b) # unicode-internal has been deprecated
self.assertEqual(chars, s, "%r != %r (encoding=%r)" % (chars, s, encoding)) warnings.simplefilter("ignore", DeprecationWarning)
(b, size) = codecs.getencoder(encoding)(s)
self.assertEqual(size, len(s), "%r != %r (encoding=%r)" % (size, len(s), encoding))
(chars, size) = codecs.getdecoder(encoding)(b)
self.assertEqual(chars, s, "%r != %r (encoding=%r)" % (chars, s, encoding))
if encoding not in broken_unicode_with_streams: if encoding not in broken_unicode_with_streams:
# check stream reader/writer # check stream reader/writer
......
...@@ -5,13 +5,13 @@ Written by Marc-Andre Lemburg (mal@lemburg.com). ...@@ -5,13 +5,13 @@ Written by Marc-Andre Lemburg (mal@lemburg.com).
(c) Copyright CNRI, All Rights Reserved. NO WARRANTY. (c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
"""#" """#"
import _string
import codecs import codecs
import struct import struct
import sys import sys
import unittest import unittest
import warnings import warnings
from test import support, string_tests from test import support, string_tests
import _string
# Error handling (bad decoder return) # Error handling (bad decoder return)
def search_function(encoding): def search_function(encoding):
...@@ -1394,7 +1394,11 @@ class UnicodeTest(string_tests.CommonTest, ...@@ -1394,7 +1394,11 @@ class UnicodeTest(string_tests.CommonTest,
for encoding in ('utf-7', 'utf-8', 'utf-16', 'utf-16-le', for encoding in ('utf-7', 'utf-8', 'utf-16', 'utf-16-le',
'utf-16-be', 'raw_unicode_escape', 'utf-16-be', 'raw_unicode_escape',
'unicode_escape', 'unicode_internal'): 'unicode_escape', 'unicode_internal'):
self.assertEqual(str(u.encode(encoding),encoding), u) with warnings.catch_warnings():
# unicode-internal has been deprecated
warnings.simplefilter("ignore", DeprecationWarning)
self.assertEqual(str(u.encode(encoding),encoding), u)
# Roundtrip safety for BMP (just the first 256 chars) # Roundtrip safety for BMP (just the first 256 chars)
for c in range(256): for c in range(256):
...@@ -1409,11 +1413,15 @@ class UnicodeTest(string_tests.CommonTest, ...@@ -1409,11 +1413,15 @@ class UnicodeTest(string_tests.CommonTest,
self.assertEqual(str(u.encode(encoding),encoding), u) self.assertEqual(str(u.encode(encoding),encoding), u)
# Roundtrip safety for non-BMP (just a few chars) # Roundtrip safety for non-BMP (just a few chars)
u = '\U00010001\U00020002\U00030003\U00040004\U00050005' with warnings.catch_warnings():
for encoding in ('utf-8', 'utf-16', 'utf-16-le', 'utf-16-be', # unicode-internal has been deprecated
'raw_unicode_escape', warnings.simplefilter("ignore", DeprecationWarning)
'unicode_escape', 'unicode_internal'):
self.assertEqual(str(u.encode(encoding),encoding), u) u = '\U00010001\U00020002\U00030003\U00040004\U00050005'
for encoding in ('utf-8', 'utf-16', 'utf-16-le', 'utf-16-be',
'raw_unicode_escape',
'unicode_escape', 'unicode_internal'):
self.assertEqual(str(u.encode(encoding),encoding), u)
# UTF-8 must be roundtrip safe for all code points # UTF-8 must be roundtrip safe for all code points
# (except surrogates, which are forbidden). # (except surrogates, which are forbidden).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment