commit:     9a16f9f89174086c6a8b9aae84436bb5ee31c4ea
Author:     Louis Sautier <sbraz <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 21 18:35:57 2021 +0000
Commit:     Louis Sautier <sbraz <AT> gentoo <DOT> org>
CommitDate: Sat Aug 21 18:35:59 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9a16f9f8

dev-python/testfixtures: enable py3.10

Signed-off-by: Louis Sautier <sbraz <AT> gentoo.org>

 .../files/testfixtures-6.18.1-py3.10.patch         | 172 +++++++++++++++++++++
 dev-python/testfixtures/testfixtures-6.18.1.ebuild |   7 +-
 2 files changed, 178 insertions(+), 1 deletion(-)

diff --git a/dev-python/testfixtures/files/testfixtures-6.18.1-py3.10.patch 
b/dev-python/testfixtures/files/testfixtures-6.18.1-py3.10.patch
new file mode 100644
index 00000000000..cd1ecbd8133
--- /dev/null
+++ b/dev-python/testfixtures/files/testfixtures-6.18.1-py3.10.patch
@@ -0,0 +1,172 @@
+From 8fb2122eea0f1d0de1ccca7a3a0f5426bc6d4964 Mon Sep 17 00:00:00 2001
+From: Louis Sautier <sautier.lo...@gmail.com>
+Date: Sat, 21 Aug 2021 03:00:51 +0200
+Subject: [PATCH] tests: fix with Python 3.10 (changed exception messages)
+
+---
+ testfixtures/compat.py             |  1 +
+ testfixtures/tests/test_popen.py   | 41 ++++++++++++++++++------------
+ testfixtures/tests/test_replace.py | 24 ++++++++++-------
+ 3 files changed, 41 insertions(+), 25 deletions(-)
+
+diff --git a/testfixtures/compat.py b/testfixtures/compat.py
+index 1042d27..ca00f32 100644
+--- a/testfixtures/compat.py
++++ b/testfixtures/compat.py
+@@ -5,6 +5,7 @@
+ 
+ PY_36_PLUS = PY_VERSION >= (3, 6)
+ PY_37_PLUS = PY_VERSION >= (3, 7)
++PY_310_PLUS = PY_VERSION >= (3, 10)
+ 
+ 
+ if PY_VERSION > (3, 0):
+diff --git a/testfixtures/tests/test_popen.py 
b/testfixtures/tests/test_popen.py
+index aa211da..4ec3186 100644
+--- a/testfixtures/tests/test_popen.py
++++ b/testfixtures/tests/test_popen.py
+@@ -6,7 +6,7 @@
+ from testfixtures import ShouldRaise, compare, Replacer
+ 
+ from testfixtures.popen import MockPopen, PopenBehaviour
+-from testfixtures.compat import BytesLiteral, PY2
++from testfixtures.compat import BytesLiteral, PY2, PY_310_PLUS
+ 
+ import signal
+ 
+@@ -471,10 +471,11 @@ def test_default_command_max_args(self):
+         ], Popen.mock.method_calls)
+ 
+     def test_invalid_parameters(self):
++        message = "__init__() got an unexpected keyword argument 'foo'"
++        if PY_310_PLUS:
++            message = "MockPopenInstance." + message
+         Popen = MockPopen()
+-        with ShouldRaise(TypeError(
+-                "__init__() got an unexpected keyword argument 'foo'"
+-        )):
++        with ShouldRaise(TypeError(message)):
+             Popen(foo='bar')
+ 
+     def test_invalid_method_or_attr(self):
+@@ -492,39 +493,43 @@ def test_invalid_attribute(self):
+             process.foo
+ 
+     def test_invalid_communicate_call(self):
++        message = "communicate() got an unexpected keyword argument 'foo'"
++        if PY_310_PLUS:
++            message = "MockPopenInstance." + message
+         Popen = MockPopen()
+         Popen.set_command('bar')
+         process = Popen('bar')
+-        with ShouldRaise(TypeError(
+-                "communicate() got an unexpected keyword argument 'foo'"
+-        )):
++        with ShouldRaise(TypeError(message)):
+             process.communicate(foo='bar')
+ 
+     def test_invalid_wait_call(self):
++        message = "wait() got an unexpected keyword argument 'foo'"
++        if PY_310_PLUS:
++            message = "MockPopenInstance." + message
+         Popen = MockPopen()
+         Popen.set_command('bar')
+         process = Popen('bar')
+-        with ShouldRaise(TypeError(
+-                "wait() got an unexpected keyword argument 'foo'"
+-        )):
++        with ShouldRaise(TypeError(message)):
+             process.wait(foo='bar')
+ 
+     def test_invalid_send_signal(self):
++        message = "send_signal() got an unexpected keyword argument 'foo'"
++        if PY_310_PLUS:
++            message = "MockPopenInstance." + message
+         Popen = MockPopen()
+         Popen.set_command('bar')
+         process = Popen('bar')
+-        with ShouldRaise(TypeError(
+-                "send_signal() got an unexpected keyword argument 'foo'"
+-        )):
++        with ShouldRaise(TypeError(message)):
+             process.send_signal(foo='bar')
+ 
+     def test_invalid_terminate(self):
++        message = "terminate() got an unexpected keyword argument 'foo'"
++        if PY_310_PLUS:
++            message = "MockPopenInstance." + message
+         Popen = MockPopen()
+         Popen.set_command('bar')
+         process = Popen('bar')
+-        with ShouldRaise(TypeError(
+-                "terminate() got an unexpected keyword argument 'foo'"
+-        )):
++        with ShouldRaise(TypeError(message)):
+             process.terminate(foo='bar')
+ 
+     def test_invalid_kill(self):
+@@ -535,6 +540,8 @@ def test_invalid_kill(self):
+             text = 'kill() takes exactly 1 argument (2 given)'
+         else:
+             text = 'kill() takes 1 positional argument but 2 were given'
++            if PY_310_PLUS:
++                text = "MockPopenInstance." + text
+         with ShouldRaise(TypeError(text)):
+             process.kill('moo')
+ 
+@@ -546,6 +553,8 @@ def test_invalid_poll(self):
+             text = 'poll() takes exactly 1 argument (2 given)'
+         else:
+             text = 'poll() takes 1 positional argument but 2 were given'
++            if PY_310_PLUS:
++                text = "MockPopenInstance." + text
+         with ShouldRaise(TypeError(text)):
+             process.poll('moo')
+ 
+diff --git a/testfixtures/tests/test_replace.py 
b/testfixtures/tests/test_replace.py
+index 5a77e23..d3544a8 100644
+--- a/testfixtures/tests/test_replace.py
++++ b/testfixtures/tests/test_replace.py
+@@ -13,7 +13,7 @@
+ 
+ from testfixtures.tests import sample1
+ from testfixtures.tests import sample2
+-from ..compat import PY3
++from ..compat import PY3, PY_310_PLUS
+ 
+ from warnings import catch_warnings
+ 
+@@ -259,19 +259,25 @@ def test_something(obj):
+         self.failIf(hasattr(sample1, 'foo'))
+ 
+     def test_replace_delattr_cant_remove(self):
++        if PY_310_PLUS:
++            message = "cannot set 'today' attribute of " \
++                      "immutable type 'datetime.datetime'"
++        else:
++            message = "can't set attributes of " \
++                      "built-in/extension type 'datetime.datetime'"
+         with Replacer() as r:
+-            with ShouldRaise(TypeError(
+-                "can't set attributes of "
+-                "built-in/extension type 'datetime.datetime'"
+-                    )):
++            with ShouldRaise(TypeError(message)):
+                 r.replace('datetime.datetime.today', not_there)
+ 
+     def test_replace_delattr_cant_remove_not_strict(self):
++        if PY_310_PLUS:
++            message = "cannot set 'today' attribute of " \
++                      "immutable type 'datetime.datetime'"
++        else:
++            message = "can't set attributes of " \
++                      "built-in/extension type 'datetime.datetime'"
+         with Replacer() as r:
+-            with ShouldRaise(TypeError(
+-                "can't set attributes of "
+-                "built-in/extension type 'datetime.datetime'"
+-                    )):
++            with ShouldRaise(TypeError(message)):
+                 r.replace('datetime.datetime.today', not_there, strict=False)
+ 
+     def test_replace_dict_remove_key(self):

diff --git a/dev-python/testfixtures/testfixtures-6.18.1.ebuild 
b/dev-python/testfixtures/testfixtures-6.18.1.ebuild
index a0872c1838e..09d57b662b8 100644
--- a/dev-python/testfixtures/testfixtures-6.18.1.ebuild
+++ b/dev-python/testfixtures/testfixtures-6.18.1.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=8
 
-PYTHON_COMPAT=( python3_{8..9} )
+PYTHON_COMPAT=( python3_{8..10} )
 inherit distutils-r1
 
 DESCRIPTION="A collection of helpers and mock objects for unit tests and doc 
tests"
@@ -27,6 +27,11 @@ BDEPEND="
 distutils_enable_sphinx docs
 distutils_enable_tests pytest
 
+PATCHES=(
+       # 
https://github.com/Simplistix/testfixtures/commit/8fb2122eea0f1d0de1ccca7a3a0f5426bc6d4964
+       "${FILESDIR}/${P}-py3.10.patch"
+)
+
 python_prepare_all() {
        # kill weird way of declaring build deps
        sed -e '/build=/d' -i setup.py || die

Reply via email to