summaryrefslogtreecommitdiff
path: root/dev-python/fixtures/files/fixtures-4.0.0-py311.patch
blob: 6cda1104afcadf6fbbdd966f122e679afa694aff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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