[Python-modules-team] Bug#934960: python-mock breaks pytest-mock autopkgtest

Paul Gevers elbrus at debian.org
Sat Aug 17 11:03:25 BST 2019


Source: python-mock, pytest-mock
Control: found -1 python-mock/3.0.5-1
Control: found -1 pytest-mock/1.7.1-1
Severity: serious
X-Debbugs-CC: debian-ci at lists.debian.org
User: debian-ci at lists.debian.org
Usertags: breaks needs-update

Dear maintainers,

With a recent upload of python-mock the autopkgtest of pytest-mock fails
in testing when that autopkgtest is run with the binary packages of
python-mock from unstable. It passes when run with only packages from
testing. In tabular form:
                       pass            fail
python-mock            from testing    3.0.5-1
pytest-mock            from testing    1.7.1-1
all others             from testing    from testing

I copied some of the output at the bottom of this report.

Currently this regression is blocking the migration of python-mock to
testing [1]. Due to the nature of this issue, I filed this bug report
against both packages. Can you please investigate the situation and
reassign the bug to the right package? If needed, please change the
bug's severity.

More information about this bug and the reason for filing it can be found on
https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation

Paul

[1] https://qa.debian.org/excuses.php?package=python-mock

https://ci.debian.net/data/autopkgtest/testing/amd64/p/pytest-mock/2752732/log.gz
=================================== FAILURES
===================================
_______________ TestMockerStub.test_failure_message_with_no_name
_______________

self = <test_pytest_mock.TestMockerStub instance at 0x7fb607a0ca50>
mocker = <pytest_mock.MockFixture object at 0x7fb6079b5590>

    def test_failure_message_with_no_name(self, mocker):
>       self.__test_failure_message(mocker)

test_pytest_mock.py:189:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _

self = <test_pytest_mock.TestMockerStub instance at 0x7fb607a0ca50>
mocker = <pytest_mock.MockFixture object at 0x7fb6079b5590>, kwargs = {}
expected_name = 'mock', expected_message = 'Expected call: mock()\nNot
called'
stub = <MagicMock spec='function' id='140419788396112'>
exc_info = <ExceptionInfo AssertionError tblen=3>

    def __test_failure_message(self, mocker, **kwargs):
        expected_name = kwargs.get('name') or 'mock'
        expected_message = 'Expected call: {0}()\nNot
called'.format(expected_name)
        stub = mocker.stub(**kwargs)
        with pytest.raises(AssertionError) as exc_info:
            stub.assert_called_with()
>       assert str(exc_info.value) == expected_message
E       AssertionError

test_pytest_mock.py:186: AssertionError
_____________ TestMockerStub.test_failure_message_with_name[None]
______________

