This is a good catch. We should get a hold of this before it creeps on us in CI. Maybe we should open it in shared backlog? On Wed, Jan 4, 2023 at 11:00 AM Sofia Enriquez <senrique@redhat.com> wrote:
Hi,
Since python3.11 mocks can no longer be provided as the specs for other Mocks. As a result, an already-mocked object cannot be passed to mock.Mock(). This can uncover bugs in tests since these Mock-derived Mocks will always pass certain tests (e.g. isinstance) and built-in assert functions (e.g. assert_called_once_with) will unconditionally pass.[1]
There's a bug report to track this issue in Cinder [2] but I think this may affect other projects too.
I've reproduce the error and most drivers fail with: ``` unittest.mock.InvalidSpecError: Cannot spec a Mock object. [object=<Mock name='mock.client.HPE3ParClient' id='139657768087760'>] ```
Cheers, Sofia
[1] https://github.com/python/cpython/issues/87644 [2] https://bugs.launchpad.net/cinder/+bug/2000436 --
Sofía Enriquez
she/her
Software Engineer
Red Hat PnT <https://www.redhat.com>
IRC: @enriquetaso @RedHat <https://twitter.com/redhat> Red Hat <https://www.linkedin.com/company/red-hat> Red Hat <https://www.facebook.com/RedHatInc> <https://www.redhat.com>