[go: up one dir, main page]

ABCMock with no expectations set fails on assert_satisfied on version 0.13.0

Here's a fixture that fails:

@pytest.fixture
def backend():
    mock = ABCMock('backend', gateways.IBackend)
    with satisfied(mock):
        yield mock

Stacktrace:

tests/unit/filesystem/conftest.py:12: in backend
    yield mock
../../../.pyenv/versions/3.9.4/lib/python3.9/contextlib.py:124: in __exit__
    next(self.gen)
../../../.local/share/virtualenvs/lrufs-DotI7NTp/lib/python3.9/site-packages/mockify/core/_functions.py:161: in satisfied
    assert_satisfied(mock, *mocks)
../../../.local/share/virtualenvs/lrufs-DotI7NTp/lib/python3.9/site-packages/mockify/core/_functions.py:54: in assert_satisfied
    impl(mock, *args)
../../../.local/share/virtualenvs/lrufs-DotI7NTp/lib/python3.9/site-packages/mockify/core/_functions.py:50: in impl
    unsatisfied_expectations = list(iter_unsatisfied_expectations(mocks))
../../../.local/share/virtualenvs/lrufs-DotI7NTp/lib/python3.9/site-packages/mockify/core/_functions.py:43: in iter_unsatisfied_expectations
    for child in mock.__m_walk__():
../../../.local/share/virtualenvs/lrufs-DotI7NTp/lib/python3.9/site-packages/mockify/abc.py:353: in __m_walk__
    yield from walk(self)
../../../.local/share/virtualenvs/lrufs-DotI7NTp/lib/python3.9/site-packages/mockify/abc.py:350: in walk
    for child in mock.__m_children__():
../../../.local/share/virtualenvs/lrufs-DotI7NTp/lib/python3.9/site-packages/mockify/mock/_abc_mock.py:176: in __m_children__
    for obj in self.__dict__.values():
E   RuntimeError: dictionary changed size during iteration

Error does not appear when at least one expectation is recorderd.

Edited by Maciej Wiatrzyk