diff options
author | Michał Górny <mgorny@gentoo.org> | 2022-05-21 12:04:05 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2022-05-21 13:22:21 +0200 |
commit | 6e2a43a2c30bbfd1ea2f2c4b25e80519cf150231 (patch) | |
tree | 1239cd5dc18c47e1b8b17dd2333781a62927bd3b /dev-python/fixtures | |
parent | dev-python/extras: Enable py3.11 (diff) | |
download | gentoo-6e2a43a2c30bbfd1ea2f2c4b25e80519cf150231.tar.gz gentoo-6e2a43a2c30bbfd1ea2f2c4b25e80519cf150231.tar.bz2 gentoo-6e2a43a2c30bbfd1ea2f2c4b25e80519cf150231.zip |
dev-python/fixtures: Enable py3.11
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'dev-python/fixtures')
-rw-r--r-- | dev-python/fixtures/files/fixtures-4.0.0-py311.patch | 116 | ||||
-rw-r--r-- | dev-python/fixtures/fixtures-4.0.0.ebuild | 3 |
2 files changed, 118 insertions, 1 deletions
diff --git a/dev-python/fixtures/files/fixtures-4.0.0-py311.patch b/dev-python/fixtures/files/fixtures-4.0.0-py311.patch new file mode 100644 index 000000000000..6cda1104afca --- /dev/null +++ b/dev-python/fixtures/files/fixtures-4.0.0-py311.patch @@ -0,0 +1,116 @@ +From 54ef596952d459d605fcb40f13bed6d07ef93f4c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org> +Date: Sat, 21 May 2022 12:15:21 +0200 +Subject: [PATCH 1/2] Update classmethod expectations (again) for Python 3.11 + +It seems that the classmethod behavior in Python 3.11.0b1 is back +to the one found in Python 3.8. Adjust the test expectations again. +This time around, we expect the "old-new" behavior in CPython 3.9 +and 3.10 only. +--- + fixtures/tests/_fixtures/test_monkeypatch.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/fixtures/tests/_fixtures/test_monkeypatch.py b/fixtures/tests/_fixtures/test_monkeypatch.py +index 08cd1c8..fa08b24 100644 +--- a/fixtures/tests/_fixtures/test_monkeypatch.py ++++ b/fixtures/tests/_fixtures/test_monkeypatch.py +@@ -24,7 +24,8 @@ from fixtures import MonkeyPatch, TestWithFixtures + reference = 23 + + NEW_PY39_CLASSMETHOD = ( +- sys.version_info >= (3, 9) and not hasattr(sys, "pypy_version_info")) ++ sys.version_info[:2] in ((3, 9), (3,10)) ++ and not hasattr(sys, "pypy_version_info")) + + class C(object): + def foo(self, arg): +-- +2.35.1 + +From 48d8626168a374c099fa891d7e734548e1e03683 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org> +Date: Sat, 21 May 2022 12:25:49 +0200 +Subject: [PATCH 2/2] Support Popen's process_group argument from Python 3.11 + +--- + fixtures/_fixtures/popen.py | 9 +++++++-- + fixtures/tests/_fixtures/test_popen.py | 14 ++++++++++++++ + 2 files changed, 21 insertions(+), 2 deletions(-) + +diff --git a/fixtures/_fixtures/popen.py b/fixtures/_fixtures/popen.py +index ffa9bf4..a099854 100644 +--- a/fixtures/_fixtures/popen.py ++++ b/fixtures/_fixtures/popen.py +@@ -131,7 +131,8 @@ class FakePopen(Fixture): + restore_signals=_unpassed, start_new_session=_unpassed, + pass_fds=_unpassed, *, group=_unpassed, extra_groups=_unpassed, + user=_unpassed, umask=_unpassed, encoding=_unpassed, +- errors=_unpassed, text=_unpassed, pipesize=_unpassed): ++ errors=_unpassed, text=_unpassed, pipesize=_unpassed, ++ process_group=_unpassed): + # Reject arguments introduced by newer versions of Python in older + # versions; this makes it harder to accidentally hide compatibility + # problems using test doubles. +@@ -149,6 +150,10 @@ class FakePopen(Fixture): + raise TypeError( + "FakePopen.__call__() got an unexpected keyword argument " + "'pipesize'") ++ if sys.version_info < (3, 11) and process_group is not FakePopen._unpassed: ++ raise TypeError( ++ "FakePopen.__call__() got an unexpected keyword argument " ++ "'process_group'") + + proc_args = dict(args=args) + local = locals() +@@ -158,7 +163,7 @@ class FakePopen(Fixture): + "universal_newlines", "startupinfo", "creationflags", + "restore_signals", "start_new_session", "pass_fds", "group", + "extra_groups", "user", "umask", "encoding", "errors", "text", +- "pipesize"]: ++ "pipesize", "process_group"]: + if local[param] is not FakePopen._unpassed: + proc_args[param] = local[param] + proc_info = self.get_info(proc_args) +diff --git a/fixtures/tests/_fixtures/test_popen.py b/fixtures/tests/_fixtures/test_popen.py +index c7bf1bd..e9ab074 100644 +--- a/fixtures/tests/_fixtures/test_popen.py ++++ b/fixtures/tests/_fixtures/test_popen.py +@@ -74,6 +74,8 @@ class TestFakePopen(testtools.TestCase, TestWithFixtures): + all_args["umask"] = "umask" + if sys.version_info >= (3, 10): + all_args["pipesize"] = "pipesize" ++ if sys.version_info >= (3, 11): ++ all_args["process_group"] = "process_group" + + def get_info(proc_args): + self.assertEqual(all_args, proc_args) +@@ -110,6 +112,15 @@ class TestFakePopen(testtools.TestCase, TestWithFixtures): + r".* got an unexpected keyword argument 'pipesize'"): + fixture(args="args", pipesize=1024) + ++ @testtools.skipUnless( ++ sys.version_info < (3, 11), "only relevant on Python <3.11") ++ def test_rejects_3_11_args_on_older_versions(self): ++ fixture = self.useFixture(FakePopen(lambda proc_args: {})) ++ with testtools.ExpectedException( ++ TypeError, ++ r".* got an unexpected keyword argument 'process_group'"): ++ fixture(args="args", process_group=42) ++ + def test_function_signature(self): + fake_signature = inspect.getfullargspec(FakePopen.__call__) + real_signature = inspect.getfullargspec(subprocess.Popen) +@@ -130,6 +141,9 @@ class TestFakePopen(testtools.TestCase, TestWithFixtures): + fake_kwargs = set(fake_signature.kwonlyargs) + real_kwargs = set(real_signature.kwonlyargs) + ++ if sys.version_info < (3, 11): ++ fake_kwargs.remove('process_group') ++ + if sys.version_info < (3, 10): + fake_kwargs.remove('pipesize') + +-- +2.35.1 + diff --git a/dev-python/fixtures/fixtures-4.0.0.ebuild b/dev-python/fixtures/fixtures-4.0.0.ebuild index 1d98ba1aaa0f..130f578e533f 100644 --- a/dev-python/fixtures/fixtures-4.0.0.ebuild +++ b/dev-python/fixtures/fixtures-4.0.0.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=pbr -PYTHON_COMPAT=( python3_{8..10} pypy3 ) +PYTHON_COMPAT=( python3_{8..11} pypy3 ) inherit distutils-r1 @@ -33,4 +33,5 @@ distutils_enable_tests unittest PATCHES=( "${FILESDIR}"/${P}-pypy39.patch + "${FILESDIR}"/${P}-py311.patch ) |