From 1341d0c372134e684a9f0b43783b95b53590c08b Mon Sep 17 00:00:00 2001 From: Miro HronĨok Date: Jun 03 2021 09:27:43 +0000 Subject: Tests: Don't mock twice With Python 3.10, we see the following errors: ====================================================================== ERROR: test_acquire_uses_specified_timeout (test.test_pidfile.TimeoutPIDLockFile_TestCase) test.test_pidfile.TimeoutPIDLockFile_TestCase.test_acquire_uses_specified_timeout ---------------------------------------------------------------------- testtools.testresult.real._StringException: Traceback (most recent call last): File "/usr/lib64/python3.10/unittest/mock.py", line 1367, in patched with self.decoration_helper(patched, File "/usr/lib64/python3.10/contextlib.py", line 133, in __enter__ return next(self.gen) File "/usr/lib64/python3.10/unittest/mock.py", line 1349, in decoration_helper arg = exit_stack.enter_context(patching) File "/usr/lib64/python3.10/contextlib.py", line 478, in enter_context result = _cm_type.__enter__(cm) File "/usr/lib64/python3.10/unittest/mock.py", line 1529, in __enter__ raise InvalidSpecError( unittest.mock.InvalidSpecError: Cannot autospec attr 'acquire' from target 'PIDLockFile' as it has already been mocked out. [target=, attr=] ====================================================================== ERROR: test_acquire_uses_stored_timeout_by_default (test.test_pidfile.TimeoutPIDLockFile_TestCase) test.test_pidfile.TimeoutPIDLockFile_TestCase.test_acquire_uses_stored_timeout_by_default ---------------------------------------------------------------------- testtools.testresult.real._StringException: Traceback (most recent call last): File "/usr/lib64/python3.10/unittest/mock.py", line 1367, in patched with self.decoration_helper(patched, File "/usr/lib64/python3.10/contextlib.py", line 133, in __enter__ return next(self.gen) File "/usr/lib64/python3.10/unittest/mock.py", line 1349, in decoration_helper arg = exit_stack.enter_context(patching) File "/usr/lib64/python3.10/contextlib.py", line 478, in enter_context result = _cm_type.__enter__(cm) File "/usr/lib64/python3.10/unittest/mock.py", line 1529, in __enter__ raise InvalidSpecError( unittest.mock.InvalidSpecError: Cannot autospec attr 'acquire' from target 'PIDLockFile' as it has already been mocked out. [target=, attr=] ====================================================================== ERROR: test_calls_superclass_init (test.test_pidfile.TimeoutPIDLockFile_TestCase) test.test_pidfile.TimeoutPIDLockFile_TestCase.test_calls_superclass_init ---------------------------------------------------------------------- testtools.testresult.real._StringException: Traceback (most recent call last): File "/usr/lib64/python3.10/unittest/mock.py", line 1367, in patched with self.decoration_helper(patched, File "/usr/lib64/python3.10/contextlib.py", line 133, in __enter__ return next(self.gen) File "/usr/lib64/python3.10/unittest/mock.py", line 1349, in decoration_helper arg = exit_stack.enter_context(patching) File "/usr/lib64/python3.10/contextlib.py", line 478, in enter_context result = _cm_type.__enter__(cm) File "/usr/lib64/python3.10/unittest/mock.py", line 1529, in __enter__ raise InvalidSpecError( unittest.mock.InvalidSpecError: Cannot autospec attr '__init__' from target 'PIDLockFile' as it has already been mocked out. [target=, attr=] This avoids them. --- diff --git a/test/test_pidfile.py b/test/test_pidfile.py index 513a531..a58afe9 100644 --- a/test/test_pidfile.py +++ b/test/test_pidfile.py @@ -391,12 +391,6 @@ class TimeoutPIDLockFile_TestCase(scaffold.TestCase): pidlockfile_scenarios = make_pidlockfile_scenarios() self.pidlockfile_scenario = pidlockfile_scenarios['simple'] - for func_name in ['__init__', 'acquire']: - func_patcher = unittest.mock.patch.object( - lockfile.pidlockfile.PIDLockFile, func_name) - func_patcher.start() - self.addCleanup(func_patcher.stop) - self.scenario = { 'pidfile_path': self.pidlockfile_scenario['pidfile_path'], 'acquire_timeout': self.getUniqueInteger(),