From a087033b0b9b763c2284af4d90e4abf6ebea32b4 Mon Sep 17 00:00:00 2001 From: Thomas Grainger Date: Fri, 28 Mar 2025 14:55:40 +0000 Subject: [PATCH] gh-131807: fix ResourceWarning in test_ucn.py (GH-131808) (cherry picked from commit adb67ed7e465410829ac0b1f903ec5678e0e51cc) Co-authored-by: Thomas Grainger Co-authored-by: Victor Stinner --- Lib/test/test_ucn.py | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/Lib/test/test_ucn.py b/Lib/test/test_ucn.py index cbfd5af2bb751c..0e2c25aaff2fe9 100644 --- a/Lib/test/test_ucn.py +++ b/Lib/test/test_ucn.py @@ -10,6 +10,7 @@ import ast import unittest import unicodedata +import urllib.error from test import support from http.client import HTTPException @@ -181,20 +182,23 @@ def check_version(testfile): try: testdata = support.open_urlresource(url, encoding="utf-8", check=check_version) - except (OSError, HTTPException): - self.skipTest("Could not retrieve " + url) - self.addCleanup(testdata.close) - for line in testdata: - line = line.strip() - if not line or line.startswith('#'): - continue - seqname, codepoints = line.split(';') - codepoints = ''.join(chr(int(cp, 16)) for cp in codepoints.split()) - self.assertEqual(unicodedata.lookup(seqname), codepoints) - with self.assertRaises(SyntaxError): - self.checkletter(seqname, None) - with self.assertRaises(KeyError): - unicodedata.ucd_3_2_0.lookup(seqname) + except urllib.error.HTTPError as exc: + exc.close() + self.skipTest(f"Could not retrieve {url}: {exc!r}") + except (OSError, HTTPException) as exc: + self.skipTest(f"Could not retrieve {url}: {exc!r}") + with testdata: + for line in testdata: + line = line.strip() + if not line or line.startswith('#'): + continue + seqname, codepoints = line.split(';') + codepoints = ''.join(chr(int(cp, 16)) for cp in codepoints.split()) + self.assertEqual(unicodedata.lookup(seqname), codepoints) + with self.assertRaises(SyntaxError): + self.checkletter(seqname, None) + with self.assertRaises(KeyError): + unicodedata.ucd_3_2_0.lookup(seqname) def test_errors(self): self.assertRaises(TypeError, unicodedata.name)