Skip to content

Commit ef6af61

Browse files
committed
pythongh-92613: Silence uu-codec-related deprecation warnings in tests
1 parent e2fd5f6 commit ef6af61

File tree

2 files changed

+40
-16
lines changed

2 files changed

+40
-16
lines changed

Lib/test/test_codecs.py

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from unittest import mock
99

1010
from test import support
11-
from test.support import os_helper
11+
from test.support import os_helper, warnings_helper
1212

1313
try:
1414
import _testcapi
@@ -2711,6 +2711,11 @@ def test_seek0(self):
27112711
"rot_13": ["rot13"],
27122712
}
27132713

2714+
deprecated_transforms = {
2715+
"uu_codec",
2716+
}
2717+
2718+
27142719
try:
27152720
import zlib
27162721
except ImportError:
@@ -2727,33 +2732,45 @@ def test_seek0(self):
27272732
transform_aliases["bz2_codec"] = ["bz2"]
27282733

27292734

2735+
def _check_transform_warning(encoding):
2736+
"""Helper to check that deprecated transforms warn and silence them."""
2737+
if encoding not in deprecated_transforms:
2738+
return contextlib.nullcontext()
2739+
return warnings_helper.check_warnings(
2740+
(f".*({encoding}).*", DeprecationWarning))
2741+
2742+
27302743
class TransformCodecTest(unittest.TestCase):
27312744

27322745
def test_basics(self):
27332746
binput = bytes(range(256))
27342747
for encoding in bytes_transform_encodings:
27352748
with self.subTest(encoding=encoding):
27362749
# generic codecs interface
2737-
(o, size) = codecs.getencoder(encoding)(binput)
2750+
with _check_transform_warning(encoding):
2751+
(o, size) = codecs.getencoder(encoding)(binput)
27382752
self.assertEqual(size, len(binput))
2739-
(i, size) = codecs.getdecoder(encoding)(o)
2753+
with _check_transform_warning(encoding):
2754+
(i, size) = codecs.getdecoder(encoding)(o)
27402755
self.assertEqual(size, len(o))
27412756
self.assertEqual(i, binput)
27422757

27432758
def test_read(self):
27442759
for encoding in bytes_transform_encodings:
27452760
with self.subTest(encoding=encoding):
2746-
sin = codecs.encode(b"\x80", encoding)
2747-
reader = codecs.getreader(encoding)(io.BytesIO(sin))
2748-
sout = reader.read()
2761+
with _check_transform_warning(encoding):
2762+
sin = codecs.encode(b"\x80", encoding)
2763+
reader = codecs.getreader(encoding)(io.BytesIO(sin))
2764+
sout = reader.read()
27492765
self.assertEqual(sout, b"\x80")
27502766

27512767
def test_readline(self):
27522768
for encoding in bytes_transform_encodings:
27532769
with self.subTest(encoding=encoding):
2754-
sin = codecs.encode(b"\x80", encoding)
2755-
reader = codecs.getreader(encoding)(io.BytesIO(sin))
2756-
sout = reader.readline()
2770+
with _check_transform_warning(encoding):
2771+
sin = codecs.encode(b"\x80", encoding)
2772+
reader = codecs.getreader(encoding)(io.BytesIO(sin))
2773+
sout = reader.readline()
27572774
self.assertEqual(sout, b"\x80")
27582775

27592776
def test_buffer_api_usage(self):
@@ -2765,13 +2782,16 @@ def test_buffer_api_usage(self):
27652782
with self.subTest(encoding=encoding):
27662783
data = original
27672784
view = memoryview(data)
2768-
data = codecs.encode(data, encoding)
2769-
view_encoded = codecs.encode(view, encoding)
2785+
with _check_transform_warning(encoding):
2786+
data = codecs.encode(data, encoding)
2787+
view_encoded = codecs.encode(view, encoding)
27702788
self.assertEqual(view_encoded, data)
27712789
view = memoryview(data)
2772-
data = codecs.decode(data, encoding)
2790+
with _check_transform_warning(encoding):
2791+
data = codecs.decode(data, encoding)
27732792
self.assertEqual(data, original)
2774-
view_decoded = codecs.decode(view, encoding)
2793+
with _check_transform_warning(encoding):
2794+
view_decoded = codecs.decode(view, encoding)
27752795
self.assertEqual(view_decoded, data)
27762796

27772797
def test_text_to_binary_denylists_binary_transforms(self):
@@ -2799,7 +2819,8 @@ def test_binary_to_text_denylists_binary_transforms(self):
27992819
data = b"encode first to ensure we meet any format restrictions"
28002820
for encoding in bytes_transform_encodings:
28012821
with self.subTest(encoding=encoding):
2802-
encoded_data = codecs.encode(data, encoding)
2822+
with _check_transform_warning(encoding):
2823+
encoded_data = codecs.encode(data, encoding)
28032824
fmt = (r"{!r} is not a text encoding; "
28042825
r"use codecs.decode\(\) to handle arbitrary codecs")
28052826
msg = fmt.format(encoding)
@@ -2857,7 +2878,8 @@ def test_quopri_stateless(self):
28572878

28582879
def test_uu_invalid(self):
28592880
# Missing "begin" line
2860-
self.assertRaises(ValueError, codecs.decode, b"", "uu-codec")
2881+
with _check_transform_warning("uu_codec"):
2882+
self.assertRaises(ValueError, codecs.decode, b"", "uu-codec")
28612883

28622884

28632885
# The codec system tries to wrap exceptions in order to ensure the error

Lib/test/test_uu.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,9 @@ def test_garbage_padding(self):
135135

136136
with self.subTest("uu_codec"):
137137
import codecs
138-
decoded = codecs.decode(encodedtext, "uu_codec")
138+
with warnings_helper.check_warnings(
139+
(".*uu_codec.*", DeprecationWarning)):
140+
decoded = codecs.decode(encodedtext, "uu_codec")
139141
self.assertEqual(decoded, plaintext)
140142

141143
def test_newlines_escaped(self):

0 commit comments

Comments
 (0)