self = <test_pytest_mock.TestMockerStub instance at 0x7fb607a20730>
mocker = <pytest_mock.MockFixture object at 0x7fb607932510>, name = None

    @pytest.mark.parametrize('name', (None, '', 'f', 'The Castle of
aaarrrrggh'))
    def test_failure_message_with_name(self, mocker, name):
>       self.__test_failure_message(mocker, name=name)

test_pytest_mock.py:193:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _

self = <test_pytest_mock.TestMockerStub instance at 0x7fb607a20730>
mocker = <pytest_mock.MockFixture object at 0x7fb607932510>
kwargs = {'name': None}, expected_name = 'mock'
expected_message = 'Expected call: mock()\nNot called'
stub = <MagicMock spec='function' id='140419787858704'>
exc_info = <ExceptionInfo AssertionError tblen=3>

    def __test_failure_message(self, mocker, **kwargs):
        expected_name = kwargs.get('name') or 'mock'
        expected_message = 'Expected call: {0}()\nNot
called'.format(expected_name)
        stub = mocker.stub(**kwargs)
        with pytest.raises(AssertionError) as exc_info:
            stub.assert_called_with()
>       assert str(exc_info.value) == expected_message
E       AssertionError

test_pytest_mock.py:186: AssertionError
_______________ TestMockerStub.test_failure_message_with_name[]
________________

self = <test_pytest_mock.TestMockerStub instance at 0x7fb607a0f5f0>
mocker = <pytest_mock.MockFixture object at 0x7fb607a11590>, name = ''

    @pytest.mark.parametrize('name', (None, '', 'f', 'The Castle of
aaarrrrggh'))
    def test_failure_message_with_name(self, mocker, name):
>       self.__test_failure_message(mocker, name=name)

test_pytest_mock.py:193:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _

self = <test_pytest_mock.TestMockerStub instance at 0x7fb607a0f5f0>
mocker = <pytest_mock.MockFixture object at 0x7fb607a11590>
kwargs = {'name': ''}, expected_name = 'mock'
expected_message = 'Expected call: mock()\nNot called'
stub = <MagicMock spec='function' id='140419788774864'>
exc_info = <ExceptionInfo AssertionError tblen=3>

    def __test_failure_message(self, mocker, **kwargs):
        expected_name = kwargs.get('name') or 'mock'
        expected_message = 'Expected call: {0}()\nNot
called'.format(expected_name)
        stub = mocker.stub(**kwargs)
        with pytest.raises(AssertionError) as exc_info:
            stub.assert_called_with()
>       assert str(exc_info.value) == expected_message
E       AssertionError

test_pytest_mock.py:186: AssertionError
_______________ TestMockerStub.test_failure_message_with_name[f]
_______________

self = <test_pytest_mock.TestMockerStub instance at 0x7fb607850730>
mocker = <pytest_mock.MockFixture object at 0x7fb6079b1350>, name = 'f'

    @pytest.mark.parametrize('name', (None, '', 'f', 'The Castle of
aaarrrrggh'))
    def test_failure_message_with_name(self, mocker, name):
>       self.__test_failure_message(mocker, name=name)

test_pytest_mock.py:193:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _

self = <test_pytest_mock.TestMockerStub instance at 0x7fb607850730>
mocker = <pytest_mock.MockFixture object at 0x7fb6079b1350>
kwargs = {'name': 'f'}, expected_name = 'f'
expected_message = 'Expected call: f()\nNot called'
stub = <MagicMock name='f' spec='function' id='140419788378384'>
exc_info = <ExceptionInfo AssertionError tblen=3>

    def __test_failure_message(self, mocker, **kwargs):
        expected_name = kwargs.get('name') or 'mock'
        expected_message = 'Expected call: {0}()\nNot
called'.format(expected_name)
        stub = mocker.stub(**kwargs)
        with pytest.raises(AssertionError) as exc_info:
            stub.assert_called_with()
>       assert str(exc_info.value) == expected_message
E       AssertionError

test_pytest_mock.py:186: AssertionError
___ TestMockerStub.test_failure_message_with_name[The Castle of
aaarrrrggh] ____

self = <test_pytest_mock.TestMockerStub instance at 0x7fb607998f00>
mocker = <pytest_mock.MockFixture object at 0x7fb6079dec10>
name = 'The Castle of aaarrrrggh'

    @pytest.mark.parametrize('name', (None, '', 'f', 'The Castle of
aaarrrrggh'))
    def test_failure_message_with_name(self, mocker, name):
>       self.__test_failure_message(mocker, name=name)

test_pytest_mock.py:193:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _

self = <test_pytest_mock.TestMockerStub instance at 0x7fb607998f00>
mocker = <pytest_mock.MockFixture object at 0x7fb6079dec10>
kwargs = {'name': 'The Castle of aaarrrrggh'}
expected_name = 'The Castle of aaarrrrggh'
expected_message = 'Expected call: The Castle of aaarrrrggh()\nNot called'
stub = <MagicMock name='The Castle of aaarrrrggh' spec='function'
id='140419788564688'>
exc_info = <ExceptionInfo AssertionError tblen=3>

    def __test_failure_message(self, mocker, **kwargs):
        expected_name = kwargs.get('name') or 'mock'
        expected_message = 'Expected call: {0}()\nNot
called'.format(expected_name)
        stub = mocker.stub(**kwargs)
        with pytest.raises(AssertionError) as exc_info:
            stub.assert_called_with()
>       assert str(exc_info.value) == expected_message
E       AssertionError

test_pytest_mock.py:186: AssertionError


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/python-modules-team/attachments/20190817/3cee35ea/attachment.sig>


More information about the Python-modules-team mailing list