From c7d98564d0bf64e6fde26192c550f5200f267560 Mon Sep 17 00:00:00 2001 From: "Dr. Jens Harbott" Date: Tue, 18 Jun 2024 07:52:07 +0200 Subject: [PATCH] Fix pkg_resources exception handling for py312 The exception that is generated on parsing errors has changed in Python 3.12, match on the generic ValueError instead. Also switch to using the simpler assertRaises() call instead of explicitly dealing with exceptions. Note that this is just a temporary workaround, we should really move away for using pkg_resources completely, see [0] and [1]. [0] https://setuptools.pypa.io/en/latest/pkg_resources.html [1] https://importlib-resources.readthedocs.io/en/latest/migration.html Change-Id: I20422194f6fc6d1c4ba49da754a2c3aab99a282c --- .../tests/test_requirement.py | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/openstack_requirements/tests/test_requirement.py b/openstack_requirements/tests/test_requirement.py index 52a5776fdb..97c5130c20 100644 --- a/openstack_requirements/tests/test_requirement.py +++ b/openstack_requirements/tests/test_requirement.py @@ -12,8 +12,6 @@ import textwrap -import pkg_resources -import pkg_resources.extern.packaging.requirements as pkg_resources_reqs import testscenarios import testtools @@ -107,13 +105,7 @@ class TestParseRequirementFailures(testtools.TestCase): ('-f', dict(line='-f http://tarballs.openstack.org/'))] def test_does_not_parse(self): - try: - requirement.parse_line(self.line) - except (pkg_resources.RequirementParseError, - pkg_resources_reqs.InvalidRequirement): - pass - else: - self.fail('No exception triggered') + self.assertRaises(ValueError, requirement.parse_line, self.line) class TestToContent(testtools.TestCase): @@ -153,13 +145,8 @@ class TestToReqs(testtools.TestCase): self.assertEqual(reqs, [(req, line)]) def test_not_urls(self): - try: - list(requirement.to_reqs('file:///foo#egg=foo')) - except (pkg_resources.RequirementParseError, - pkg_resources_reqs.InvalidRequirement): - pass - else: - self.fail('No exception triggered') + self.assertRaises( + ValueError, list, requirement.to_reqs('file:///foo#egg=foo')) def test_multiline(self): content = textwrap.dedent("""\