From 8fb2122eea0f1d0de1ccca7a3a0f5426bc6d4964 Mon Sep 17 00:00:00 2001 From: Louis Sautier 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):